import java.util.Collection;
import java.util.Set;

class FooObject<T> {}
class FooId<T extends FooObject> {}

interface Bar {
    <T extends FooObject, I extends FooId<? extends T>> T get(I key);
    <T extends FooObject, I extends FooId<? extends T>> Collection<T> get(Collection<I> keys);
}

class Target {
    void foo(Bar bar) {
        final Set<FooId<?>> keys = null;
        final Collection<FooObject> values = bar.get(keys);
    }
}
