class Test { interface I0 { void m(); } interface I1 { void m(X x); } interface I2 { void m(X x, Y y); } void m0() { } void m1(String s) { } void m2(String s1, String s2) { } void m01() { } void m01(String s) { } void m012() { } void m012(String s) { } void m012(String s1, String s2) { } static String instanceCall(I0 s) { return null; } static T instanceCall(I1 s) { return null; } static T instanceCall(I2 s) { return null; } { String i1 = instanceCall(this::m0); String i2 = instanceCall(this::m1); String i3 = instanceCall(this::m2); String i4 = instanceCall(this::m01); String i5 = instanceCall(this::m012); } void n0() { } void n1(String s) { } void n2(Test rec, String s2) { } void n01() { } void n01(String s) { } void n012() { } void n012(String s) { } void n012(Test rec, String s2) { } static T staticCall(I1 s) { return null; } static T staticCall(I2 s) { return null; } static { Test s1 = staticCall(Test::n0); Test s2 = staticCall(Test::n1); Test s3 = staticCall(Test::n2); Test s4 = staticCall(Test::n01); Test s5 = staticCall(Test::n012); } }