in statemachine/src/main/java/org/apache/statemachine/StateMachine.java [205:219]
public void run() {
boolean stateChanged = processEvent(e);
while (stateChanged) {
stateChanged = false;
Queue<DeferrableEvent> prevDeferred = deferred;
deferred = new ArrayDeque<>();
for (DeferrableEvent d : prevDeferred) {
if (stateChanged) {
deferred.add(d);
} else if (processEvent(d)) {
stateChanged = true;
}
}
}
}