anchor.diff:      let inheritedConverterTypes = ConcurrentDictionary<string,HashSet<Type>>()
   
   open Cache
  -type DeserializeInheritedTypeJsonConverter() =
  -    inherit FSharpJsonConverter()
  -    override x.CanConvert(t) =
  -        base.CanConvert(t) && (base.IsRegisteredInherientedType t |> not)
   
   /// Converts F# options, tuples and unions to a format understandable
   /// A derivative of Fable's JsonConverter. Code adapted from Lev Gorodinski's original.
   /// See https://goo.gl/F6YiQk
  -and FSharpJsonConverter() =
  +type FSharpJsonConverter() =
       inherit Newtonsoft.Json.JsonConverter()
       let advance(reader: JsonReader) =
           reader.Read() |> ignore
  
positive.code:     let isRegisteredParentType (tp: Type) =
          inheritedConverterTypes.ContainsKey(tp.FullName)
  
      static let deserializeInheritedTypeJsonConverters : JsonConverter[] = [|DeserializeInheritedTypeJsonConverter()|]
  
      member x.IsRegisteredInherientedType (tp: Type) =
          let fullName = tp.FullName
          inheritedConverterTypes.Values
                          |> Seq.concat
                          |> Seq.exists (fun inheritedType ->
                              inheritedType.FullName = fullName
                          )
      override x.CanConvert(t) =
          let kind =
              jsonConverterTypes.GetOrAdd(t, fun t ->
  
negative.code:                 let mapSerializer = typedefof<MapSerializer<_,_>>.MakeGenericType mapTypes
                  let mapSerializeMethod = mapSerializer.GetMethod("Serialize")
                  mapSerializeMethod.Invoke(null, [| value; writer; serializer |]) |> ignore
              | true, _ ->                
                  serializer.Serialize(writer, value)
  
  