sbool match3_withIntsAndIDs(S pat, S s, Matches m default null) { LS tokPat = javaTokWithAllPlusAngleBrackets(pat); S pat2 = joinMap(tokPat, t -> eqOneOf(t, "", "") ? "*" : t); Matches m2 = m == null ? new Matches : m; ifdef match3_withIntsAndIDs_debug printVars_str match3_withInts(+pat2, +s); endifdef if (!match3(pat2, s, m2)) false; LS vars = filter(codeTokens(tokPat), t -> eqOneOf(t, "", "", "*")); for i over vars: { if (eq(vars.get(i), "") && !isInteger(m2.get(i)) || eq(vars.get(i), "") && !isIdentifier(m2.get(i))) false; } true; }