'Parses at least until the given line, but might just parse more until a
valid state is reached.'

def _parse(self, until_line):

    last_until_line = 0
    while (until_line > self._nodes_stack.parsed_until_line):
        node = self._try_parse_part(until_line)
        nodes = self._get_children_nodes(node)
        self._nodes_stack.add_parsed_nodes(nodes)
        debug.dbg('parse    part    %s    to    %s    (to    %s    in    parser)', nodes[0].get_start_pos_of_prefix()[0], self._nodes_stack.parsed_until_line, (node.end_pos[0] - 1))
        assert (last_until_line != self._nodes_stack.parsed_until_line), last_until_line
        last_until_line = self._nodes_stack.parsed_until_line
