class MyTest { class A { } //not an error in java 8?! static class CA> { } static A> void bar() { } static class B { { B.<A>bar(); A a; } static A> void bar() { } void v(C<A> c) { } } } class MyTest1 { class A { } static class C> { } static > void bar() { } static class B { { B.bar(); A a = new A(); } static > void bar() { } void v(C> c) { } } } class MyTest2 { static class A { private MyTest2 myTest; public Object foo() { return myTest.new Bar(); } } class Bar {} }