interface A { int m(int x); } interface B { void m(boolean x); } abstract class Test { abstract void foo(A j); abstract void foo(B i); void bar(Object o) { foo(x -> { return x += 1; }); foo(x -> x += 1); foo(x -> 1); foo(x -> !x); foo(x -> ++x); foo(x -> o instanceof String ? 1 : 0); } }