@Override public void visit(ConditionalStatement statement) { statement.getCondition().acceptVisitor(this); statement.setCondition(resultExpr); List<Statement> consequent = processSequence(statement.getConsequent()); List<Statement> alternative = processSequence(statement.getAlternative()); if (consequent.isEmpty()) { consequent.addAll(alternative); alternative.clear(); statement.setCondition(ExprOptimizer.invert(statement.getCondition())); } if (consequent.isEmpty()) { resultStmt = Statement.empty(); return; } statement.getConsequent().clear(); statement.getConsequent().addAll(consequent); statement.getAlternative().clear(); statement.getAlternative().addAll(alternative); resultStmt = statement; }