docs: def unpack_varint(self, max_bytes):
          """Decode variable integer using algorithm similar to that described
          in MQTT Version 3.1.1 line 297.
  
          Parameters
          ----------
          max_bytes: int or None
              If a varint cannot be constructed using `max_bytes` or fewer
              from f then raises a `DecodeError`.  If None then there is no
              maximum number of bytes.
  
          Raises
          -------
          DecodeError
              When length is greater than max_bytes.
          UnderflowDecodeError
              When file ends before enough bytes can be read to construct the
              varint.
  
          Returns
          -------
          int
              Number of bytes consumed.
          int
              Value extracted from `f`.
  
          """
          num_bytes_consumed, value = decode_varint(self.__f, max_bytes)
          self.__num_bytes_consumed += num_bytes_consumed
          return num_bytes_consumed, value