void (PsiElement exitedStatement) { for (final ListIterator<FinallyBlockSubroutine> it = myFinallyBlocks.listIterator(myFinallyBlocks.size()); it.hasPrevious(); ) { final FinallyBlockSubroutine finallyBlockSubroutine = it.previous(); PsiElement finallyBlock = finallyBlockSubroutine.getElement(); final PsiElement enclosingTryStatement = finallyBlock.getParent(); if (enclosingTryStatement == null || !PsiTreeUtil.isAncestor(exitedStatement, enclosingTryStatement, false)) { break; } CallInstruction instruction = new CallInstruction(0, 0); finallyBlockSubroutine.addCall(instruction); myCurrentFlow.addInstruction(instruction); addElementOffsetLater(finallyBlock, true); } }