anchor.diff:              P = #p_payload_format_indicator{value = utf8},
               parse_properties(Rest, [P|Acc]);
           _ ->
  -            {error, {reason_code, ?MALFORMED_PACKET}}
  +            {error, cant_parse_properties}
       end;
   parse_properties(<<?M5P_MESSAGE_EXPIRY_INTERVAL:8, Val:32/big, Rest/binary>>, Acc) ->
       P = #p_message_expiry_interval{value = Val},
  
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:              (default(KeepAlive, 0)):16/big-unsigned-integer>>,
             properties(Properties),
             utf8(ClientId),
             properties(WillProperties),
             utf8(vmq_topic:unword(WillTopic)),
             utf8(WillMsg),
             utf8(UserName),
  