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; int v = 0; for (int i = 0; i < l(m.m); ) { S var = vars.get(v++); bool quoted = startsWith(var, "$_q_"); S value = joinWithSpace(subStringArray(m.m, i, i+n)); if (quoted) { if (!isQuoted(value)) null; var = "$" + substring(var, 4); } int n = underscoreWordCount(var); if (!strictPutIC(map, var, value)) null; i += n; } ret map; }