import java.util.*;
interface TypesafeMap {
@SuppressWarnings({"UnusedDeclaration"})
public interface Key { }
public >
boolean has(Class key);
public >
VALUE get(Class key);
public >
VALUE set(Class key, VALUE value);
public >
VALUE remove(Class key);
public Set> keySet();
public >
boolean containsKey(Class key);
}
interface CoreMap extends TypesafeMap { }
interface CoreAnnotation
extends TypesafeMap.Key {
public Class getType();
}
class CoreMaps {
public static Map toMap(Collection coremaps,
Class> keyKey, Class> valueKey) {
Map map = new HashMap();
for (CoreMap cm : coremaps) {
map.put(cm.get(keyKey), cm.get(valueKey));
}
return map;
}
}