interface Interf<X extends Interf> {} class SomeClass { static <I extends Interf<? super I>> Class<I> someMethod(I i) { return null; } } interface OtherInterf<I1 extends Interf, I2 extends Interf> {} interface ImmutableSet<S> {} class SomeOtherClass { static ImmutableSet<Class<? extends OtherInterf<?, ?>>> someOtherMethod() { return <error descr="Inconvertible types; cannot cast 'ImmutableSet<java.lang.Class<? extends OtherInterf>>' to 'ImmutableSet<java.lang.Class<? extends OtherInterf<?,?>>>'">(ImmutableSet<Class<? extends OtherInterf<?, ?>>>)aux(OtherInterf.class)</error>; } static <T> ImmutableSet<Class<? extends T>> aux(Class<T> t) { return null; } }