def __extract_info(self, lines):
ret = {'<STR_LIT>': <NUM_LIT:0>,<EOL>'<STR_LIT>':  <NUM_LIT:0>,<EOL>'<STR_LIT>':     '<STR_LIT>'}<EOL>mode = <NUM_LIT:1><EOL>count = <NUM_LIT:0><EOL>for line in lines:<EOL><INDENT>if mode == <NUM_LIT:1>:<EOL><INDENT>if line.strip() == self.__annotation:<EOL><INDENT>ret['<STR_LIT>'] = count + <NUM_LIT:1><EOL>ret['<STR_LIT>'] = count + <NUM_LIT:1><EOL>parts = re.match(r'<STR_LIT>', line)<EOL>ret['<STR_LIT>'] = parts.group(<NUM_LIT:1>)<EOL>mode = <NUM_LIT:2><EOL><DEDENT><DEDENT>elif mode == <NUM_LIT:2>:<EOL><INDENT>if line.strip() == '<STR_LIT>' or line.strip()[<NUM_LIT:0>:<NUM_LIT:1>] == '<STR_LIT:#>':<EOL><INDENT>mode = <NUM_LIT:3><EOL><DEDENT>else:<EOL><INDENT>ret['<STR_LIT>'] = count + <NUM_LIT:1><EOL><DEDENT><DEDENT>else:<EOL><INDENT>break<EOL><DEDENT>count += <NUM_LIT:1><EOL><DEDENT>if mode != <NUM_LIT:3>:<EOL><INDENT>raise RuntimeError("<STR_LIT>".format(self.__annotation, self.source()))<EOL><DEDENT>return ret<EOL>
Extracts the following info from the source of the module with the class that acts like a namespace for
constants:
* Start line with constants
* Last line with constants
* Indent for constants

:param list[str] lines: The source of the module with the class that acts like a namespace for constants.

:rtype: dict<str,int|str>