public static Key<String> keyOf(String key) { return Key.get(String.class, Names.named(key)); }
public <T> T typeSafeGet(Class<T> cls, String string) { return typeSafeGet(Key.get(cls, Names.named(string))); }
public <T> T getAttribute(TypeToken<T> type, String annotation) { return getAttribute(Key.get(type, Names.named(annotation))); }
public <T> void add(Class<T> cls, T value) { add(new Attribute<T>(Key.get(cls), value)); }
public <T> T getAttribute(TypeToken<T> type, Annotation annotation) { return getAttribute(Key.get(type, annotation)); }
public <T> void addAttribute(TypeToken<T> key, T val) { addAttribute(Key.get(key), val); }
public <T> void addAttribute(Class<T> key, T val) { addAttribute(Key.get(key), val); }
public <T> T getAttribute(TypeToken<T> type) { return getAttribute(Key.get(type)); }
public <T> T getAttribute(Class<T> cls, Annotation annotation) { return getAttribute(Key.get(cls, annotation)); }
public <T> void addAttribute(Class<T> key, String annotation, T val) { addAttribute(Key.get(key, Names.named(annotation)), val); }
public <T> void addAttribute(TypeToken<T> key, Annotation annotation, T val) { addAttribute(Key.get(key, annotation), val); }
public <T> T typeSafeGet(Class<T> cls) { return typeSafeGet(Key.get(cls)); }
public <T> T getAttribute(Class<T> cls, String annotation) { return getAttribute(Key.get(cls, Names.named(annotation))); }
public <T> void addAttribute(Class<T> key, Annotation annotation, T val) { addAttribute(Key.get(key, annotation), val); }
public <T> void addAttribute(TypeToken<T> key, String annotation, T val) { addAttribute(Key.get(key, Names.named(annotation)), val); }
public <T> void add(Class<T> cls, String string, T value) { add(new Attribute<T>(Key.get(cls, Names.named(string)), value)); }
public <T> T getAttribute(Class<T> cls) { return getAttribute(Key.get(cls)); }