private PredefinedObjectTypeSyntax ParsePatchType(SyntaxToken token)
{
var lessThan = Match(SyntaxKind.LessThanToken);
var userDefinedType = ParseIdentifier();
var comma = Match(SyntaxKind.CommaToken);
ExpressionSyntax controlPoints;
try
{
CommaIsSeparatorStack.Push(true);
_greaterThanTokenIsNotOperator = true;
controlPoints = ParseExpression();
}
finally
{
_greaterThanTokenIsNotOperator = false;
CommaIsSeparatorStack.Pop();
}
var greaterThan = Match(SyntaxKind.GreaterThanToken);
var typeArgumentList = new TemplateArgumentListSyntax(lessThan,
new SeparatedSyntaxList<ExpressionSyntax>(new List<SyntaxNode> { userDefinedType, comma, controlPoints }),
greaterThan);
return new PredefinedObjectTypeSyntax(token, typeArgumentList);
}