sS ai_expandPatternForAAndAn(S s) { LS tok = javaTok(s); if (!cicOneOf(tok, "a", "an") || contains(tok, "|")) null; // TODO: allow | L indices = indicesOfAnyIC(tok, "a", "an"); int n = l(indices); if (n == 0) null; new L out; for (L l : allCombinations(rep(n, ll("a", "an")))) { for i over l: tok.set(indices.get(i), l.get(i)); out.add(join(tok)); } ret join("|", out); }