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