Handle<T> (K key) { try { Handle<T> cached = new Handle<>(createAccessor(key), this); cached.allocate(); synchronized (myCacheLock) { myCache.put(key, cached); } disposeInvalidAccessors(); return cached; } catch (IOException ex) { throw new RuntimeException(ex); } }