class Neg03 { class Foo { Foo(V x) {} Foo(V x, Z z) {} } void testSimple() { Foo<String> f1 = new Foo<>(""); Foo<? extends String> f2 = new Foo<>(""); Foo f3 = new Foo<>(""); Foo<? super String> f4 = new Foo<>(""); Foo<String> f5 = new Foo<>("", ""); Foo<? extends String> f6 = new Foo<>("", ""); Foo f7 = new Foo<>("", ""); Foo<? super String> f8 = new Foo<>("", ""); } void testQualified_1() { Foo<String> f1 = new Neg03.Foo<>(""); Foo<? extends String> f2 = new Neg03.Foo<>(""); Foo f3 = new Neg03.Foo<>(""); Foo<? super String> f4 = new Neg03.Foo<>(""); Foo<String> f5 = new Neg03.Foo<>("", ""); Foo<? extends String> f6 = new Neg03.Foo<>("", ""); Foo f7 = new Neg03.Foo<>("", ""); Foo<? super String> f8 = new Neg03.Foo<>("", ""); } void testQualified_2(Neg03 n) { Foo<String> f1 = n.new Foo<>(""); Foo<? extends String> f2 = n.new Foo<>(""); Foo f3 = n.new Foo<>(""); Foo<? super String> f4 = n.new Foo<>(""); Foo<String> f5 = n.new Foo<>("", ""); Foo<? extends String> f6 = n.new Foo<>("", ""); Foo f7 = n.new Foo<>("", ""); Foo<? super String> f8 = n.new Foo<>("", ""); } }