anchor.diff:      pack_map_(Tail, << Acc/binary, (pack_(Key))/binary, (pack_(Value))/binary>>).
   
   % Users SHOULD NOT send too long list: this uses lists:reverse/1
  --spec unpack_map_(binary(), non_neg_integer(), [{msgpack_term(), msgpack_term()}])->
  -			 {[{msgpack_term(), msgpack_term()}], binary()} | no_return().
  +-spec unpack_map_(binary(), non_neg_integer(), [{msgpack_term(), msgpack_term()}]) ->
  +			 {{[{msgpack_term(), msgpack_term()}]}, binary()} | no_return().
   unpack_map_(Bin, 0,   Acc) -> {{lists:reverse(Acc)}, Bin};
   unpack_map_(Bin, Len, Acc) ->
       {Key, Rest} = unpack_(Bin),
  
positive.code: % erl> c(msgpack).
  % erl> S = <some term>.
  % erl> {S, <<>>} = msgpack:unpack( msgpack:pack(S) ).
  -type reason() ::  enomem | badarg | no_code_matches | undefined.
  -type msgpack_term() :: [msgpack_term()]
  		      | {[{msgpack_term(),msgpack_term()}]}
  		      | integer() | float() | binary().
  
negative.code: 	    << 16#DB:8, Len:32/big-unsigned-integer-unit:1, Bin/binary >>
      end.
  
  -spec pack_array([msgpack_term()]) -> binary() | no_return().
  % list
  pack_array(L) ->
      case length(L) of
  