> package java.util; > public class IdentityHashMap<E extends IdentityObject> { ... } This one has an easy out: public class IdentityHashMap<E extends Object&IdentityObject> { ... } I was hoping your example would be type bounds, since they're easily amenable to this trick (either explicitly, or with compiler help.) Got more?