code: def decode(self, offset):
          
          new_offset = offset + 1
          (ctrl_byte,) = struct.unpack(b'!B', self._buffer[offset:new_offset])
          type_num = ctrl_byte >> 5
          # Extended type
          if not type_num:
              (type_num, new_offset) = self._read_extended(new_offset)
  
          (size, new_offset) = self._size_from_ctrl_byte(
              ctrl_byte, new_offset, type_num)
          return self._type_decoder[type_num](self, size, new_offset)
docs: Decode a section of the data section starting at offset
  
          Arguments:
          offset -- the location of the data structure to decode