anchor.diff:                  .GetMethod("ToObject", [|typeof<System.Type>; uT|])
           let f = getD uT
           D.Make(false, Set.empty, fun p ->
  -            f.Decode p |> DecodeResult.map (fun x -> toObj.Invoke(null, [|t; x|])))
  +            f.Decode p |> ReadResult.map (fun x -> toObj.Invoke(null, [|t; x|])))
       | Array eT ->
           if t.GetArrayRank() > 1 then
               raise (NoFormatError t)
  
positive.code:         let wt = writePrimitiveType t
          S.Make(true, fun w q x -> w.Add(wt x); true)
  
  type Parameters =
      {
          Request : Http.Request
          Fragments : string[]
          mutable Pos : int
      }
  
      member this.Read() =
          if this.Pos + 1 < this.Fragments.Length then
              this.Pos <- this.Pos + 1; Some this.Fragments.[this.Pos]
          else None
  
      member this.IsAtEnd =
          { this.Pos + 1 .. this.Fragments.Length - 1 }
          |> Seq.forall (fun i -> this.Fragments.[i] = "")
  
      static member Make req frags =
          {
              Request = req
              Fragments = frags
              Pos = -1
          }
  
  type D =
      {
          ReadsJson : unit -> bool
          QueryParams : unit -> Set<string>
          Decode : Parameters -> option<DecodeResult<obj>>
      }
      static member Make(json, query, decode) =
          {
  
negative.code:         show : obj -> option<string>
      }
  
      member this.Read(x, req) : option<DecodeResult<'T>> =
          this.read x req
          |> Option.map DecodeResult.unbox
  
      member this.Show(x: 'T) =
          this.show (x :> obj)
  