anchor.diff:        dumper
   
     compareResults "REFERENCE" 3.5 referenceData
  +  writeResults "REFERENCE" referenceData
   
     let jilData =
       let testCases =
  
positive.code:       dumper
  
    compareResults "FSHARP.DATA" 1.3 fsharpDataData
  // ----------------------------------------------------------------------------------------------
  
  // ----------------------------------------------------------------------------------------------
  
negative.code:       testCases
        dumper
  
    let writeField (f : string) =
      perfCsv.Write (f.Replace(',', ' '))
    let writeDelimiter () =
      perfCsv.Write ","
    let writeNewLine () =
      perfCsv.WriteLine ()
  
    writeField "parser"
    for testCase, _, _, _, _, _, _ in miniJsonData do
      writeDelimiter ()
      writeField testCase
    writeNewLine ()
  
    let expectedRatio v = max 1.0 v
  
    let writeResults
      (name             : string            )
      (data             : PerformanceData[] ) =
      infof "Writing performance data for %s" name
  
      writeField name
  
      for testCase0, iterations0, cc00, cc10, cc20, time0, ct0 in miniJsonData do
        writeDelimiter ()
        match data |> Array.tryFind (fun (testCase1, _, _, _, _, _, _) -> testCase0 = testCase1) with
        | None ->
          writeField "-"
        | Some (_, iterations1, cc01, cc11, cc21, time1, ct1) ->
          let adjustedTime0       = float time0 / float iterations0
          let adjustedTime1       = float time1 / float iterations1
  
          let ratio = adjustedTime1 / adjustedTime0
  
          writeField (ratio.ToString (CultureInfo.InvariantCulture))
  
      writeNewLine ()
  
    let compareResults
      (name             : string            )
  