static AutoCloseable tempSetThreadLocalIfNecessary_weakRef(ThreadLocal tl, A a) { if (tl == null) null; WeakReference prev = tl.get(); if (eq(getWeakRef(prev), a)) null; tl.set(weakRef(a)); ret autoCloseable { tl.set(prev); }; }