final Map buckets = bucket(Arrays.asList(strings), new Indexer() { public int index(Object value) { return ((String)value).length();
final Map buckets = bucket(Arrays.asList(strings), new Transformer() { public Object transform(Object value) { return new Integer(((String)value).length());
    private void string_switch_trie(String[] strings, final StringSwitchCallback callback) throws Exception {        final Label def = make_label();        final Label end = make_label();        final Map buckets = bucket(Arrays.asList(strings), new Indexer() {            public int index(Object value) {                return ((String)value).length();            }        });        dup();        invoke(MethodConstants.STRING_LENGTH);        process_switch(getSwitchKeys(buckets), new ProcessSwitchCallback() {                public void processCase(int key, Label ignore_end) throws Exception {                    List bucket = (List)buckets.get(new Integer(key));                    stringSwitchHelper(bucket, callback, def, end, 0);                }                public void processDefault() {                    goTo(def);                }            });        mark(def);        pop();        callback.processDefault();        mark(end);    }