srecord noeq StepperWithStats(Steppable steppable) > MetaWithChangeListeners is Steppable { settableWithVar Timestamp startTime; settableWithVar long stepCount; settableWithVar bool done; public bool step() { if (done) false; if (steppable == null) false; ping(); if (startTime == null) startTime(tsNow()); stepCount(stepCount+1); if (steppable.step()) true; done(true); false; } }