import java.lang.String; interface I { B foo(A a); } class Foo { public Foo map(I mapper) { return new Foo(); } } class NoInferenceResult { I m(I f) { return null; } void m1(T t) { } void test() { m((String s1) -> (String s2) -> s1 + s2); m((String s1) -> {return (String s2) -> s1 + s2;}); m((String s1) -> s1.length()); m((String s1) -> s1); m1(() -> { }); Foo foo = new Foo(); foo.map(v -> null); Foo map1 = foo.map(value -> value + ", " + value); } }