void (@NotNull List<? extends PsiElement> blocks) { PsiElement element; if (blocks.isEmpty() || blocks.get(0) == null) { ThrowToInstruction instruction = new ThrowToInstruction(0); myCurrentFlow.addInstruction(instruction); if (myFinallyBlocks.isEmpty()) { element = myCodeFragment; addElementOffsetLater(element, false); } else { instruction.offset = -2; // -2 to rethrow exception element = myFinallyBlocks.peek().getElement(); addElementOffsetLater(element, true); } } else { for (int i = 0; i < blocks.size(); i++) { ProgressManager.checkCanceled(); element = blocks.get(i); BranchingInstruction instruction = i == blocks.size() - 1 ? new ThrowToInstruction(0) : new ConditionalThrowToInstruction(0); myCurrentFlow.addInstruction(instruction); instruction.offset = -1; // -1 to init catch param addElementOffsetLater(element, true); } } }