anchor.diff:          ensure(i < s.Length && s.[i] = '{')
           i <- i + 1
           skipWhitespace()
  +        let pairs = ResizeArray<_>()
           if i < s.Length && s.[i] = '"' then
               pairs.Add(parsePair())
               skipWhitespace()
  
positive.code:             parseEllipsis() // tolerate ... or {...}
          ensure(i < s.Length && s.[i] = ']')
          i <- i + 1
          let arr = vals.ToArray()
          vals.Clear()
          JsonValue.Array(arr)
  
      and parseLiteral(expected, r) =
          ensure(i+expected.Length < s.Length)
  
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()
  