anchor.diff:  parse_packet(<<>>, Acc) ->
       {bad_length, {lists:reverse(Acc), <<>>}}.
   
  +-spec parse_body({non_neg_integer(), binary()}) ->
  +    [(#shp_metric{} | {bad_metric, term()})].
  +
   parse_body({Length, GZBody = <<31, 139, _Rest/binary>>}) ->
       Body = zlib:gunzip(GZBody),
       parse_body({Length, Body});
  
positive.code: 
  -type shp_metric_type() :: 'm' | 'mr' | 'g' | 'h'.
  
  -record(shp_metric, {key :: binary(),
                       value :: integer(),
                       type :: shp_metric_type(),
                       sample_rate :: float()}).
  
  % 1|26\nmyWebservice.requests:1|m
  
  -spec parse_packet(binary()) ->
          {bad_version, binary()}
          | {bad_length, {integer(), binary()}}
          | {?SHP_VERSION, non_neg_integer(), [#shp_metric{}]}.
                                       
  parse_packet(<<"1|", Rest/binary>>) ->
      parse_packet(Rest, []);
  parse_packet(Packet) when is_binary(Packet) ->
  
negative.code:     
      end.
  
  -spec parse_metric(binary()) -> #shp_metric{}.
  
  parse_metric(Bin) ->
      try
          [Key, Value, Type | Rate] = binary:split(Bin, [<<":">>, <<"|">>],
  