static O time(O f) {
long time = sysNow();
O o = callF(f);
done2_always(str(f), time);
ret o;
}
static A time(F0 f) {
ret (A) time((O) f);
}
static A time(IF0 f) {
ret (A) time((O) f);
}
static A time(S msg, IF0 f) {
long time = sysNow();
O o = f.get();
done2_always(msg, time);
ret o;
}