if(!tryConsume(DeeTokens.KW_IS))
return null;
ParseHelper parse = new ParseHelper();
Reference typeRef = null;
StaticIfExpIsDefUnit isExpDefUnit = null;
ExpIsSpecialization specKind = null;
Reference specTypeRef = null;
ArrayView<TemplateParameter> tplParams = null;
parsing: {
if(parse.consumeRequired(DeeTokens.OPEN_PARENS).ruleBroken) break parsing;
typeRef = parseTypeReference_ToMissing().node;
if(lookAhead() == DeeTokens.IDENTIFIER) {
ProtoDefSymbol defId = parseDefId();
isExpDefUnit = concludeNode(srOf(lastLexElement(), new StaticIfExpIsDefUnit(defId)));
}
if(tryConsume(DeeTokens.COLON)) {
specKind = ExpIsSpecialization.TYPE_SUBTYPE;
specTypeRef = parseTypeReference_ToMissing().node;