interface I { int m(int i); } interface J { int m(); } public class XXX { static void foo() { int l = 0; int j = 0; j = 2; final int L = 0; I i = (int h) -> { int k = 0; return h + j + l + L; }; } void bar() { int l = 0; int j = 0; j = 2; final int L = 0; I i = (int h) -> { int k = 0; return h + k + j + l + L; }; } void foo(J i) { } void m1(int x) { int y = 1; foo(() -> x+y); } void m2(int x) { int y; y = 1; foo(() -> x+y); } void m3(int x, boolean cond) { int y; if (cond) y = 1; foo(() -> x+y); } void m4(int x, boolean cond) { int y; if (cond) y = 1; else y = 2; foo(() -> x+y); } void m5(int x, boolean cond) { int y; if (cond) y = 1; y = 2; foo(() -> x+y); } void m6(int x) { foo(() -> x+1); x++; } void m7(int x) { foo(() -> x=1); } void m8() { int y; foo(() -> y=1); } }