PersistentList<T> (Set<String> supers) { List<KeyedLazyInstance<T>> extensions = getExtensions(); synchronized (lock) { PersistentList<T> result = persistentListOf(); for (String aSuper : supers) { result = result.addAll(buildExtensionsFromExplicitRegistration(key -> aSuper.equals(key))); } for (String aSuper : supers) { result = result.addAll(buildExtensionsFromExtensionPoint(bean -> aSuper.equals(bean.getKey()), extensions)); } return result; } }