'Generate key-to-(start, stop) table of contents.'

def _generate_toc(self):

    (starts, stops) = ([], [])
    self._file.seek(0)
    next_pos = 0
    label_lists = []
    while True:
        line_pos = next_pos
        line = self._file.readline()
        next_pos = self._file.tell()
        if (line == ('\x1f\x0c' + os.linesep)):
            if (len(stops) < len(starts)):
                stops.append((line_pos - len(os.linesep)))
            starts.append(next_pos)
            labels = [label.strip() for label in self._file.readline()[1:].split(',') if (label.strip() != '')]
            label_lists.append(labels)
        elif ((line == '\x1f') or (line == ('\x1f' + os.linesep))):
            if (len(stops) < len(starts)):
                stops.append((line_pos - len(os.linesep)))
        elif (line == ''):
            stops.append((line_pos - len(os.linesep)))
            break
    self._toc = dict(enumerate(zip(starts, stops)))
    self._labels = dict(enumerate(label_lists))
    self._next_key = len(self._toc)
    self._file.seek(0, 2)
    self._file_length = self._file.tell()
