void (@NotNull ActionContext context) { List<PsiStatement> statements = extractStatements(context); if (statements.isEmpty()) return; PsiIfStatement ifStatement = tryCast(PsiTreeUtil.skipWhitespacesAndCommentsBackward(statements.get(0)), PsiIfStatement.class); if (ifStatement == null || hasConflictingDeclarations(ifStatement, statements)) return; PsiElementFactory factory = JavaPsiFacade.getElementFactory(context.project()); PsiStatement thenBranch = ifStatement.getThenBranch(); if (thenBranch == null) { ifStatement.setThenBranch(factory.createStatementFromText("{}", null)); thenBranch = Objects.requireNonNull(ifStatement.getThenBranch()); } else if (!(thenBranch instanceof PsiBlockStatement)) { thenBranch = (PsiStatement)BlockUtils.expandSingleStatementToBlockStatement(thenBranch).getParent().getParent(); } PsiStatement elseBranch = ifStatement.getElseBranch(); if (elseBranch == null) { ifStatement.setElseBranch(factory.createStatementFromText("{}", null)); elseBranch = Objects.requireNonNull(ifStatement.getElseBranch()); } else if (!(elseBranch instanceof PsiBlockStatement)) { elseBranch = (PsiStatement)BlockUtils.expandSingleStatementToBlockStatement(elseBranch).getParent().getParent(); } PsiCodeBlock thenBlock = ((PsiBlockStatement)thenBranch).getCodeBlock(); PsiCodeBlock elseBlock = ((PsiBlockStatement)elseBranch).getCodeBlock(); PsiJavaToken thenBrace = thenBlock.getRBrace(); PsiJavaToken elseBrace = elseBlock.getRBrace(); if (thenBrace == null || elseBrace == null) return; thenBlock.addRangeBefore(statements.get(0), statements.get(statements.size() - 1), thenBrace); elseBlock.addRangeBefore(statements.get(0), statements.get(statements.size() - 1), elseBrace); ifStatement.getParent().deleteChildRange(statements.get(0), statements.get(statements.size() - 1)); }