void (@NotNull PsiContinueStatement statement) { startElement(statement); PsiStatement continuedStatement = statement.findContinuedStatement(); if (continuedStatement != null) { PsiElement body = null; if (continuedStatement instanceof PsiLoopStatement) { body = ((PsiLoopStatement)continuedStatement).getBody(); } if (body == null) { body = myCodeFragment; } callFinallyBlocksOnExit(continuedStatement); final Instruction instruction; final PsiElement finallyBlock = findEnclosingFinallyBlockElement(statement, continuedStatement); final int finallyStartOffset = finallyBlock == null ? -1 : myCurrentFlow.getStartOffset(finallyBlock); if (finallyBlock != null && finallyStartOffset != -1) { // go out of finally, use return CallInstruction callInstruction = (CallInstruction)myCurrentFlow.getInstructions().get(finallyStartOffset - 2); instruction = new ReturnInstruction(0, callInstruction); } else { instruction = new GoToInstruction(0, BranchingInstruction.Role.END, PsiTreeUtil.isAncestor(body, myCodeFragment, true)); } myCurrentFlow.addInstruction(instruction); addElementOffsetLater(body, false); } finishElement(statement); }