anchor.diff:      | MapOrDictWithNonStringKey = 7
       | Long = 8
       | BigInt = 9
  +    | TimeSpan = 10
   
   /// 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
  
positive.code:             jsonConverterTypes.GetOrAdd(t, fun t ->
                  if t.FullName = "System.DateTime"
                  then Kind.DateTime
                  elif t.Name = "FSharpOption`1"
                  then Kind.Option
                  elif t.FullName = "System.Int64" || t.FullName = "System.UInt64"
  
negative.code:                 let universalTime = if dt.Kind = DateTimeKind.Local then dt.ToUniversalTime() else dt
                  // Make sure the DateTime is saved in UTC and ISO format (see #604)
                  serializer.Serialize(writer, universalTime.ToString("O"))
              | true, Kind.TimeSpan ->
                  let ts = value :?> TimeSpan
                  let milliseconds = ts.TotalMilliseconds
                  serializer.Serialize(writer, milliseconds)
              | true, Kind.Option ->
                  let _,fields = FSharpValue.GetUnionFields(value, t)
                  serializer.Serialize(writer, fields.[0])
  