import java.util.List; class Test { interface I { T foo(); } static class Foo { static Foo foo() { return null; } } > List meth(I p) { return null; } void test() { List l1 = meth(Foo::new); List l2 = meth(Foo::foo); List l3 = meth(Foo::new); List l4 = meth(Foo::foo); } }