final Map buckets = bucket(members, new Transformer() {
final Map buckets = CollectionUtils.bucket(members, new Transformer() {
    private void member_switch_helper(List members,                                      final ObjectSwitchCallback callback,                                      boolean useName,                                      final ParameterTyper typer) throws Exception {        final Map cache = new HashMap();        final ParameterTyper cached = new ParameterTyper() {            public Class[] getParameterTypes(Object member) {                Class[] types = (Class[])cache.get(member);                if (types == null) {                    cache.put(member, types = typer.getParameterTypes(member));                }                return types;            }        };        final Label def = make_label();        final Label end = make_label();        if (useName) {            swap();            final Map buckets = bucket(members, new Transformer() {                public Object transform(Object value) {                    return ((Member)value).getName();                }            });            String[] names = (String[])buckets.keySet().toArray(new String[buckets.size()]);            string_switch_hash(names, new ObjectSwitchCallback() {                public void processCase(Object key, Label dontUseEnd) throws Exception {                    member_helper_size((List)buckets.get(key), callback, cached, def, end);                }                public void processDefault() throws Exception {                    // pop deferred                    goTo(def);                }            });        } else {            member_helper_size(members, callback, cached, def, end);        }        mark(def);        pop();        callback.processDefault();        mark(end);    }