<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -5,8 +5,6 @@ require 'flog'
 
 options = Flog.parse_options
 
-options[:paths].each {|dir| $: &lt;&lt; dir } if options[:paths]
-
 ARGV &lt;&lt; &quot;-&quot; if ARGV.empty?
 
 flogger = Flog.new options</diff>
      <filename>bin/flog</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,14 @@
 require 'rubygems'
 require 'sexp_processor'
 require 'ruby_parser'
+require 'optparse'
+
+# REFACTOR: push up to sexp_processor. also in flay
+class Sexp
+  def mass
+    @mass ||= self.structure.flatten.size
+  end
+end
 
 class Flog &lt; SexpProcessor
   VERSION = '2.1.0'
@@ -77,6 +85,19 @@ class Flog &lt; SexpProcessor
     }
   end
 
+  # REFACTOR: from flay
+  def self.expand_dirs_to_files *dirs
+    extensions = ['rb']
+
+    dirs.flatten.map { |p|
+      if File.directory? p then
+        Dir[File.join(p, '**', &quot;*.{#{extensions.join(',')}}&quot;)]
+      else
+        p
+      end
+    }.flatten.sort
+  end
+
   def self.parse_options
     options = self.default_options
     op = OptionParser.new do |opts|
@@ -105,8 +126,10 @@ class Flog &lt; SexpProcessor
         exit
       end
 
-      opts.on(&quot;-I path1,path2,path3&quot;, Array, &quot;Ruby include paths to search.&quot;) do |i|
-        options[:paths] = i.map { |l| l.to_s }
+      opts.on(&quot;-I dir1,dir2,dir3&quot;, Array, &quot;Add to LOAD_PATH.&quot;) do |dirs|
+        dirs.each do |dir|
+          $: &lt;&lt; dir
+        end
       end
 
       opts.on(&quot;-m&quot;, &quot;--methods-only&quot;, &quot;Skip code outside of methods.&quot;) do |m|
@@ -137,6 +160,7 @@ class Flog &lt; SexpProcessor
 
   ##
   # Process each element of #exp in turn.
+  # TODO: rename, bleed wasn't good, but this is actually worse
 
   def analyze_list exp
     process exp.shift until exp.empty?
@@ -147,49 +171,28 @@ class Flog &lt; SexpProcessor
     total / calls.size
   end
 
-  def collect_blame filename # TODO: huh?
-  end
-
-  def flog ruby, file
-    collect_blame(file) if options[:blame]
-    process_parse_tree(ruby, file)
-  rescue SyntaxError, Racc::ParseError =&gt; e
-    if e.inspect =~ /&lt;%|%&gt;/ then
-      warn &quot;#{e.inspect} at #{e.backtrace.first(5).join(', ')}&quot;
-      warn &quot;\n...stupid lemmings and their bad erb templates... skipping&quot;
-    else
-      raise e unless options[:continue]
-      warn file
-      warn &quot;#{e.inspect} at #{e.backtrace.first(5).join(', ')}&quot;
-    end
-  end
-
-  def flog_directory dir
-    Dir[&quot;#{dir}/**/*.rb&quot;].each do |file|
-      flog_file(file)
-    end
-  end
-
-  def flog_file file
-    return flog_directory(file) if File.directory? file
-    if file == '-'
-      raise &quot;Cannot provide blame information for code provided on input stream.&quot; if options[:blame]
-      data = $stdin.read
-    end
-    data ||= File.read(file)
-    warn &quot;** flogging #{file}&quot; if options[:verbose]
-    flog(data, file)
-  end
-
-  ##
-  # Process #files with flog, recursively descending directories.
-  #--
-  # There is no way to exclude directories at present (RCS, SCCS, .svn)
-  #++
-
-  def flog_files(*files)
-    files.flatten.each do |file|
-      flog_file(file)
+  def flog(*files_or_dirs)
+    files = Flog.expand_dirs_to_files(*files_or_dirs)
+
+    files.each do |file|
+      begin
+        # TODO: replace File.open to deal with &quot;-&quot;
+        ruby = file == '-' ? $stdin.read : File.read(file)
+        warn &quot;** flogging #{file}&quot; if options[:verbose]
+
+        ast = @parser.process(ruby, file)
+        mass[file] = ast.mass
+        process ast
+      rescue SyntaxError, Racc::ParseError =&gt; e
+        if e.inspect =~ /&lt;%|%&gt;/ then
+          warn &quot;#{e.inspect} at #{e.backtrace.first(5).join(', ')}&quot;
+          warn &quot;\n...stupid lemmings and their bad erb templates... skipping&quot;
+        else
+          raise e unless options[:continue]
+          warn file
+          warn &quot;#{e.inspect} at #{e.backtrace.first(5).join(', ')}&quot;
+        end
+      end
     end
   end
 
@@ -219,6 +222,7 @@ class Flog &lt; SexpProcessor
     @class_stack         = []
     @method_stack        = []
     @mass                = {}
+    @parser              = RubyParser.new
     self.auto_shift_type = true
     self.require_empty   = false # HACK
     self.reset
@@ -305,10 +309,6 @@ class Flog &lt; SexpProcessor
     io.puts &quot;%8.1f: %s&quot; % [average, &quot;flog/method average&quot;]
   end
 
-  def parse_tree
-    @parse_tree ||= RubyParser.new
-  end
-
   ##
   # For the duration of the block the complexity factor is increased
   # by #bonus This allows the complexity of sub-expressions to be
@@ -321,12 +321,6 @@ class Flog &lt; SexpProcessor
     @multiplier -= bonus
   end
 
-  def process_parse_tree(ruby, file) # TODO: rename away from process
-    ast = parse_tree.process(ruby, file)
-    mass[file] = ast.mass
-    process ast
-  end
-
   def record_method_score(method, score)
     @totals ||= Hash.new(0)
     @totals[method] = score
@@ -349,9 +343,9 @@ class Flog &lt; SexpProcessor
   end
 
   def reset
-    @totals = @total_score = nil
+    @totals     = @total_score = nil
     @multiplier = 1.0
-    @calls = Hash.new { |h,k| h[k] = Hash.new 0 }
+    @calls      = Hash.new { |h,k| h[k] = Hash.new 0 }
   end
 
   def score_method(tally)</diff>
      <filename>lib/flog.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,264 +6,425 @@ class Flog
   attr_writer :total_score
 end
 
-describe Flog do
-  before :each do
-    @options = { }
-    @flog = Flog.new(@options)
+class TestFlog &lt; MiniTest::Unit::TestCase
+  def setup
+    @flog = Flog.new
   end
 
-#   describe 'when initializing' do
-#     it 'should not reference the parse tree' do
-#       ParseTree.expects(:new).never
-#       Flog.new(@options)
+#   def test_sanity
+#     # FIX: make this easy to pass in to Flog.new
+#     ARGV.push(&quot;-a&quot;)
+#     opts = Flog.parse_options
+#     ARGV.clear
+#     @flog.flog __FILE__
+#
+#     test_methods = self.class.instance_methods(false).sort.map { |m|
+#       &quot;#{self.class}##{m}&quot;
+#     }
+#
+#     expected_calls = [&quot;Flog#none&quot;] + test_methods + [&quot;main#none&quot;]
+#
+#     assert_in_delta 1.0, @flog.multiplier, 0.001
+#     assert_equal expected_calls, @flog.calls.keys.sort
+#     assert_equal 1, @flog.mass.size
+#     assert_operator @flog.mass[__FILE__], :&gt;, 100
+#     assert_equal [], @flog.class_stack
+#     assert_equal [], @flog.method_stack
+#
+#     # FIX: this sucks, but it is a start.
+#     out = StringIO.new
+#     @flog.report out
+#     out = out.string
+#
+#     assert_match(/[\d\.]+: flog total/, out)
+#     assert_match(/[\d\.]+: flog.method average/, out)
+#
+#     test_methods.each do |m|
+#       assert_match(/[\d\.]+: #{m}/, out)
 #     end
 #   end
 
-  describe 'after initializing' do
-    it 'should have options set' do
-      @flog.options.must_equal @options
-    end
+  def test_class_expand_dirs_to_files
+    expected = %w(lib/flog.rb lib/flog_task.rb lib/gauntlet_flog.rb)
+    assert_equal expected, Flog.expand_dirs_to_files('lib')
+    expected = %w(Rakefile)
+    assert_equal expected, Flog.expand_dirs_to_files('Rakefile')
+  end
 
-    it 'should return an SexpProcessor' do
-      @flog.must_be_kind_of(SexpProcessor)
+  def test_class_parse_options
+    d = Flog.default_options
+    assert_equal d, Flog.parse_options
+
+    options = {
+      &quot;-a&quot; =&gt; :all,
+      &quot;-b&quot; =&gt; :blame,
+      &quot;-c&quot; =&gt; :continue,
+      &quot;-d&quot; =&gt; :details,
+      &quot;-g&quot; =&gt; :group,
+      &quot;-m&quot; =&gt; :methods,
+      &quot;-q&quot; =&gt; :quiet,
+      &quot;-s&quot; =&gt; :score,
+      &quot;-v&quot; =&gt; :verbose,
+    }
+
+    options.each do |arg, opt|
+      ARGV.replace [arg]
+      assert_equal d.merge(opt =&gt; true), Flog.parse_options
+    end
+
+    old_load_path = $:.dup
+    ARGV.replace [&quot;-Iblah1,blah2&quot;]
+    assert_equal d, Flog.parse_options
+    assert_equal old_load_path + %w(blah1 blah2), $:
+
+    def Flog.exit
+      raise &quot;happy&quot;
+    end
+
+    ex = nil
+    o, e = capture_io do
+      ex = assert_raises RuntimeError do
+        ARGV.replace [&quot;-h&quot;]
+        Flog.parse_options
+      end
     end
+    assert_equal &quot;happy&quot;, ex.message
+    assert_match(/methods-only/, o)
+    assert_equal &quot;&quot;, e
+  ensure
+    ARGV.clear
+  end
 
-    it 'should be initialized like all SexpProcessors' do
-      # less than ideal means of insuring the Flog instance was initialized properly, imo -RB
-      @flog.context.must_equal []
-    end
+  def test_add_to_score
+    assert_empty @flog.calls
+    @flog.class_stack  &lt;&lt; &quot;MyKlass&quot;
+    @flog.method_stack &lt;&lt; &quot;mymethod&quot;
+    @flog.add_to_score &quot;blah&quot;, 42
 
-    it 'should have no current class' do
-      @flog.klass_name.must_equal :main
-    end
+    expected = {&quot;MyKlass#mymethod&quot;=&gt;{&quot;blah&quot;=&gt;42.0}}
+    assert_equal expected, @flog.calls
 
-    it 'should have no current method' do
-      @flog.method_name.must_equal :none
-    end
+    @flog.add_to_score &quot;blah&quot;, 2
 
-    it 'should not have any calls yet' do
-      @flog.calls.must_equal({})
-    end
+    expected[&quot;MyKlass#mymethod&quot;][&quot;blah&quot;] = 44.0
+    assert_equal expected, @flog.calls
+  end
 
-    it 'should have a means of accessing its parse tree' do
-      @flog.must_respond_to(:parse_tree)
-    end
+#   def test_analyze_list
+#     raise NotImplementedError, 'Need to write test_analyze_list'
+#   end
 
-    it 'should not have any totals yet' do
-      @flog.totals.must_equal({})
-    end
+  def test_average
+    assert_equal 0, Flog.new.average
+    # TODO: non-zero... but do total/totals first
+  end
 
-    it 'should have a 0 total score' do
-      @flog.total.must_equal 0.0
-    end
+  def test_calls
+    expected = {}
+    assert_equal expected, Flog.new.calls
+  end
 
-    it 'should have a multiplier of 1' do
-      @flog.multiplier.must_equal 1.0
-    end
+#   def test_flog
+#     raise NotImplementedError, 'Need to write test_flog'
+#   end
 
-    currently &quot;should have 'auto shift type' set to true&quot; do
-      @flog.auto_shift_type.must_equal true
-    end
+  def test_in_klass
+    assert_empty @flog.class_stack
 
-    currently &quot;should have 'require empty' set to false&quot; do
-      @flog.require_empty.must_equal false
+    @flog.in_klass &quot;xxx&quot; do
+      assert_equal [&quot;xxx&quot;], @flog.class_stack
     end
-  end
 
-  describe 'options' do
-    it 'should return the current options settings' do
-      @flog.must_respond_to(:options)
-    end
+    assert_empty @flog.class_stack
   end
 
-  describe 'when accessing the parse tree' do
-    before :each do
-      @parse_tree = stub('parse tree')
+  def test_in_method
+    assert_empty @flog.method_stack
+
+    @flog.in_method &quot;xxx&quot; do
+      assert_equal [&quot;xxx&quot;], @flog.method_stack
     end
 
-    describe 'for the first time' do
-      it 'should create a new ParseTree' do
-        RubyParser.expects(:new)
-        @flog.parse_tree
-      end
+    assert_empty @flog.method_stack
+  end
 
-# HACK: most tarded spec ever
-#       it 'should return a ParseTree instance' do
-#         ParseTree.stubs(:new).returns(@parse_tree)
-#         @flog.parse_tree.must_equal @parse_tree
-#       end
+#   def test_increment_total_score_by
+#     raise NotImplementedError, 'Need to write test_increment_total_score_by'
+#   end
+#
+#   def test_klass_name
+#     raise NotImplementedError, 'Need to write test_klass_name'
+#   end
+#
+#   def test_mass
+#     raise NotImplementedError, 'Need to write test_mass'
+#   end
+#
+#   def test_method_name
+#     raise NotImplementedError, 'Need to write test_method_name'
+#   end
+#
+#   def test_method_stack
+#     raise NotImplementedError, 'Need to write test_method_stack'
+#   end
+#
+#   def test_multiplier
+#     raise NotImplementedError, 'Need to write test_multiplier'
+#   end
+#
+#   def test_multiplier_equals
+#     raise NotImplementedError, 'Need to write test_multiplier_equals'
+#   end
+#
+#   def test_options
+#     raise NotImplementedError, 'Need to write test_options'
+#   end
+#
+#   def test_output_details
+#     raise NotImplementedError, 'Need to write test_output_details'
+#   end
+#
+#   def test_output_method_details
+#     raise NotImplementedError, 'Need to write test_output_method_details'
+#   end
+#
+#   def test_output_summary
+#     raise NotImplementedError, 'Need to write test_output_summary'
+#   end
+#
+#   def test_parse_tree
+#     raise NotImplementedError, 'Need to write test_parse_tree'
+#   end
+
+  def test_penalize_by
+    assert_equal 1, @flog.multiplier
+    @flog.penalize_by 2 do
+      assert_equal 3, @flog.multiplier
     end
+    assert_equal 1, @flog.multiplier
+  end
 
-# HACK Jesus... this is useless.
-#     describe 'after the parse tree has been initialized' do
-#       it 'should not attempt to create a new ParseTree instance' do
-#         @flog.parse_tree
-#         ParseTree.expects(:new).never
-#         @flog.parse_tree
-#       end
+#   def test_record_method_score
+#     raise NotImplementedError, 'Need to write test_record_method_score'
+#   end
 #
-#       it 'should return a ParseTree instance' do
-#         ParseTree.stubs(:new).returns(@parse_tree)
-#         @flog.parse_tree
-#         @flog.parse_tree.must_equal @parse_tree
-#       end
-#     end
+#   def test_report
+#     raise NotImplementedError, 'Need to write test_report'
+#   end
+#
+#   def test_reset
+#     raise NotImplementedError, 'Need to write test_reset'
+#   end
+
+  def test_score_method
+    expected = 3.742
+    assert_in_delta expected, @flog.score_method(:assignment =&gt; 1,
+                                                 :branch     =&gt; 2,
+                                                 :other      =&gt; 3)
   end
 
-  describe &quot;when flogging a list of files&quot; do
-    describe 'when no files are specified' do
-      currently 'should not raise an exception' do
-        lambda { @flog.flog_files }.wont_raise_error
-      end
+#   def test_summarize_method
+#     raise NotImplementedError, 'Need to write test_summarize_method'
+#   end
+#
+#   def test_total
+#     raise NotImplementedError, 'Need to write test_total'
+#   end
+#
+#   def test_totals
+#     raise NotImplementedError, 'Need to write test_totals'
+#   end
+end
 
-      it 'should never call flog_file' do
-        def @flog.flog_file(*args); raise &quot;no&quot;; end
-        @flog.flog_files
-      end
-    end
+# Number of errors detected: 64
 
-# HACK
-#     describe 'when files are specified' do
-#       before :each do
-#         @files = [1, 2, 3, 4]
-#         @flog.stubs(:flog_file)
+# describe Flog do
+#   before :each do
+#     @options = { }
+#     @flog = Flog.new(@options)
+#   end
+#
+# #   describe 'when initializing' do
+# #     it 'should not reference the parse tree' do
+# #       ParseTree.expects(:new).never
+# #       Flog.new(@options)
+# #     end
+# #   end
+#
+#   describe 'after initializing' do
+#     it 'should have options set' do
+#       @flog.options.must_equal @options
+#     end
+#
+#     it 'should return an SexpProcessor' do
+#       @flog.must_be_kind_of(SexpProcessor)
+#     end
+#
+#     it 'should be initialized like all SexpProcessors' do
+#       # less than ideal means of insuring the Flog instance was initialized properly, imo -RB
+#       @flog.context.must_equal []
+#     end
+#
+#     it 'should have no current class' do
+#       @flog.klass_name.must_equal :main
+#     end
+#
+#     it 'should have no current method' do
+#       @flog.method_name.must_equal :none
+#     end
+#
+#     it 'should not have any calls yet' do
+#       @flog.calls.must_equal({})
+#     end
+#
+#     it 'should have a means of accessing its parse tree' do
+#       @flog.must_respond_to(:parse_tree)
+#     end
+#
+#     it 'should not have any totals yet' do
+#       @flog.totals.must_equal({})
+#     end
+#
+#     it 'should have a 0 total score' do
+#       @flog.total.must_equal 0.0
+#     end
+#
+#     it 'should have a multiplier of 1' do
+#       @flog.multiplier.must_equal 1.0
+#     end
+#
+#     currently &quot;should have 'auto shift type' set to true&quot; do
+#       @flog.auto_shift_type.must_equal true
+#     end
+#
+#     currently &quot;should have 'require empty' set to false&quot; do
+#       @flog.require_empty.must_equal false
+#     end
+#   end
+#
+#   describe 'options' do
+#     it 'should return the current options settings' do
+#       @flog.must_respond_to(:options)
+#     end
+#   end
+#
+#   describe 'when accessing the parse tree' do
+#     before :each do
+#       @parse_tree = stub('parse tree')
+#     end
+#
+#     describe 'for the first time' do
+#       it 'should create a new ParseTree' do
+#         RubyParser.expects(:new)
+#         @flog.parse_tree
 #       end
 #
-#       it 'should do a flog for each individual file' do
-#         @flog.expects(:flog_file).times(@files.size)
-#         @flog.flog_files(@files)
+# # HACK: most tarded spec ever
+# #       it 'should return a ParseTree instance' do
+# #         ParseTree.stubs(:new).returns(@parse_tree)
+# #         @flog.parse_tree.must_equal @parse_tree
+# #       end
+#     end
+#
+# # HACK Jesus... this is useless.
+# #     describe 'after the parse tree has been initialized' do
+# #       it 'should not attempt to create a new ParseTree instance' do
+# #         @flog.parse_tree
+# #         ParseTree.expects(:new).never
+# #         @flog.parse_tree
+# #       end
+# #
+# #       it 'should return a ParseTree instance' do
+# #         ParseTree.stubs(:new).returns(@parse_tree)
+# #         @flog.parse_tree
+# #         @flog.parse_tree.must_equal @parse_tree
+# #       end
+# #     end
+#   end
+#
+#   describe &quot;when flogging a list of files&quot; do
+#     describe 'when no files are specified' do
+#       currently 'should not raise an exception' do
+#         lambda { @flog.flog_files }.wont_raise_error
 #       end
 #
-#       it 'should provide the filename when flogging a file' do
-#         @files.each do |file|
-#           @flog.expects(:flog_file).with(file)
-#         end
-#         @flog.flog_files(@files)
+#       it 'should never call flog_file' do
+#         def @flog.flog_file(*args); raise &quot;no&quot;; end
+#         @flog.flog_files
 #       end
 #     end
-
-    describe 'when flogging a single file' do
-      before :each do
-        @flog.stubs(:flog)
-      end
-
-      describe 'when the filename is &quot;-&quot;' do
-        before :each do
-          @stdin = $stdin  # HERE: working through the fact that zenspider is using $stdin in the middle of the system
-          $stdin = stub('stdin', :read =&gt; 'data')
-        end
-
-        after :each do
-          $stdin = @stdin
-        end
-
-#         describe 'when reporting blame information' do
-#           before :each do
-#             @flog = Flog.new(:blame =&gt; true)
-#             @flog.stubs(:flog)
-#           end
 #
-#           it 'should fail' do
-#             lambda { @flog.flog_file('-') }.must_raise(RuntimeError)
-#           end
-#         end
-
-# HACK: need to figure out how to do nested setup w/o inherited tests
-#         it 'should not raise an exception' do
-#           lambda { @flog.flog_file('-') }.wont_raise_error
-#         end
-
-# HACK: need to figure out how to do nested setup w/o inherited tests
-#         it 'should read the data from stdin' do
-#           $stdin.expects(:read).returns('data')
-#           @flog.flog_file('-')
-#         end
-
-#         it 'should flog the read data' do
-#           @flog.expects(:flog).with('data', '-')
-#           @flog.flog_file('-')
-#         end
-
-        describe 'when the verbose flag is on' do
-          before :each do
-            @flog = Flog.new(:verbose =&gt; true)
-          end
-
-#           it 'should note which file is being flogged' do
-#             @flog.expects(:warn)
-#             @flog.flog_file('-')
-#           end
-        end
-
-        describe 'when the verbose flag is off' do
-          before :each do
-            @flog = Flog.new({})
-          end
-
-          it 'should not note which file is being flogged' do
-            def @flog.warn(*args); raise &quot;no&quot;; end
-            @flog.flog_file('-')
-          end
-        end
-      end
-
-      describe 'when the filename points to a directory' do
-        before :each do
-          def @flog.flog_directory(*args); end
-          @file = File.dirname(__FILE__)
-        end
-
-        it 'should expand the files under the directory' do
-          @flog.expects(:flog_directory)
-          @flog.flog_file(@file)
-        end
-
-        it 'should not read data from stdin' do
-          def $stdin.read(*args); raise &quot;no&quot;; end
-          @flog.flog_file(@file)
-        end
-
-        it 'should not flog any data' do
-          def @flog.flog(*args); raise &quot;no&quot;; end
-          @flog.flog_file(@file)
-        end
-      end
-
-      describe 'when the filename points to a non-existant file' do
-        before :each do
-          @file = '/adfasdfasfas/fasdfaf-#{rand(1000000).to_s}'
-        end
-
-        it 'should raise an exception' do
-          lambda { @flog.flog_file(@file) }.must_raise(Errno::ENOENT)
-        end
-      end
-
-#       describe 'when the filename points to an existing file' do
+# # HACK
+# #     describe 'when files are specified' do
+# #       before :each do
+# #         @files = [1, 2, 3, 4]
+# #         @flog.stubs(:flog_file)
+# #       end
+# #
+# #       it 'should do a flog for each individual file' do
+# #         @flog.expects(:flog_file).times(@files.size)
+# #         @flog.flog_files(@files)
+# #       end
+# #
+# #       it 'should provide the filename when flogging a file' do
+# #         @files.each do |file|
+# #           @flog.expects(:flog_file).with(file)
+# #         end
+# #         @flog.flog_files(@files)
+# #       end
+# #     end
+#
+#     describe 'when flogging a single file' do
+#       before :each do
+#         @flog.stubs(:flog)
+#       end
+#
+#       describe 'when the filename is &quot;-&quot;' do
 #         before :each do
-#           @file = __FILE__
-#           File.stubs(:read).returns('data')
+#           @stdin = $stdin  # HERE: working through the fact that zenspider is using $stdin in the middle of the system
+#           $stdin = stub('stdin', :read =&gt; 'data')
 #         end
 #
-#         it 'should read the contents of the file' do
-#           File.expects(:read).with(@file).returns('data')
-#           @flog.flog_file(@file)
+#         after :each do
+#           $stdin = @stdin
 #         end
 #
-#         it 'should flog the contents of the file' do
-#           @flog.expects(:flog).with('data', @file)
-#           @flog.flog_file(@file)
-#         end
+# #         describe 'when reporting blame information' do
+# #           before :each do
+# #             @flog = Flog.new(:blame =&gt; true)
+# #             @flog.stubs(:flog)
+# #           end
+# #
+# #           it 'should fail' do
+# #             lambda { @flog.flog_file('-') }.must_raise(RuntimeError)
+# #           end
+# #         end
+#
+# # HACK: need to figure out how to do nested setup w/o inherited tests
+# #         it 'should not raise an exception' do
+# #           lambda { @flog.flog_file('-') }.wont_raise_error
+# #         end
+#
+# # HACK: need to figure out how to do nested setup w/o inherited tests
+# #         it 'should read the data from stdin' do
+# #           $stdin.expects(:read).returns('data')
+# #           @flog.flog_file('-')
+# #         end
+#
+# #         it 'should flog the read data' do
+# #           @flog.expects(:flog).with('data', '-')
+# #           @flog.flog_file('-')
+# #         end
 #
 #         describe 'when the verbose flag is on' do
 #           before :each do
 #             @flog = Flog.new(:verbose =&gt; true)
 #           end
 #
-#           it 'should note which file is being flogged' do
-#             @flog.expects(:warn)
-#             @flog.flog_file(@file)
-#           end
+# #           it 'should note which file is being flogged' do
+# #             @flog.expects(:warn)
+# #             @flog.flog_file('-')
+# #           end
 #         end
 #
 #         describe 'when the verbose flag is off' do
@@ -273,862 +434,1053 @@ describe Flog do
 #
 #           it 'should not note which file is being flogged' do
 #             def @flog.warn(*args); raise &quot;no&quot;; end
-#             @flog.flog_file(@file)
+#             @flog.flog_file('-')
 #           end
 #         end
 #       end
-    end
-  end
-
-#   describe 'when flogging a directory' do
-#     before :each do
-#       @files = ['a.rb', '/foo/b.rb', '/foo/bar/c.rb', '/foo/bar/baz/d.rb']
-#       @dir = File.dirname(__FILE__)
-#       Dir.stubs(:[]).returns(@files)
+#
+#       describe 'when the filename points to a directory' do
+#         before :each do
+#           def @flog.flog_directory(*args); end
+#           @file = File.dirname(__FILE__)
+#         end
+#
+#         it 'should expand the files under the directory' do
+#           @flog.expects(:flog_directory)
+#           @flog.flog_file(@file)
+#         end
+#
+#         it 'should not read data from stdin' do
+#           def $stdin.read(*args); raise &quot;no&quot;; end
+#           @flog.flog_file(@file)
+#         end
+#
+#         it 'should not flog any data' do
+#           def @flog.flog(*args); raise &quot;no&quot;; end
+#           @flog.flog_file(@file)
+#         end
+#       end
+#
+#       describe 'when the filename points to a non-existant file' do
+#         before :each do
+#           @file = '/adfasdfasfas/fasdfaf-#{rand(1000000).to_s}'
+#         end
+#
+#         it 'should raise an exception' do
+#           lambda { @flog.flog_file(@file) }.must_raise(Errno::ENOENT)
+#         end
+#       end
+#
+# #       describe 'when the filename points to an existing file' do
+# #         before :each do
+# #           @file = __FILE__
+# #           File.stubs(:read).returns('data')
+# #         end
+# #
+# #         it 'should read the contents of the file' do
+# #           File.expects(:read).with(@file).returns('data')
+# #           @flog.flog_file(@file)
+# #         end
+# #
+# #         it 'should flog the contents of the file' do
+# #           @flog.expects(:flog).with('data', @file)
+# #           @flog.flog_file(@file)
+# #         end
+# #
+# #         describe 'when the verbose flag is on' do
+# #           before :each do
+# #             @flog = Flog.new(:verbose =&gt; true)
+# #           end
+# #
+# #           it 'should note which file is being flogged' do
+# #             @flog.expects(:warn)
+# #             @flog.flog_file(@file)
+# #           end
+# #         end
+# #
+# #         describe 'when the verbose flag is off' do
+# #           before :each do
+# #             @flog = Flog.new({})
+# #           end
+# #
+# #           it 'should not note which file is being flogged' do
+# #             def @flog.warn(*args); raise &quot;no&quot;; end
+# #             @flog.flog_file(@file)
+# #           end
+# #         end
+# #       end
+#     end
+#   end
+#
+# #   describe 'when flogging a directory' do
+# #     before :each do
+# #       @files = ['a.rb', '/foo/b.rb', '/foo/bar/c.rb', '/foo/bar/baz/d.rb']
+# #       @dir = File.dirname(__FILE__)
+# #       Dir.stubs(:[]).returns(@files)
+# #     end
+# #
+# #     it 'should get the list of ruby files under the directory' do
+# #       @flog.stubs(:flog_file)
+# #       Dir.expects(:[]).returns(@files)
+# #       @flog.flog_directory(@dir)
+# #     end
+# #
+# #     it &quot;should call flog_file once for each file in the directory&quot; do
+# #       @files.each {|f| @flog.expects(:flog_file).with(f) }
+# #       @flog.flog_directory(@dir)
+# #     end
+# #   end
+#
+#   describe 'when flogging a Ruby string' do
+#     it 'should require both a Ruby string and a filename' do
+#       lambda { @flog.flog('string') }.must_raise(ArgumentError)
+#     end
+#
+#     describe 'when reporting blame information' do
+#       before :each do
+#         @flog = Flog.new(:blame =&gt; true)
+#       end
+#
+#       it 'should gather blame information for the file' do
+#         @flog.expects(:collect_blame).with('filename')
+#         @flog.flog('string', 'filename')
+#       end
+#     end
+#
+#     describe 'when not reporting blame information' do
+#       it 'should not gather blame information for the file' do
+#         def @flog.collect_blame(*args); raise &quot;no&quot;; end
+#         @flog.flog('string', 'filename')
+#       end
 #     end
 #
-#     it 'should get the list of ruby files under the directory' do
-#       @flog.stubs(:flog_file)
-#       Dir.expects(:[]).returns(@files)
-#       @flog.flog_directory(@dir)
+#     describe 'when the string has a syntax error' do
+#       before :each do
+#         def @flog.warn(*args); end
+#         def @flog.process_parse_tree(*args); raise SyntaxError, &quot;&lt;% foo %&gt;&quot;; end
+#       end
+#
+#       describe 'when the string has erb snippets' do
+#         currently 'should warn about skipping' do
+#           @flog.expects(:warn)
+#           @flog.flog('string', 'filename')
+#         end
+#
+#         it 'should not raise an exception' do
+#           lambda { @flog.flog('string', 'filename') }.wont_raise_error
+#         end
+#
+#         it 'should not process the failing code' do
+#           def @flog.process(*args); raise &quot;no&quot;; end
+#           @flog.flog('string', 'filename')
+#         end
+#       end
+#
+#       describe 'when the string has no erb snippets' do
+#         before :each do
+#           def @flog.process_parse_tree(*args); raise SyntaxError; end
+#         end
+#
+#         it 'should raise a SyntaxError exception' do
+#           # TODO: what the fuck?!? how does this test ANYTHING?
+#           # it checks that #flog calls #process_parse_tree?? AND?!?!
+#           lambda { @flog.flog('string', 'filename') }.must_raise(SyntaxError)
+#         end
+#
+#         it 'should not process the failing code' do
+#           def @flog.process(*args); raise &quot;no&quot;; end
+#           lambda { @flog.flog('string', 'filename') }
+#         end
+#       end
 #     end
 #
-#     it &quot;should call flog_file once for each file in the directory&quot; do
-#       @files.each {|f| @flog.expects(:flog_file).with(f) }
-#       @flog.flog_directory(@dir)
+#     describe 'when the string contains valid Ruby' do
+#       before :each do
+#         @flog.stubs(:process_parse_tree)
+#       end
+#
+#       it 'should process the parse tree for the string' do
+#         @flog.expects(:process_parse_tree)
+#         @flog.flog('string', 'filename')
+#       end
+#
+#       it 'should provide the string and the filename to the parse tree processor' do
+#         @flog.expects(:process_parse_tree).with('string', 'filename')
+#         @flog.flog('string', 'filename')
+#       end
 #     end
 #   end
-
-  describe 'when flogging a Ruby string' do
-    it 'should require both a Ruby string and a filename' do
-      lambda { @flog.flog('string') }.must_raise(ArgumentError)
-    end
-
-    describe 'when reporting blame information' do
-      before :each do
-        @flog = Flog.new(:blame =&gt; true)
-      end
-
-      it 'should gather blame information for the file' do
-        @flog.expects(:collect_blame).with('filename')
-        @flog.flog('string', 'filename')
-      end
-    end
-
-    describe 'when not reporting blame information' do
-      it 'should not gather blame information for the file' do
-        def @flog.collect_blame(*args); raise &quot;no&quot;; end
-        @flog.flog('string', 'filename')
-      end
-    end
-
-    describe 'when the string has a syntax error' do
-      before :each do
-        def @flog.warn(*args); end
-        def @flog.process_parse_tree(*args); raise SyntaxError, &quot;&lt;% foo %&gt;&quot;; end
-      end
-
-      describe 'when the string has erb snippets' do
-        currently 'should warn about skipping' do
-          @flog.expects(:warn)
-          @flog.flog('string', 'filename')
-        end
-
-        it 'should not raise an exception' do
-          lambda { @flog.flog('string', 'filename') }.wont_raise_error
-        end
-
-        it 'should not process the failing code' do
-          def @flog.process(*args); raise &quot;no&quot;; end
-          @flog.flog('string', 'filename')
-        end
-      end
-
-      describe 'when the string has no erb snippets' do
-        before :each do
-          def @flog.process_parse_tree(*args); raise SyntaxError; end
-        end
-
-        it 'should raise a SyntaxError exception' do
-          # TODO: what the fuck?!? how does this test ANYTHING?
-          # it checks that #flog calls #process_parse_tree?? AND?!?!
-          lambda { @flog.flog('string', 'filename') }.must_raise(SyntaxError)
-        end
-
-        it 'should not process the failing code' do
-          def @flog.process(*args); raise &quot;no&quot;; end
-          lambda { @flog.flog('string', 'filename') }
-        end
-      end
-    end
-
-    describe 'when the string contains valid Ruby' do
-      before :each do
-        @flog.stubs(:process_parse_tree)
-      end
-
-      it 'should process the parse tree for the string' do
-        @flog.expects(:process_parse_tree)
-        @flog.flog('string', 'filename')
-      end
-
-      it 'should provide the string and the filename to the parse tree processor' do
-        @flog.expects(:process_parse_tree).with('string', 'filename')
-        @flog.flog('string', 'filename')
-      end
-    end
-  end
-
-#   describe 'when processing a ruby parse tree' do
+#
+# #   describe 'when processing a ruby parse tree' do
+# #     before :each do
+# #       @flog.stubs(:process)
+# #       @sexp = stub('s-expressions')
+# #       @parse_tree = stub('parse tree', :parse_tree_for_string =&gt; @sexp)
+# #       ParseTree.stubs(:new).returns(@parse_tree)
+# #     end
+# #
+# #     it 'should require both a ruby string and a filename' do
+# #       lambda { @flog.process_parse_tree('string') }.must_raise(ArgumentError)
+# #     end
+# #
+# #     it 'should compute the parse tree for the ruby string' do
+# #       Sexp.stubs(:from_array).returns(['1', '2'])
+# #       @parse_tree.expects(:parse_tree_for_string).returns(@sexp)
+# #       @flog.process_parse_tree('string', 'file')
+# #     end
+# #
+# #     it 'should use both the ruby string and the filename when computing the parse tree' do
+# #       Sexp.stubs(:from_array).returns(['1', '2'])
+# #       @parse_tree.expects(:parse_tree_for_string).with('string', 'file').returns(@sexp)
+# #       @flog.process_parse_tree('string', 'file')
+# #     end
+# #
+# #     describe 'if the ruby string is valid' do
+# #       before :each do
+# #         $pt = @parse_tree = stub('parse tree', :parse_tree_for_string =&gt; @sexp)
+# #         def @flog.process; end
+# #         def @flog.parse_tree; return $pt; end
+# #       end
+# #
+# #       it 'should convert the parse tree into a list of S-expressions' do
+# #         Sexp.expects(:from_array).with(@sexp).returns(['1', '2'])
+# #         @flog.process_parse_tree('string', 'file')
+# #       end
+# #
+# #       it 'should process the list of S-expressions' do
+# #         @flog.expects(:process)
+# #         @flog.process_parse_tree('string', 'file')
+# #       end
+# #
+# #       it 'should start processing at the first S-expression' do
+# #         Sexp.stubs(:from_array).returns(['1', '2'])
+# #         @flog.expects(:process).with('1')
+# #         @flog.process_parse_tree('string', 'file')
+# #       end
+# #     end
+# #
+# #     describe 'if the ruby string is invalid' do
+# #       before :each do
+# #         $parse_tree = stub('parse tree')
+# #         def @flog.parse_tree; return $parse_tree; end
+# #         def $parse_tree.parse_tree_for_string(*args); raise SyntaxError; end
+# #       end
+# #
+# #       it 'should fail' do
+# #         lambda { @flog.process_parse_tree('string', 'file') }.must_raise(SyntaxError)
+# #       end
+# #
+# #       it 'should not attempt to process the parse tree' do
+# #         def @flog.process(*args); raise &quot;no&quot;; end
+# #         lambda { @flog.process_parse_tree('string', 'file') }
+# #       end
+# #     end
+# #   end
+#
+#   describe 'when collecting blame information from a file' do
+#     it 'should require a filename' do
+#       lambda { @flog.collect_blame }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should not fail when given a filename' do
+#       @flog.collect_blame('filename')
+#     end
+#
+#     # TODO: talk to Rick and see what he was planning for
+#     # this... otherwise I'm thinking it should be ripped out
+#
+#     # it 'should have more specs'
+#   end
+#
+#   describe 'multiplier' do
+#     it 'should be possible to determine the current value of the multiplier' do
+#       @flog.must_respond_to(:multiplier)
+#     end
+#
+#     currently 'should be possible to set the current value of the multiplier' do
+#       @flog.multiplier = 10
+#       @flog.multiplier.must_equal 10
+#     end
+#   end
+#
+#   describe 'class_stack' do
+#     it 'should be possible to determine the current value of the class stack' do
+#       @flog.must_respond_to(:class_stack)
+#     end
+#
+#     currently 'should be possible to set the current value of the class stack' do
+#       @flog.class_stack &lt;&lt; 'name'
+#       @flog.class_stack.must_equal [ 'name' ]
+#     end
+#   end
+#
+#   describe 'method_stack' do
+#     it 'should be possible to determine the current value of the method stack' do
+#       @flog.must_respond_to(:method_stack)
+#     end
+#
+#     currently 'should be possible to set the current value of the method stack' do
+#       @flog.method_stack &lt;&lt; 'name'
+#       @flog.method_stack.must_equal [ 'name' ]
+#     end
+#   end
+#
+#   describe 'when adding to the current flog score' do
 #     before :each do
-#       @flog.stubs(:process)
-#       @sexp = stub('s-expressions')
-#       @parse_tree = stub('parse tree', :parse_tree_for_string =&gt; @sexp)
-#       ParseTree.stubs(:new).returns(@parse_tree)
+#       @flog.multiplier = 1
+#       def @flog.klass_name; return 'foo'; end
+#       def @flog.method_name; return 'bar'; end
+#       @flog.calls['foo#bar'] = { :alias =&gt; 0 }
+#     end
+#
+#     it 'should require an operation name' do
+#       lambda { @flog.add_to_score() }.must_raise(ArgumentError)
 #     end
 #
-#     it 'should require both a ruby string and a filename' do
-#       lambda { @flog.process_parse_tree('string') }.must_raise(ArgumentError)
+#     it 'should update the score for the current class, method, and operation' do
+#       @flog.add_to_score(:alias)
+#       @flog.calls['foo#bar'][:alias].wont_equal 0
 #     end
 #
-#     it 'should compute the parse tree for the ruby string' do
-#       Sexp.stubs(:from_array).returns(['1', '2'])
-#       @parse_tree.expects(:parse_tree_for_string).returns(@sexp)
-#       @flog.process_parse_tree('string', 'file')
+#     it 'should use the multiplier when updating the current call score' do
+#       @flog.multiplier = 10
+#       @flog.add_to_score(:alias)
+#       @flog.calls['foo#bar'][:alias].must_equal 10*Flog::OTHER_SCORES[:alias]
 #     end
+#   end
 #
-#     it 'should use both the ruby string and the filename when computing the parse tree' do
-#       Sexp.stubs(:from_array).returns(['1', '2'])
-#       @parse_tree.expects(:parse_tree_for_string).with('string', 'file').returns(@sexp)
-#       @flog.process_parse_tree('string', 'file')
+#   describe 'when computing the average per-call flog score' do
+#     it 'should not allow arguments' do
+#       lambda { @flog.average('foo') }.must_raise(ArgumentError)
 #     end
 #
-#     describe 'if the ruby string is valid' do
-#       before :each do
-#         $pt = @parse_tree = stub('parse tree', :parse_tree_for_string =&gt; @sexp)
-#         def @flog.process; end
-#         def @flog.parse_tree; return $pt; end
-#       end
+#     it 'should return the total flog score divided by the number of calls' do
+#       def @flog.total; return 100; end
+#       def @flog.calls; return :bar =&gt; {}, :foo =&gt; {} ; end
+#       @flog.average.must_be_close_to 50.0
+#     end
+#   end
 #
-#       it 'should convert the parse tree into a list of S-expressions' do
-#         Sexp.expects(:from_array).with(@sexp).returns(['1', '2'])
-#         @flog.process_parse_tree('string', 'file')
+#   describe 'when recursively analyzing the complexity of code' do
+#     it 'should require a complexity modifier value' do
+#       lambda { @flog.penalize_by }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should require a block, for code to recursively analyze' do
+#       lambda { @flog.penalize_by(42) }.must_raise(LocalJumpError)
+#     end
+#
+#     it 'should recursively analyze the provided code block' do
+#       @flog.penalize_by(42) do
+#         @foo = true
 #       end
 #
-#       it 'should process the list of S-expressions' do
-#         @flog.expects(:process)
-#         @flog.process_parse_tree('string', 'file')
+#       @foo.must_equal true
+#     end
+#
+#     it 'should update the complexity multiplier when recursing' do
+#       @flog.multiplier = 1
+#       @flog.penalize_by(42) do
+#         @flog.multiplier.must_equal 43
 #       end
+#     end
 #
-#       it 'should start processing at the first S-expression' do
-#         Sexp.stubs(:from_array).returns(['1', '2'])
-#         @flog.expects(:process).with('1')
-#         @flog.process_parse_tree('string', 'file')
+#     it 'when it is done it should restore the complexity multiplier to its original value' do
+#       @flog.multiplier = 1
+#       @flog.penalize_by(42) do
 #       end
+#       @flog.multiplier.must_equal 1
 #     end
+#   end
 #
-#     describe 'if the ruby string is invalid' do
-#       before :each do
-#         $parse_tree = stub('parse tree')
-#         def @flog.parse_tree; return $parse_tree; end
-#         def $parse_tree.parse_tree_for_string(*args); raise SyntaxError; end
+#   describe 'when computing complexity of all remaining opcodes' do
+#     it 'should require a list of opcodes' do
+#       lambda { @flog.analyze_list }.must_raise(ArgumentError)
+#     end
+#
+# # HACK: nope. this is just poorly written.
+# #     it 'should process each opcode' do
+# #       @opcodes = [ :foo, :bar, :baz ]
+# #       @opcodes.each do |opcode|
+# #          @flog.expects(:process).with(opcode)
+# #       end
+# #
+# #       @flog.analyze_list @opcodes
+# #     end
+#   end
+#
+#   describe 'when recording the current class being analyzed' do
+#     it 'should require a class name' do
+#       lambda { @flog.in_klass }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should require a block during which the class name is in effect' do
+#       lambda { @flog.in_klass('name') }.must_raise(LocalJumpError)
+#     end
+#
+#     it 'should recursively analyze the provided code block' do
+#       @flog.in_klass 'name' do
+#         @foo = true
 #       end
 #
-#       it 'should fail' do
-#         lambda { @flog.process_parse_tree('string', 'file') }.must_raise(SyntaxError)
+#       @foo.must_equal true
+#     end
+#
+#     it 'should update the class stack when recursing' do
+#       @flog.class_stack.clear
+#       @flog.in_klass 'name' do
+#         @flog.class_stack.must_equal ['name']
 #       end
+#     end
 #
-#       it 'should not attempt to process the parse tree' do
-#         def @flog.process(*args); raise &quot;no&quot;; end
-#         lambda { @flog.process_parse_tree('string', 'file') }
+#     it 'when it is done it should restore the class stack to its original value' do
+#       @flog.class_stack.clear
+#       @flog.in_klass 'name' do
 #       end
+#       @flog.class_stack.must_equal []
 #     end
 #   end
-
-  describe 'when collecting blame information from a file' do
-    it 'should require a filename' do
-      lambda { @flog.collect_blame }.must_raise(ArgumentError)
-    end
-
-    it 'should not fail when given a filename' do
-      @flog.collect_blame('filename')
-    end
-
-    # TODO: talk to Rick and see what he was planning for
-    # this... otherwise I'm thinking it should be ripped out
-
-    # it 'should have more specs'
-  end
-
-  describe 'multiplier' do
-    it 'should be possible to determine the current value of the multiplier' do
-      @flog.must_respond_to(:multiplier)
-    end
-
-    currently 'should be possible to set the current value of the multiplier' do
-      @flog.multiplier = 10
-      @flog.multiplier.must_equal 10
-    end
-  end
-
-  describe 'class_stack' do
-    it 'should be possible to determine the current value of the class stack' do
-      @flog.must_respond_to(:class_stack)
-    end
-
-    currently 'should be possible to set the current value of the class stack' do
-      @flog.class_stack &lt;&lt; 'name'
-      @flog.class_stack.must_equal [ 'name' ]
-    end
-  end
-
-  describe 'method_stack' do
-    it 'should be possible to determine the current value of the method stack' do
-      @flog.must_respond_to(:method_stack)
-    end
-
-    currently 'should be possible to set the current value of the method stack' do
-      @flog.method_stack &lt;&lt; 'name'
-      @flog.method_stack.must_equal [ 'name' ]
-    end
-  end
-
-  describe 'when adding to the current flog score' do
-    before :each do
-      @flog.multiplier = 1
-      def @flog.klass_name; return 'foo'; end
-      def @flog.method_name; return 'bar'; end
-      @flog.calls['foo#bar'] = { :alias =&gt; 0 }
-    end
-
-    it 'should require an operation name' do
-      lambda { @flog.add_to_score() }.must_raise(ArgumentError)
-    end
-
-    it 'should update the score for the current class, method, and operation' do
-      @flog.add_to_score(:alias)
-      @flog.calls['foo#bar'][:alias].wont_equal 0
-    end
-
-    it 'should use the multiplier when updating the current call score' do
-      @flog.multiplier = 10
-      @flog.add_to_score(:alias)
-      @flog.calls['foo#bar'][:alias].must_equal 10*Flog::OTHER_SCORES[:alias]
-    end
-  end
-
-  describe 'when computing the average per-call flog score' do
-    it 'should not allow arguments' do
-      lambda { @flog.average('foo') }.must_raise(ArgumentError)
-    end
-
-    it 'should return the total flog score divided by the number of calls' do
-      def @flog.total; return 100; end
-      def @flog.calls; return :bar =&gt; {}, :foo =&gt; {} ; end
-      @flog.average.must_be_close_to 50.0
-    end
-  end
-
-  describe 'when recursively analyzing the complexity of code' do
-    it 'should require a complexity modifier value' do
-      lambda { @flog.penalize_by }.must_raise(ArgumentError)
-    end
-
-    it 'should require a block, for code to recursively analyze' do
-      lambda { @flog.penalize_by(42) }.must_raise(LocalJumpError)
-    end
-
-    it 'should recursively analyze the provided code block' do
-      @flog.penalize_by(42) do
-        @foo = true
-      end
-
-      @foo.must_equal true
-    end
-
-    it 'should update the complexity multiplier when recursing' do
-      @flog.multiplier = 1
-      @flog.penalize_by(42) do
-        @flog.multiplier.must_equal 43
-      end
-    end
-
-    it 'when it is done it should restore the complexity multiplier to its original value' do
-      @flog.multiplier = 1
-      @flog.penalize_by(42) do
-      end
-      @flog.multiplier.must_equal 1
-    end
-  end
-
-  describe 'when computing complexity of all remaining opcodes' do
-    it 'should require a list of opcodes' do
-      lambda { @flog.analyze_list }.must_raise(ArgumentError)
-    end
-
-# HACK: nope. this is just poorly written.
-#     it 'should process each opcode' do
-#       @opcodes = [ :foo, :bar, :baz ]
-#       @opcodes.each do |opcode|
-#          @flog.expects(:process).with(opcode)
+#
+#   describe 'when looking up the name of the class currently under analysis' do
+#     it 'should not take any arguments' do
+#       lambda { @flog.klass_name('foo') }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should return the most recent class entered' do
+#       @flog.class_stack &lt;&lt; :foo &lt;&lt; :bar &lt;&lt; :baz
+#       @flog.klass_name.must_equal :foo
+#     end
+#
+#     it 'should return the default class if no classes entered' do
+#       @flog.class_stack.clear
+#       @flog.klass_name.must_equal :main
+#     end
+#   end
+#
+#   describe 'when recording the current method being analyzed' do
+#     it 'should require a method name' do
+#       lambda { @flog.in_method }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should require a block during which the class name is in effect' do
+#       lambda { @flog.in_method('name') }.must_raise(LocalJumpError)
+#     end
+#
+#     it 'should recursively analyze the provided code block' do
+#       @flog.in_method 'name' do
+#         @foo = true
 #       end
 #
-#       @flog.analyze_list @opcodes
+#       @foo.must_equal true
 #     end
-  end
-
-  describe 'when recording the current class being analyzed' do
-    it 'should require a class name' do
-      lambda { @flog.in_klass }.must_raise(ArgumentError)
-    end
-
-    it 'should require a block during which the class name is in effect' do
-      lambda { @flog.in_klass('name') }.must_raise(LocalJumpError)
-    end
-
-    it 'should recursively analyze the provided code block' do
-      @flog.in_klass 'name' do
-        @foo = true
-      end
-
-      @foo.must_equal true
-    end
-
-    it 'should update the class stack when recursing' do
-      @flog.class_stack.clear
-      @flog.in_klass 'name' do
-        @flog.class_stack.must_equal ['name']
-      end
-    end
-
-    it 'when it is done it should restore the class stack to its original value' do
-      @flog.class_stack.clear
-      @flog.in_klass 'name' do
-      end
-      @flog.class_stack.must_equal []
-    end
-  end
-
-  describe 'when looking up the name of the class currently under analysis' do
-    it 'should not take any arguments' do
-      lambda { @flog.klass_name('foo') }.must_raise(ArgumentError)
-    end
-
-    it 'should return the most recent class entered' do
-      @flog.class_stack &lt;&lt; :foo &lt;&lt; :bar &lt;&lt; :baz
-      @flog.klass_name.must_equal :foo
-    end
-
-    it 'should return the default class if no classes entered' do
-      @flog.class_stack.clear
-      @flog.klass_name.must_equal :main
-    end
-  end
-
-  describe 'when recording the current method being analyzed' do
-    it 'should require a method name' do
-      lambda { @flog.in_method }.must_raise(ArgumentError)
-    end
-
-    it 'should require a block during which the class name is in effect' do
-      lambda { @flog.in_method('name') }.must_raise(LocalJumpError)
-    end
-
-    it 'should recursively analyze the provided code block' do
-      @flog.in_method 'name' do
-        @foo = true
-      end
-
-      @foo.must_equal true
-    end
-
-    it 'should update the class stack when recursing' do
-      @flog.method_stack.clear
-      @flog.in_method 'name' do
-        @flog.method_stack.must_equal ['name']
-      end
-    end
-
-    it 'when it is done it should restore the class stack to its original value' do
-      @flog.method_stack.clear
-      @flog.in_method 'name' do
-      end
-      @flog.method_stack.must_equal []
-    end
-  end
-
-  describe 'when looking up the name of the method currently under analysis' do
-    it 'should not take any arguments' do
-      lambda { @flog.method_name('foo') }.must_raise(ArgumentError)
-    end
-
-    it 'should return the most recent method entered' do
-      @flog.method_stack &lt;&lt; :foo &lt;&lt; :bar &lt;&lt; :baz
-      @flog.method_name.must_equal :foo
-    end
-
-    it 'should return the default method if no methods entered' do
-      @flog.method_stack.clear
-      @flog.method_name.must_equal :none
-    end
-  end
-
-  describe 'when resetting state' do
-    it 'should not take any arguments' do
-      lambda { @flog.reset('foo') }.must_raise(ArgumentError)
-    end
-
-    it 'should clear any recorded totals data' do
-      @flog.totals['foo'] = 'bar'
-      @flog.reset
-      @flog.totals.must_equal({})
-    end
-
-    it 'should clear the total score' do
-      # the only way I know to do this is to force the total score to be computed for actual code, then reset it
-      @flog.flog_files(fixture_files('/simple/simple.rb'))
-      @flog.reset
-      @flog.total.must_equal 0
-    end
-
-    it 'should set the multiplier to 1.0' do
-      @flog.multiplier = 20.0
-      @flog.reset
-      @flog.multiplier.must_equal 1.0
-    end
-
-    it 'should set clear any calls data' do
-      @flog.calls['foobar'] = 'yoda'
-      @flog.reset
-      @flog.calls.must_equal({})
-    end
-
-    it 'should ensure that new recorded calls will get 0 counts without explicit initialization' do
-      @flog.reset
-      @flog.calls['foobar']['baz'] += 20
-      @flog.calls['foobar']['baz'].must_equal 20
-    end
-  end
-
-  describe 'when retrieving the total score' do
-    it 'should take no arguments' do
-      lambda { @flog.total('foo') }.must_raise(ArgumentError)
-    end
-
-    it 'should return 0 if nothing has been analyzed' do
-      @flog.total.must_equal 0
-    end
-
-    it 'should compute totals data when called the first time' do
-      @flog.expects(:totals)
-      @flog.total
-    end
-
-    it 'should not recompute totals data when called after the first time' do
-      @flog.total
-      def @flog.totals(*args); raise &quot;no&quot;; end
-      @flog.total
-    end
-
-    it 'should return the score from the analysis once files have been analyzed' do
-      @flog.flog_files(fixture_files('/simple/simple.rb'))
-      @flog.total.wont_equal 0
-    end
-  end
-
-  describe 'when computing a score for a method' do
-    it 'should require a hash of call tallies' do
-      lambda { @flog.score_method }.must_raise(ArgumentError)
-    end
-
-    it 'should return a score of 0 if no tallies are provided' do
-      @flog.score_method({}).must_equal 0.0
-    end
-
-    it 'should compute the sqrt of summed squares for assignments, branches, and other tallies' do
-      @flog.score_method({
-        :assignment =&gt; 7,
-        :branch =&gt; 23,
-        :crap =&gt; 37
-      }).must_be_close_to Math.sqrt(7*7 + 23*23 + 37*37)
-    end
-  end
-
-  describe 'when recording a total for a method' do
-    # guess what, @totals and @calls could be refactored to be first-class objects
-    it 'should require a method and a score' do
-      lambda { @flog.record_method_score('foo') }.must_raise(ArgumentError)
-    end
-
-    it 'should set the total score for the provided method' do
-      @flog.record_method_score('foo', 20)
-      @flog.totals['foo'].must_equal 20
-    end
-  end
-
-  describe 'when updating the total flog score' do
-    it 'should require an amount to update by' do
-      lambda { @flog.increment_total_score_by }.must_raise(ArgumentError)
-    end
-
-    it 'should update the total flog score' do
-      @flog.total_score = 0
-      @flog.increment_total_score_by 42
-      @flog.total.must_equal 42
-    end
-  end
-
-  describe 'when compiling summaries for a method' do
-    before :each do
-      @tally = { :foo =&gt; 0.0 }
-      @method = 'foo'
-      $score = @score = 42.0
-
-      @flog.total_score = 0
-
-      def @flog.score_method(*args); return $score; end
-      def @flog.record_method_score(*args); end
-      def @flog.increment_total_score_by(*args); end
-    end
-
-    it 'should require a method name and a tally' do
-      lambda { @flog.summarize_method('foo') }.must_raise(ArgumentError)
-    end
-
-    it 'should compute a score for the method, based on the tally' do
-      @flog.expects(:score_method).with(@tally)
-      @flog.summarize_method(@method, @tally)
-    end
-
-    it 'should record the score for the method' do
-      @flog.expects(:record_method_score).with(@method, @score)
-      @flog.summarize_method(@method, @tally)
-    end
-
-    it 'should update the overall flog score' do
-      @flog.expects(:increment_total_score_by).with(@score)
-      @flog.summarize_method(@method, @tally)
-    end
-
-# HACK: I don't see how these ever worked if the above passes... *shrug*
-#     describe 'ignoring non-method code and given a non-method tally' do
-#       it 'should not compute a score for the tally' do
-#         def @flog.score_method(*args); raise &quot;no&quot;; end
-#         @flog.summarize_method(@method, @tally)
+#
+#     it 'should update the class stack when recursing' do
+#       @flog.method_stack.clear
+#       @flog.in_method 'name' do
+#         @flog.method_stack.must_equal ['name']
 #       end
+#     end
 #
-#       it 'should not record a score based on the tally' do
-#         def @flog.record_method_score(*args); raise &quot;no&quot;; end
-#         @flog.summarize_method(@method, @tally)
+#     it 'when it is done it should restore the class stack to its original value' do
+#       @flog.method_stack.clear
+#       @flog.in_method 'name' do
 #       end
+#       @flog.method_stack.must_equal []
+#     end
+#   end
+#
+#   describe 'when looking up the name of the method currently under analysis' do
+#     it 'should not take any arguments' do
+#       lambda { @flog.method_name('foo') }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should return the most recent method entered' do
+#       @flog.method_stack &lt;&lt; :foo &lt;&lt; :bar &lt;&lt; :baz
+#       @flog.method_name.must_equal :foo
+#     end
+#
+#     it 'should return the default method if no methods entered' do
+#       @flog.method_stack.clear
+#       @flog.method_name.must_equal :none
+#     end
+#   end
+#
+#   describe 'when resetting state' do
+#     it 'should not take any arguments' do
+#       lambda { @flog.reset('foo') }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should clear any recorded totals data' do
+#       @flog.totals['foo'] = 'bar'
+#       @flog.reset
+#       @flog.totals.must_equal({})
+#     end
+#
+#     it 'should clear the total score' do
+#       # the only way I know to do this is to force the total score to be computed for actual code, then reset it
+#       @flog.flog_files(fixture_files('/simple/simple.rb'))
+#       @flog.reset
+#       @flog.total.must_equal 0
+#     end
+#
+#     it 'should set the multiplier to 1.0' do
+#       @flog.multiplier = 20.0
+#       @flog.reset
+#       @flog.multiplier.must_equal 1.0
+#     end
+#
+#     it 'should set clear any calls data' do
+#       @flog.calls['foobar'] = 'yoda'
+#       @flog.reset
+#       @flog.calls.must_equal({})
+#     end
+#
+#     it 'should ensure that new recorded calls will get 0 counts without explicit initialization' do
+#       @flog.reset
+#       @flog.calls['foobar']['baz'] += 20
+#       @flog.calls['foobar']['baz'].must_equal 20
+#     end
+#   end
+#
+#   describe 'when retrieving the total score' do
+#     it 'should take no arguments' do
+#       lambda { @flog.total('foo') }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should return 0 if nothing has been analyzed' do
+#       @flog.total.must_equal 0
+#     end
+#
+#     it 'should compute totals data when called the first time' do
+#       @flog.expects(:totals)
+#       @flog.total
+#     end
 #
-#       it 'should not update the overall flog score' do
-#         def @flog.increment_total_score_by(*args); raise &quot;no&quot;; end
-#         @flog.summarize_method(@method, @tally)
+#     it 'should not recompute totals data when called after the first time' do
+#       @flog.total
+#       def @flog.totals(*args); raise &quot;no&quot;; end
+#       @flog.total
+#     end
+#
+#     it 'should return the score from the analysis once files have been analyzed' do
+#       @flog.flog_files(fixture_files('/simple/simple.rb'))
+#       @flog.total.wont_equal 0
+#     end
+#   end
+#
+#   describe 'when computing a score for a method' do
+#     it 'should require a hash of call tallies' do
+#       lambda { @flog.score_method }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should return a score of 0 if no tallies are provided' do
+#       @flog.score_method({}).must_equal 0.0
+#     end
+#
+#     it 'should compute the sqrt of summed squares for assignments, branches, and other tallies' do
+#       @flog.score_method({
+#         :assignment =&gt; 7,
+#         :branch =&gt; 23,
+#         :crap =&gt; 37
+#       }).must_be_close_to Math.sqrt(7*7 + 23*23 + 37*37)
+#     end
+#   end
+#
+#   describe 'when recording a total for a method' do
+#     # guess what, @totals and @calls could be refactored to be first-class objects
+#     it 'should require a method and a score' do
+#       lambda { @flog.record_method_score('foo') }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should set the total score for the provided method' do
+#       @flog.record_method_score('foo', 20)
+#       @flog.totals['foo'].must_equal 20
+#     end
+#   end
+#
+#   describe 'when updating the total flog score' do
+#     it 'should require an amount to update by' do
+#       lambda { @flog.increment_total_score_by }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should update the total flog score' do
+#       @flog.total_score = 0
+#       @flog.increment_total_score_by 42
+#       @flog.total.must_equal 42
+#     end
+#   end
+#
+#   describe 'when compiling summaries for a method' do
+#     before :each do
+#       @tally = { :foo =&gt; 0.0 }
+#       @method = 'foo'
+#       $score = @score = 42.0
+#
+#       @flog.total_score = 0
+#
+#       def @flog.score_method(*args); return $score; end
+#       def @flog.record_method_score(*args); end
+#       def @flog.increment_total_score_by(*args); end
+#     end
+#
+#     it 'should require a method name and a tally' do
+#       lambda { @flog.summarize_method('foo') }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should compute a score for the method, based on the tally' do
+#       @flog.expects(:score_method).with(@tally)
+#       @flog.summarize_method(@method, @tally)
+#     end
+#
+#     it 'should record the score for the method' do
+#       @flog.expects(:record_method_score).with(@method, @score)
+#       @flog.summarize_method(@method, @tally)
+#     end
+#
+#     it 'should update the overall flog score' do
+#       @flog.expects(:increment_total_score_by).with(@score)
+#       @flog.summarize_method(@method, @tally)
+#     end
+#
+# # HACK: I don't see how these ever worked if the above passes... *shrug*
+# #     describe 'ignoring non-method code and given a non-method tally' do
+# #       it 'should not compute a score for the tally' do
+# #         def @flog.score_method(*args); raise &quot;no&quot;; end
+# #         @flog.summarize_method(@method, @tally)
+# #       end
+# #
+# #       it 'should not record a score based on the tally' do
+# #         def @flog.record_method_score(*args); raise &quot;no&quot;; end
+# #         @flog.summarize_method(@method, @tally)
+# #       end
+# #
+# #       it 'should not update the overall flog score' do
+# #         def @flog.increment_total_score_by(*args); raise &quot;no&quot;; end
+# #         @flog.summarize_method(@method, @tally)
+# #       end
+# #     end
+#   end
+#
+#   describe 'when requesting totals' do
+#     it 'should not accept any arguments' do
+#       lambda { @flog.totals('foo') }.must_raise(ArgumentError)
+#     end
+#
+#     describe 'when called the first time' do
+# #       it 'should access calls data' do
+# #         @flog.expects(:calls).returns({})
+# #         @flog.totals
+# #       end
+#
+# #       it &quot;will compile a summary for each method from the method's tally&quot; do
+# #         $calls = @calls = { :foo =&gt; 1.0, :bar =&gt; 2.0, :baz =&gt; 3.0 }
+# #         def @flog.calls; return $calls; end
+# #
+# #         @calls.each do |meth, tally|
+# #           @flog.expects(:summarize_method).with(meth, tally)
+# #         end
+# #
+# #         @flog.totals
+# #       end
+#
+#       it 'should return the totals data' do
+#         @flog.totals.must_equal({})
 #       end
 #     end
-  end
-
-  describe 'when requesting totals' do
-    it 'should not accept any arguments' do
-      lambda { @flog.totals('foo') }.must_raise(ArgumentError)
-    end
-
-    describe 'when called the first time' do
-#       it 'should access calls data' do
-#         @flog.expects(:calls).returns({})
+#
+#     describe 'when called after the first time' do
+#       before :each do
 #         @flog.totals
 #       end
-
-#       it &quot;will compile a summary for each method from the method's tally&quot; do
-#         $calls = @calls = { :foo =&gt; 1.0, :bar =&gt; 2.0, :baz =&gt; 3.0 }
-#         def @flog.calls; return $calls; end
 #
-#         @calls.each do |meth, tally|
-#           @flog.expects(:summarize_method).with(meth, tally)
-#         end
+#       it 'should not access calls data' do
+#         def @flog.calls(*args); raise &quot;no&quot;; end
+#         @flog.totals
+#       end
 #
+#       it 'should not compile method summaries' do
+#         def @flog.summarize_method(*args); raise &quot;no&quot;; end
 #         @flog.totals
 #       end
-
-      it 'should return the totals data' do
-        @flog.totals.must_equal({})
-      end
-    end
-
-    describe 'when called after the first time' do
-      before :each do
-        @flog.totals
-      end
-
-      it 'should not access calls data' do
-        def @flog.calls(*args); raise &quot;no&quot;; end
-        @flog.totals
-      end
-
-      it 'should not compile method summaries' do
-        def @flog.summarize_method(*args); raise &quot;no&quot;; end
-        @flog.totals
-      end
-
-      it 'should return the totals data' do
-        @flog.totals.must_equal({})
-      end
-    end
-  end
-
-  describe 'when producing a report summary' do
-    before :each do
-      @handle = stub('io handle)', :puts =&gt; nil)
-      @total_score = 42.0
-      @average_score = 1.0
-      def @flog.total; return 42.0; end
-      def @flog.average; return 1.0; end
-    end
-
-    it 'should require an io handle' do
-      lambda { @flog.output_summary }.must_raise(ArgumentError)
-    end
-
-    it 'computes the total flog score' do
-      # HACK @flog.expects(:total).returns 42.0
-      @flog.output_summary(@handle)
-    end
-
-    it 'computes the average flog score' do
-      # HACK @flog.expects(:average).returns 1.0
-      @flog.output_summary(@handle)
-    end
-
-    it 'outputs the total flog score to the handle' do
-      @handle.expects(:puts).with do |string|
-        string =~ Regexp.new(Regexp.escape(&quot;%.1f&quot; % @total_score))
-      end
-      @flog.output_summary(@handle)
-    end
-
-    it 'outputs the average flog score to the handle' do
-      @handle.expects(:puts).with do |string|
-        string =~ Regexp.new(Regexp.escape(&quot;%.1f&quot; % @average_score))
-      end
-      @flog.output_summary(@handle)
-    end
-  end
-
-  describe 'when producing a detailed call summary report' do
-    before :each do
-      @handle = stub('io handle)', :puts =&gt; nil)
-      $calls = @calls = { :foo =&gt; {}, :bar =&gt; {}, :baz =&gt; {} }
-      $totals = @totals = { :foo =&gt; 1, :bar =&gt; 2, :baz =&gt; 3 }
-
-      def @flog.calls; return $calls; end
-      def @flog.totals; return $totals; end
-      def @flog.output_method_details(*args); return 5; end
-    end
-
-    it 'should require an i/o handle' do
-      lambda { @flog.output_details }.must_raise(ArgumentError)
-    end
-
-    it 'should allow a threshold on the amount of detail to report' do
-      lambda { @flog.output_details(@handle, 300) }.wont_raise_error(ArgumentError)
-    end
-
-#     it 'retrieves the set of total statistics' do
-#       @flog.expects(:totals).returns(@totals)
-#       @flog.output_details(@handle)
+#
+#       it 'should return the totals data' do
+#         @flog.totals.must_equal({})
+#       end
 #     end
-
-#     it 'retrieves the set of call statistics' do
-#       @flog.expects(:calls).returns({})
-#       @flog.output_details(@handle)
+#   end
+#
+#   describe 'when producing a report summary' do
+#     before :each do
+#       @handle = stub('io handle)', :puts =&gt; nil)
+#       @total_score = 42.0
+#       @average_score = 1.0
+#       def @flog.total; return 42.0; end
+#       def @flog.average; return 1.0; end
 #     end
-
-#     it 'should output a method summary for each located method' do
-#       @calls.each do |meth, list|
-#         @flog.expects(:output_method_details).with(@handle, meth, list).returns(5)
+#
+#     it 'should require an io handle' do
+#       lambda { @flog.output_summary }.must_raise(ArgumentError)
+#     end
+#
+#     it 'computes the total flog score' do
+#       # HACK @flog.expects(:total).returns 42.0
+#       @flog.output_summary(@handle)
+#     end
+#
+#     it 'computes the average flog score' do
+#       # HACK @flog.expects(:average).returns 1.0
+#       @flog.output_summary(@handle)
+#     end
+#
+#     it 'outputs the total flog score to the handle' do
+#       @handle.expects(:puts).with do |string|
+#         string =~ Regexp.new(Regexp.escape(&quot;%.1f&quot; % @total_score))
 #       end
-#       @flog.output_details(@handle)
+#       @flog.output_summary(@handle)
 #     end
 #
-#     describe 'if a threshold is provided' do
-#       it 'should only output details for methods until the threshold is reached' do
-#         @flog.expects(:output_method_details).with(@handle, :baz, {}).returns(5)
-#         @flog.expects(:output_method_details).with(@handle, :bar, {}).returns(5)
-#         # HACK @flog.expects(:output_method_details).with(@handle, :foo, {}).never
-#         @flog.output_details(@handle, 10)
+#     it 'outputs the average flog score to the handle' do
+#       @handle.expects(:puts).with do |string|
+#         string =~ Regexp.new(Regexp.escape(&quot;%.1f&quot; % @average_score))
 #       end
+#       @flog.output_summary(@handle)
 #     end
-
-#     describe 'if no threshold is provided' do
-#       it 'should output details for all methods' do
-#         @calls.each do |class_method, call_list|
-#           @flog.expects(:output_method_details).with(@handle, class_method, call_list).returns(5)
+#   end
+#
+#   describe 'when producing a detailed call summary report' do
+#     before :each do
+#       @handle = stub('io handle)', :puts =&gt; nil)
+#       $calls = @calls = { :foo =&gt; {}, :bar =&gt; {}, :baz =&gt; {} }
+#       $totals = @totals = { :foo =&gt; 1, :bar =&gt; 2, :baz =&gt; 3 }
+#
+#       def @flog.calls; return $calls; end
+#       def @flog.totals; return $totals; end
+#       def @flog.output_method_details(*args); return 5; end
+#     end
+#
+#     it 'should require an i/o handle' do
+#       lambda { @flog.output_details }.must_raise(ArgumentError)
+#     end
+#
+#     it 'should allow a threshold on the amount of detail to report' do
+#       lambda { @flog.output_details(@handle, 300) }.wont_raise_error(ArgumentError)
+#     end
+#
+# #     it 'retrieves the set of total statistics' do
+# #       @flog.expects(:totals).returns(@totals)
+# #       @flog.output_details(@handle)
+# #     end
+#
+# #     it 'retrieves the set of call statistics' do
+# #       @flog.expects(:calls).returns({})
+# #       @flog.output_details(@handle)
+# #     end
+#
+# #     it 'should output a method summary for each located method' do
+# #       @calls.each do |meth, list|
+# #         @flog.expects(:output_method_details).with(@handle, meth, list).returns(5)
+# #       end
+# #       @flog.output_details(@handle)
+# #     end
+# #
+# #     describe 'if a threshold is provided' do
+# #       it 'should only output details for methods until the threshold is reached' do
+# #         @flog.expects(:output_method_details).with(@handle, :baz, {}).returns(5)
+# #         @flog.expects(:output_method_details).with(@handle, :bar, {}).returns(5)
+# #         # HACK @flog.expects(:output_method_details).with(@handle, :foo, {}).never
+# #         @flog.output_details(@handle, 10)
+# #       end
+# #     end
+#
+# #     describe 'if no threshold is provided' do
+# #       it 'should output details for all methods' do
+# #         @calls.each do |class_method, call_list|
+# #           @flog.expects(:output_method_details).with(@handle, class_method, call_list).returns(5)
+# #         end
+# #         @flog.output_details(@handle)
+# #       end
+# #     end
+#   end
+#
+#   describe 'when reporting the details for a specific method' do
+#     before :each do
+#       @handle = stub('i/o handle', :puts =&gt; nil)
+#       $totals = { 'foo#foo' =&gt; 42.0, 'foo#none' =&gt; 12.0 }
+#       @data = { :assign =&gt; 10, :branch =&gt; 5, :case =&gt; 3 }
+#       def @flog.totals; return $totals; end
+#     end
+#
+#     it 'should require an i/o handle, a method name, and method details' do
+#       lambda { @flog.output_method_details('foo', 'bar') }.must_raise(ArgumentError)
+#     end
+#
+#     describe 'and ignoring non-method code' do
+#       before :each do
+#         @flog = Flog.new(:methods =&gt; true)
+#         def @flog.totals; return $totals; end
+#       end
+#
+#       describe 'and given non-method data to summarize' do
+#         it 'should not generate any output on the i/o handle' do
+#           def @handle.puts(*args); raise &quot;no&quot;; end
+#           @flog.output_method_details(@handle, 'foo#none', @data)
+#         end
+#
+#         it 'should return 0' do
+#           @flog.output_method_details(@handle, 'foo#none', @data).must_equal 0.0
+#         end
+#       end
+#
+#       describe 'and given method data to summarize' do
+#         it 'should return the total complexity for the method' do
+#           @flog.output_method_details(@handle, 'foo#foo', @data).must_equal 42.0
+#         end
+#
+#         it 'should output the overall total for the method' do
+#           @handle.expects(:puts).with do |string|
+#             string =~ Regexp.new(Regexp.escape(&quot;%.1f&quot; % 42.0))
+#           end
+#           @flog.output_method_details(@handle, 'foo#foo', @data)
+#         end
+#
+#         it 'should output call details for each call for the method' do
+#           @data.each do |call, count|
+#             @handle.expects(:puts).with do |string|
+#               string =~ Regexp.new(Regexp.escape(&quot;%6.1f: %s&quot; % [ count, call ]))
+#             end
+#           end
+#           @flog.output_method_details(@handle, 'foo#foo', @data)
 #         end
-#         @flog.output_details(@handle)
 #       end
 #     end
-  end
-
-  describe 'when reporting the details for a specific method' do
-    before :each do
-      @handle = stub('i/o handle', :puts =&gt; nil)
-      $totals = { 'foo#foo' =&gt; 42.0, 'foo#none' =&gt; 12.0 }
-      @data = { :assign =&gt; 10, :branch =&gt; 5, :case =&gt; 3 }
-      def @flog.totals; return $totals; end
-    end
-
-    it 'should require an i/o handle, a method name, and method details' do
-      lambda { @flog.output_method_details('foo', 'bar') }.must_raise(ArgumentError)
-    end
-
-    describe 'and ignoring non-method code' do
-      before :each do
-        @flog = Flog.new(:methods =&gt; true)
-        def @flog.totals; return $totals; end
-      end
-
-      describe 'and given non-method data to summarize' do
-        it 'should not generate any output on the i/o handle' do
-          def @handle.puts(*args); raise &quot;no&quot;; end
-          @flog.output_method_details(@handle, 'foo#none', @data)
-        end
-
-        it 'should return 0' do
-          @flog.output_method_details(@handle, 'foo#none', @data).must_equal 0.0
-        end
-      end
-
-      describe 'and given method data to summarize' do
-        it 'should return the total complexity for the method' do
-          @flog.output_method_details(@handle, 'foo#foo', @data).must_equal 42.0
-        end
-
-        it 'should output the overall total for the method' do
-          @handle.expects(:puts).with do |string|
-            string =~ Regexp.new(Regexp.escape(&quot;%.1f&quot; % 42.0))
-          end
-          @flog.output_method_details(@handle, 'foo#foo', @data)
-        end
-
-        it 'should output call details for each call for the method' do
-          @data.each do |call, count|
-            @handle.expects(:puts).with do |string|
-              string =~ Regexp.new(Regexp.escape(&quot;%6.1f: %s&quot; % [ count, call ]))
-            end
-          end
-          @flog.output_method_details(@handle, 'foo#foo', @data)
-        end
-      end
-    end
-
-    describe 'and not excluding non-method code' do
-      it 'should return the total complexity for the method' do
-        @flog.output_method_details(@handle, 'foo#foo', @data).must_equal 42.0
-      end
-
-      it 'should output the overall total for the method' do
-        @handle.expects(:puts).with do |string|
-          string =~ Regexp.new(Regexp.escape(&quot;%.1f&quot; % 42.0))
-        end
-        @flog.output_method_details(@handle, 'foo#foo', @data)
-      end
-
-      it 'should output call details for each call for the method' do
-        @data.each do |call, count|
-          @handle.expects(:puts).with do |string|
-            string =~ Regexp.new(Regexp.escape(&quot;%6.1f: %s&quot; % [ count, call ]))
-          end
-        end
-        @flog.output_method_details(@handle, 'foo#foo', @data)
-      end
-    end
-  end
-
-  describe 'when generating a report' do
-    before :each do
-      @flog.stubs(:output_summary)
-      @handle = stub('io handle)', :puts =&gt; nil)
-    end
-
-#     it 'allows specifying an i/o handle' do
-#       lambda { @flog.report @handle }.wont_raise_error(ArgumentError)
+#
+#     describe 'and not excluding non-method code' do
+#       it 'should return the total complexity for the method' do
+#         @flog.output_method_details(@handle, 'foo#foo', @data).must_equal 42.0
+#       end
+#
+#       it 'should output the overall total for the method' do
+#         @handle.expects(:puts).with do |string|
+#           string =~ Regexp.new(Regexp.escape(&quot;%.1f&quot; % 42.0))
+#         end
+#         @flog.output_method_details(@handle, 'foo#foo', @data)
+#       end
+#
+#       it 'should output call details for each call for the method' do
+#         @data.each do |call, count|
+#           @handle.expects(:puts).with do |string|
+#             string =~ Regexp.new(Regexp.escape(&quot;%6.1f: %s&quot; % [ count, call ]))
+#           end
+#         end
+#         @flog.output_method_details(@handle, 'foo#foo', @data)
+#       end
 #     end
-# 
-#     it 'allows running the report without a specified i/o handle' do
-#       lambda { @flog.report }.wont_raise_error(ArgumentError)
+#   end
+#
+#   describe 'when generating a report' do
+#     before :each do
+#       @flog.stubs(:output_summary)
+#       @handle = stub('io handle)', :puts =&gt; nil)
 #     end
-
-#     describe 'and no i/o handle is specified' do
-#       it 'defaults the io handle to stdout' do
-#         @flog.expects(:output_summary).with($stdout)
-#         @flog.report
+#
+# #     it 'allows specifying an i/o handle' do
+# #       lambda { @flog.report @handle }.wont_raise_error(ArgumentError)
+# #     end
+# #
+# #     it 'allows running the report without a specified i/o handle' do
+# #       lambda { @flog.report }.wont_raise_error(ArgumentError)
+# #     end
+#
+# #     describe 'and no i/o handle is specified' do
+# #       it 'defaults the io handle to stdout' do
+# #         @flog.expects(:output_summary).with($stdout)
+# #         @flog.report
+# #       end
+# #     end
+#
+#     describe 'and producing a summary report' do
+#       before :each do
+#         @flog = Flog.new(:score =&gt; true)
+#         @flog.stubs(:output_summary)
+#       end
+#
+#       it 'produces an output summary on the i/o handle' do
+#         @flog.expects(:output_summary).with(@handle)
+#         @flog.report(@handle)
+#       end
+#
+#       it 'does not output a detailed report' do
+#         def @flog.output_details(*args); raise &quot;no&quot;; end
+#         @flog.report(@handle)
+#       end
+#
+#       it 'should reset statistics when finished' do
+#         @flog.expects(:reset)
+#         @flog.report(@handle)
 #       end
 #     end
+#
+#     describe 'and producing a full report' do
+#       before :each do
+#         @flog.stubs(:output_summary)
+#         @flog.stubs(:output_details)
+#       end
+#
+#       it 'produces an output summary on the i/o handle' do
+#         @flog.expects(:output_summary).with(@handle)
+#         @flog.report(@handle)
+#       end
+#
+#       it 'should generate a detailed report of method complexity on the i/o handle' do
+#         @flog.expects(:output_details).with {|handle, max| handle == @handle }
+#         @flog.report(@handle)
+#       end
+#
+#       describe 'when flogging all methods in the system' do
+#         before :each do
+#           @flog = Flog.new(:all =&gt; true)
+#           @flog.stubs(:output_summary)
+#           @flog.stubs(:output_details)
+#         end
+#
+#         it 'should not limit the detailed report' do
+#           @flog.expects(:output_details).with(@handle)
+#           @flog.report(@handle)
+#         end
+#       end
+#
+#       describe 'when flogging only the most expensive methods in the system' do
+#         it 'should limit the detailed report to the Flog threshold' do
+#           def @flog.total; return 3.45; end
+#           @flog.expects(:output_details).with(@handle, 3.45 * 0.60)
+#           @flog.report(@handle)
+#         end
+#       end
+#
+#       it 'should reset statistics when finished' do
+#         @flog.expects(:reset)
+#         @flog.report(@handle)
+#       end
+#     end
+#   end
+# end
 
-    describe 'and producing a summary report' do
-      before :each do
-        @flog = Flog.new(:score =&gt; true)
-        @flog.stubs(:output_summary)
-      end
-
-      it 'produces an output summary on the i/o handle' do
-        @flog.expects(:output_summary).with(@handle)
-        @flog.report(@handle)
-      end
-
-      it 'does not output a detailed report' do
-        def @flog.output_details(*args); raise &quot;no&quot;; end
-        @flog.report(@handle)
-      end
-
-      it 'should reset statistics when finished' do
-        @flog.expects(:reset)
-        @flog.report(@handle)
-      end
-    end
-
-    describe 'and producing a full report' do
-      before :each do
-        @flog.stubs(:output_summary)
-        @flog.stubs(:output_details)
-      end
-
-      it 'produces an output summary on the i/o handle' do
-        @flog.expects(:output_summary).with(@handle)
-        @flog.report(@handle)
-      end
-
-      it 'should generate a detailed report of method complexity on the i/o handle' do
-        @flog.expects(:output_details).with {|handle, max| handle == @handle }
-        @flog.report(@handle)
-      end
-
-      describe 'when flogging all methods in the system' do
-        before :each do
-          @flog = Flog.new(:all =&gt; true)
-          @flog.stubs(:output_summary)
-          @flog.stubs(:output_details)
-        end
-
-        it 'should not limit the detailed report' do
-          @flog.expects(:output_details).with(@handle)
-          @flog.report(@handle)
-        end
-      end
-
-      describe 'when flogging only the most expensive methods in the system' do
-        it 'should limit the detailed report to the Flog threshold' do
-          def @flog.total; return 3.45; end
-          @flog.expects(:output_details).with(@handle, 3.45 * 0.60)
-          @flog.report(@handle)
-        end
-      end
+############################################################
+# TODO after driver code is covered
 
-      it 'should reset statistics when finished' do
-        @flog.expects(:reset)
-        @flog.report(@handle)
-      end
-    end
-  end
-end
+#   def test_process_alias
+#     raise NotImplementedError, 'Need to write test_process_alias'
+#   end
+#
+#   def test_process_and
+#     raise NotImplementedError, 'Need to write test_process_and'
+#   end
+#
+#   def test_process_attrasgn
+#     raise NotImplementedError, 'Need to write test_process_attrasgn'
+#   end
+#
+#   def test_process_attrset
+#     raise NotImplementedError, 'Need to write test_process_attrset'
+#   end
+#
+#   def test_process_block
+#     raise NotImplementedError, 'Need to write test_process_block'
+#   end
+#
+#   def test_process_block_pass
+#     raise NotImplementedError, 'Need to write test_process_block_pass'
+#   end
+#
+#   def test_process_call
+#     raise NotImplementedError, 'Need to write test_process_call'
+#   end
+#
+#   def test_process_case
+#     raise NotImplementedError, 'Need to write test_process_case'
+#   end
+#
+#   def test_process_class
+#     raise NotImplementedError, 'Need to write test_process_class'
+#   end
+#
+#   def test_process_dasgn_curr
+#     raise NotImplementedError, 'Need to write test_process_dasgn_curr'
+#   end
+#
+#   def test_process_defn
+#     raise NotImplementedError, 'Need to write test_process_defn'
+#   end
+#
+#   def test_process_defs
+#     raise NotImplementedError, 'Need to write test_process_defs'
+#   end
+#
+#   def test_process_else
+#     raise NotImplementedError, 'Need to write test_process_else'
+#   end
+#
+#   def test_process_iasgn
+#     raise NotImplementedError, 'Need to write test_process_iasgn'
+#   end
+#
+#   def test_process_if
+#     raise NotImplementedError, 'Need to write test_process_if'
+#   end
+#
+#   def test_process_iter
+#     raise NotImplementedError, 'Need to write test_process_iter'
+#   end
+#
+#   def test_process_lasgn
+#     raise NotImplementedError, 'Need to write test_process_lasgn'
+#   end
+#
+#   def test_process_lit
+#     raise NotImplementedError, 'Need to write test_process_lit'
+#   end
+#
+#   def test_process_masgn
+#     raise NotImplementedError, 'Need to write test_process_masgn'
+#   end
+#
+#   def test_process_module
+#     raise NotImplementedError, 'Need to write test_process_module'
+#   end
+#
+#   def test_process_or
+#     raise NotImplementedError, 'Need to write test_process_or'
+#   end
+#
+#   def test_process_parse_tree
+#     raise NotImplementedError, 'Need to write test_process_parse_tree'
+#   end
+#
+#   def test_process_rescue
+#     raise NotImplementedError, 'Need to write test_process_rescue'
+#   end
+#
+#   def test_process_sclass
+#     raise NotImplementedError, 'Need to write test_process_sclass'
+#   end
+#
+#   def test_process_super
+#     raise NotImplementedError, 'Need to write test_process_super'
+#   end
+#
+#   def test_process_until
+#     raise NotImplementedError, 'Need to write test_process_until'
+#   end
+#
+#   def test_process_when
+#     raise NotImplementedError, 'Need to write test_process_when'
+#   end
+#
+#   def test_process_while
+#     raise NotImplementedError, 'Need to write test_process_while'
+#   end
+#
+#   def test_process_yield
+#     raise NotImplementedError, 'Need to write test_process_yield'
+#   end
+#</diff>
      <filename>test/test_flog.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,343 +1,343 @@
 require 'test/test_helper'
 require 'flog'
 
-describe 'flog command' do
-  before :each do
-    @flog = stub('Flog',
-                 :flog_files =&gt; true,
-                 :report =&gt; true,
-                 :exit =&gt; nil,
-                 :puts =&gt; nil)
-    # Flog.stubs(:new).returns(@flog)
-  end
-
-  def run_command
-    # HACK eval File.read(File.join(File.dirname(__FILE__), *%w[.. bin flog]))
-  end
-
-  describe 'when no command-line arguments are specified' do
-    before :each do
-      ARGV.clear
-    end
-
-    it 'should run' do
-      lambda { run_command }.wont_raise_error(Errno::ENOENT)
-    end
-
-    it 'should not alter the include path' do
-      @paths = $:.dup
-      run_command
-      $:.must_equal @paths
-    end
-
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
-#       run_command
+# describe 'flog command' do
+#   before :each do
+#     @flog = stub('Flog',
+#                  :flog_files =&gt; true,
+#                  :report =&gt; true,
+#                  :exit =&gt; nil,
+#                  :puts =&gt; nil)
+#     # Flog.stubs(:new).returns(@flog)
+#   end
+# 
+#   def run_command
+#     # HACK eval File.read(File.join(File.dirname(__FILE__), *%w[.. bin flog]))
+#   end
+# 
+#   describe 'when no command-line arguments are specified' do
+#     before :each do
+#       ARGV.clear
 #     end
 # 
-#     it 'should not have any options flags set' do
-#       Flog.expects(:new).with({}).returns(@flog)
-#       run_command
+#     it 'should run' do
+#       lambda { run_command }.wont_raise_error(Errno::ENOENT)
 #     end
-
-    it 'should call flog_files on the Flog instance' do
-      @flog.expects(:flog_files)
-      run_command
-    end
-
-    it &quot;should pass '-' (for the file path) to flog_files on the instance&quot; do
-      @flog.expects(:flog_files).with(['-'])
-      run_command
-    end
-
-    it 'should call report on the Flog instance' do
-      @flog.expects(:report)
-      run_command
-    end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe &quot;when -a is specified on the command-line&quot; do
-    before :each do
-      ARGV.replace ['-a']
-    end
-
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
+# 
+#     it 'should not alter the include path' do
+#       @paths = $:.dup
 #       run_command
+#       $:.must_equal @paths
 #     end
 # 
-#     it &quot;should set the option to show all methods&quot; do
-#       Flog.expects(:new).with(:all =&gt; true).returns(@flog)
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# # 
+# #     it 'should not have any options flags set' do
+# #       Flog.expects(:new).with({}).returns(@flog)
+# #       run_command
+# #     end
+# 
+#     it 'should call flog_files on the Flog instance' do
+#       @flog.expects(:flog_files)
 #       run_command
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe &quot;when --all is specified on the command-line&quot; do
-    before :each do
-      ARGV.replace ['--all']
-    end
-
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
+# 
+#     it &quot;should pass '-' (for the file path) to flog_files on the instance&quot; do
+#       @flog.expects(:flog_files).with(['-'])
 #       run_command
 #     end
 # 
-#     it &quot;should set the option to show all methods&quot; do
-#       Flog.expects(:new).with(:all =&gt; true).returns(@flog)
+#     it 'should call report on the Flog instance' do
+#       @flog.expects(:report)
 #       run_command
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe &quot;when -s is specified on the command-line&quot; do
-    before :each do
-      ARGV.replace ['-s']
-    end
-
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
 #     end
+#   end
 # 
-#     it &quot;should set the option to show only the score&quot; do
-#       Flog.expects(:new).with(:score =&gt; true).returns(@flog)
-#       run_command
+#   describe &quot;when -a is specified on the command-line&quot; do
+#     before :each do
+#       ARGV.replace ['-a']
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe &quot;when --score is specified on the command-line&quot; do
-    before :each do
-      ARGV.replace ['--score']
-    end
-
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
+# 
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# # 
+# #     it &quot;should set the option to show all methods&quot; do
+# #       Flog.expects(:new).with(:all =&gt; true).returns(@flog)
+# #       run_command
+# #     end
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
 #     end
+#   end
 # 
-#     it &quot;should set the option to show only the score&quot; do
-#       Flog.expects(:new).with(:score =&gt; true).returns(@flog)
-#       run_command
+#   describe &quot;when --all is specified on the command-line&quot; do
+#     before :each do
+#       ARGV.replace ['--all']
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe &quot;when -m is specified on the command-line&quot; do
-    before :each do
-      ARGV.replace ['-m']
-    end
-
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
+# 
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# # 
+# #     it &quot;should set the option to show all methods&quot; do
+# #       Flog.expects(:new).with(:all =&gt; true).returns(@flog)
+# #       run_command
+# #     end
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
 #     end
+#   end
 # 
-#     it &quot;should set the option to report on methods only&quot; do
-#       Flog.expects(:new).with(:methods =&gt; true).returns(@flog)
-#       run_command
+#   describe &quot;when -s is specified on the command-line&quot; do
+#     before :each do
+#       ARGV.replace ['-s']
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe &quot;when --methods-only is specified on the command-line&quot; do
-    before :each do
-      ARGV.replace ['--methods-only']
-    end
-
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
+# 
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# # 
+# #     it &quot;should set the option to show only the score&quot; do
+# #       Flog.expects(:new).with(:score =&gt; true).returns(@flog)
+# #       run_command
+# #     end
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
 #     end
+#   end
 # 
-#     it &quot;should set the option to report on methods only&quot; do
-#       Flog.expects(:new).with(:methods =&gt; true).returns(@flog)
-#       run_command
+#   describe &quot;when --score is specified on the command-line&quot; do
+#     before :each do
+#       ARGV.replace ['--score']
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe &quot;when -v is specified on the command-line&quot; do
-    before :each do
-      ARGV.replace ['-v']
-    end
-
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
+# 
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# # 
+# #     it &quot;should set the option to show only the score&quot; do
+# #       Flog.expects(:new).with(:score =&gt; true).returns(@flog)
+# #       run_command
+# #     end
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
 #     end
+#   end
 # 
-#     it &quot;should set the option to be verbose&quot; do
-#       Flog.expects(:new).with(:verbose =&gt; true).returns(@flog)
-#       run_command
+#   describe &quot;when -m is specified on the command-line&quot; do
+#     before :each do
+#       ARGV.replace ['-m']
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe &quot;when --verbose is specified on the command-line&quot; do
-    before :each do
-      ARGV.replace ['--verbose']
-    end
-
-# HACK
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
+# 
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# # 
+# #     it &quot;should set the option to report on methods only&quot; do
+# #       Flog.expects(:new).with(:methods =&gt; true).returns(@flog)
+# #       run_command
+# #     end
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
 #     end
-
-# HACK
-#     it &quot;should set the option to be verbose&quot; do
-#       Flog.expects(:new).with(:verbose =&gt; true).returns(@flog)
-#       run_command
+#   end
+# 
+#   describe &quot;when --methods-only is specified on the command-line&quot; do
+#     before :each do
+#       ARGV.replace ['--methods-only']
 #     end
-
-# HACK
+# 
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# # 
+# #     it &quot;should set the option to report on methods only&quot; do
+# #       Flog.expects(:new).with(:methods =&gt; true).returns(@flog)
+# #       run_command
+# #     end
+# 
 #     it 'should exit with status 0' do
 #       self.expects(:exit).with(0)
 #       run_command
 #     end
-  end
-
-  describe &quot;when -h is specified on the command-line&quot; do
-    before :each do
-      ARGV.replace ['-h']
-    end
-
-    it &quot;should display help information&quot; do
-      self.expects(:puts)
-      run_command
-    end
-
-# HACK: useless anyhow
-#     it 'should not create a Flog instance' do
-#       Flog.expects(:new).never
+#   end
+# 
+#   describe &quot;when -v is specified on the command-line&quot; do
+#     before :each do
+#       ARGV.replace ['-v']
+#     end
+# 
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# # 
+# #     it &quot;should set the option to be verbose&quot; do
+# #       Flog.expects(:new).with(:verbose =&gt; true).returns(@flog)
+# #       run_command
+# #     end
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe &quot;when --help is specified on the command-line&quot; do
-    before :each do
-      ARGV.replace ['--help']
-    end
-
-    it &quot;should display help information&quot; do
-      self.expects(:puts)
-      run_command
-    end
-
-# HACK: useless anyhow
-#     it 'should not create a Flog instance' do
-#       Flog.expects(:new).never
+#   end
+# 
+#   describe &quot;when --verbose is specified on the command-line&quot; do
+#     before :each do
+#       ARGV.replace ['--verbose']
+#     end
+# 
+# # HACK
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# 
+# # HACK
+# #     it &quot;should set the option to be verbose&quot; do
+# #       Flog.expects(:new).with(:verbose =&gt; true).returns(@flog)
+# #       run_command
+# #     end
+# 
+# # HACK
+# #     it 'should exit with status 0' do
+# #       self.expects(:exit).with(0)
+# #       run_command
+# #     end
+#   end
+# 
+#   describe &quot;when -h is specified on the command-line&quot; do
+#     before :each do
+#       ARGV.replace ['-h']
+#     end
+# 
+#     it &quot;should display help information&quot; do
+#       self.expects(:puts)
 #       run_command
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe 'when -I is specified on the command-line' do
-    before :each do
-      ARGV.replace ['-I /tmp,/etc']
-      @paths = $:.dup
-    end
-
-# HACK - very little value to begin with
-#     it &quot;should append each ':' separated path to $:&quot; do
+# 
+# # HACK: useless anyhow
+# #     it 'should not create a Flog instance' do
+# #       Flog.expects(:new).never
+# #       run_command
+# #     end
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
-#       $:.wont_equal @paths
 #     end
-
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
+#   end
+# 
+#   describe &quot;when --help is specified on the command-line&quot; do
+#     before :each do
+#       ARGV.replace ['--help']
+#     end
+# 
+#     it &quot;should display help information&quot; do
+#       self.expects(:puts)
 #       run_command
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe 'when -b is specified on the command-line' do
-    before :each do
-      ARGV.replace ['-b']
-    end
-
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
+# 
+# # HACK: useless anyhow
+# #     it 'should not create a Flog instance' do
+# #       Flog.expects(:new).never
+# #       run_command
+# #     end
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
 #     end
+#   end
+# 
+#   describe 'when -I is specified on the command-line' do
+#     before :each do
+#       ARGV.replace ['-I /tmp,/etc']
+#       @paths = $:.dup
+#     end
+# 
+# # HACK - very little value to begin with
+# #     it &quot;should append each ':' separated path to $:&quot; do
+# #       run_command
+# #       $:.wont_equal @paths
+# #     end
 # 
-#     it &quot;should set the option to provide 'blame' information&quot; do
-#       Flog.expects(:new).with(:blame =&gt; true).returns(@flog)
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-
-  describe 'when --blame is specified on the command-line' do
-    before :each do
-      ARGV.replace ['--blame']
-    end
-
-#     it 'should create a Flog instance' do
-#       Flog.expects(:new).returns(@flog)
+#   end
+# 
+#   describe 'when -b is specified on the command-line' do
+#     before :each do
+#       ARGV.replace ['-b']
+#     end
+# 
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# # 
+# #     it &quot;should set the option to provide 'blame' information&quot; do
+# #       Flog.expects(:new).with(:blame =&gt; true).returns(@flog)
+# #       run_command
+# #     end
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
 #     end
+#   end
+# 
+#   describe 'when --blame is specified on the command-line' do
+#     before :each do
+#       ARGV.replace ['--blame']
+#     end
 # 
-#     it &quot;should set the option to provide 'blame' information&quot; do
-#       Flog.expects(:new).with(:blame =&gt; true).returns(@flog)
+# #     it 'should create a Flog instance' do
+# #       Flog.expects(:new).returns(@flog)
+# #       run_command
+# #     end
+# # 
+# #     it &quot;should set the option to provide 'blame' information&quot; do
+# #       Flog.expects(:new).with(:blame =&gt; true).returns(@flog)
+# #       run_command
+# #     end
+# 
+#     it 'should exit with status 0' do
+#       self.expects(:exit).with(0)
 #       run_command
 #     end
-
-    it 'should exit with status 0' do
-      self.expects(:exit).with(0)
-      run_command
-    end
-  end
-end
+#   end
+# end</diff>
      <filename>test/test_flog_command.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,930 +2,180 @@ require 'test/test_helper'
 require 'flog'
 require 'sexp_processor'
 
-describe &quot;Flog Command Line&quot; do
-  before :each do
-    @flog = Flog.new({})
-  end
-
-  describe 'flog_files' do
-
-    describe 'when given empty input' do
-      before :each do
-        @files = ['/empty/empty.rb']
-      end
-
-      it 'should not fail when flogging the given input' do
-        lambda { @flog.flog_files(fixture_files(@files)) }.wont_raise_error
-      end
-
-      it 'should report an overall flog score of 0' do
-        @flog.flog_files(fixture_files(@files))
-        @flog.total.must_be_close_to 0.0
-      end
-    end
-
-    describe 'when given a simple file' do
-      before :each do
-        @files = ['/simple/simple.rb']
-        @calls = YAML.load(&lt;&lt;-YAML)
-        ---
-        RailsClassMethods#generate:
-          :save: 1.4
-          :assignment: 2.80000000000001
-          :spawn: 1.4
-        RailsClassMethods#exemplar_path:
-          :join: 1.4
-        ClassMethods#generator_for:
-          :is_a?: 2.8
-          :arity: 2.0
-          :assignment: 16.5
-          :respond_to?: 1.7
-          :first: 1.6
-          :branch: 19.0
-          :name: 2.0
-          :lit_fixnum: 0.45
-          :length: 1.8
-          :raise: 8.60000000000001
-          :include?: 1.8
-          :lambda: 1.8
-          :to_sym: 3.1
-          :[]: 16.1
-          :==: 1.6
-          :keys: 3.8
-          :record_generator_for: 5.00000000000001
-        ObjectDaddy#included:
-          :extend: 5.6
-          :branch: 2.6
-          :sclass: 7.5
-          :alias_method: 8.4
-          :&lt;: 1.4
-        ClassMethods#underscore:
-          :gsub: 1.6
-          :downcase: 1.4
-        ClassMethods#gather_exemplars:
-          :load: 1.5
-          :underscore: 1.6
-          :assignment: 4.40000000000001
-          :respond_to?: 1.4
-          :superclass: 5.50000000000001
-          :branch: 6.00000000000001
-          :name: 1.8
-          :gather_exemplars: 1.6
-          :exemplars_generated: 1.4
-          :exists?: 1.4
-          :join: 1.4
-          :dup: 1.6
-          :exemplar_path: 1.6
-          :generators: 1.9
-        ClassMethods#none:
-          :protected: 2.6
-          :attr_accessor: 1.3
-          :attr_reader: 1.3
-        Foo#initialize:
-          :super: 1.2
-        main#none:
-          :assignment: 1.1
-          :attr_writer: 1.1
-          :branch: 5.60000000000001
-          :lit_fixnum: 0.275000000000001
-          :puts: 1.1
-          :alias: 2.20000000000001
-        ClassMethods#record_generator_for:
-          :assignment: 1.4
-          :branch: 3.20000000000001
-          :raise: 1.5
-          :==: 1.4
-          :[]: 3.50000000000001
-          :generators: 3.50000000000001
-        RailsClassMethods#validates_presence_of_with_object_daddy:
-          :is_a?: 1.4
-          :assignment: 5.80000000000001
-          :branch: 2.80000000000001
-          :last: 1.6
-          :dup: 1.4
-          :pop: 1.5
-          :each: 1.4
-          :validates_presence_of_without_object_daddy: 1.4
-        ClassMethods#presence_validated_attributes:
-          :merge: 1.5
-          :presence_validated_attributes: 1.7
-          :assignment: 4.30000000000001
-          :respond_to?: 1.4
-          :superclass: 3.50000000000001
-          :branch: 1.4
-        ClassMethods#spawn:
-          :presence_validated_attributes: 5.4
-          :each_pair: 1.4
-          :assignment: 35.3
-          :generate: 1.7
-          :class_name: 2.1
-          :call: 1.8
-          :reflect_on_all_associations: 1.8
-          :branch: 24.0
-          :constantize: 1.9
-          :name: 3.9
-          :gather_exemplars: 1.4
-          :select: 1.6
-          :-: 1.8
-          :send: 5.4
-          :to_a: 1.6
-          :empty?: 1.5
-          :new: 1.4
-          :reject!: 1.7
-          :next: 1.9
-          :delete: 1.9
-          :include?: 1.8
-          :primary_key_name: 4.2
-          :to_s: 5.7
-          :each: 3.2
-          :keys: 4.0
-          :[]: 23.6
-          :generators: 1.7
-          :scope: 1.6
-        RailsClassMethods#generate!:
-          :save!: 1.4
-          :assignment: 2.80000000000001
-          :spawn: 1.4
-        YAML
-
-        @totals = YAML.load(&lt;&lt;-YAML)
-        ---
-        RailsClassMethods#generate: 3.95979797464467
-        ObjectDaddy#included: 23.0471256342304
-        ClassMethods#generator_for: 59.7115776043475
-        RailsClassMethods#exemplar_path: 1.4
-        ClassMethods#underscore: 3.00000000000001
-        ClassMethods#none: 5.2
-        ClassMethods#gather_exemplars: 23.8882816460289
-        ClassMethods#record_generator_for: 10.4980950652964
-        main#none: 7.37737249974544
-        Foo#initialize: 1.2
-        ClassMethods#spawn: 96.0108847995893
-        ClassMethods#presence_validated_attributes: 9.27685291464731
-        RailsClassMethods#validates_presence_of_with_object_daddy: 10.8245092267502
-        RailsClassMethods#generate!: 3.95979797464467
-        YAML
-      end
-
-      it 'should not fail when flogging the given input' do
-        lambda { @flog.flog_files(fixture_files(@files)) }.wont_raise_error
-      end
-
-      currently 'should report an overall flog score of 259.354295339925' do
-        @flog.flog_files(fixture_files(@files))
-        @flog.total.must_be_close_to 259.354295339925
-      end
-
-      currently 'should compute the same call data as flog-1.1.0' do
-        @flog.flog_files(fixture_files(@files))
-        @flog.calls.each_pair do |k,v|
-          v.each_pair do |x, y|
-            @calls[k][x].must_be_close_to y
-          end
-        end
-      end
-
-      currently 'should compute the same totals data as flog-1.1.0' do
-        @flog.flog_files(fixture_files(@files))
-        @flog.totals.each_pair do |k,v|
-          v.must_be_close_to @totals[k]
-        end
-      end
-    end
-
-    # FIX: this is totally unmaintainable
-#     describe 'when given a directory of files' do
+# describe &quot;Flog Command Line&quot; do
+#   before :each do
+#     @flog = Flog.new({})
+#   end
+# 
+#   describe 'flog_files' do
+# 
+#     describe 'when given empty input' do
 #       before :each do
-#         @files = ['/directory/']
-#         @calls = YAML.load(&lt;&lt;-YAML)
-#         ---
-#         BotSender#validate:
-#           :assignment: 1.3
-#         BotParserFormat#description:
-#           :join: 1.3
-#           :branch: 1.2
-#           :empty?: 1.2
-#         BotParserFormat#initialize:
-#           :assignment: 4.8
-#           :branch: 1.2
-#           :raise: 1.3
-#           :nil?: 1.2
-#         BotParser#parse:
-#           :merge: 1.3
-#           :detect: 1.3
-#           :assignment: 6.7
-#           :branch: 3.9
-#           :empty?: 1.3
-#           :process: 1.4
-#           :formats: 1.5
-#         register_format#video:
-#           :register_format: 1.2
-#           :assignment: 3.6
-#           :lit_fixnum: 1.05
-#           :[]: 3.6
-#         register_format#image:
-#           :register_format: 1.2
-#           :assignment: 3.6
-#           :lit_fixnum: 1.05
-#           :[]: 3.6
-#         BotFilter#process:
-#           :class: 1.6
-#           :options: 1.8
-#           :kinds: 1.4
-#           :assignment: 5.4
-#           :branch: 2.5
-#           :get: 1.8
-#           :process: 1.4
-#           :new: 1.6
-#           :each: 1.2
-#         BotFilter#register:
-#           :&lt;&lt;: 1.8
-#         BotSender#deliver:
-#           :respond_to?: 1.3
-#           :assignment: 2.7
-#           :send: 4.2
-#           :branch: 5.2
-#           :raise: 1.4
-#           :to_s: 1.5
-#           :to_sym: 1.3
-#           :[]: 4.5
-#         register_format#true_or_false:
-#           :register_format: 1.2
-#           :assignment: 3.6
-#           :lit_fixnum: 0.35
-#           :[]: 1.2
-#         BotSender#none:
-#           :assignment: 1.1
-#           :attr_reader: 1.2
-#         BotParser#clear_formats:
-#           :assignment: 1.9
-#         BotSender#register:
-#           :each_pair: 1.3
-#           :assignment: 6.90000000000001
-#           :branch: 1.3
-#         register_format#definition:
-#           :register_format: 1.2
-#           :assignment: 3.6
-#           :lit_fixnum: 0.7
-#           :[]: 2.4
-#         register_format#link:
-#           :register_format: 1.2
-#           :assignment: 3.6
-#           :lit_fixnum: 1.05
-#           :[]: 3.6
-#         BotParser#none:
-#           :assignment: 1.2
-#           :sclass: 6.0
-#           :attr_reader: 1.8
-#         BotParser#register_format:
-#           :&lt;&lt;: 1.9
-#           :new: 2.1
-#           :formats: 2.1
-#           :block_pass: 2.1
-#         BotSender#initialize:
-#           :validate: 1.3
-#           :assignment: 2.6
-#           :[]: 1.3
-#         register_format#quote:
-#           :register_format: 1.2
-#           :assignment: 3.6
-#           :lit_fixnum: 1.05
-#           :[]: 3.6
-#         BotFilter#register_filter:
-#           :register: 1.8
-#           :load: 1.8
-#           :filter_path: 1.8
-#           :assignment: 1.8
-#           :exists?: 1.8
-#           :branch: 1.8
-#           :raise: 1.9
-#         BotSender#kinds:
-#           :assignment: 1.4
-#           :sort_by: 1.3
-#           :branch: 1.3
-#           :to_s: 1.4
-#           :keys: 1.5
-#         main#none:
-#           :require: 2.2
-#         BotFilter#new:
-#           :locate_filters: 1.9
-#           :assignment: 3.6
-#           :send: 5.4
-#           :branch: 1.8
-#           :allocate: 1.8
-#         BotSender#new:
-#           :kinds: 1.5
-#           :assignment: 2.6
-#           :send: 3.9
-#           :branch: 1.3
-#           :allocate: 1.3
-#           :raise: 1.4
-#           :include?: 1.3
-#           :[]: 4.7
-#         BotFilter#locate_filters:
-#           :register_filter: 2.0
-#           :assignment: 2.0
-#           :branch: 5.5
-#           :each: 1.9
-#           :[]: 4.0
-#         BotFilter#get:
-#           :gsub: 2.0
-#           :upcase: 2.1
-#           :assignment: 1.8
-#           :const_get: 1.8
-#           :branch: 2.0
-#           :to_sym: 1.8
-#           :to_s: 2.2
-#         BotParserFormat#none:
-#           :attr_reader: 1.1
-#         BotFilter#filter_path:
-#           :+: 2.0
-#           :dirname: 2.2
-#           :expand_path: 1.8
-#         BotParserFormat#process:
-#           :merge: 1.2
-#           :call: 1.4
-#           :match: 1.2
-#           :format: 1.4
-#           :name: 1.4
-#           :assignment: 1.2
-#           :branch: 1.2
-#           :block: 1.6
-#         BotParser#formats:
-#           :class: 1.5
-#           :formats: 1.3
-#         BotFilter#initialize:
-#           :assignment: 2.4
-#         register_format#fact:
-#           :register_format: 1.2
-#           :assignment: 3.6
-#           :lit_fixnum: 0.35
-#           :[]: 1.2
-#         BotFilter#none:
-#           :sclass: 5.5
-#           :attr_reader: 1.1
-#         YAML
-
-#         @totals = YAML.load(&lt;&lt;-YAML)
-#         ---
-#         BotFilter#register: 1.8
-#         BotFilter#process: 12.3308556069723
-#         register_format#image: 6.86895188511319
-#         register_format#video: 6.86895188511319
-#         BotParser#parse: 10.3121287811974
-#         BotParserFormat#initialize: 5.54346462061408
-#         BotParserFormat#description: 2.77308492477241
-#         BotSender#validate: 1.3
-#         register_format#true_or_false: 4.53017659699929
-#         BotSender#deliver: 15.3613150478727
-#         BotParser#clear_formats: 1.9
-#         BotSender#none: 1.62788205960997
-#         BotParser#none: 7.89176786277955
-#         register_format#link: 6.86895188511319
-#         register_format#definition: 5.60802995712398
-#         BotSender#register: 7.14072825417689
-#         BotParser#register_format: 8.2
-#         BotFilter#register_filter: 9.44933860119321
-#         register_format#quote: 6.86895188511319
-#         BotSender#initialize: 3.67695526217005
-#         BotFilter#new: 9.9503768772846
-#         main#none: 2.2
-#         BotSender#kinds: 4.61410879802373
-#         BotFilter#get: 10.2591422643416
-#         BotFilter#locate_filters: 9.83158176490437
-#         BotSender#new: 14.3965273590543
-#         BotFilter#filter_path: 6.0
-#         BotParserFormat#none: 1.1
-#         BotFilter#initialize: 2.4
-#         BotParser#formats: 2.8
-#         BotParserFormat#process: 8.37376856618333
-#         BotFilter#none: 6.6
-#         register_format#fact: 4.53017659699929
-#         YAML
-#       end
-
-#       it 'should not fail when flogging the given input' do
-#         lambda { @flog.flog_files(fixture_files(@files)) }.should_not raise_error
-#       end
-
-#       currently 'should report an overall flog score of 209.977217342726' do
-#         @flog.flog_files(fixture_files(@files))
-#         @flog.total.must_be_close_to 209.977217342726
-#       end
-
-#       currently 'should compute the same call data as flog-1.1.0' do
-#         @flog.flog_files(fixture_files(@files))
-#         @flog.calls.each_pair do |k,v|
-#           v.each_pair do |x, y|
-#             @calls[k][x].must_be_close_to y
-#           end
-#         end
-#       end
-
-#       currently 'should compute the same totals data as flog-1.1.0' do
-#         @flog.flog_files(fixture_files(@files))
-#         @flog.totals.each_pair {|k,v| v.must_be_close_to @totals[k]
+#         @files = ['/empty/empty.rb']
 #       end
+# 
+# #       it 'should not fail when flogging the given input' do
+# #         lambda { @flog.flog_files(fixture_files(@files)) }.wont_raise_error
+# #       end
+# 
+# #       it 'should report an overall flog score of 0' do
+# #         @flog.flog_files(fixture_files(@files))
+# #         @flog.total.must_be_close_to 0.0
+# #       end
 #     end
-
-    # FIX: this is totally unmaintainable
-#     describe 'when given a collection of files' do
+# 
+#     describe 'when given a simple file' do
 #       before :each do
-#         @files = ['/collection/']
+#         @files = ['/simple/simple.rb']
 #         @calls = YAML.load(&lt;&lt;-YAML)
 #         ---
-#         InstanceMethods#initialize_with_has_many_range_extension:
-#           :returning: 1.3
-#           :initialize_without_has_many_range_extension: 1.5
-#           :macro: 1.90000000000001
-#           :add_has_many_range_extension: 1.70000000000001
-#           :branch: 2.80000000000001
-#           :puts: 6.00000000000002
-#           :==: 1.50000000000001
-#           :to_s: 1.70000000000001
-#         ClassMethods#calculate_with_range_restrictions:
-#           :with_current_time_scope: 1.5
-#           :calculate_without_range_restrictions: 3.10000000000001
-#           :branch: 2.90000000000001
-#           :[]: 1.4
-#           :acts_as_range_configuration: 1.6
-#         InstanceMethods#contained_by?:
-#           :to_range: 3.70000000000001
-#           :exclude_end?: 3.60000000000001
-#           :respond_to?: 1.3
-#           :last: 1.8
-#           :contained_by?: 1.5
-#           :branch: 18.5
-#           :&gt;=: 1.9
-#           :acts_as_range_begin: 12.5
-#           :==: 3.20000000000001
-#           :include?: 2.90000000000001
-#           :acts_as_range_end: 14.4
-#           :&lt;=: 1.9
-#         ClassMethods#sequentialized?:
-#           :branch: 1.3
-#           :sequentialized_on: 1.3
-#         InstanceMethods#expired?:
-#           :assignment: 1.3
-#           :branch: 1.3
-#           :now: 1.3
-#           :acts_as_range_end: 2.8
-#           :&lt;=: 1.3
-#         ClassMethods#with_overlapping_scope:
-#           :|: 3.00000000000001
-#           :with_containing_scope: 4.00000000000001
-#           :with_contained_scope: 1.8
-#           :flatten: 5.20000000000001
-#           :block_pass: 5.80000000000001
-#         ClassMethods#with_containing_scope:
-#           :acts_as_range_begin_attr: 5.30000000000001
-#           :with_scope: 1.4
-#           :&lt;&lt;: 11.0
-#           :assignment: 4.20000000000001
-#           :join: 1.8
-#           :table_name: 10.6
-#           :branch: 2.80000000000001
-#           :acts_as_range_end_attr: 5.30000000000001
-#           :block_pass: 1.4
-#           :flatten: 1.4
-#           :nil?: 2.80000000000001
-#         ClassMethods#with_after_scope:
-#           :acts_as_range_begin_attr: 3.20000000000001
-#           :with_scope: 1.4
-#           :table_name: 3.20000000000001
-#           :block_pass: 1.4
-#         InstanceMethods#overlapping?:
-#           :is_a?: 1.4
-#           :first: 1.8
-#           :respond_to?: 1.3
-#           :last: 1.8
-#           :assignment: 3.20000000000001
-#           :contained_by?: 1.4
-#           :containing?: 7.80000000000002
-#           :branch: 11.3
-#           :acts_as_range_begin: 3.30000000000001
-#           :acts_as_range_end: 3.30000000000001
-#         ClassMethods#acts_as_date_range_sequentialize_class:
-#           :acts_as_date_range_param_sequentialize_class: 1.4
-#           :acts_as_date_range_singleton_sequentialize_class: 1.4
-#           :branch: 1.3
-#           :flatten!: 1.3
-#           :==: 1.3
-#         ClassMethods#acts_as_date_range_param_sequentialize_class:
-#           :validate_on_create: 1.3
-#           :add: 1.6
-#           :count: 1.7
-#           :&gt;: 1.5
-#           :acts_as_range_begin_attr: 3.9
-#           :class: 3.8
-#           :extend: 2.6
-#           :errors: 1.8
-#           :assignment: 5.80000000000001
-#           :before_validation_on_create: 1.3
-#           :branch: 6.90000000000001
-#           :before_create: 1.3
-#           :now: 1.5
-#           :acts_as_range_begin: 6.00000000000001
-#           :to_sql: 4.2
-#           :acts_as_range_end_attr: 4.2
-#           :each: 1.5
-#           :expire: 1.6
-#           :find: 1.7
-#           :flatten: 3.8
-#           :to_attributes_for: 4.2
-#         InstanceMethods#destroy_without_callbacks:
-#           :class: 3.8
-#           :default_timezone: 1.8
-#           :freeze: 1.3
-#           :new_record?: 1.3
-#           :update_all: 1.6
-#           :assignment: 1.6
-#           :send: 5.4
-#           :branch: 4.3
-#           :now: 3.6
-#           :acts_as_range_end_attr: 2.0
-#           :id: 2.0
-#           :utc: 1.7
+#         RailsClassMethods#generate:
+#           :save: 1.4
+#           :assignment: 2.80000000000001
+#           :spawn: 1.4
+#         RailsClassMethods#exemplar_path:
+#           :join: 1.4
+#         ClassMethods#generator_for:
+#           :is_a?: 2.8
+#           :arity: 2.0
+#           :assignment: 16.5
+#           :respond_to?: 1.7
+#           :first: 1.6
+#           :branch: 19.0
+#           :name: 2.0
+#           :lit_fixnum: 0.45
+#           :length: 1.8
+#           :raise: 8.60000000000001
+#           :include?: 1.8
+#           :lambda: 1.8
+#           :to_sym: 3.1
+#           :[]: 16.1
 #           :==: 1.6
-#           :[]: 1.4
-#           :acts_as_range_configuration: 1.6
-#           :quote_value: 1.8
-#         ClassMethods#with_contained_scope:
-#           :acts_as_range_begin_attr: 7.60000000000002
-#           :with_scope: 1.4
-#           :&lt;&lt;: 16.8
-#           :assignment: 4.20000000000001
-#           :join: 1.8
-#           :table_name: 15.2
-#           :branch: 4.40000000000001
-#           :acts_as_range_end_attr: 7.60000000000002
-#           :block_pass: 1.4
-#           :flatten: 1.4
-#           :nil?: 4.40000000000001
-#         ClassMethods#count_with_range_restrictions:
-#           :count_without_range_restrictions: 3.10000000000001
-#           :with_current_time_scope: 1.5
-#           :branch: 2.90000000000001
-#           :[]: 1.4
-#           :acts_as_range_configuration: 1.6
-#         InstanceMethods#to_range:
-#           :assignment: 2.60000000000001
-#           :acts_as_range_begin: 1.3
-#           :acts_as_range_end: 1.3
-#         ParamExtension#to_attributes_for:
-#           :attributes: 1.7
-#           :assignment: 1.5
-#           :branch: 1.4
-#           :[]: 1.5
-#           :to_s: 1.7
-#           :collect: 1.4
-#         ClassMethods#with_current_time_scope:
-#           :first: 3.3
-#           :respond_to?: 2.7
-#           :call: 2.7
-#           :with_overlapping_scope: 2.9
-#           :end_dated_association_date: 3.1
-#           :last: 3.3
-#           :assignment: 2.7
-#           :with_containing_scope: 2.9
-#           :branch: 2.7
-#           :block_pass: 5.80000000000001
-#         InstanceMethods#included:
-#           :extend: 5.20000000000001
-#         DateRanged#current:
-#           :containing: 1.1
-#           :now: 1.3
-#         ClassMethods#with_before_scope:
-#           :with_scope: 1.4
-#           :table_name: 3.20000000000001
-#           :acts_as_range_end_attr: 3.20000000000001
-#           :block_pass: 1.4
-#         ClassMethods#remove_args:
-#           :first: 1.5
-#           :&gt;: 1.4
-#           :last: 2.0
-#           :&lt;&lt;: 1.4
-#           :extract_options_from_args!: 1.4
-#           :assignment: 2.90000000000001
-#           :branch: 2.80000000000001
-#           :length: 1.6
-#           :delete: 1.5
-#           :keys: 1.8
-#           :each: 1.4
-#         ClassMethods#add_args:
-#           :merge: 1.6
-#           :&lt;&lt;: 1.4
-#           :extract_options_from_args!: 1.8
-#         InstanceMethods#before?:
-#           :respond_to?: 1.3
-#           :branch: 3.90000000000001
-#           :&lt;: 1.3
-#           :before?: 1.4
-#           :acts_as_range_begin: 1.6
-#           :acts_as_range_end: 2.80000000000001
-#         InstanceMethods#containing?:
-#           :to_range: 8.50000000000001
-#           :is_a?: 1.4
-#           :exclude_end?: 6.30000000000001
-#           :&gt;: 2.0
-#           :first: 4.00000000000001
-#           :respond_to?: 1.3
-#           :assignment: 3.20000000000001
-#           :last: 10.7
-#           :contained_by?: 1.4
-#           :branch: 28.0
-#           :acts_as_range_begin: 8.90000000000002
-#           :==: 5.90000000000001
-#           :include?: 5.20000000000001
-#           :acts_as_range_end: 13.1
-#           :&lt;=: 3.70000000000001
-#         ClassMethods#acts_as_date_range:
-#           :acts_as_range: 1.3
-#           :is_a?: 1.3
-#           :assignment: 1.3
-#           :acts_as_date_range?: 1.3
-#           :acts_as_date_range_configure_class: 1.3
+#           :keys: 3.8
+#           :record_generator_for: 5.00000000000001
+#         ObjectDaddy#included:
+#           :extend: 5.6
 #           :branch: 2.6
-#           :update: 1.5
-#           :raise: 1.4
-#         InstanceMethods#limit_date_range:
-#           :end_dated_association_date: 1.4
-#           :assignment: 6.9
-#           :branch: 1.4
-#           :yield: 1.4
-#           :new: 1.4
-#           :acts_as_range_begin: 1.4
-#           :acts_as_range_end: 1.4
-#         InstanceMethods#lifetime:
-#           :&gt;: 1.4
-#           :assignment: 1.3
-#           :branch: 5.4
-#           :now: 1.3
-#           :acts_as_range_begin: 4.6
-#           :acts_as_range_end: 3.2
-#           :distance_of_time_in_words: 1.3
-#           :nil?: 2.7
-#         ClassMethods#validates_interval:
-#           :validation_method: 1.6
-#           :add: 1.80000000000001
-#           :errors: 2.00000000000001
-#           :evaluate_condition: 1.6
-#           :assignment: 9.30000000000003
-#           :send: 4.20000000000001
-#           :branch: 10.9
-#           :acts_as_range_begin: 1.70000000000001
-#           :acts_as_range_end: 1.70000000000001
-#           :each: 1.3
-#           :humanize: 2.60000000000001
-#           :to_s: 3.00000000000001
-#           :[]: 12.3
-#           :acts_as_range_configuration: 6.00000000000001
-#           :&lt;=: 1.90000000000001
-#           :nil?: 3.70000000000001
-#         ClassMethods#acts_as_range:
-#           :is_a?: 1.3
-#           :class_inheritable_reader: 1.3
-#           :assignment: 1.3
-#           :acts_as_range_configure_class: 1.3
-#           :branch: 2.60000000000001
-#           :update: 1.5
-#           :raise: 1.4
-#           :acts_as_range?: 1.3
-#         ParamExtension#to_sql:
-#           :assignment: 1.7
+#           :sclass: 7.5
+#           :alias_method: 8.4
+#           :&lt;: 1.4
+#         ClassMethods#underscore:
+#           :gsub: 1.6
+#           :downcase: 1.4
+#         ClassMethods#gather_exemplars:
+#           :load: 1.5
+#           :underscore: 1.6
+#           :assignment: 4.40000000000001
+#           :respond_to?: 1.4
+#           :superclass: 5.50000000000001
+#           :branch: 6.00000000000001
+#           :name: 1.8
+#           :gather_exemplars: 1.6
+#           :exemplars_generated: 1.4
+#           :exists?: 1.4
 #           :join: 1.4
-#           :branch: 1.6
-#           :collect: 1.6
+#           :dup: 1.6
+#           :exemplar_path: 1.6
+#           :generators: 1.9
 #         ClassMethods#none:
-#           :protected: 3.70000000000001
-#           :assignment: 1.4
-#           :branch: 2.70000000000001
-#           :[]: 1.5
-#           :to_sym: 1.7
-#           :acts_as_range_configuration: 1.7
-#           :define_method: 7.00000000000002
-#           :each: 1.3
-#         DateRange#included:
-#           :respond_to?: 1.2
-#           :extend: 2.4
-#           :assignment: 1.4
-#           :branch: 2.6
-#           :now: 1.5
-#           :new: 1.4
-#           :attr: 1.9
-#           :sclass: 7.0
-#         DateRange#none:
-#           :include: 2.2
-#         InstanceMethods#add_has_many_range_extension:
-#           :options: 1.50000000000001
-#           :assignment: 6.00000000000002
-#           :push: 1.60000000000001
-#           :branch: 2.80000000000001
-#           :puts: 5.40000000000002
-#           :acts_as_range?: 1.3
-#           :include?: 1.50000000000001
-#           :[]: 5.20000000000002
-#           :klass: 3.00000000000001
-#           :flatten: 1.50000000000001
-#         Ranged#included:
-#           :alias_method_chain: 1.3
-#           :branch: 1.2
-#           :send: 3.60000000000001
-#           :puts: 1.2
-#           :instance_eval: 6.00000000000002
-#         Range#included:
-#           :respond_to?: 1.2
-#           :extend: 2.4
+#           :protected: 2.6
+#           :attr_accessor: 1.3
+#           :attr_reader: 1.3
+#         Foo#initialize:
+#           :super: 1.2
+#         main#none:
+#           :assignment: 1.1
+#           :attr_writer: 1.1
+#           :branch: 5.60000000000001
+#           :lit_fixnum: 0.275000000000001
+#           :puts: 1.1
+#           :alias: 2.20000000000001
+#         ClassMethods#record_generator_for:
 #           :assignment: 1.4
-#           :branch: 2.6
-#           :now: 1.5
-#           :new: 1.4
-#           :attr: 1.9
-#           :sclass: 7.00000000000001
-#         InstanceMethods#include?:
-#           :class: 3.2
-#           :branch: 5.40000000000001
-#           :id: 3.2
-#           :find: 2.8
-#         ClassMethods#acts_as_range?:
-#           :included_modules: 1.5
-#           :include?: 1.3
-#         ClassMethods#acts_as_date_range_configure_class:
-#           :acts_as_date_range_sequentialize_class: 1.4
-#           :assignment: 1.3
-#           :write_inheritable_attribute: 1.3
-#           :branch: 1.3
-#           :[]: 2.9
-#           :include: 2.6
-#         InstanceMethods#none:
-#           :+: 3.8
-#           :class: 9.20000000000001
-#           :assignment: 5.60000000000001
-#           :private: 1.2
-#           :send: 43.2
-#           :branch: 8.00000000000001
-#           :alias_method: 4.80000000000001
-#           :to_s: 4.2
-#           :to_sym: 6.80000000000001
-#           :define_method: 28.0
-#           :each: 2.4
-#         Ranged#none:
-#           :+: 1.7
-#           :assignment: 3.60000000000001
-#           :select: 1.2
-#           :send: 3.90000000000001
-#           :branch: 3.30000000000001
-#           :to_sym: 1.5
-#           :define_method: 5.50000000000002
-#           :each: 1.0
-#         ClassMethods#acts_as_range_configure_class:
-#           :assignment: 3.20000000000001
-#           :write_inheritable_attribute: 1.3
-#           :alias_method_chain: 1.90000000000001
-#           :branch: 1.8
-#           :validates_interval: 1.3
-#           :to_sym: 2.1
-#           :each: 1.8
-#           :sclass: 6.50000000000002
-#           :include: 2.60000000000001
-#         ClassMethods#ranged_lookup:
-#           :first: 1.5
-#           :respond_to?: 1.4
-#           :last: 1.5
-#           :assignment: 7.00000000000002
-#           :-: 1.7
+#           :branch: 3.20000000000001
+#           :raise: 1.5
+#           :==: 1.4
+#           :[]: 3.50000000000001
+#           :generators: 3.50000000000001
+#         RailsClassMethods#validates_presence_of_with_object_daddy:
+#           :is_a?: 1.4
+#           :assignment: 5.80000000000001
 #           :branch: 2.80000000000001
-#           :to_a: 1.5
-#           :yield: 1.4
-#           :new: 3.80000000000001
-#           :acts_as_range_begin: 1.5
-#           :acts_as_range_end: 1.5
-#         ClassMethods#find_with_range_restrictions:
-#           :find_without_range_restrictions: 9.80000000000002
-#           :with_current_time_scope: 1.5
-#           :remove_args: 7.50000000000002
-#           :with_before_scope: 1.5
-#           :extract_options_from_args!: 1.4
-#           :assignment: 12.8
-#           :with_containing_scope: 1.5
-#           :send: 5.40000000000001
-#           :with_after_scope: 1.5
-#           :branch: 19.7
+#           :last: 1.6
 #           :dup: 1.4
-#           :ranged_lookup: 1.7
-#           :acts_as_range_configuration: 1.6
-#           :==: 1.7
+#           :pop: 1.5
 #           :each: 1.4
-#           :keys: 9.90000000000002
-#           :[]: 12.1
-#           :has_key?: 5.70000000000001
-#         InstanceMethods#after?:
-#           :&gt;: 1.3
-#           :respond_to?: 1.3
-#           :branch: 3.90000000000001
-#           :acts_as_range_begin: 2.80000000000001
-#           :after?: 1.4
-#           :acts_as_range_end: 1.6
-#         ClassMethods#acts_as_date_range_singleton_sequentialize_class:
-#           :validate_on_create: 1.3
-#           :add: 1.6
-#           :count: 1.7
-#           :&gt;: 1.5
-#           :acts_as_range_begin_attr: 3.7
-#           :class: 3.8
-#           :errors: 1.8
-#           :assignment: 5.8
-#           :before_validation_on_create: 1.3
-#           :branch: 6.90000000000001
-#           :before_create: 1.3
-#           :now: 1.5
-#           :acts_as_range_begin: 5.6
-#           :acts_as_range_end_attr: 3.8
-#           :each: 1.5
-#           :expire: 1.6
-#           :find: 1.7
-#         ClassMethods#acts_as_date_range?:
-#           :included_modules: 1.5
-#           :include?: 1.3
-#         InstanceMethods#expire:
-#           :second: 1.6
-#           :is_a?: 2.7
-#           :save!: 1.3
-#           :ago: 1.4
-#           :assignment: 4.2
-#           :-: 1.5
-#           :branch: 4.0
-#           :now: 1.3
-#           :lit_fixnum: 0.875
-#           :acts_as_range_end: 1.3
-#         ClassMethods#sequentialized_on:
-#           :[]: 1.3
-#           :acts_as_range_configuration: 1.5
+#           :validates_presence_of_without_object_daddy: 1.4
+#         ClassMethods#presence_validated_attributes:
+#           :merge: 1.5
+#           :presence_validated_attributes: 1.7
+#           :assignment: 4.30000000000001
+#           :respond_to?: 1.4
+#           :superclass: 3.50000000000001
+#           :branch: 1.4
+#         ClassMethods#spawn:
+#           :presence_validated_attributes: 5.4
+#           :each_pair: 1.4
+#           :assignment: 35.3
+#           :generate: 1.7
+#           :class_name: 2.1
+#           :call: 1.8
+#           :reflect_on_all_associations: 1.8
+#           :branch: 24.0
+#           :constantize: 1.9
+#           :name: 3.9
+#           :gather_exemplars: 1.4
+#           :select: 1.6
+#           :-: 1.8
+#           :send: 5.4
+#           :to_a: 1.6
+#           :empty?: 1.5
+#           :new: 1.4
+#           :reject!: 1.7
+#           :next: 1.9
+#           :delete: 1.9
+#           :include?: 1.8
+#           :primary_key_name: 4.2
+#           :to_s: 5.7
+#           :each: 3.2
+#           :keys: 4.0
+#           :[]: 23.6
+#           :generators: 1.7
+#           :scope: 1.6
+#         RailsClassMethods#generate!:
+#           :save!: 1.4
+#           :assignment: 2.80000000000001
+#           :spawn: 1.4
 #         YAML
-
+# 
 #         @totals = YAML.load(&lt;&lt;-YAML)
 #         ---
-#         InstanceMethods#expired?: 5.70438427878067
-#         ClassMethods#sequentialized?: 1.83847763108502
-#         InstanceMethods#contained_by?: 52.0954892481106
-#         ClassMethods#calculate_with_range_restrictions: 8.13449445263812
-#         InstanceMethods#initialize_with_has_many_range_extension: 15.8492902049272
-#         InstanceMethods#destroy_without_callbacks: 31.238757977871
-#         ClassMethods#acts_as_date_range_param_sequentialize_class: 50.3140139523772
-#         ClassMethods#acts_as_date_range_sequentialize_class: 5.55427763079954
-#         InstanceMethods#overlapping?: 25.0267856505785
-#         ClassMethods#with_after_scope: 9.20000000000002
-#         ClassMethods#with_containing_scope: 41.3095630574811
-#         ClassMethods#with_overlapping_scope: 19.8
-#         InstanceMethods#included: 5.20000000000001
-#         ClassMethods#with_current_time_scope: 26.9716517847907
-#         ParamExtension#to_attributes_for: 6.62570750939099
-#         InstanceMethods#to_range: 3.67695526217005
-#         ClassMethods#count_with_range_restrictions: 8.13449445263812
-#         ClassMethods#with_contained_scope: 57.9202900545225
-#         InstanceMethods#lifetime: 15.5273951453552
-#         InstanceMethods#limit_date_range: 9.92824254337091
-#         ClassMethods#acts_as_date_range: 8.60581198958007
-#         InstanceMethods#containing?: 77.6916983982203
-#         InstanceMethods#before?: 9.2612094242599
-#         ClassMethods#add_args: 4.80000000000001
-#         ClassMethods#remove_args: 14.5688022843335
-#         ClassMethods#with_before_scope: 9.20000000000002
-#         DateRanged#current: 2.40000000000001
-#         DateRange#none: 2.2
-#         DateRange#included: 15.6805612144464
-#         ClassMethods#none: 17.171487996094
-#         ParamExtension#to_sql: 3.80131556174965
-#         ClassMethods#acts_as_range: 8.6058119895801
-#         ClassMethods#validates_interval: 47.6073523733468
-#         Range#included: 15.6805612144464
-#         Ranged#included: 12.1593585357124
-#         InstanceMethods#add_has_many_range_extension: 22.0190826330255
-#         InstanceMethods#include?: 10.6677082824757
-#         InstanceMethods#none: 104.05921391208
-#         ClassMethods#acts_as_date_range_configure_class: 8.40357066966181
-#         ClassMethods#acts_as_range?: 2.80000000000001
-#         InstanceMethods#expire: 13.3056613890479
-#         ClassMethods#acts_as_date_range?: 2.8
-#         ClassMethods#acts_as_date_range_singleton_sequentialize_class: 34.8846671189507
-#         InstanceMethods#after?: 9.2612094242599
-#         ClassMethods#find_with_range_restrictions: 69.6799110217573
-#         ClassMethods#ranged_lookup: 17.5065701952153
-#         ClassMethods#acts_as_range_configure_class: 17.8809954980141
-#         Ranged#none: 15.5849286170968
-#         ClassMethods#sequentialized_on: 2.8
+#         RailsClassMethods#generate: 3.95979797464467
+#         ObjectDaddy#included: 23.0471256342304
+#         ClassMethods#generator_for: 59.7115776043475
+#         RailsClassMethods#exemplar_path: 1.4
+#         ClassMethods#underscore: 3.00000000000001
+#         ClassMethods#none: 5.2
+#         ClassMethods#gather_exemplars: 23.8882816460289
+#         ClassMethods#record_generator_for: 10.4980950652964
+#         main#none: 7.37737249974544
+#         Foo#initialize: 1.2
+#         ClassMethods#spawn: 96.0108847995893
+#         ClassMethods#presence_validated_attributes: 9.27685291464731
+#         RailsClassMethods#validates_presence_of_with_object_daddy: 10.8245092267502
+#         RailsClassMethods#generate!: 3.95979797464467
 #         YAML
 #       end
-
+# 
 #       it 'should not fail when flogging the given input' do
-#         lambda { @flog.flog_files(fixture_files(@files)) }.should_not raise_error
+#         lambda { @flog.flog_files(fixture_files(@files)) }.wont_raise_error
 #       end
-
-#       currently 'should report an overall flog score of 981.137760580242' do
+# 
+#       currently 'should report an overall flog score of 259.354295339925' do
 #         @flog.flog_files(fixture_files(@files))
-#         @flog.total.must_be_close_to 981.137760580242
+#         @flog.total.must_be_close_to 259.354295339925
 #       end
-
+# 
 #       currently 'should compute the same call data as flog-1.1.0' do
 #         @flog.flog_files(fixture_files(@files))
 #         @flog.calls.each_pair do |k,v|
@@ -934,7 +184,7 @@ describe &quot;Flog Command Line&quot; do
 #           end
 #         end
 #       end
-
+# 
 #       currently 'should compute the same totals data as flog-1.1.0' do
 #         @flog.flog_files(fixture_files(@files))
 #         @flog.totals.each_pair do |k,v|
@@ -942,5 +192,755 @@ describe &quot;Flog Command Line&quot; do
 #         end
 #       end
 #     end
-  end
-end
+# 
+#     # FIX: this is totally unmaintainable
+# #     describe 'when given a directory of files' do
+# #       before :each do
+# #         @files = ['/directory/']
+# #         @calls = YAML.load(&lt;&lt;-YAML)
+# #         ---
+# #         BotSender#validate:
+# #           :assignment: 1.3
+# #         BotParserFormat#description:
+# #           :join: 1.3
+# #           :branch: 1.2
+# #           :empty?: 1.2
+# #         BotParserFormat#initialize:
+# #           :assignment: 4.8
+# #           :branch: 1.2
+# #           :raise: 1.3
+# #           :nil?: 1.2
+# #         BotParser#parse:
+# #           :merge: 1.3
+# #           :detect: 1.3
+# #           :assignment: 6.7
+# #           :branch: 3.9
+# #           :empty?: 1.3
+# #           :process: 1.4
+# #           :formats: 1.5
+# #         register_format#video:
+# #           :register_format: 1.2
+# #           :assignment: 3.6
+# #           :lit_fixnum: 1.05
+# #           :[]: 3.6
+# #         register_format#image:
+# #           :register_format: 1.2
+# #           :assignment: 3.6
+# #           :lit_fixnum: 1.05
+# #           :[]: 3.6
+# #         BotFilter#process:
+# #           :class: 1.6
+# #           :options: 1.8
+# #           :kinds: 1.4
+# #           :assignment: 5.4
+# #           :branch: 2.5
+# #           :get: 1.8
+# #           :process: 1.4
+# #           :new: 1.6
+# #           :each: 1.2
+# #         BotFilter#register:
+# #           :&lt;&lt;: 1.8
+# #         BotSender#deliver:
+# #           :respond_to?: 1.3
+# #           :assignment: 2.7
+# #           :send: 4.2
+# #           :branch: 5.2
+# #           :raise: 1.4
+# #           :to_s: 1.5
+# #           :to_sym: 1.3
+# #           :[]: 4.5
+# #         register_format#true_or_false:
+# #           :register_format: 1.2
+# #           :assignment: 3.6
+# #           :lit_fixnum: 0.35
+# #           :[]: 1.2
+# #         BotSender#none:
+# #           :assignment: 1.1
+# #           :attr_reader: 1.2
+# #         BotParser#clear_formats:
+# #           :assignment: 1.9
+# #         BotSender#register:
+# #           :each_pair: 1.3
+# #           :assignment: 6.90000000000001
+# #           :branch: 1.3
+# #         register_format#definition:
+# #           :register_format: 1.2
+# #           :assignment: 3.6
+# #           :lit_fixnum: 0.7
+# #           :[]: 2.4
+# #         register_format#link:
+# #           :register_format: 1.2
+# #           :assignment: 3.6
+# #           :lit_fixnum: 1.05
+# #           :[]: 3.6
+# #         BotParser#none:
+# #           :assignment: 1.2
+# #           :sclass: 6.0
+# #           :attr_reader: 1.8
+# #         BotParser#register_format:
+# #           :&lt;&lt;: 1.9
+# #           :new: 2.1
+# #           :formats: 2.1
+# #           :block_pass: 2.1
+# #         BotSender#initialize:
+# #           :validate: 1.3
+# #           :assignment: 2.6
+# #           :[]: 1.3
+# #         register_format#quote:
+# #           :register_format: 1.2
+# #           :assignment: 3.6
+# #           :lit_fixnum: 1.05
+# #           :[]: 3.6
+# #         BotFilter#register_filter:
+# #           :register: 1.8
+# #           :load: 1.8
+# #           :filter_path: 1.8
+# #           :assignment: 1.8
+# #           :exists?: 1.8
+# #           :branch: 1.8
+# #           :raise: 1.9
+# #         BotSender#kinds:
+# #           :assignment: 1.4
+# #           :sort_by: 1.3
+# #           :branch: 1.3
+# #           :to_s: 1.4
+# #           :keys: 1.5
+# #         main#none:
+# #           :require: 2.2
+# #         BotFilter#new:
+# #           :locate_filters: 1.9
+# #           :assignment: 3.6
+# #           :send: 5.4
+# #           :branch: 1.8
+# #           :allocate: 1.8
+# #         BotSender#new:
+# #           :kinds: 1.5
+# #           :assignment: 2.6
+# #           :send: 3.9
+# #           :branch: 1.3
+# #           :allocate: 1.3
+# #           :raise: 1.4
+# #           :include?: 1.3
+# #           :[]: 4.7
+# #         BotFilter#locate_filters:
+# #           :register_filter: 2.0
+# #           :assignment: 2.0
+# #           :branch: 5.5
+# #           :each: 1.9
+# #           :[]: 4.0
+# #         BotFilter#get:
+# #           :gsub: 2.0
+# #           :upcase: 2.1
+# #           :assignment: 1.8
+# #           :const_get: 1.8
+# #           :branch: 2.0
+# #           :to_sym: 1.8
+# #           :to_s: 2.2
+# #         BotParserFormat#none:
+# #           :attr_reader: 1.1
+# #         BotFilter#filter_path:
+# #           :+: 2.0
+# #           :dirname: 2.2
+# #           :expand_path: 1.8
+# #         BotParserFormat#process:
+# #           :merge: 1.2
+# #           :call: 1.4
+# #           :match: 1.2
+# #           :format: 1.4
+# #           :name: 1.4
+# #           :assignment: 1.2
+# #           :branch: 1.2
+# #           :block: 1.6
+# #         BotParser#formats:
+# #           :class: 1.5
+# #           :formats: 1.3
+# #         BotFilter#initialize:
+# #           :assignment: 2.4
+# #         register_format#fact:
+# #           :register_format: 1.2
+# #           :assignment: 3.6
+# #           :lit_fixnum: 0.35
+# #           :[]: 1.2
+# #         BotFilter#none:
+# #           :sclass: 5.5
+# #           :attr_reader: 1.1
+# #         YAML
+# 
+# #         @totals = YAML.load(&lt;&lt;-YAML)
+# #         ---
+# #         BotFilter#register: 1.8
+# #         BotFilter#process: 12.3308556069723
+# #         register_format#image: 6.86895188511319
+# #         register_format#video: 6.86895188511319
+# #         BotParser#parse: 10.3121287811974
+# #         BotParserFormat#initialize: 5.54346462061408
+# #         BotParserFormat#description: 2.77308492477241
+# #         BotSender#validate: 1.3
+# #         register_format#true_or_false: 4.53017659699929
+# #         BotSender#deliver: 15.3613150478727
+# #         BotParser#clear_formats: 1.9
+# #         BotSender#none: 1.62788205960997
+# #         BotParser#none: 7.89176786277955
+# #         register_format#link: 6.86895188511319
+# #         register_format#definition: 5.60802995712398
+# #         BotSender#register: 7.14072825417689
+# #         BotParser#register_format: 8.2
+# #         BotFilter#register_filter: 9.44933860119321
+# #         register_format#quote: 6.86895188511319
+# #         BotSender#initialize: 3.67695526217005
+# #         BotFilter#new: 9.9503768772846
+# #         main#none: 2.2
+# #         BotSender#kinds: 4.61410879802373
+# #         BotFilter#get: 10.2591422643416
+# #         BotFilter#locate_filters: 9.83158176490437
+# #         BotSender#new: 14.3965273590543
+# #         BotFilter#filter_path: 6.0
+# #         BotParserFormat#none: 1.1
+# #         BotFilter#initialize: 2.4
+# #         BotParser#formats: 2.8
+# #         BotParserFormat#process: 8.37376856618333
+# #         BotFilter#none: 6.6
+# #         register_format#fact: 4.53017659699929
+# #         YAML
+# #       end
+# 
+# #       it 'should not fail when flogging the given input' do
+# #         lambda { @flog.flog_files(fixture_files(@files)) }.should_not raise_error
+# #       end
+# 
+# #       currently 'should report an overall flog score of 209.977217342726' do
+# #         @flog.flog_files(fixture_files(@files))
+# #         @flog.total.must_be_close_to 209.977217342726
+# #       end
+# 
+# #       currently 'should compute the same call data as flog-1.1.0' do
+# #         @flog.flog_files(fixture_files(@files))
+# #         @flog.calls.each_pair do |k,v|
+# #           v.each_pair do |x, y|
+# #             @calls[k][x].must_be_close_to y
+# #           end
+# #         end
+# #       end
+# 
+# #       currently 'should compute the same totals data as flog-1.1.0' do
+# #         @flog.flog_files(fixture_files(@files))
+# #         @flog.totals.each_pair {|k,v| v.must_be_close_to @totals[k]
+# #       end
+# #     end
+# 
+#     # FIX: this is totally unmaintainable
+# #     describe 'when given a collection of files' do
+# #       before :each do
+# #         @files = ['/collection/']
+# #         @calls = YAML.load(&lt;&lt;-YAML)
+# #         ---
+# #         InstanceMethods#initialize_with_has_many_range_extension:
+# #           :returning: 1.3
+# #           :initialize_without_has_many_range_extension: 1.5
+# #           :macro: 1.90000000000001
+# #           :add_has_many_range_extension: 1.70000000000001
+# #           :branch: 2.80000000000001
+# #           :puts: 6.00000000000002
+# #           :==: 1.50000000000001
+# #           :to_s: 1.70000000000001
+# #         ClassMethods#calculate_with_range_restrictions:
+# #           :with_current_time_scope: 1.5
+# #           :calculate_without_range_restrictions: 3.10000000000001
+# #           :branch: 2.90000000000001
+# #           :[]: 1.4
+# #           :acts_as_range_configuration: 1.6
+# #         InstanceMethods#contained_by?:
+# #           :to_range: 3.70000000000001
+# #           :exclude_end?: 3.60000000000001
+# #           :respond_to?: 1.3
+# #           :last: 1.8
+# #           :contained_by?: 1.5
+# #           :branch: 18.5
+# #           :&gt;=: 1.9
+# #           :acts_as_range_begin: 12.5
+# #           :==: 3.20000000000001
+# #           :include?: 2.90000000000001
+# #           :acts_as_range_end: 14.4
+# #           :&lt;=: 1.9
+# #         ClassMethods#sequentialized?:
+# #           :branch: 1.3
+# #           :sequentialized_on: 1.3
+# #         InstanceMethods#expired?:
+# #           :assignment: 1.3
+# #           :branch: 1.3
+# #           :now: 1.3
+# #           :acts_as_range_end: 2.8
+# #           :&lt;=: 1.3
+# #         ClassMethods#with_overlapping_scope:
+# #           :|: 3.00000000000001
+# #           :with_containing_scope: 4.00000000000001
+# #           :with_contained_scope: 1.8
+# #           :flatten: 5.20000000000001
+# #           :block_pass: 5.80000000000001
+# #         ClassMethods#with_containing_scope:
+# #           :acts_as_range_begin_attr: 5.30000000000001
+# #           :with_scope: 1.4
+# #           :&lt;&lt;: 11.0
+# #           :assignment: 4.20000000000001
+# #           :join: 1.8
+# #           :table_name: 10.6
+# #           :branch: 2.80000000000001
+# #           :acts_as_range_end_attr: 5.30000000000001
+# #           :block_pass: 1.4
+# #           :flatten: 1.4
+# #           :nil?: 2.80000000000001
+# #         ClassMethods#with_after_scope:
+# #           :acts_as_range_begin_attr: 3.20000000000001
+# #           :with_scope: 1.4
+# #           :table_name: 3.20000000000001
+# #           :block_pass: 1.4
+# #         InstanceMethods#overlapping?:
+# #           :is_a?: 1.4
+# #           :first: 1.8
+# #           :respond_to?: 1.3
+# #           :last: 1.8
+# #           :assignment: 3.20000000000001
+# #           :contained_by?: 1.4
+# #           :containing?: 7.80000000000002
+# #           :branch: 11.3
+# #           :acts_as_range_begin: 3.30000000000001
+# #           :acts_as_range_end: 3.30000000000001
+# #         ClassMethods#acts_as_date_range_sequentialize_class:
+# #           :acts_as_date_range_param_sequentialize_class: 1.4
+# #           :acts_as_date_range_singleton_sequentialize_class: 1.4
+# #           :branch: 1.3
+# #           :flatten!: 1.3
+# #           :==: 1.3
+# #         ClassMethods#acts_as_date_range_param_sequentialize_class:
+# #           :validate_on_create: 1.3
+# #           :add: 1.6
+# #           :count: 1.7
+# #           :&gt;: 1.5
+# #           :acts_as_range_begin_attr: 3.9
+# #           :class: 3.8
+# #           :extend: 2.6
+# #           :errors: 1.8
+# #           :assignment: 5.80000000000001
+# #           :before_validation_on_create: 1.3
+# #           :branch: 6.90000000000001
+# #           :before_create: 1.3
+# #           :now: 1.5
+# #           :acts_as_range_begin: 6.00000000000001
+# #           :to_sql: 4.2
+# #           :acts_as_range_end_attr: 4.2
+# #           :each: 1.5
+# #           :expire: 1.6
+# #           :find: 1.7
+# #           :flatten: 3.8
+# #           :to_attributes_for: 4.2
+# #         InstanceMethods#destroy_without_callbacks:
+# #           :class: 3.8
+# #           :default_timezone: 1.8
+# #           :freeze: 1.3
+# #           :new_record?: 1.3
+# #           :update_all: 1.6
+# #           :assignment: 1.6
+# #           :send: 5.4
+# #           :branch: 4.3
+# #           :now: 3.6
+# #           :acts_as_range_end_attr: 2.0
+# #           :id: 2.0
+# #           :utc: 1.7
+# #           :==: 1.6
+# #           :[]: 1.4
+# #           :acts_as_range_configuration: 1.6
+# #           :quote_value: 1.8
+# #         ClassMethods#with_contained_scope:
+# #           :acts_as_range_begin_attr: 7.60000000000002
+# #           :with_scope: 1.4
+# #           :&lt;&lt;: 16.8
+# #           :assignment: 4.20000000000001
+# #           :join: 1.8
+# #           :table_name: 15.2
+# #           :branch: 4.40000000000001
+# #           :acts_as_range_end_attr: 7.60000000000002
+# #           :block_pass: 1.4
+# #           :flatten: 1.4
+# #           :nil?: 4.40000000000001
+# #         ClassMethods#count_with_range_restrictions:
+# #           :count_without_range_restrictions: 3.10000000000001
+# #           :with_current_time_scope: 1.5
+# #           :branch: 2.90000000000001
+# #           :[]: 1.4
+# #           :acts_as_range_configuration: 1.6
+# #         InstanceMethods#to_range:
+# #           :assignment: 2.60000000000001
+# #           :acts_as_range_begin: 1.3
+# #           :acts_as_range_end: 1.3
+# #         ParamExtension#to_attributes_for:
+# #           :attributes: 1.7
+# #           :assignment: 1.5
+# #           :branch: 1.4
+# #           :[]: 1.5
+# #           :to_s: 1.7
+# #           :collect: 1.4
+# #         ClassMethods#with_current_time_scope:
+# #           :first: 3.3
+# #           :respond_to?: 2.7
+# #           :call: 2.7
+# #           :with_overlapping_scope: 2.9
+# #           :end_dated_association_date: 3.1
+# #           :last: 3.3
+# #           :assignment: 2.7
+# #           :with_containing_scope: 2.9
+# #           :branch: 2.7
+# #           :block_pass: 5.80000000000001
+# #         InstanceMethods#included:
+# #           :extend: 5.20000000000001
+# #         DateRanged#current:
+# #           :containing: 1.1
+# #           :now: 1.3
+# #         ClassMethods#with_before_scope:
+# #           :with_scope: 1.4
+# #           :table_name: 3.20000000000001
+# #           :acts_as_range_end_attr: 3.20000000000001
+# #           :block_pass: 1.4
+# #         ClassMethods#remove_args:
+# #           :first: 1.5
+# #           :&gt;: 1.4
+# #           :last: 2.0
+# #           :&lt;&lt;: 1.4
+# #           :extract_options_from_args!: 1.4
+# #           :assignment: 2.90000000000001
+# #           :branch: 2.80000000000001
+# #           :length: 1.6
+# #           :delete: 1.5
+# #           :keys: 1.8
+# #           :each: 1.4
+# #         ClassMethods#add_args:
+# #           :merge: 1.6
+# #           :&lt;&lt;: 1.4
+# #           :extract_options_from_args!: 1.8
+# #         InstanceMethods#before?:
+# #           :respond_to?: 1.3
+# #           :branch: 3.90000000000001
+# #           :&lt;: 1.3
+# #           :before?: 1.4
+# #           :acts_as_range_begin: 1.6
+# #           :acts_as_range_end: 2.80000000000001
+# #         InstanceMethods#containing?:
+# #           :to_range: 8.50000000000001
+# #           :is_a?: 1.4
+# #           :exclude_end?: 6.30000000000001
+# #           :&gt;: 2.0
+# #           :first: 4.00000000000001
+# #           :respond_to?: 1.3
+# #           :assignment: 3.20000000000001
+# #           :last: 10.7
+# #           :contained_by?: 1.4
+# #           :branch: 28.0
+# #           :acts_as_range_begin: 8.90000000000002
+# #           :==: 5.90000000000001
+# #           :include?: 5.20000000000001
+# #           :acts_as_range_end: 13.1
+# #           :&lt;=: 3.70000000000001
+# #         ClassMethods#acts_as_date_range:
+# #           :acts_as_range: 1.3
+# #           :is_a?: 1.3
+# #           :assignment: 1.3
+# #           :acts_as_date_range?: 1.3
+# #           :acts_as_date_range_configure_class: 1.3
+# #           :branch: 2.6
+# #           :update: 1.5
+# #           :raise: 1.4
+# #         InstanceMethods#limit_date_range:
+# #           :end_dated_association_date: 1.4
+# #           :assignment: 6.9
+# #           :branch: 1.4
+# #           :yield: 1.4
+# #           :new: 1.4
+# #           :acts_as_range_begin: 1.4
+# #           :acts_as_range_end: 1.4
+# #         InstanceMethods#lifetime:
+# #           :&gt;: 1.4
+# #           :assignment: 1.3
+# #           :branch: 5.4
+# #           :now: 1.3
+# #           :acts_as_range_begin: 4.6
+# #           :acts_as_range_end: 3.2
+# #           :distance_of_time_in_words: 1.3
+# #           :nil?: 2.7
+# #         ClassMethods#validates_interval:
+# #           :validation_method: 1.6
+# #           :add: 1.80000000000001
+# #           :errors: 2.00000000000001
+# #           :evaluate_condition: 1.6
+# #           :assignment: 9.30000000000003
+# #           :send: 4.20000000000001
+# #           :branch: 10.9
+# #           :acts_as_range_begin: 1.70000000000001
+# #           :acts_as_range_end: 1.70000000000001
+# #           :each: 1.3
+# #           :humanize: 2.60000000000001
+# #           :to_s: 3.00000000000001
+# #           :[]: 12.3
+# #           :acts_as_range_configuration: 6.00000000000001
+# #           :&lt;=: 1.90000000000001
+# #           :nil?: 3.70000000000001
+# #         ClassMethods#acts_as_range:
+# #           :is_a?: 1.3
+# #           :class_inheritable_reader: 1.3
+# #           :assignment: 1.3
+# #           :acts_as_range_configure_class: 1.3
+# #           :branch: 2.60000000000001
+# #           :update: 1.5
+# #           :raise: 1.4
+# #           :acts_as_range?: 1.3
+# #         ParamExtension#to_sql:
+# #           :assignment: 1.7
+# #           :join: 1.4
+# #           :branch: 1.6
+# #           :collect: 1.6
+# #         ClassMethods#none:
+# #           :protected: 3.70000000000001
+# #           :assignment: 1.4
+# #           :branch: 2.70000000000001
+# #           :[]: 1.5
+# #           :to_sym: 1.7
+# #           :acts_as_range_configuration: 1.7
+# #           :define_method: 7.00000000000002
+# #           :each: 1.3
+# #         DateRange#included:
+# #           :respond_to?: 1.2
+# #           :extend: 2.4
+# #           :assignment: 1.4
+# #           :branch: 2.6
+# #           :now: 1.5
+# #           :new: 1.4
+# #           :attr: 1.9
+# #           :sclass: 7.0
+# #         DateRange#none:
+# #           :include: 2.2
+# #         InstanceMethods#add_has_many_range_extension:
+# #           :options: 1.50000000000001
+# #           :assignment: 6.00000000000002
+# #           :push: 1.60000000000001
+# #           :branch: 2.80000000000001
+# #           :puts: 5.40000000000002
+# #           :acts_as_range?: 1.3
+# #           :include?: 1.50000000000001
+# #           :[]: 5.20000000000002
+# #           :klass: 3.00000000000001
+# #           :flatten: 1.50000000000001
+# #         Ranged#included:
+# #           :alias_method_chain: 1.3
+# #           :branch: 1.2
+# #           :send: 3.60000000000001
+# #           :puts: 1.2
+# #           :instance_eval: 6.00000000000002
+# #         Range#included:
+# #           :respond_to?: 1.2
+# #           :extend: 2.4
+# #           :assignment: 1.4
+# #           :branch: 2.6
+# #           :now: 1.5
+# #           :new: 1.4
+# #           :attr: 1.9
+# #           :sclass: 7.00000000000001
+# #         InstanceMethods#include?:
+# #           :class: 3.2
+# #           :branch: 5.40000000000001
+# #           :id: 3.2
+# #           :find: 2.8
+# #         ClassMethods#acts_as_range?:
+# #           :included_modules: 1.5
+# #           :include?: 1.3
+# #         ClassMethods#acts_as_date_range_configure_class:
+# #           :acts_as_date_range_sequentialize_class: 1.4
+# #           :assignment: 1.3
+# #           :write_inheritable_attribute: 1.3
+# #           :branch: 1.3
+# #           :[]: 2.9
+# #           :include: 2.6
+# #         InstanceMethods#none:
+# #           :+: 3.8
+# #           :class: 9.20000000000001
+# #           :assignment: 5.60000000000001
+# #           :private: 1.2
+# #           :send: 43.2
+# #           :branch: 8.00000000000001
+# #           :alias_method: 4.80000000000001
+# #           :to_s: 4.2
+# #           :to_sym: 6.80000000000001
+# #           :define_method: 28.0
+# #           :each: 2.4
+# #         Ranged#none:
+# #           :+: 1.7
+# #           :assignment: 3.60000000000001
+# #           :select: 1.2
+# #           :send: 3.90000000000001
+# #           :branch: 3.30000000000001
+# #           :to_sym: 1.5
+# #           :define_method: 5.50000000000002
+# #           :each: 1.0
+# #         ClassMethods#acts_as_range_configure_class:
+# #           :assignment: 3.20000000000001
+# #           :write_inheritable_attribute: 1.3
+# #           :alias_method_chain: 1.90000000000001
+# #           :branch: 1.8
+# #           :validates_interval: 1.3
+# #           :to_sym: 2.1
+# #           :each: 1.8
+# #           :sclass: 6.50000000000002
+# #           :include: 2.60000000000001
+# #         ClassMethods#ranged_lookup:
+# #           :first: 1.5
+# #           :respond_to?: 1.4
+# #           :last: 1.5
+# #           :assignment: 7.00000000000002
+# #           :-: 1.7
+# #           :branch: 2.80000000000001
+# #           :to_a: 1.5
+# #           :yield: 1.4
+# #           :new: 3.80000000000001
+# #           :acts_as_range_begin: 1.5
+# #           :acts_as_range_end: 1.5
+# #         ClassMethods#find_with_range_restrictions:
+# #           :find_without_range_restrictions: 9.80000000000002
+# #           :with_current_time_scope: 1.5
+# #           :remove_args: 7.50000000000002
+# #           :with_before_scope: 1.5
+# #           :extract_options_from_args!: 1.4
+# #           :assignment: 12.8
+# #           :with_containing_scope: 1.5
+# #           :send: 5.40000000000001
+# #           :with_after_scope: 1.5
+# #           :branch: 19.7
+# #           :dup: 1.4
+# #           :ranged_lookup: 1.7
+# #           :acts_as_range_configuration: 1.6
+# #           :==: 1.7
+# #           :each: 1.4
+# #           :keys: 9.90000000000002
+# #           :[]: 12.1
+# #           :has_key?: 5.70000000000001
+# #         InstanceMethods#after?:
+# #           :&gt;: 1.3
+# #           :respond_to?: 1.3
+# #           :branch: 3.90000000000001
+# #           :acts_as_range_begin: 2.80000000000001
+# #           :after?: 1.4
+# #           :acts_as_range_end: 1.6
+# #         ClassMethods#acts_as_date_range_singleton_sequentialize_class:
+# #           :validate_on_create: 1.3
+# #           :add: 1.6
+# #           :count: 1.7
+# #           :&gt;: 1.5
+# #           :acts_as_range_begin_attr: 3.7
+# #           :class: 3.8
+# #           :errors: 1.8
+# #           :assignment: 5.8
+# #           :before_validation_on_create: 1.3
+# #           :branch: 6.90000000000001
+# #           :before_create: 1.3
+# #           :now: 1.5
+# #           :acts_as_range_begin: 5.6
+# #           :acts_as_range_end_attr: 3.8
+# #           :each: 1.5
+# #           :expire: 1.6
+# #           :find: 1.7
+# #         ClassMethods#acts_as_date_range?:
+# #           :included_modules: 1.5
+# #           :include?: 1.3
+# #         InstanceMethods#expire:
+# #           :second: 1.6
+# #           :is_a?: 2.7
+# #           :save!: 1.3
+# #           :ago: 1.4
+# #           :assignment: 4.2
+# #           :-: 1.5
+# #           :branch: 4.0
+# #           :now: 1.3
+# #           :lit_fixnum: 0.875
+# #           :acts_as_range_end: 1.3
+# #         ClassMethods#sequentialized_on:
+# #           :[]: 1.3
+# #           :acts_as_range_configuration: 1.5
+# #         YAML
+# 
+# #         @totals = YAML.load(&lt;&lt;-YAML)
+# #         ---
+# #         InstanceMethods#expired?: 5.70438427878067
+# #         ClassMethods#sequentialized?: 1.83847763108502
+# #         InstanceMethods#contained_by?: 52.0954892481106
+# #         ClassMethods#calculate_with_range_restrictions: 8.13449445263812
+# #         InstanceMethods#initialize_with_has_many_range_extension: 15.8492902049272
+# #         InstanceMethods#destroy_without_callbacks: 31.238757977871
+# #         ClassMethods#acts_as_date_range_param_sequentialize_class: 50.3140139523772
+# #         ClassMethods#acts_as_date_range_sequentialize_class: 5.55427763079954
+# #         InstanceMethods#overlapping?: 25.0267856505785
+# #         ClassMethods#with_after_scope: 9.20000000000002
+# #         ClassMethods#with_containing_scope: 41.3095630574811
+# #         ClassMethods#with_overlapping_scope: 19.8
+# #         InstanceMethods#included: 5.20000000000001
+# #         ClassMethods#with_current_time_scope: 26.9716517847907
+# #         ParamExtension#to_attributes_for: 6.62570750939099
+# #         InstanceMethods#to_range: 3.67695526217005
+# #         ClassMethods#count_with_range_restrictions: 8.13449445263812
+# #         ClassMethods#with_contained_scope: 57.9202900545225
+# #         InstanceMethods#lifetime: 15.5273951453552
+# #         InstanceMethods#limit_date_range: 9.92824254337091
+# #         ClassMethods#acts_as_date_range: 8.60581198958007
+# #         InstanceMethods#containing?: 77.6916983982203
+# #         InstanceMethods#before?: 9.2612094242599
+# #         ClassMethods#add_args: 4.80000000000001
+# #         ClassMethods#remove_args: 14.5688022843335
+# #         ClassMethods#with_before_scope: 9.20000000000002
+# #         DateRanged#current: 2.40000000000001
+# #         DateRange#none: 2.2
+# #         DateRange#included: 15.6805612144464
+# #         ClassMethods#none: 17.171487996094
+# #         ParamExtension#to_sql: 3.80131556174965
+# #         ClassMethods#acts_as_range: 8.6058119895801
+# #         ClassMethods#validates_interval: 47.6073523733468
+# #         Range#included: 15.6805612144464
+# #         Ranged#included: 12.1593585357124
+# #         InstanceMethods#add_has_many_range_extension: 22.0190826330255
+# #         InstanceMethods#include?: 10.6677082824757
+# #         InstanceMethods#none: 104.05921391208
+# #         ClassMethods#acts_as_date_range_configure_class: 8.40357066966181
+# #         ClassMethods#acts_as_range?: 2.80000000000001
+# #         InstanceMethods#expire: 13.3056613890479
+# #         ClassMethods#acts_as_date_range?: 2.8
+# #         ClassMethods#acts_as_date_range_singleton_sequentialize_class: 34.8846671189507
+# #         InstanceMethods#after?: 9.2612094242599
+# #         ClassMethods#find_with_range_restrictions: 69.6799110217573
+# #         ClassMethods#ranged_lookup: 17.5065701952153
+# #         ClassMethods#acts_as_range_configure_class: 17.8809954980141
+# #         Ranged#none: 15.5849286170968
+# #         ClassMethods#sequentialized_on: 2.8
+# #         YAML
+# #       end
+# 
+# #       it 'should not fail when flogging the given input' do
+# #         lambda { @flog.flog_files(fixture_files(@files)) }.should_not raise_error
+# #       end
+# 
+# #       currently 'should report an overall flog score of 981.137760580242' do
+# #         @flog.flog_files(fixture_files(@files))
+# #         @flog.total.must_be_close_to 981.137760580242
+# #       end
+# 
+# #       currently 'should compute the same call data as flog-1.1.0' do
+# #         @flog.flog_files(fixture_files(@files))
+# #         @flog.calls.each_pair do |k,v|
+# #           v.each_pair do |x, y|
+# #             @calls[k][x].must_be_close_to y
+# #           end
+# #         end
+# #       end
+# 
+# #       currently 'should compute the same totals data as flog-1.1.0' do
+# #         @flog.flog_files(fixture_files(@files))
+# #         @flog.totals.each_pair do |k,v|
+# #           v.must_be_close_to @totals[k]
+# #         end
+# #       end
+# #     end
+#   end
+# end</diff>
      <filename>test/test_flog_integration.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>e4a59e81e861afa3c0c74fa18ed7ff6a2f50473e</id>
    </parent>
  </parents>
  <author>
    <name>Ryan Davis</name>
    <email>ryand@zenspider.com</email>
  </author>
  <url>http://github.com/seattlerb/flog/commit/0e8b6b7e2321e0e7e10f44d8f3943852b570d0cc</url>
  <id>0e8b6b7e2321e0e7e10f44d8f3943852b570d0cc</id>
  <committed-date>2009-06-01T03:43:35-07:00</committed-date>
  <authored-date>2009-06-01T03:43:35-07:00</authored-date>
  <message>Starting to rip out the tests that I can no longer stand
[git-p4: depot-paths = &quot;//src/flog/dev/&quot;: change = 4988]</message>
  <tree>ad6b3adfa044c42ffa0b8bfd3d6ae99f05dd7978</tree>
  <committer>
    <name>Ryan Davis</name>
    <email>ryand@zenspider.com</email>
  </committer>
</commit>
