WaitResult wr;
double localInterval;
SimEventListener localListener;
while (true) {
wr = this.waitForActionOrTrigger(trigger);
if (!wr.triggerOccurred()) break;
trigger.setValue(false);
simulation.setPace(0);
synchronized (this) {
localInterval = interval;
localListener = listener;