class Bug { interface Function { public R apply(T t); static Function identity() { return k -> k; } } interface IFunction extends Function { static void a() { Function identity = identity(); } } public void foo() { Function f = Function.identity(); Function g = f.identity(); Function h = IFunction.identity(); } } class StaticMethodInterfaceExample { interface X {} interface MyInterface { static void staticMethod() {} } static class MyImplementation implements MyInterface { } public static class Usage { public void doStuff() { T.staticMethod(); } public void doStuff1() { T.staticMethod(); } public void doStuff2() { T.staticMethod(); } public void doStuff3() { T.staticMethod(); } } } class StaticMethodInterfaceExample2 { interface MyInterface { static void m(int a) { } } class MyClass { void m() { } class MyInnerClass implements MyInterface { { m(); } } } } interface StaticMethodInterfaceExample3 { static void m() { } class MyClass implements StaticMethodInterfaceExample3 { { m(); } } }