static S dollarVarsToStars_underscores(S s) { ret dollarVarsToStars_underscores(s, null); } static S dollarVarsToStars_underscores(S s, L varNames_out) { ret join(dollarVarsToStars_underscores(javaTok(s), varNames_out)); } static L dollarVarsToStars_underscores(L tok, L varNames_out) { for (int i = 1; i < l(tok); i += 2) { S t = tok.get(i); if (isDollarVar(t)) { listAdd(varNames_out, t); tok.set(i, joinWithSpace(rep("*", underscoreWordCount(t)))); } else if (eq(t, "*")) listAdd(varNames_out, "*"); } ret tok; }