static SS matchDollarVarsIC_underscores(S pat, S s) { if (pat == null || s == null) null; new L vars; S pat2 = dollarVarsToStars_underscores(pat, vars); new Matches m; if (!match(pat2, s, m)) null; new SS map; for (int i = 0; i < l(m.m); ) { S var = vars.get(i); int n = underscoreWordCount(var); S value = joinWithSpace(subStringArray(m.m, i, i+n)); if (!strictPutIC(map, var, value)) null; i += n; } ret map; }