IExpression conjunct = conjuncts.get(i);
if (j < conjuncts.size()) {
// And(F1 F2 ... Fi Or(G1, ..., Gm) Fi+2 Fi+3 ... Fn)
if (conjuncts.get(j) instanceof Disjunction) {
Disjunction orConjunct = (Disjunction) conjuncts.get(j);
List<IExpression> andFormulas = new ArrayList<IExpression>();
// And(Fi G1) ... And(Fi Gm)
for (IExpression disjunct : orConjunct.exprs) {
List<IExpression> formulas = new ArrayList<IExpression>();
// TODO: Parent
formulas.add((IExpression) conjunct.accept(this, null));
formulas.add((IExpression) disjunct.accept(this, null));
Conjunction temp = new Conjunction();
temp.exprs.addAll(formulas);
andFormulas.add(temp);
}
// Or(And(Fi G1) ... And(Fi Gm))
Disjunction orFormula = new Disjunction();
orFormula.exprs.addAll(andFormulas);
// normalize(Or(And(Fi G1) ... And(Fi Gm)))
// TODO: Parent
newConjuncts
.add((IExpression) orFormula.accept(this, null));
hasChanged = true;
i++;
} else {