static Set mapLike tok_allGroups_recursive(O tokenizer, S s) { new Set set; tok_allGroups_recursive_collect(tokenizer, s, set); ret set; } svoid tok_allGroups_recursive_collect(O tokenizer, S s, Set set) { if (empty(s)) ret; LS tok = cast callF(tokenizer, s); for ping (int i = 1; i < l(tok); i += 2) { S t = tok.get(i); if (isCurlyBraced(t)) { t = unCurly(t); set.add(t); tok_allGroups_recursive_collect(tokenizer, t, set); } } }