class TypeVars { class Test1<T> { void m() { @SuppressWarnings("unchecked") T x = (T) new Object(); Object o = x; } class Inner1<X extends T> {} public Inner1<T> method1() { return new Inner1<T>(); } } // It's difficult to add more test cases that // should work for all type systems. // Ensure that for the different type systems, annotations // on the type variable are propagated correctly. }