public void pruningPhase() throws ContradictionException { for (int i = futureVars.nextSetBit(0); i > -1; i = futureVars.nextSetBit(i + 1)) { IntVar v = vars[i]; DisposableValueIterator it3 = v.getValueIterator(true); vrms.clear(); try { while (it3.hasNext()) { int val = it3.next(); if (!gacValues[i].get(val - offsets[i])) { vrms.add(val); // v.removeVal(val, this, false); } } v.removeValues(vrms, this); } finally { it3.dispose(); } } }