void () { ExtensionPoint<@NotNull String> extensionPoint = buildExtensionPoint(String.class); final List<String> extensions = new ArrayList<>(); extensionPoint.addExtensionPointListener(new ExtensionPointListener<String>() { @Override public void extensionAdded(@NotNull String extension, @NotNull PluginDescriptor pluginDescriptor) { extensions.add(extension); } }, true, null); extensionPoint.registerExtension("first", disposable); assertThat(extensions).contains("first"); extensionPoint.registerExtension("second", LoadingOrder.FIRST, disposable); MyShootingComponentAdapter adapter = newStringAdapter(); ((ExtensionPointImpl<?>)extensionPoint).addExtensionAdapter(adapter); adapter.setFire(() -> { throw new ProcessCanceledException(); }); assertThatThrownBy(extensionPoint::getExtensionList).isInstanceOf(ProcessCanceledException.class); assertThat(extensions).contains("first", "second"); adapter.setFire(null); extensionPoint.getExtensionList(); assertThat(extensions).contains("first", "second", ""); }