import java.util.List; import java.util.function.Function; abstract class Main2 { void address(Foo sa) { String ds = foobar(foobar(sa, Foo::getBar), Bar ::getName); Function f = null; String ds1 = foobar(foobar(sa, f), null); } abstract V foobar(T t, Function mapper); class Foo { Bar getBar() { return new Bar(); } } class Bar { String getName(){ return null; } } } class Main0 { List foo(T t){ return null; } { foo(foo("")); } } class Main { static T foo(T t) { return null; } static { long l1 = foo(foo(1)); Integer i = 1; long l2 = foo(foo(i)); } } class Main1 { static T foo(long t) { return null;} static B bar(B t) { return null;} static { //long l = foo(bar(1)); } }