anchor.diff:                  let mapSerializer = typedefof<MapSerializer<_,_>>.MakeGenericType mapTypes
                   let mapSerializeMethod = mapSerializer.GetMethod("Serialize")
                   mapSerializeMethod.Invoke(null, [| value; writer; serializer |]) |> ignore
  -            | true, Kind.Other when x.IsRegisteredInherientedType t ->
  -                let typeName = 
  -                    t.FullName
  -
  -                let fieldInfos = value.GetType().GetFields()
  -                
  -                /// write type name to json as type info 
  -                if fieldInfos.Length = 0 then
  -                    serializer.Serialize(writer, typeName)
  -                else
  -                    writer.WriteStartObject()
  -                    writer.WritePropertyName("TypeName")
  -                    writer.WriteValue(typeName)
  -                    fieldInfos |> Array.iter (fun fi ->
  -                        let field = fi.GetValue(value)
  -                        let name = fi.Name
  -                        writer.WritePropertyName(name)
  -                        serializer.Serialize(writer,field)
  -                    )        
  -                    writer.WriteEndObject()    
               | true, _ ->                
                   serializer.Serialize(writer, value)
   
  
positive.code:                 else Kind.Other)
          
          match kind with 
          | Kind.Other -> x.IsRegisteredInherientedType t || isRegisteredParentType t
          | _ -> true       
  
      override x.WriteJson(writer, value, serializer) =
  
negative.code:     let isRegisteredParentType (tp: Type) =
          inheritedConverterTypes.ContainsKey(tp.FullName)
  
      override x.CanConvert(t) =
          let kind =
              jsonConverterTypes.GetOrAdd(t, fun t ->
  