anchor.diff:          | Some v -> dec v
           | None -> raise DecoderException
   
  +let opsModule =
  +    typeof<Set<_>>.Assembly
  +        .GetType("Microsoft.FSharp.Core.Operators")
  +
   let setModule =
       typeof<Set<_>>.Assembly
           .GetType("Microsoft.FSharp.Collections.SetModule")
   
  +let mapModule =
  +    typeof<Set<_>>.Assembly
  +        .GetType("Microsoft.FSharp.Collections.MapModule")
  +
   let seqModule =
       typeof<Set<_>>.Assembly
           .GetType("Microsoft.FSharp.Collections.SeqModule")
  
positive.code:         let tr = fst (encNode (treeF.GetValue x))
          EncodedObject [ "tree", tr ] |> i.AddTag t
  
  let mapDecoder dD (i: FormatSettings) (t: System.Type) =
      let tg = t.GetGenericArguments()
      if tg.Length <> 2 then raise DecoderException
      let dK = dD tg.[0]
      let dV = dD tg.[1]
      let tt = typedefof<System.Tuple<_,_>>.MakeGenericType(tg.[0], tg.[1])
      let cT = FSV.PreComputeTupleConstructor(tt)
      fun (x: Value) ->
  
negative.code:         "Count", EncodedNumber count  
      ]
  
  [<MethodImpl(MethodImplOptions.NoInlining)>]
  let unmakeMap<'T> (dV: obj -> Encoded) =
      let dV x = dV x // Force the method to return an FSharpFunc instead of taking 2 args
      fun (x: obj) ->
          EncodedObject [
              for KeyValue(k, v) in unbox<Map<string, 'T>> x ->
                  k, dV (box v)
          ]
  
  let mapEncoder dE (i: FormatSettings) (t: System.Type) =
      let tg = t.GetGenericArguments()
      if tg.Length <> 2 then raise EncoderException
      let dK = dE tg.[0]
      let dV = dE tg.[1]
      if i.FlattenCollections && tg.[0] = typeof<string> then
          let x = unmakeMap dV // Prevents unmakeMap from being dead-code-eliminated
          FastInvoke.Compile(
              thisModule.GetMethod("unmakeMap",
                  flags ||| System.Reflection.BindingFlags.Static
              ).MakeGenericMethod(tg.[1])
          ).Invoke1(dV)
          :?> (obj -> Encoded)
      else
      let treeF = t.GetFields(fieldFlags) |> Array.find (fun f -> f.Name.StartsWith "tree")
      let pair key value =
          EncodedObject [
  