anchor.diff:                                  ?M5_SHARED_SUBS_NOT_SUPPORTED |
                                   ?M5_SUBSCRIPTION_IDS_NOT_SUPPORTED |
                                   ?M5_WILDCARD_SUBS_NOT_SUPPORTED],
  -          properties=#{}     :: map()
  +          properties=#{}     :: mqtt5_properties()
            }).
   -type mqtt5_suback()        :: #mqtt5_suback{}.
   
   -record(mqtt5_unsubscribe, {
             message_id        :: msg_id(),
             topics=[]         :: [topic()],
  -          properties=#{}    :: map()
  +          properties=#{}    :: mqtt5_properties()
            }).
   -type mqtt5_unsubscribe()   :: #mqtt5_unsubscribe{}.
   
  
positive.code:           keep_alive        :: non_neg_integer(),
            client_id         :: client_id(),
            lwt               :: mqtt5_lwt() | undefined,
            properties=#{}    :: map()
           }).
  -type mqtt5_connect()        :: #mqtt5_connect{}.
  
  
negative.code: -record(mqtt5_subscribe, {
            message_id        :: msg_id(),
            topics=[]         :: [mqtt5_subscribe_topic()],
            properties=#{}     :: mqtt5_properties()
           }).
  -type mqtt5_subscribe()     :: #mqtt5_subscribe{}.
  
  