anchor.diff:                    current <- Some(innerCollection)
                     f()
                     current <- None
  -                  contexts <- innerCollection::contexts
  +                  context <- TestContext.addChildContext context (innerCollection.getContext())
           | Some(v) -> v.describe name f
   
       member self.before (f: unit -> unit) =
  
positive.code:         | None    -> context <- TestContext.addTest context { Name = name; Test = f}
          | Some(v) -> v.it name f
  
      member self.run(results : TestReport) =
          let rec printNameStack(stack) : string =
              match stack with
              | []    -> ""
              | head::[] -> head
              | head::tail ->sprintf "%s %s" (printNameStack(tail)) head
  
          context.Tests |> List.rev |> List.iter (fun x -> 
              TestContext.perform_setup context
              results.reportTestRun()
              let nameStack = x.Name :: (TestContext.name_stack context)
              let name = printNameStack(nameStack)
              try
                  x.Test()
                  results.reportTestName name Success
              with
              | AssertionError(e) ->
                  results.reportFailure()
                  results.reportTestName name (Failure(e))
              | ex -> 
                  results.reportFailure()
                  results.reportTestName name Error
              TestContext.perform_teardown context
          )
  
          contexts |> List.rev |> List.iter (fun x ->
              x.run(results)
          )
  
      member self.run() = 
          self.run(TestReport())
  
negative.code:         Setups: testFunc list;
          TearDowns: testFunc list;
          ParentContext : T option;
          ChildContexts : T list;
          }
  
      let create name parent = { 
  