// f : func(S) -> S sS javaTokWithBrackets_recursiveTransform(fO f, S s) { ret join(mapCodeTokens(javaTokWithBrackets(s), func(S t) -> S { S t = (S) callF(f, t); if (!isCurlyBraced(t)) ret t; ret optCurly(javaTokWithBrackets_recursiveTransform(f, uncurly(t))); })); }