docs: 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