import java.lang.Integer; interface I { void m(int i); } interface A { void foo(B b); } class Foo { I ii = (final k)->{}; I ii1 = (k)->{ int i = k; String s = k; }; A a = (ab) -> { String s = ab; int i = ab; }; { A a1; a1 = (ab)->{ String s = ab; int i = ab; }; } A bazz() { bar((o) -> { String s = o; int i = o; }); return (i) -> { Integer k = i; int n = i; String s = i; }; } void bar(A a){} } class CastInference { public interface I1 { X m(); } public interface I2 { X m(); } public static void foo(I1 s) {} public static void foo(I2 s) {} public static void main(String[] args) { foo((I1)() -> 42); I1 i1 = (I1)() -> 42; } } class WildcardBoundsUsage { interface I { boolean foo(X x); } public I bar(I predicate) { return null; } { I i = bar(c -> c.compareTo('x') < 0); } }