/// <summary>
        /// Reentrant version of Collapse/Expand Node
        /// </summary>
        /// <param name="Item"></param>
        /// <param name="ExpandNode"></param>
        private bool FindModuleInTree(ModuleTreeViewItem Item, DisplayModuleInfo Module)
        {
            if (Item.GetTreeNodeHeaderName(Dependencies.Properties.Settings.Default.FullPath) == Module.ModuleName)
            {
                ExpandAllParentNode(Item.Parent as ModuleTreeViewItem);
                Item.IsSelected = true;
                Item.BringIntoView();
                Item.Focus();

                return(true);
            }

            // BFS style search -> return the first matching node with the lowest "depth"
            foreach (ModuleTreeViewItem ChildItem in Item.Items)
            {
                if (ChildItem.GetTreeNodeHeaderName(Dependencies.Properties.Settings.Default.FullPath) == Module.ModuleName)
                {
                    ExpandAllParentNode(Item);
                    ChildItem.IsSelected = true;
                    ChildItem.BringIntoView();
                    ChildItem.Focus();
                    return(true);
                }
            }

            foreach (ModuleTreeViewItem ChildItem in Item.Items)
            {
                // early exit as soon as we find a matching node
                if (FindModuleInTree(ChildItem, Module))
                {
                    return(true);
                }
            }

            return(false);
        }