final int outSize = graph.getOutEdges(node).size();
final ArrayList<ConstantsAssumption> result =
new ArrayList<ConstantsAssumption>(outSize);
final Updater assumption = new Updater(in);
node.accept(new CfgVisitor() {
@Override
public void visitConditionalNode(CfgConditionalNode<?> x) {
JExpression condition = x.getCondition();
Updater thenAssumptions = assumption.copy();
Updater elseAssumptions = assumption.copy();
Preconditions.checkNotNull(condition, "Null condition in %s", x);
AssumptionDeducer.deduceAssumption(condition, JBooleanLiteral.TRUE,
thenAssumptions);
AssumptionDeducer.deduceAssumption(condition, JBooleanLiteral.FALSE,
elseAssumptions);
for (CfgEdge e : graph.getOutEdges(x)) {
if (CfgConditionalNode.THEN.equals(e.getRole())) {
result.add(thenAssumptions.unwrap());
} else if (CfgConditionalNode.ELSE.equals(e.getRole())) {
result.add(elseAssumptions.unwrap());
} else {
result.add(assumption.unwrap());
}
}
}