code: @Override
  	public void propagate(int evtmask) throws ContradictionException {
  		int env = g.getPotentialNodes().size();
  		int ker = g.getMandatoryNodes().size();
  		k.updateLowerBound(ker, this);
  		k.updateUpperBound(env, this);
  		if (ker == env) {
  			setPassive();
  		} else if (k.isInstantiated()) {
  			int v = k.getValue();
  			ISet envNodes = g.getPotentialNodes();
  			if (v == env) {
  				for (int i : envNodes) {
  					g.enforceNode(i, this);
  				}
  				setPassive();
  			} else if (v == ker) {
  				ISet kerNodes = g.getMandatoryNodes();
  				for (int i : envNodes) {
  					if (!kerNodes.contains(i)) {
  						g.removeNode(i, this);
  					}
  				}
  				setPassive();
  			}
  		}
  	}
docs: ***********************************************************************************