import java.io.IOException; import java.util.List; class Test { interface A { T m(T t); } interface B { List l(K k) throws IOException; } F foo(A a) { return null; } R bar(B b) { return null; } List baz(Z l) throws IOException{ return null; } { Integer i = foo(a -> bar(b -> baz(b))); } }