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