protected override bool CreateNode(INodeInfo nodeInfo, IInternalPluginHost pluginHost) { var plugin = pluginHost.Plugin; //make the host mark all its pins for possible deletion pluginHost.Plugin = null; //dispose previous plugin if (plugin != null) { DisposePlugin(plugin); } //create the new plugin var type = DelegateNodeType(nodeInfo); if (type == null) { return(false); } var pluginContainer = new PluginContainer( pluginHost, IORegistry, ParentContainer, FNodeInfoFactory, null, type, nodeInfo); plugin = pluginContainer; PluginContainers.UpdateGeneric(pluginContainer.PluginBase, pluginContainer); AssignOptionalPluginInterfaces(pluginHost, pluginContainer.PluginBase); ProcessNode(pluginContainer, nodeInfo); PluginCreated?.Invoke(pluginContainer.PluginBase, pluginHost); pluginHost.Plugin = plugin; return(true); }