final Map buckets = bucket(strings, new Transformer() {
final Map buckets = CollectionUtils.bucket(strings, new Transformer() {
    private void stringSwitchHelper(List strings,                                    final ObjectSwitchCallback callback,                                    final Label def,                                    final Label end,                                    final int index) throws Exception {        final int len = ((String)strings.get(0)).length();        final Map buckets = bucket(strings, new Transformer() {            public Object transform(Object value) {                return new Integer(((String)value).charAt(index));            }        });        dup();        push(index);        invoke(MethodConstants.STRING_CHAR_AT);        process_switch(getSwitchKeys(buckets), new ProcessSwitchCallback() {                public void processCase(int key, Label ignore_end) throws Exception {                    List bucket = (List)buckets.get(new Integer(key));                    if (index + 1 == len) {                        pop();                        callback.processCase(bucket.get(0), end);                    } else {                        stringSwitchHelper(bucket, callback, def, end, index + 1);                    }                }                public void processDefault() {                    goTo(def);                }            });    }        