sclass WeakVar implements IVar { WeakReference ref; public synchronized void set(A a) { ref = weakRef(a); } public synchronized A get() { if (ref == null) null; A value = ref!; if (value == null) ref = null; ret value; } }