anchor.diff:          | x ->
               raise EncoderException
   
  -[<MethodImpl(MethodImplOptions.NoInlining)>]
  -let makeList<'T> (dV: Value -> obj) =
  -    let dV x = dV x // Force the method to return an FSharpFunc instead of taking 2 args
  -    function
  +let makeList<'T> (dV: Value -> obj) = function
       | Array vs -> vs |> List.map (unbox<'T> << dV) |> box
       | _ -> raise DecoderException
   
  
positive.code:         let tr = fst (encNode (treeF.GetValue x))
          EncodedObject [ "tree", tr ] |> i.AddTag t
  
  [<MethodImpl(MethodImplOptions.NoInlining)>]
  let makeMap<'T> (dV: Value -> obj) =
      let dV x = dV x // Force the method to return an FSharpFunc instead of taking 2 args
      function
      | Object vs ->
          Map.ofList<string, 'T>(
              vs |> List.map (fun (k, v) -> k, unbox (dV v))
  
negative.code:         t.IsGenericType &&
          t.GetGenericTypeDefinition() = typedefof<list<_>>
      then
          t.GetGenericArguments().[0]
          |> callGeneric <@ makeList @> dD
      else
      let cs =
          FST.GetUnionCases(t, flags)
  