static SS matchDollarVarsIC(S pat, S s) { if (s == null) null; ret matchDollarVarsIC(pat, parse3_cachedInput(s)); } static SS matchDollarVarsIC(S pat, LS tokS) { if (pat == null || tokS == null) null; new L vars; S pat2 = dollarVarsToStars(pat, vars); new Matches m; if (!match3(pat2, tokS, m)) null; new SS map; for (int i = 0; i < l(m.m); i++) { S var = vars.get(i); S value = m.get(i); S oldValue = map.get(var); if (oldValue == null) map.put(var, value); else if (neqic(oldValue, value)) null; } ret map; }