anchor.diff:  	     -234.4355, 1.0e-34, 1.0e64,
   	     [23, 234, 0.23],
   	     [0,42,<<"sum">>, [1,2]], [1,42, nil, [3]],
  -	     dict:from_list([{1,2},{<<"hoge">>,nil}]),
  +	     {[{1,2},{<<"hoge">>,nil}]},
   	     -234, -50000,
   	     42
   	    ],
  
positive.code: pack({Map}) when is_list(Map) ->
      pack_map(Map);
  pack(Map) when is_tuple(Map), element(1,Map)=:=dict ->
      pack_map(dict:from_list(Map));
  pack(_O) ->
      {error, undefined}.
  
  
negative.code: 	    [Term|unpack_all(Binary)]
      end.
  
  pack_map(M)->
      case length(M) of
  	Len when Len < 16 ->
  	    << 2#1000:4, Len:4/integer-unit:1, (pack_map_(M, <<>>))/binary >>;
  	Len when Len < 16#10000 -> % 65536
  	    << 16#DE:8, Len:16/big-unsigned-integer-unit:1, (pack_map_(M, <<>>))/binary >>;
  	Len ->
  	    << 16#DF:8, Len:32/big-unsigned-integer-unit:1, (pack_map_(M, <<>>))/binary >>
      end.
  
  % ===== internal APIs ===== %
  
  