class Key { T t; } class WKey extends Key { W w; } class Items { void addItem(Key key, T value) {} void addItem(WKey key, T value) {} } class IBug { public IBug() { Items items = new Items(); WKey sk = new WKey(); items.addItem(sk, ""); } }