code: def from_bytes(self, raw):
          '''Return an Ethernet object reconstructed from raw bytes, or an
             Exception if we can't resurrect the packet.'''
          if len(raw) < UDP._MINLEN:
              raise NotEnoughDataError("Not enough bytes ({}) to reconstruct an UDP object".format(len(raw)))
          fields = struct.unpack(UDP._PACKFMT, raw[:UDP._MINLEN])
          self._src = fields[0]
          self._dst = fields[1]
          self._len = fields[2]
          self._checksum = fields[3]
          return raw[UDP._MINLEN:f from_bytes(self, raw):
          '''Return an Ethernet object reconstructed from raw bytes, or an
             Exception if we can't resurrect the packet.'''
          if len(raw) < UDP._MINLEN:
              raise NotEnoughDataError("Not enough bytes ({}) to reconstruct an UDP object".format(len(raw)))
          fields = struct.unpack(UDP._PACKFMT, raw[:UDP._MINLEN])
          self._src = fields[0]
          self._dst = fields[1]
          self._len = fields[2]
          self._checksum = fields[3]
          return raw[UDP._MINLEN:]
docs: Return an Ethernet object reconstructed from raw bytes, or an
             Exception if we can't resurrect the packet.