Referência de método ao método de interface privada

Considere o seguinte código:

public class A {
    public static void main(String[] args) {
        Runnable test1 = ((I)(new I() {}))::test;  // compiles OK
        Runnable test2 = ((new I() {}))::test;     // won't compile 
    }

    interface I {
        private void test() {}
    }
}

Eu realmente não entendi direito ... eu entendo issotest() método éprivado. Mas o que muda se convertermos uma classe anônima em sua interface((I)(new I() {}))? Mais precisamente, eu gostaria de ver um ponto JLS específico que permita esse truque.

P.S. Eu relatei isso como um bug do compilador (ID: 9052217). Parece-me queRunnable test2 = ((new I() {}))::test; deve ser bem compilado nesse caso específico.

P.P.S. Até agora, foi criado um bug com base no meu relatório:https://bugs.openjdk.java.net/browse/JDK-8194998 . Pode ser que ele seja fechado como "não vai consertar" ou o que for.

questionAnswers(4)

yourAnswerToTheQuestion