code: def parse_argument_list(self):
          
          # Try to parse a subexpression in a subparser.
          expressions = []
  
          while self.pos < len(self.string):
              subparser = Parser(self.string[self.pos:], in_argument=True)
              subparser.parse_expression()
  
              # Extract and advance past the parsed expression.
              expressions.append(Expression(subparser.parts))
              self.pos += subparser.pos
  
              if self.pos >= len(self.string) or \
                 self.string[self.pos] == GROUP_CLOSE:
                  # Argument list terminated by EOF or closing brace.
                  break
  
              # Only other way to terminate an expression is with ,.
              # Continue to the next argument.
              assert self.string[self.pos] == ARG_SEP
              self.pos += 1
  
          return expressions
docs: Parse a list of arguments starting at ``pos``, returning a
          list of Expression objects. Does not modify ``parts``. Should
          leave ``pos`` pointing to a } character or the end of the
          string.