docs: def from_bytes(rawbytes):
          '''
          Takes a byte string as a parameter and returns a list of
          IPOption objects.
          '''
          ipopts = IPOptionList()
  
          i = 0
          while i < len(rawbytes):
              opttype = rawbytes[i]
              optcopied = opttype >> 7         # high order 1 bit
              optclass = (opttype >> 5) & 0x03 # next 2 bits
              optnum = opttype & 0x1f          # low-order 5 bits are optnum
              optnum = IPOptionNumber(optnum)
              obj = IPOptionClasses[optnum]()
              eaten = obj.from_bytes(rawbytes[i:])
              i += eaten
              ipopts.append(obj)
          return ipopts