anchor.diff:        ext32 f
       ]
   
  +  let simpleFixType<'T when 'T : comparison> =
  +    positiveFixInt<'T> <|> negativeFixInt<'T>
  +    |> binParser.makeBitP (binParser.byteN 1)
  +
     let rec fixArray f =
  -    satisfy (function | [| One; Zero; Zero; One |] -> true | _ -> false) (binParser.bitsN 4)
  -    >>. binParser.bitsN 4 |>> binParser.bitsToInt
  -    |> binParser.makeBitP (binParser.byteN 1)
  +    binParser.byte1
  +    |> satisfy (byteToBitArray >> (function
  +    | [ One; Zero; Zero; One; _; _; _; _ ] -> true
  +    | _ -> false))
  +    |>> (byteToBitArray >> Seq.skip 4 >> Seq.toArray >> binParser.bitsToInt)
       >>= fun size -> manyN size (parser f) |>> (Array.ofList >> Array)
   
     and array16 f =
  
positive.code:     |>> (String: string -> MsgPackValue<'T>)
    
    let fixString<'T when 'T : comparison> =
      let matchHead =
        satisfy (function | [| One; Zero; One |] -> true | _ -> false) (binParser.bitsN 3)
        |>> binParser.bitsToInt
        |>> (fun x -> System.BitConverter.GetBytes(x))
        |> binParser.makeBitP (binParser.byteN 1)
      let length = binParser.bitsN 5 |>> binParser.bitsToInt |> binParser.makeBitP (binParser.byteN 1)
      stringN<'T> matchHead length
  
    let string8<'T when 'T : comparison> =
      stringN<'T> (matchHead HeadByte.String8) (binParser.byte1 |>> binParser.byteToInt)
  
negative.code:   let uint64'<'T when 'T : comparison> = matchHead HeadByte.UInt64 >>. binParser.uint64 |>> (UInt64: uint64 -> MsgPackValue<'T>)
    let uint'<'T when 'T : comparison> =
      choice [
        uint8'<'T>
        uint16'<'T>
        uint32'<'T>
  