static A waitForCalculatedValueUsingChangeListener(IF0 f, IHasChangeListeners sender) { new BoolVar trigger; temp tempOnChange(sender, -> trigger.set(true)); while true { ping(); try object f!; trigger.waitUntilTrueAndClear(); } }