Handle<T> (K key) { Handle<T> cached = getIfCached(key); if (cached != null) return cached; synchronized (myUpdateLock) { cached = getIfCached(key); if (cached != null) return cached; return createHandle(key); } }