@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } Not other = (Not) obj; if (_expr == null) { if (other._expr != null) { return false; } } else if (!_expr.equals(other._expr)) { return false; } return true; }
@Override public List<Statement> simplify() { if (_simplified != null) { return _simplified; } ImmutableList.Builder<Statement> simpleTrueStatementsBuilder = ImmutableList.builder(); ImmutableList.Builder<Statement> simpleFalseStatementsBuilder = ImmutableList.builder(); BooleanExpr simpleGuard = _guard.simplify(); for (Statement trueStatement : _trueStatements) { simpleTrueStatementsBuilder.addAll(trueStatement.simplify()); } List<Statement> simpleTrueStatements = simpleTrueStatementsBuilder.build(); for (Statement falseStatement : _falseStatements) { simpleFalseStatementsBuilder.addAll(falseStatement.simplify()); } List<Statement> simpleFalseStatements = simpleFalseStatementsBuilder.build(); if (simpleGuard.equals(BooleanExprs.TRUE)) { _simplified = simpleTrueStatements; } else if (simpleGuard.equals(BooleanExprs.FALSE)) { _simplified = simpleFalseStatements; } else if (simpleTrueStatements.isEmpty() && simpleFalseStatements.isEmpty()) { _simplified = Collections.emptyList(); } else { If simple = new If(getComment(), simpleGuard, simpleTrueStatements, simpleFalseStatements); _simplified = ImmutableList.of(simple); simple._simplified = _simplified; } return _simplified; } }
for (BooleanExpr conjunct : _conjuncts) { BooleanExpr simpleConjunct = conjunct.simplify(); if (simpleConjunct.equals(BooleanExprs.FALSE)) { atLeastOneFalse = true; if (!atLeastOneComplex) { simpleConjunctsBuilder.add(simpleConjunct); } else if (!simpleConjunct.equals(BooleanExprs.TRUE)) { atLeastOneComplex = true; simpleConjunctsBuilder.add(simpleConjunct);