import java.util.List; import java.util.function.Function; class MyTest { private void test(MyTest> listMono) { expand(id -> listMono.flatMap(l -> { if (l.size() == 0) { return null; } else { return MyTest.empty(); } })); } void expand(Function, ? extends MyTest>> expander) { } public final MyTest flatMap(Function, ? extends MyTest> transformer) { return null; } public static MyTest empty() { return null; } }