anchor.diff:          let beginning = trace.Split([| ":line" |], StringSplitOptions.None).[0]
           let line = trace.Split([| ":line" |], StringSplitOptions.None).[1]
           printf "%s" beginning
  -        colorWriteReset ConsoleColor.DarkGreen (":line" + line)
  +        colorWriteReset color.DarkGreen (":line" + line)
         else
  -        colorWriteReset ConsoleColor.DarkGreen trace
  +        colorWriteReset color.DarkGreen trace
       Console.ResetColor())
   
   let newReporter () : actor<Reporter> =
  -  let dict = new Dictionary<Guid, (ConsoleColor * string) list>()
  +  let dict = new Dictionary<Guid, (color * string) list>()
     let printMessages id = dict.[id] |> List.rev |> List.iter (fun (color, message) -> colorWriteReset color message)
     actor.Start(fun self ->
       let rec loop passed failed skipped todo =
  
positive.code:   | Todo of id:Guid
    | Pass of id:Guid
    | Fail of id:Guid * ex:Exception
  
  let colorWriteReset color message =
    Console.ForegroundColor <- color
  
negative.code:         match msg with
          | Reporter.TestStart(description, id) ->
            let message = sprintf "Test: %s" description
            dict.Add(id, [color.DarkCyan, message])
            return! loop passed failed skipped todo
          | Reporter.Print(message, id) ->
            dict.[id] <- (color.Black, message)::dict.[id] //prepend new message
            return! loop passed failed skipped todo
          | Reporter.Pass id ->
            printMessages id
            colorWriteReset color.Green "Passed"
            return! loop (passed + 1) failed skipped todo
          | Reporter.Fail(id, ex) ->
            printMessages id
            printError ex
            return! loop passed (failed + 1) skipped todo
          | Reporter.Skip id ->
            printMessages id
            colorWriteReset color.Yellow "Skipped"
            return! loop passed failed (skipped + 1) todo
          | Reporter.Todo id ->
            printMessages id
            colorWriteReset color.Yellow "Todo"
            return! loop passed failed skipped (todo + 1)
          | Reporter.RunOver (minutes, seconds) ->
              printfn ""
              printfn "%i minutes %i seconds to execute" minutes seconds
              colorWriteReset color.Green (sprintf "%i passed" passed)
              colorWriteReset color.Yellow (sprintf "%i skipped" skipped)
              colorWriteReset color.Yellow (sprintf "%i todo" todo)
              colorWriteReset color.Red (sprintf "%i failed" failed)
              return ()
        }
      loop 0 0 0 0)
  
  