anchor.diff:              jsonConverterTypes.GetOrAdd(t, fun t ->
                   if t.FullName = "System.DateTime"
                   then Kind.DateTime
  +                elif t.FullName = "System.TimeSpan"
  +                then Kind.TimeSpan
                   elif t.Name = "FSharpOption`1"
                   then Kind.Option
                   elif t.FullName = "System.Int64" || t.FullName = "System.UInt64"
  
positive.code:     | MapOrDictWithNonStringKey = 7
      | Long = 8
      | BigInt = 9
  
  /// Helper for serializing map/dict with non-primitive, non-string keys such as unions and records.
  /// Performs additional serialization/deserialization of the key object and uses the resulting JSON
  
negative.code:             | _ ->
                  let json = serializer.Deserialize(reader, typeof<string>) :?> string
                  upcast DateTime.Parse(json)
          | true, Kind.TimeSpan ->
              match reader.Value with
              | :? TimeSpan -> reader.Value // Avoid culture-sensitive string roundtrip for already parsed dates (see #613).
              | _ ->
                  let json = serializer.Deserialize(reader, typeof<int>) :?> int
                  let ts = TimeSpan.FromMilliseconds (float json)
                  upcast ts
          | true, Kind.Option ->
              let innerType = t.GetGenericArguments().[0]
              let innerType =
  