svoid tok_for_unpair(LS tok) { int i = -1; while ((i = jfind(tok, i+1, "for ( , : unpair ")) >= 0) { S type1 = tok.get(i+4), type2 = tok.get(i+10); int iUnpair = indexOf(tok, "unpair", i); int iClosing = findEndOfBracketPart(tok, iUnpair)-1; if (!eqGet(tok, iClosing+2, "{")) fail("Use { with for unpair"); S pairVar = makeVar(); replaceTokens(tok, i+4, iUnpair+1, "Pair<" + type1 + ", " + type2 + "> " + pairVar + ":"); tok.set(iClosing+2, "{ " + type1 + " " + tok.get(i+6) + " = pairA(" + pairVar + "); " + type2 + " " + tok.get(i+12) + " = pairB(" + pairVar + "); "); reTok(tok, i, iClosing+3); } }