import java.io.Serializable; class Test { interface I { void foo(); } interface A { void bar(int i); } { Object o1 = (Serializable & I) () -> {}; Object o2 = (I & Serializable) () -> {}; Object o3 = (I & Runnable) <error descr="Multiple non-overriding abstract methods found in I & Runnable">() -> {}</error>; Object o4 = (A & Runnable) <error descr="Multiple non-overriding abstract methods found in A & Runnable">() -> {}</error>; Object o5 = (Runnable & A) <error descr="Multiple non-overriding abstract methods found in Runnable & A">() -> {}</error>; } } class Test1 { interface A { <X> void foo(); } interface B { void foo(); } { Object c0 = (A & B) ()->{}; } }