anchor.diff:      << 16#CF:8, N:64/big-unsigned-integer-unit:1 >>.
   
   % negative fixnum
  -pack_int_(N) when is_integer(N) , N >= -32->
  +pack_int_(N) when N >= -32->
       << 2#111:3, N:5 >>;
   % int 8
   pack_int_(N) when N > -128 ->
  
positive.code:     pack_array_(Tail, <<Acc/binary,  (pack_(Head))/binary>>).
  
  % Users SHOULD NOT send too long list: this uses lists:reverse/1
  unpack_array_(Remain, 0,    Acc) when is_binary(Remain)-> {lists:reverse(Acc), Remain};
  unpack_array_(<<>>, RestLen,  _) when RestLen > 0 -> throw(short);
  unpack_array_(Bin, RestLen, Acc) when is_binary(Bin)->
      {Term, Rest}=unpack_(Bin),
      unpack_array_(Rest, RestLen-1, [Term|Acc]).
  
  
negative.code: % and feed more Bin into this function.
  % TODO: error case for imcomplete format when short for any type formats.
  -spec unpack( Bin::binary() )-> {msgpack_term(), binary()} | {error, reason()}.
  unpack(Bin) when not is_binary(Bin) ->
      {error, badarg};
  unpack(Bin) ->
      try
  	unpack_(Bin)
      catch
  