docs: def _tzsp_guess_next_tag(payload):
      """
      :return: class representing the next tag, Raw on error, None on missing payload  # noqa: E501
      """
  
      if not payload:
          warning('missing payload')
          return None
  
      tag_type = orb(payload[0])
  
      try:
          tag_class_definition = _TZSP_TAG_CLASSES[tag_type]
  
      except KeyError:
  
          return _tzsp_handle_unknown_tag(payload, tag_type)
  
      if type(tag_class_definition) is not dict:
          return tag_class_definition
  
      try:
          length = orb(payload[1])
      except IndexError:
          length = None
  
      if not length:
          warning('no tag length given - packet to short')
          return Raw
  
      try:
          return tag_class_definition[length]
      except KeyError:
          warning('invalid tag length {} for tag type {}'.format(length, tag_type))  # noqa: E501
          return Raw