SymbolicLookup implements Function<Symbolic, String> { public static <T extends Symbolic> ImmutableMap<String,T> map(T[] values) { return Maps.uniqueIndex(Arrays.asList(values), new SymbolicLookup()); }  String apply(Symbolic symbolic); static ImmutableMap<String,T> map(T[] values); static T resolve(String symbol,
            ImmutableMap<String, T> map, Class<T> clss);  }
@Test public void map() { for (TestSymbol t : TestSymbol.values()) { assertEquals(t, map.get(t.symbol())); } }