// this syntax should be removed...
static O getThreadLocal(O o, S name) {
ThreadLocal t = cast getOpt(o, name);
ret t != null ? t.get() : null;
}
static A getThreadLocal(ThreadLocal tl) {
ret tl == null ? null : tl!;
}
static A getThreadLocal(ThreadLocal tl, A defaultValue) {
ret or(getThreadLocal(tl), defaultValue);
}