static L matchX_any_firstAndSecondGroups(S pat, Iterable l) { new Matches m; new L out; for (S s : unnull(l)) if (matchX(pat, s, m)) out.add(pair($1, $2)); ret out; }