PersistentList<T> (@NotNull String stringKey, @NotNull KeyT key) { // compute out of our lock (https://youtrack.jetbrains.com/issue/IDEA-208060) List<KeyedLazyInstance<T>> extensions = getExtensions(); synchronized (lock) { PersistentList<T> explicit = explicitExtensions.get(stringKey); PersistentList<T> result = buildExtensionsFromExtensionPoint(bean -> stringKey.equals(bean.getKey()), extensions); return explicit == null ? result : explicit.addAll(result); } }