private Expr createMatchMethodAndCallFor( String symbol, Expr outerLookahead, NodeList<Expr> args) { if (!symbolToMatchNames.contains(symbol)) { symbolToMatchNames.add(symbol); GProduction production = productions.get(symbol); GExpansion symbolExpansion = production.expansion; return createMatchMethodAndCallFor( symbol, matchMethodName(symbol), symbolExpansion, outerLookahead, production.hintParams, args, MEMOIZE_MATCHES && (MEMOIZE_ALL_MATCHES || production.memoizeMatches)); } else return matchMethodCall(matchMethodName(symbol), outerLookahead, args); }