private void effectiveAssignments() {
   assigns = new ArrayList<EndStates>();
   for (SymbexState ss : leafs) {
     EndStates es =
         new EndStates(
             ss.getCombinedAssignments(), ss.getCombinedCondition(), ss.getCombinedOrder());
     assigns.add(es);
   }
 }
 public SymbexCase slice(String variable) {
   if (root.isAssigned(variable)) {
     return slice(root, variable);
   } else {
     SymbexCase symbexCase = new SymbexCase(variable, true);
     return symbexCase;
   }
 }
  public void findLeafs() {
    leafs = new ArrayList<>(1000);

    Queue<SymbexState> queue = new LinkedList<>();
    queue.add(root);

    while (!queue.isEmpty()) {
      SymbexState e = queue.poll();

      if (e.getChildren().size() == 0) {
        // leaf found
        leafs.add(e);
      } else {
        queue.addAll(e.getChildren());
      }
    }
  }