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; }
}