Chamando o método padrão na interface ao entrar em conflito com o método privado

Considere abaixo a hierarquia de classes.

class ClassA {
    private void hello() {
        System.out.println("Hello from A");
    }
}

interface Myinterface {
    default void hello() {
        System.out.println("Hello from Interface");
    }
}

class ClassB extends ClassA implements Myinterface {

}

public class Test {
    public static void main(String[] args) {
        ClassB b = new ClassB();
        b.hello();
    }
}

A execução do programa dará o seguinte erro:

Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.testing.ClassA.hello()V from class com.testing.Test
at com.testing.Test.main(Test.java:23)
Isso é tudo porque eu marquei ClassA.hello como particular.Se eu marcar ClassA.hello como protegido ou remover o modificador de visibilidade (ou seja, torná-lo escopo padrão), ele mostrará um erro do compilador como:The inherited method ClassA.hello() cannot hide the public abstract method in Myinterface

No entanto, conforme o rastreamento de pilha de exceção acima,Eu recebo um IllegalAccessError em tempo de execução.

Não consegui entender por que isso não é detectado no momento da compilação. Alguma pista?

questionAnswers(1)

yourAnswerToTheQuestion