Consider the following case:
public interface I1 { default public void m() {}}
public interface I2 extends I1 { public void m(); }
public class T3 implements I2 { public static void m() {}}
NB: T3 isn't marked abstract.
Call site: T3 { invokestatic T3.m()V T3 }
VM behavior (test case attached): IncompatibleClassChangeError: Expected static method p1.T3.m()I
JVMS: T3.m should be invoked.
It's a regression from the fix for JDK-8027804 (verified that the test passes w/o the fix).
ILW = HLH = P2
I = H = JVMS violation
L = L = forbidden by JLS; a case of separate compilation issue
W = H = none