class Key<T> { T t; }

class WKey<W, T> extends Key<T> { W w; }

class Items {
    <T> void addItem(Key<T> key, T value) {}

    <T, W> void addItem(WKey<W, T> key, T value) {}
}

class IBug {
    public IBug() {
        Items items = new Items();

        WKey<Object, String> sk = new WKey<Object, String>();

        items.<caret>addItem(sk,  "");
    }
}