sclass RunResultWithTimestamps extends OKOrError { settable Timestamp started; settable Timestamp ended; settable CharSequence printOutput; selfType run(IF0 f) { ret setPrintOutput(hijackPrint_tee(r { started(tsNow()); result(okOrError(f)); ended(tsNow()); })); } // legacy OKOrError result() { this; } }