anchor.diff:      let mutable i = 0
       let s = jsonText
   
  -    // pre-allocate buffers for strings, arrays and records
  -    let buf = StringBuilder()
  -    let pairs = ResizeArray<_>()
  -    let vals = ResizeArray<_>()
  +    
  +    let buf = StringBuilder() // pre-allocate buffers for strings
   
       // Helper functions
       let skipWhitespace() =
  
positive.code:             parseEllipsis() // tolerate ... or {...}
          ensure(i < s.Length && s.[i] = '}')
          i <- i + 1
          let arr = pairs.ToArray()
          pairs.Clear()
          JsonValue.Record(arr)
  
      and parseArray() =
          ensure(i < s.Length && s.[i] = '[')
          i <- i + 1
          skipWhitespace()
          if i < s.Length && s.[i] <> ']' then
              vals.Add(parseValue())
              skipWhitespace()
  
negative.code:             i <- i + 1
          let len = i - start
          let sub = s.Substring(start,len)
          match TextConversions.AsDecimal cultureInfo sub with
          | Some x -> JsonValue.Number x
          | _ ->
              match TextConversions.AsFloat [| |] (*useNoneForMissingValues*)false cultureInfo sub with
              | Some x -> JsonValue.Float x
              | _ -> throw()
  
      and parsePair() =
          let key = parseString()
  