sS arbitraryVarsToStars(S s, Set vars, LS varNames_out) { if (empty(vars)) ret s; LS tok = javaTok(s); LS tok2 = arbitraryVarsToStars(tok, vars, varNames_out); ret tok == tok2 ? s : join(tok2); } static LS arbitraryVarsToStars(LS tok, Set vars, LS varNames_out) { if (empty(vars)) ret tok; LS tok2 = null; int n = l(tok); for i to n: { S t = tok.get(i); if (odd(i) && vars.contains(t)) { listAdd(varNames_out, t); if (tok2 == null) tok2 = cloneSubList(tok, 0, i); tok2.add("*"); } else if (tok2 != null) tok2.add(t); } ret tok2 != null ? tok2 : tok; }