anchor.diff:      |>> (binParser.toUInt32 >> int)
       >>= fun size -> manyN size (keyValuePair f) |>> (Map.ofList >> Map)
   
  -  and map' f = fixMap f <|> map16 f <|> map32 f
  +  and map' f =
  +    choice [
  +      fixMap f
  +      map16 f
  +      map32 f
  +    ]
   
     and parser<'T when 'T : comparison> (f: TypeCode -> byte [] -> ExtendedValue<'T>) =
       choice [
  
positive.code:   let int64'<'T when 'T : comparison> = matchHead HeadByte.Int64 >>. binParser.int64 |>> (Int64: int64 -> MsgPackValue<'T>)
    let int'<'T when 'T : comparison> =
      choice [
        negativeFixInt<'T>
        int8'<'T>
        int16'<'T>
        int32'<'T>
  
negative.code:     |>> (binParser.toUInt32 >> int)
      >>= fun size -> manyN size (parser f) |>> (Array.ofList >> Array)
  
    and array' f =
      choice [
        fixArray f
        array16 f
        array32 f
      ]
  
    and keyValuePair f = parser f >>= fun key -> parser f |>> fun value -> (key, value)
  
    and fixMap f =
      binParser.byte1
      |> satisfy (byteToBitArray >> (function
      | [ One; Zero; Zero; Zero; _; _; _; _ ] -> true
      | _ -> false))
      |>> (byteToBitArray >> Seq.skip 4 >> Seq.toArray >> binParser.bitsToInt)
      >>= fun size -> manyN size (keyValuePair f) |>> (Map.ofList >> Map)
  
    and map16 f =
  