code: def do_build(self):
          
          if not self.explicit:
              self = next(iter(self))
          pkt = self.self_build()
          for t in self.post_transforms:
              pkt = t(pkt)
          pay = self.do_build_payload()
          if self.raw_packet_cache is None:
              return self.post_build(pkt, pay)
          else:
              return pkt + pay
docs: Create the default version of the layer
  
          :return: a string of the packet with the payload