@SuppressWarnings({"NullableProblems"})
@Override
public void propagate() throws ContradictionException {
int mask, aid;
IntCircularQueue evtset;
if (trigger.needToRun()) {
trigger.propagate();
}
for (int i = nextNotEmpty(0); i > -1; i = nextNotEmpty(0)) {
while (!pro_queue[i].isEmpty()) {
lastProp = pro_queue[i].pollFirst();
// revision of the variable
aid = p2i.get(lastProp.getId());
scheduled[aid] = 0;
if (lastProp.reactToFineEvent()) {
evtset = eventsets[aid];
while (evtset.size() > 0) {
int v = evtset.pollFirst();
assert lastProp.isActive() : "propagator is not active:" + lastProp;
if (Configuration.PRINT_PROPAGATION) {
IPropagationEngine.Trace.printPropagation(lastProp.getVar(v), lastProp);
}
// clear event