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