docs: def do_dissect_payload(self, s):
          """
          Perform the dissection of the layer's payload
  
          :param str s: the raw layer
          """
          if s:
              cls = self.guess_payload_class(s)
              try:
                  p = cls(s, _internal=1, _underlayer=self)
              except KeyboardInterrupt:
                  raise
              except Exception:
                  if conf.debug_dissector:
                      if issubtype(cls, Packet):
                          log_runtime.error("%s dissector failed" % cls.__name__)
                      else:
                          log_runtime.error("%s.guess_payload_class() returned [%s]" % (self.__class__.__name__, repr(cls)))  # noqa: E501
                      if cls is not None:
                          raise
                  p = conf.raw_layer(s, _internal=1, _underlayer=self)
              self.add_payload(p)