anchor.diff:                      decode(Skipped, Types, Acc)
               end
       end.
  +
  +reverse_repeated_fields(FieldList, Types) ->
  +    [ begin
  +          case lists:keyfind(FNum, 1, Types) of
  +              {FNum, Name, _Type, Opts} ->
  +                  case lists:member(repeated, Opts) of
  +                      true ->
  +                          {FNum, Name, lists:reverse(Value)};
  +                      _ ->
  +                          Field
  +                  end;
  +              _ -> Field
  +          end
  +      end || {FNum, Name, Value}=Field <- FieldList ].
   
   unpack_value(Binary, string) when is_binary(Binary) ->
       binary_to_list(Binary);
  
positive.code:                 true ->
                      case lists:keytake(FNum, 1, Acc) of
                          {value, {FNum, Name, List}, Acc1} ->
                              decode(Rest1, Types, [{FNum, Name, lists:reverse([int_to_enum(Type,Value1)|lists:reverse(List)])}|Acc1]);
                          false ->
                              decode(Rest1, Types, [{FNum, Name, [int_to_enum(Type,Value1)]}|Acc])
                      end;
                  false ->
  		                decode(Rest1, Types, [{FNum, Name, int_to_enum(Type,Value1)}|Acc])
              end;
          false ->
              case lists:keyfind('$extensions', 2, Acc) of
  
negative.code:     Decoded = decode(Bytes, Types, Defaults),
      to_record(pikachu, Decoded).
  
  decode(<<>>, Types, Acc) -> reverse_repeated_fields(Acc, Types);
  decode(Bytes, Types, Acc) ->
      {ok, FNum} = protobuffs:next_field_num(Bytes),
      case lists:keyfind(FNum, 1, Types) of
  