interface I { void m(int x); } class Test { void foo(Object x) {} void bar() { foo(!(int x)-> {}); foo((int x)-> { } instanceof Object ); } I bazz() { foo((I)(int x)-> { }); I o = (I)(int x)-> { }; return (int x) -> {}; } } interface II { boolean m(String s); } class Test1 { void bar(boolean b){ II ik = b ? (s)-> true : (s)->false; II ik1 = (II)((b ? (s)-> true : (s)->false)); II ik2 = (II)(ik1 = (b ? (s)-> true : (s)->false)); (b ? (s) -> true : ik).m(""); } } class Test2 { void f() { final Runnable one=true ? null : true ? () -> {} : () -> {}; } }