!7 static bool tok_isSingleTypeArg(L tok, int iOpeningBracket) { int iClosingBracket = findEndOfTypeArgs(tok, iOpeningBracket)-1; print("iClosingBracket: " + sfu(subList(tok, iClosingBracket))); if (iClosingBracket == iOpeningBracket+4) true; if (eq(get(tok, iOpeningBracket+4), "<")) { int j = findEndOfTypeArgs(tok, iOpeningBracket+4); ret j == iClosingBracket-1; } false; // hmm } svoid tok_typeAA(L tok, Set pairClasses) { int n = l(tok)-6; bool change = false; for (int i = 1; i < l(tok); i += 2) { if (!(eq(get(tok, i+2), "<") && contains(pairClasses, tok.get(i)))) continue; if (tok_isSingleTypeArg(tok, i+2)) { int j = findEndOfTypeArgs(tok, i+2)-1; S type = joinSubList(tok, i+4, j); replaceTokens_reTok(tok, i+4, j, type + ", " + type); change = true; } } } p-exp { L tok = javaTok("Pair p;"); tok_typeAA(tok, lithashset("Pair")); print(join(tok)); }