anchor.diff:      ParseValue :: decode_fun(),
       piqirun_buffer() ) -> [ any() ].
   
  --spec parse_packed_list/2 :: (
  -    ParseValue :: packed_decode_fun(),
  +-spec parse_packed_list/3 :: (
  +    ParsePackedValue :: packed_decode_fun(),
  +    ParseValue :: decode_fun(),
       piqirun_buffer() ) -> [ any() ].
   
   
  
positive.code:     ParseValue :: decode_fun(),
      L :: [parsed_field()] ) -> { Res :: [any()], Rest :: [parsed_field()] }.
  
  -spec parse_packed_repeated_field/3 :: (
      Code :: pos_integer(),
      ParseValue :: packed_decode_fun(),
      L :: [parsed_field()] ) -> { Res :: [any()], Rest :: [parsed_field()] }.
  
  -spec parse_flag/2 :: (
  
negative.code:     {Res, Rest}.
  
  
  parse_packed_repeated_field(Code, ParsePackedValue, ParseValue, L) ->
      {Fields, Rest} = find_fields(Code, L),
      Res = [ parse_packed_field(ParsePackedValue, ParseValue, X) || X <- Fields ],
      {lists:append(Res), Rest}.
  
  
  parse_packed_field(ParsePackedValue, _ParseValue, {'block', Bytes}) ->
      parse_packed_values(ParsePackedValue, Bytes, _Accu = []);
  % sometimes packed repeated feilds come in as unpacked; we need to support this
  % mode -- Google's Protobuf implementation behaves this way
  parse_packed_field(_ParsePackedValue, ParseValue, X) ->
      [ParseValue(X)].
  
  
  parse_packed_values(_ParseValue, <<>>, Accu) ->
  