svoid rewriteWithDollarVars(S input, S inputPattern, S... outPatterns) { SS map = flexMatchDollarVarsIC_first(inputPattern, input); if (map == null) ret; // group it emitUnlessEqualTo(input, replaceVars_optRound(inputPattern, map)); // rewrite it for (S pat : outPatterns) emit(replaceVars_optRound(pat, map)); }