public virtual void Dispose() { this.workspaceLoaded = false; foreach (var node in Nodes) { DisposeNode(node); } foreach (var connector in Connectors) { OnConnectorDeleted(connector); } WorkspaceEvents.WorkspaceAdded -= computeUpstreamNodesWhenWorkspaceAdded; var handler = Disposed; if (handler != null) handler(); Disposed = null; WorkspaceEvents.WorkspaceAdded -= computeUpstreamNodesWhenWorkspaceAdded; }