boolean (PsiIfStatement ifStatement, PsiElementFactory factory, PsiStatement[] thenStatements, PsiStatement[] elseStatements) { ThenElse thenElse = ThenElse.from(ifStatement, thenStatements, elseStatements, myIsOnTheFly); if (thenElse == null) return false; PsiStatement thenBranch = ifStatement.getThenBranch(); PsiStatement elseBranch = ifStatement.getElseBranch(); if (thenBranch == null || elseBranch == null) return false; CommentTracker ct = new CommentTracker(); if (!tryCleanUpHead(ifStatement, thenElse.myHeadUnitsOfThen, factory, thenElse.mySubstitutionTable, ct)) return true; cleanUpTail(ifStatement, thenElse.myTailStatementsOfThen, ct); boolean elseToDelete = ControlFlowUtils.unwrapBlock(ifStatement.getElseBranch()).length == 0; boolean thenToDelete = ControlFlowUtils.unwrapBlock(ifStatement.getThenBranch()).length == 0; ct.insertCommentsBefore(ifStatement); if (thenToDelete && elseToDelete) { ifStatement.delete(); } else if(thenElse.myCommonPartType != CommonPartType.WHOLE_BRANCH) { // it is possible when one branch can be removed but it contains comments return true; } else if (elseToDelete) { elseBranch.delete(); } else if (thenToDelete) { PsiExpression condition = ifStatement.getCondition(); if (condition == null) return true; String negatedCondition = BoolUtils.getNegatedExpressionText(condition); String newThenBranch = elseBranch.getText(); ifStatement.replace(factory.createStatementFromText("if(" + negatedCondition + ")" + newThenBranch, ifStatement)); } return true; }