def METHOD_NAME(self, line_iter):
    result = []
    section = None
    for lineno, line in enumerate(line_iter):
        name, data = self._parseline(line, lineno)
        # new value
        if name is not None and data is not None:
            result.append((lineno, section, name, data))
        # new section
        elif name is not None and data is None:
            if not name:
                self._raise(lineno, 'empty section name')
            section = name
            result.append((lineno, section, None, None))
        # continuation
        elif name is None and data is not None:
            if not result:
                self._raise(lineno, 'unexpected value continuation')
            last = result.pop()
            last_name, last_data = last[-2:]
            if last_name is None:
                self._raise(lineno, 'unexpected value continuation')
            if last_data:
                data = '%s\n%s' % (last_data, data)
            result.append(last[:-1] + (data,))
    return result