!7 sclass BetterThreadLocal { Map map = newWeakHashMap(); A get() { ret map.get(currentThread()); } void set(A a) { mapPutOrRemove(map, currentThread(), a); } } static new BetterThreadLocal tl; p { assertNull(tl!); tl.set("hello"); assertEq("hello", tl!); thread { assertNull(tl!); } sleepSeconds(1); tl.set(null); assertNull(tl!); }