/* complicated version - TODO */ // for (S key, S value : map) /*static void doubleFor(L tok) { int i; while ((i = jfind(tok, "for ( , :")) >= 0) { int iComma = indexOf(tok, ",", i); S valType = tok.get(iComma+2); S valName = tok.get(iComma+4); int expStart = indexOf(tok, ":", i)+2; int expEnd = findEndOfBracketPart(expStart-2); assertEquals(")", tok.get(expEnd)); assertEquals("{", tok.get(expEnd+2)); replaceTokens(tok, iComma, expStart, ": keys("); tok.set(expEnd, "))"); tok.set(expEnd+2, "{ " + valType + " " + valName + " = " + S type = tok.get(i+2), id = tok.get(i+4); int j = scanOverExpression(tok, bracketMap, i+8, "|"); S exp = join(tok.subList(i+8, j)); j += 2; int k = scanOverExpression(tok, bracketMap, j, "]"); S where = join(tok.subList(j, k)); ++k; S code = "filter(" + exp + ", func(" + type + " " + id + ") { " + where + " })"; replaceTokens(tok, i, k, code); reTok(tok, i, k); } }*/