void (PsiElement element, Context context) { PsiSwitchStatement switchStatement = (PsiSwitchStatement)element.getParent().getParent(); if (element instanceof PsiSwitchLabeledRuleStatement switchLabeledRuleStatement) { PsiStatement body = switchLabeledRuleStatement.getBody(); if (body instanceof PsiBlockStatement) { context.extractFromCodeBlock(((PsiBlockStatement)body).getCodeBlock(), switchStatement); } else { context.extractElement(body, switchStatement); } } else { while (!(element instanceof PsiSwitchLabelStatement) && element != null) { element = PsiTreeUtil.getPrevSiblingOfType(element, PsiStatement.class); } while (element instanceof PsiSwitchLabelStatement) { element = PsiTreeUtil.getNextSiblingOfType(element, PsiStatement.class); } if (!(element instanceof PsiBreakStatement) && element != null) { outer: while (true) { if (!(element instanceof PsiSwitchLabelStatement)) { if (element instanceof PsiBlockStatement blockStatement) { final PsiCodeBlock codeBlock = blockStatement.getCodeBlock(); PsiElement start = codeBlock.getFirstBodyElement(); final PsiElement end = codeBlock.getLastBodyElement(); while (start != end && start != null) { if (start instanceof PsiBreakStatement && ((PsiBreakStatement)start).getLabelIdentifier() == null) { break outer; } removeBreakStatements(start, switchStatement); context.extractElement(start, switchStatement); start = start.getNextSibling(); } } else { removeBreakStatements(element, switchStatement); context.extractElement(element, switchStatement); } } if (element instanceof PsiBreakStatement || element instanceof PsiContinueStatement || element instanceof PsiThrowStatement || element instanceof PsiReturnStatement) { break; } element = element.getNextSibling(); if (element == null || element instanceof PsiJavaToken || element instanceof PsiBreakStatement && ((PsiBreakStatement)element).getLabelIdentifier() == null) { break; } } } } context.delete(switchStatement); }