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:             System.Array.Copy(els, tEls, els.Length)
              System.Activator.CreateInstance(t, tEls)
          | _ -> raise DecoderException
  
  let setModule =
      typeof<Set<_>>.Assembly
          .GetType("Microsoft.FSharp.Collections.SetModule")
  
  let seqModule =
      typeof<Set<_>>.Assembly
          .GetType("Microsoft.FSharp.Collections.SeqModule")
  
  let makeEmptySetOf (t: System.Type) =
      setModule
          .GetMethod("Empty")
          .MakeGenericMethod(t.GetGenericArguments())
          .Invoke(null, [||])
  
  let setEncoder dE (i: FormatSettings) (t: System.Type) =
      let tg = t.GetGenericArguments()
  
negative.code:             raise EncoderException
  
  let unionDecoder dD (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 = dD tI
          let empty = makeEmptyList t
          let ofSeq =
              FastInvoke.Compile(
                  listModule.GetMethod("OfSeq").MakeGenericMethod(tg)
              ).Invoke1
          let seqCast =
              FastInvoke.Compile(
                  seqModule.GetMethod("Cast").MakeGenericMethod(tg)
              ).Invoke1
          function
          | Array vs -> ofSeq (seqCast (Seq.map dI vs))
          | _ -> raise DecoderException
      else
      let cs =
          FST.GetUnionCases(t, flags)
          |> Array.map (fun c ->
  