anchor.diff:                      FSharpValue.MakeUnion(uci, [|value|])
               | JsonToken.Null -> null // for { "union": null }
               | _ -> failwith "invalid token"
  +
  +#if INTERACTIVE
  +#r "../../../build/fable-core/Fable.Core.dll"
  +
  +[<Fable.Core.Pojo>]
  +type U =
  +    | MyCase of ja:int * jo:string
  +
  +module Test =
  +    JsonConvert.SerializeObject(MyCase(5,"4"), JsonConverter())
  +    |> printfn "%s"
  +#endif
  
positive.code:                 serializer.Serialize(writer, values)
              | t -> // Unions
                  let uci, fields = FSharpValue.GetUnionFields(value, t)
                  if fields.Length = 0
                  then serializer.Serialize(writer, uci.Name)
                  else
                      writer.WriteStartObject()
                      writer.WritePropertyName(uci.Name)
                      if fields.Length = 1
                      then serializer.Serialize(writer, fields.[0])
                      else serializer.Serialize(writer, fields)
                      writer.WriteEndObject()
      override x.ReadJson(reader, t, existingValue, serializer) =
          match t with
          | t when t.Name = "FSharpOption`1" ->
  
negative.code: #if INTERACTIVE
  #r "../../../packages/Newtonsoft.Json/lib/net45/Newtonsoft.Json.dll"
  #else
  namespace Fable
  #endif
  
  #if DOTNETCORE
  [<AutoOpen>]
  