import java.util.List; import java.util.function.Function; abstract class Sample { abstract T id (T t); abstract void foo(List c); abstract List bar(Function m); { foo(bar(this::id)); foo(bar(id(i -> i))); Function s = id(this::id); } }