class C<T extends Runnable&<error descr="Interface expected here">Exception</error>,U> { } class Stuff<X extends Stuff & Runnable> { <T, V extends T & <error descr="Type parameter cannot be followed by other bounds">Runnable</error>> T method(V v) { return null; } <T extends X & <error descr="Type parameter cannot be followed by other bounds">Runnable</error> & <error descr="Type parameter cannot be followed by other bounds">Comparable</error>> void f(T t) { } <T extends Stuff & Runnable & Comparable> void f2(T t) { } <T extends Runnable & Comparable> void f3(T t) { } } //////////////// class TypeParameters { class X {} static <T extends X> void f(Class<T> t){} static { f(X.class); } } class Typr { <T extends TypeParameters.X> void f() {} }