escopo do construtor privado na classe aninhada

Isso é mais umenigma do que pergunta. Eu tenho o seguinte código:

public class PrivateBaseConstructor {
    public static class BaseClass {
        private BaseClass() {
        }

    }

    public static class DerivedClass extends BaseClass {
        public DerivedClass() {
            super(); // 1*
        }
    }
}

Aqui a chamada parasuper(); em 1 * é permitido evento embora o construtor de classe base éprivate. Se nós escrevermos as classes como classes separadas no mesmo pacote:

BClass.java
public class BClass {
    private BClass() {

    }
}

DClass.java
public class DClass extends BClass {
    public DClass() {
        super(); // 2*
    }

O compilador corretamente dá erro em 2 *, pois o construtor da classe base não é visível.

Por que o compilador não lança um erro no meu primeiro cenário quando ambas as classes são declaradas estáticas dentro de uma classe?

questionAnswers(3)

yourAnswerToTheQuestion