code: def read_table(self):
          
          # Only need to check underflow on the table once
          tlen = self.read_long()
          self._check_underflow(tlen)
          end_pos = self._pos + tlen
          result = {}
          while self._pos < end_pos:
              name = self._field_shortstr()
              result[name] = self._read_field()
          return result
docs: Read an AMQP table, and return as a Python dictionary.
  
          Will raise BufferUnderflow if there's not enough bytes in the buffer.
          Will raise UnicodeDecodeError if the text is mal-formed.
          Will raise struct.error if the data is malformed