+ Boolean *b = boolMap.get(constraint);
+
+ if (b == NULL) {
+ allBooleans.push(constraint);
+ boolMap.put(constraint, constraint);
+ constraint->updateParents();
+ } else {
+ delete constraint;
+ constraint = b;
+ }
+
+ BooleanEdge be = BooleanEdge(constraint);
+ return negate ? be.negate() : be;