void (@NotNull PsiStatement switchStatement) { PsiLabeledStatement labeledStatement = tryCast(switchStatement.getParent(), PsiLabeledStatement.class); CommentTracker commentTracker = new CommentTracker(); PsiSwitchBlock replacement = generateEnhancedSwitch(switchStatement, myNewBranches, commentTracker, true); if (replacement == null) return; PsiExpression initializer = myVariableToAssign.getInitializer(); if (myIsRightAfterDeclaration && isNotUsed(myVariableToAssign, switchStatement)) { if (initializer != null) { List<PsiExpression> sideEffectExpressions = SideEffectChecker.extractSideEffectExpressions(initializer); PsiStatement[] sideEffectStatements = StatementExtractor.generateStatements(sideEffectExpressions, initializer); if (sideEffectStatements.length > 0) { PsiStatement statement = tryCast(myVariableToAssign.getParent(), PsiStatement.class); if (statement == null) return; BlockUtils.addBefore(statement, sideEffectStatements); } } myVariableToAssign.setInitializer((PsiSwitchExpression)replacement); commentTracker.delete(switchStatement); commentTracker.insertCommentsBefore(myVariableToAssign); if (labeledStatement != null) { new CommentTracker().deleteAndRestoreComments(labeledStatement); } } else { String text = myVariableToAssign.getName() + "=" + replacement.getText() + ";"; PsiStatement statementToReplace = labeledStatement != null ? labeledStatement : switchStatement; commentTracker.replaceAndRestoreComments(statementToReplace, text); } }