sbool waitForPredicateUsingChangeListener(IF0 pred, IHasChangeListeners sender) { new BoolVar trigger; temp tempOnChange(sender, -> { trigger.set(true); }); while true { ping(); if (pred!) true; trigger.waitUntilTrueAndClear(); } }