anchor.diff:                  let sb = System.Text.StringBuilder 128
                   if input = null then None else
                       let parts = input.Split '/'
  -                    let e = (parts :> seq<string>).GetEnumerator()
  -                    let n () = if e.MoveNext() then Some e.Current else None
  -                    let parsed = d.Decode { Request = req; Read = n }
  -                    // Checking that we are at the end of the url,
  -                    // at worst with an extra / (ie. an extra empty segment)
  -                    if e.MoveNext() && not (e.Current = "" && not (e.MoveNext()))
  -                    then None
  -                    else parsed
  +                    let pars = Parameters.Make req parts
  +                    let parsed = d.Decode pars
  +                    if pars.IsAtEnd then parsed else None
               show = fun value ->
                   let sb = System.Text.StringBuilder 128
                   let q = List()
  
positive.code:                     | false, _ -> Map.empty
                  d.[c.CustomizedName] <-
                      (existing, allowedMeths)
                      ||> Seq.fold (fun map m -> Map.add (Option.map Http.Method.OfString m) i map)
                  let fields = c.GetFields()
                  parseTuple t (uC c)
                      (fields |> Array.mapi (fun i f ->
  
negative.code:             D.Make(d.ReadsJson, d.QueryParams, fun p ->
                  d.Decode p |> Option.map mkSuccess)
          else
          let d = Dictionary<string, Map<option<Http.Method>, list<int>>>()
          let ds =
              cs |> Array.mapi (fun i c ->
                  let allowedMeths = getUnionCaseMethods c
  