srecord noeq Tok_SimpleSizeAnalysis(LS tok) { new LS lines; S get() { scan(tok, 1); ret lines(sortedDesc(lines)); } void scan(LS tok, int level) { for (IntRange r : tok_allCurlyBodies(tok)) { int iLineStart = tok_beginningOfLine(tok, r.start); int tokens = countTokens(r); lines.add(lpad(14, nTokens(tokens)) + " (level " + level + "): " + shorten(trimJoinSubList(tok, iLineStart, r.start-1))); scan(tokSubList(tok, intRange(r.start+2, r.end)), level+1); } } }