<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _parse_newline_list(self, indent):
 """Parse a newline seperated list."""

        if self._cur_token['type'] not in self._literals:
            raise Exception(
                "Parser failed, _parse_newline_list was called on non-literal"
                " {} on line {}.".format(
                    repr(self._cur_token['value']), self._cur_token['line']
                )
            )

        array = []
        new_indent = indent
        while not self._finished:
            if new_indent < indent:
                break
            elif new_indent == indent:
                while self._cur_token['type'] is TT.lbreak:
                    self._skip_newlines()
                    self._skip_whitespace()
                # look ahead to see if it's a comma seperated list
                temp_position = self._cur_position
                while (
                    temp_position < self.num_tokens-1 and
                    (
                        self.tokens[temp_position]['type'] is TT.ws or
                        self.tokens[temp_position]['type'] in self._literals
                    )
                ):
                    temp_position += 1

                if self.tokens[temp_position]['type'] is TT.comma:
                    array.append(self._parse_comma_list())
                else:
                    if self._cur_token['type'] is not TT.hyphen:
                        array.append(self._cur_token['value'])
                    elif self._nth_token()['type'] is TT.hyphen:
                        # two consecutive '-'s
                        array.append([])
                        self._increment()
                    self._increment()
            else:  # new_indent > indent
                while self._cur_token['type'] is TT.lbreak:
                    self._skip_newlines()
                    self._skip_whitespace()
                array.append(self._parse_newline_list(new_indent))

            self._skip_whitespace()
            if (
                not self._finished and
                self._cur_token['type'] not in (TT.lbreak, TT.hyphen)
            ):
                raise ParseError('newline', self._cur_token)

            temp_position = self._cur_position
            new_indent = 0
            while (
                temp_position < self.num_tokens-1 and
                self.tokens[temp_position]['type'] in (TT.lbreak, TT.ws)
            ):
                if self.tokens[temp_position]['type'] is TT.lbreak:
                    new_indent = 0
                else:
                    new_indent += 1
                temp_position += 1

        return array