anchor.diff:          match msg with
           | Manager.Initialize (suites) ->
             //build a worker per suite/test combo and give them their work
  -          let workers = suites |> List.map (fun suite -> suite.Tests |> List.map (fun test -> newWorker self suite test)) |> List.concat
  +          let workers = suites |> List.map (fun suite -> suite.Tests |> List.map (fun test -> newWorker self suite test)) |> List.concat |> List.rev
             return! loop workers
           | Manager.Start ->
             //kick off the initial X workers
  
positive.code:   | Run
  
  type Reporter =
    | TestStart of id:Guid
    | Print of message:string * id:Guid
    | TestEnd of id:Guid
  
  let newReporter () : actor<Reporter> =
    let dict = new Dictionary<Guid, string list>()
    actor.Start(fun self ->
      let rec loop () =
        async {
          let! msg = self.Receive ()
          match msg with
          | Reporter.TestStart(id) ->
            dict.Add(id, [])
            return! loop ()
          | Reporter.Print(message, id) ->
            dict.[id] <- message::dict.[id] //prepend new message
            return! loop ()
          | Reporter.TestEnd(id) ->
            dict.[id] |> List.rev |> List.iter (fun message -> printfn "%s" message)
            printfn "Passed"
            return! loop ()
        }
      loop ())
  
  type TestContext (testId:Guid, reporter : actor<Reporter>) = class
    member x.TestId = testId
  
negative.code: //demo
  context "Test Context"
  
  
  "Skipped test" &&! fun ctx ->
    ()
  
  "Todo test" &&& todo
  
  [1..50]
  |> List.iter (fun i ->
    sprintf "Test %i" i &&& fun ctx ->
      ctx.printfn "A guid %A" (ng())
      ctx.printfn "I am test %i" i
      if i % 10 = 0 then failwith "mod error"
      ctx.printfn "A guid %A" (ng()))
  
  run()
  
  