anchor.diff:                      FSharpValue.MakeUnion(uci, [|value|])
               | JsonToken.Null -> null // for { "union": null }
               | _ -> failwith "invalid token"
  +        | true, Kind.MapOrDictWithNonStringKey ->
  +            let mapTypes = t.GetGenericArguments()
  +            let mapSerializer = typedefof<MapSerializer<_,_>>.MakeGenericType mapTypes
  +            let mapDeserializeMethod = mapSerializer.GetMethod("Deserialize")
  +            mapDeserializeMethod.Invoke(null, [| t; reader; serializer |])
           | true, _ ->
               serializer.Deserialize(reader, t)
   
  
positive.code:     test Foo
      test Bar
      test <| DateTime(2016, 12, 13, 8, 00, 0)
  #endif
  
negative.code: 
  type [<Pojo>] U = MyCase of ja:int * jo:string
  type [<StringEnum>] U2 = Foo | [<CompiledName("B-A-R")>] Bar
  type UnionKey = K1 | K2 of string
  type RecordKey = { Key: string }
  
  module Test =
      let test (o: 'T) =
  