static bool endsWithIgnoreCase(S a, S b) { ret l(a) >= l(b) && regionMatchesIC(l(a)-l(b), b, 0, l(b)); } static bool endsWithIgnoreCase(S a, S b, Matches m) { if (!endsWithIgnoreCase(a, b)) false; m.m = new S[] { substring(a, 0, l(a)-l(b)) }; true; }