anchor.diff:  -include("vmq_parser_mqtt5.hrl").
   
   -spec parse(binary()) -> {mqtt5_frame(), binary()} |
  -                         {error, {reason_type, reason_type()}} |
  +                         {error, any()} |
                            more.
   parse(Data) ->
       parse(Data, ?MAX_PACKET_SIZE).
  
positive.code: ensure_binary(empty) -> empty. % for test purposes
  
  properties(undefined) ->
      <<0:16>>;
  properties([]) ->
      <<0:16>>.
  
  %%%%%%% packet generator functions (useful for testing)
  gen_connect(ClientId, Opts) ->
  
negative.code:                 {error, _} = E ->
                      E
              end;
          {error, _} -> {error, cant_parse_properties}
      end.
  
  -spec parse_properties(binary(), [mqtt5_property()])
      -> [mqtt5_property()] |
         {error, any()}.
  parse_properties(<<>>, Acc) ->
      lists:reverse(Acc);
  %% Note, the property ids are specified as a varint, but in MQTT5 all
  