static ItIt rewriteWithDollarVars_withBrackets_iterator(S input, S inputPattern, S... outPatterns) { ret mapI(flexMatchDollarVarsIC_withBrackets_iterator(inputPattern, input), map -> getEmits(r { // group it S grouped = replaceVars_optRound(inputPattern, map); if (neq(grouped, input)) emit(ext grouped(input)); // rewrite it for (S pat : outPatterns) emit(replaceVars_optRound(pat, map)); })); }