code: def guess_payload_class(self, payload):
          
  
          under_layer = self.underlayer
          tzsp_header = None
  
          while under_layer:
              if isinstance(under_layer, TZSP):
                  tzsp_header = under_layer
                  break
              under_layer = under_layer.underlayer
  
          if tzsp_header:
  
              return tzsp_header.get_encapsulated_payload_class()
          else:
              raise TZSPStructureException('missing parent TZSP header')
docs: the type of the payload encapsulation is given be the outer TZSP layers attribute encapsulation_protocol  # noqa: E501