!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!); startAndJoinThread(r { assertNull(tl!); }); tl.set(null); assertNull(tl!); }