code: def __parse(self) -> object:
          
          char = self.data[self.idx: self.idx + 1]
          if char in [b'1', b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9', b'0']:
              str_len = int(self.__read_to(b':'))
              return self.__read(str_len)
          elif char == b'i':
              self.idx += 1
              return int(self.__read_to(b'e'))
          elif char == b'd':
              return self.__parse_dict()
          elif char == b'l':
              return self.__parse_list()
          elif char == b'':
              raise bencodepy.DecodingError('Unexpected End of File at index position of {0}.'.format(str(self.idx)))
          else:
              raise bencodepy.DecodingError(
                  'Invalid token character ({0}) at position {1}.'.format(str(char), str(self.idx)))
docs: Selects the appropriate method to decode next bencode element and returns the result.