static java.util.Timer onValueChangeAndNow(int interval, final F0 f, fO onChange) { ret doEveryAndNow(interval, new Runnable { bool firstTime = true; O lastValue; public void run { O value = callF(f); if (firstTime || neq(value, lastValue)) { firstTime = false; lastValue = value; callF(onChange, value); } } }); }