private Handle<T> createHandle(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);
    }
  }
private Handle<T> createHandle(K key)