'Yield the 0-based lines given the *character* positions.'

def lines_from_char_positions(self, starts):

    line_starts = [p[1] for p in self.__position_data]
    for char_pos in starts:
        (yield (bisect.bisect_left(line_starts, (char_pos + 1)) - 1))
