<div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="ltr"><br>This analysis is incorrect. The guarantees about program order say that ‘a’ must be alive OR the finally block must execute. There is no gray area here. This MUST hold. </div><div dir="ltr"><br></div></div></blockquote><div>Robert, could you point out the documentation you cited?</div><div><br></div><div>I tried to find myself, but I found only the following in JLS:<br><br><span style="color:rgb(0,0,0);font-size:12px">A </span><span class="emphasis" style="color:rgb(0,0,0);font-size:12px"><em>reachable</em></span><span style="color:rgb(0,0,0);font-size:12px"> object is any object that can be accessed in any potential continuing computation from any live thread.</span><br></div><div><span style="color:rgb(0,0,0);font-size:12px"><br></span></div><div>It means that 'a' is not reachable - but how does it match to being alive?<br></div></div></div></div></div>