/// <summary>
        /// When switching workspaces or closing NodePropertyPalette extension,
        /// unsubscribe workspace events for profiling
        /// </summary>
        /// <param name="workspace">target workspace</param>
        private void UnsubscribeWorkspaceEvents(HomeWorkspaceModel workspace)
        {
            workspace.NodeAdded           -= CurrentWorkspaceModel_NodeAdded;
            workspace.NodeRemoved         -= CurrentWorkspaceModel_NodeRemoved;
            workspace.EvaluationStarted   -= CurrentWorkspaceModel_EvaluationStarted;
            workspace.EvaluationCompleted -= CurrentWorkspaceModel_EvaluationCompleted;

            foreach (var node in workspace.Nodes)
            {
                node.NodeExecutionBegin -= OnNodeExecutionBegin;
                node.NodeExecutionEnd   -= OnNodeExecutionEnd;
            }

            foreach (var node in PropertyPaletteNodes)
            {
                node.Dispose();
            }
            PropertyPaletteNodes.Clear();
        }