private void ParseArgumentList(SyntaxKind openKind, SyntaxKind closeKind, bool atLeastOneArg, out SyntaxToken openToken, out SeparatedSyntaxList<ExpressionSyntax> arguments, out SyntaxToken closeToken)
{
openToken = Match(openKind);
var args = new List<SyntaxNode>();
if (atLeastOneArg || Current.Kind != closeKind)
{
CommaIsSeparatorStack.Push(true);
try
{
args.Add(ParseExpression());
while (Current.Kind == SyntaxKind.CommaToken)
{
args.Add(Match(SyntaxKind.CommaToken));
args.Add(ParseExpression());
}
}
finally
{
CommaIsSeparatorStack.Pop();
}
}
arguments = new SeparatedSyntaxList<ExpressionSyntax>(args);
closeToken = Match(closeKind);
}