sclass BetterThreadLocal { Map map = newWeakHashMap(); A get() { ret map.get(currentThread()); } void set(A a) { mapPutOrRemove(map, currentThread(), a); } }