Por que o compilador Java às vezes permite o unboxing de null?

Por exemplo:

int anInt = null;

falha em tempo de compilação, mas

public static void main(String[] args) {
  for (int i = 0; i < 10; i++) {
    System.out.println("" + getSomeVal());
  }
}
public static int getSomeVal() {
   return new Random().nextBoolean() ? 1 : null;
}

falha (geralmente) em tempo de execução. Tentando voltar apenasnull também irá resultar em um erro de compilação, então eu suponho que há algo sobre ter vários caminhos que faz com que o compilador inferir quenull é potencialmente um autoboxedint? Por que o javac não consegue compilar os dois casos com o mesmo erro?

questionAnswers(3)

yourAnswerToTheQuestion