class SymbolicLookup implements Function<Symbolic, String> {

    public static <T extends Symbolic> T resolve(String symbol,
            ImmutableMap<String, T> map, Class<T> clss) {
        T symbolic = map.get(symbol);
        if (symbolic == null) {
            throw new IllegalArgumentException(symbol + " is not a valid "
                    + clss.getSimpleName() + " symbol");
        }
        return symbolic;
    }

}