import java.util.ArrayList; import java.util.List; class Test { List queue = new ArrayList<>(); } class DD { P1> l = new L() { @Override void f() { } }; P1> l1 = new L<>(); P1> foo() { return new L<>(); } String s = ""; } class L extends P1> { void f() { } } class P1 extends P { } class P { } class Test1 { void bar() { foo(new FF<>()); } void foo(F> p) {} } class FF extends F{} class F {}