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(); } }