interface I { void m(int x); } class InContexts { void m(I s) { } void assignment() { I s1 = (x-> { System.out.println(); }); I s2 = ((x-> { System.out.println(); })); } void method() { m((x-> { System.out.println(); })); m(((x-> { System.out.println(); }))); } I returnContext() { return (x -> {System.out.println();}); } } interface I1 { B foo(A a); } class ValueLambdaInContext { void m1(I1 i) { } void m2(I1> i) { } void exprMethod() { m1(s1 -> 1); m2(s1 -> s2 -> 1); } void exprAssignment() { I1 in1 = s1 -> 1; I1> in2 = s1 -> s2 -> 1; } void statementMethod() { m1(s1 -> { return 1; }); m2(s1 -> { return s2 -> { return 1; }; }); } void statementAssignment() { I1 in1 = s1 -> { return 1; }; I1> in2 = s1 -> { return s2 -> { return 1; }; }; } }