docs: def read(self, data, offset=0):
          """ Read data structure and return (nested) named tuple(s). """
          if isinstance(data, Buffer):
              return data.read(self)
  
          try:
              args = list(self._struct.unpack_from(data, offset))
          except TypeError as error:
              # Working around struct.unpack_from issue #10212
              logger.debug("error: %s", error)
              args = list(self._struct.unpack_from(str(bytearray(data)), offset))
          args.reverse()
          return self.popValue(args)