class Fails<T extends AbstractA<C>, C extends AbstractB<T>> { 
    private void fail(AbstractX<T, C> owner) { 
        if (owner instanceof X) { 
        } 
    } 
} 

abstract class AbstractA<T extends AbstractB> { } 
class A extends AbstractA<B> { } 

abstract class AbstractB<T extends AbstractA> { } 
class B extends AbstractB<A> { } 

abstract class AbstractX<I extends AbstractA, T extends AbstractB> { } 
class X extends AbstractX<A, B> { } 