Quando a condição "Código inacessível" ocorre em Java?

Quando há alguma declaração escrita após o loop infinito, essa declaração se torna o código inacessível. Por exemplo:

for(;;) 
{
}
Sytem.out.println("Test-1"); //unreachable code

Mas estou enfrentando alguma dificuldade aqui.

Veja os dois trechos de código abaixo:

Snippet de código1:

for(final int z=4;z<6;)
{
}
System.out.println("Test-2"); //unreachable code

Aqui, a última instrução deve estar inacessível porque o loop é infinito e a saída é como o esperado.

Fragmento de código2:

final int z=4;
for(;;)
{
    if(z<2)
        break;
}
System.out.println("Test-3");  //not unreachable

Conceitualmente, o loop for no código acima também é infinito, pois z é final eif(z<2) é determinado apenas no tempo de compilação. A condição if nunca será verdadeira e o loop nunca será interrompido. Mas, a última declaração no código acima não é inacessível.

Questões:

Porque isso está acontecendo ?

Alguém pode me dizer as regras exatas pelas quais podemos ver se o código é inacessível ou não.

questionAnswers(3)

yourAnswerToTheQuestion