anchor.diff:  
   module IntelliFactory.WebSharper.Core.Json
   
  +open System.Runtime.CompilerServices
   module A = IntelliFactory.WebSharper.Core.Attributes
   module P = IntelliFactory.JavaScript.Packager
   module R = IntelliFactory.WebSharper.Core.Reflection
  
positive.code:                         .Invoke(null, [||])
                  fun _ -> x)
              (fun dD i t ->
                  let x = makeEmptySetOf t
                  fun _ -> x)
              (fun _ _ _ _ -> null)
              fo
  
negative.code:         | Some v -> dec v
          | None -> raise DecoderException
  
  let setModule =
      typeof<Set<_>>.Assembly
          .GetType("Microsoft.FSharp.Collections.SetModule")
  
  let seqModule =
      typeof<Set<_>>.Assembly
          .GetType("Microsoft.FSharp.Collections.SeqModule")
  
  let listModule =
      typeof<Set<_>>.Assembly
          .GetType("Microsoft.FSharp.Collections.ListModule")
  
  let makeEmptySet (t: System.Type) =
      setModule
          .GetMethod("Empty")
          .MakeGenericMethod(t.GetGenericArguments())
          .Invoke(null, [||])
  
  let makeEmptyList (t: System.Type) =
      listModule
          .GetMethod("Empty")
          .MakeGenericMethod(t.GetGenericArguments())
          .Invoke(null, [||])
  
  let unionEncoder dE (i: FormatSettings) (t: System.Type) =
      if i.FlattenCollections &&
          t.IsGenericType &&
          t.GetGenericTypeDefinition() = typedefof<list<_>>
      then
          let tg = t.GetGenericArguments()
          let tI = tg.[0]
          let dI = dE tI
          let toSeq =
              FastInvoke.Compile(
                  listModule.GetMethod("ToSeq").MakeGenericMethod(tg)
              ).Invoke1
          fun (x: obj) ->
              EncodedArray [for e in Seq.cast<obj> (toSeq x :?> _) -> dI e]
      else
      let tR = FSV.PreComputeUnionTagReader(t, flags)
      let cs =
          FST.GetUnionCases(t, flags)
  