public void removeExplicitExtension(@NotNull KeyT key, @NotNull T t) {
    String stringKey = keyToString(key);
    synchronized (lock) {
      PersistentList<T> list = explicitExtensions.get(stringKey);
      if (list != null) {
        list = list.remove(t);
        explicitExtensions = list.isEmpty() ? without(explicitExtensions, stringKey) : with(explicitExtensions, stringKey, list);
      }
      invalidateCacheForExtension(stringKey);
    }
  }
public void removeExplicitExtension(@NotNull KeyT key, @NotNull T t)