public int getChoiceValue() {

    selectedValue = select.getChoiceValue();
    currentSearchNode.val = selectedValue;
    currentSearchNode.id = searchNodeId++;
    currentSearchNode.previous = searchStack.peek().id;

    searchStack.push(currentSearchNode);

    return selectedValue;
  }
  public T getChoiceVariable(int index) {

    selectedVar = select.getChoiceVariable(index);

    if (selectedVar != null) {

      currentSearchNode = new SearchNode();
      currentSearchNode.v = selectedVar;
      currentSearchNode.dom = selectedVar.dom().cloneLight();
    }

    return selectedVar;
  }
  public PrimitiveConstraint getChoiceConstraint(int index) {

    PrimitiveConstraint c = select.getChoiceConstraint(index);

    if (c == null) {

      generateSuccessNode(currentSearchNode.id);
      generateVisualizationNode(currentSearchNode.id, true);

    } else {

      currentSearchNode = new SearchNode();
      currentSearchNode.c = c;
      currentSearchNode.id = searchNodeId++;
      currentSearchNode.previous = searchStack.peek().id;

      searchStack.push(currentSearchNode);
    }

    return c;
  }
 public int getIndex() {
   return select.getIndex();
 }
 public IdentityHashMap<T, Integer> getVariablesMapping() {
   return select.getVariablesMapping();
 }