anchor.diff:        /// test name -> exception -> time taken -> unit
         exn: string -> exn -> TimeSpan -> unit
         /// Prints a summary given the test result counts
  -      summary : TestResultCounts -> unit }
  +      summary : TestResultSummary -> unit }
   
       static member Default =
         { beforeRun = fun _tests ->
  
positive.code:     let summary = { sumTestResults results with duration = w.Elapsed }
      printer.summary summary
  
      TestResultCounts.errorCode summary
  
    let testFromMember (mi: MemberInfo): Test option  =
      let getTestFromMemberInfo focusedState =
  
negative.code:       | _ -> false
  
    [<StructuredFormatDisplay("{description}")>]
    type TestResultSummary =
      { passed   : string list
        ignored  : string list
        failed   : string list
        errored  : string list
        duration : TimeSpan }
  
        member x.total =
          x.passed.Length + x.ignored.Length + x.failed.Length
  
        override x.ToString() =
          sprintf "%d tests run: %d passed, %d ignored, %d failed, %d errored (%A)\n"
                  (x.errored.Length + x.failed.Length + x.passed.Length)
                  x.passed.Length x.ignored.Length x.failed.Length x.errored.Length x.duration
        member x.description =
          x.ToString()
        static member (+) (c1: TestResultSummary, c2: TestResultSummary) =
          { passed = c1.passed @ c2.passed
            ignored = c1.ignored @ c2.ignored
            failed = c1.failed @ c2.failed
            errored = c1.errored @ c2.errored
            duration = c1.duration + c2.duration }
  
        static member errorCode (c: TestResultSummary) =
          (if c.failed.Length > 0 then 1 else 0) ||| (if c.errored.Length > 0 then 2 else 0)
  
    [<StructuredFormatDisplay("{description}")>]
    type TestRunResult =
  