if(tryConsume(DeeTokens.OPEN_PARENS)) {
tplArgs = parseTypeOrExpArgumentList(parse, DeeTokens.COMMA, DeeTokens.CLOSE_PARENS);
} else {
if(leftRef instanceof RefTemplateInstance) {
RefTemplateInstance refTplInstance = (RefTemplateInstance) leftRef;
if(refTplInstance.isSingleArgSyntax()) {
parse.storeError(createError(ParserErrorTypes.NO_CHAINED_TPL_SINGLE_ARG,
refTplInstance.getSourceRange(), null));
}
}
if(lookAhead().getGroupingToken() == DeeTokens.GROUP_PRIMITIVE_KW) {
singleArg = parseRefPrimitive_start(lookAhead());
} else if(lookAhead() == DeeTokens.IDENTIFIER) {
singleArg = parseRefIdentifier();
} else {
singleArg = nullExpToParseMissing(parseSimpleLiteral(), RULE_TPL_SINGLE_ARG);
}
}
leftRef = parse.conclude(new RefTemplateInstance(tplRef, singleArg, tplArgs));
} else if(refRestrictions.templateOnly()) {
return result(false, leftRef);
} else if(lookAhead() == DeeTokens.DOT && leftRef instanceof IQualifierNode) {
if(lookAhead(1) == DeeTokens.KW_NEW && refRestrictions == RefParseRestrictions.EXP_ONLY) {