code: @Override
  	protected void rebuild() {
  		mandatoryArcsList.clear();
  		for (int i = 0; i < n; i++) {
  			g.getNeighOf(i).clear();
  			if (succ[i].isInstantiated()) {
  				int j = succ[i].getValue();
  				mandatoryArcsList.add(i * n + j); // todo check no need to have i < j
  			}
  		}
  		for (int i = 0; i < n; i++) {
  			IntVar v = succ[i];
  			int ub = v.getUB();
  			for (int j = v.getLB(); j <= ub; j = v.nextValue(j)) {
  				g.addEdge(i, j);
  			}
  		}
  	}
docs: ***********************************************************************************