// returns L static L recursiveJavaTok(S s) { L tok = cloneList(javaTokWithBrackets(s)); for (int i = 1; i < l(tok); i += 2) { S t = cast tok.get(i); if (startsWithOneOf(t, "(", "{")) { L sub = recursiveJavaTok(dropFirstAndLast(t)); // add brackets to inner N tokens sub.set(0, first(sub) + takeFirst(1, t)); sub.set(l(sub)-1, takeLast(1, t) + last(sub)); tok.set(i, sub); } } ret tok; }