void AddMenus(NodeSource source)
        {
            source.GetNodeType <FolderNodeType>().States[0].AddMenuDefinitions(removeFolder);

            source.GetNodeType <TagNode>().State("missing_reference").AddMenuDefinitions(copyFromGameArchive, remove);
            source.GetNodeType <TagNode>().State("valid_reference").AddMenuDefinitions(remove, edit, previewTag);
            source.GetNodeType <TagNode>().State("unreferenced").AddMenuDefinitions(include);

            source.GetNodeType <ObjectTag>().State("missing_reference").AddMenuDefinitions(copyFromGameArchive, remove);
            source.GetNodeType <ObjectTag>().State("valid_reference").AddDefaultMenuDefinition(previewTag);
            source.GetNodeType <ObjectTag>().State("valid_reference").AddDefaultMenuDefinition(edit, remove);

            source.GetNodeType <ModelTag>().State("missing_reference").AddMenuDefinitions(copyFromGameArchive, remove);
            source.GetNodeType <ModelTag>().State("valid_reference").AddDefaultMenuDefinition(previewTag);
            source.GetNodeType <ModelTag>().State("valid_reference").AddDefaultMenuDefinition(edit, remove);

            source.GetNodeType <SbspTag>().State("missing_reference").AddMenuDefinitions(copyFromGameArchive, remove);
            source.GetNodeType <SbspTag>().State("valid_reference").AddDefaultMenuDefinition(previewTag);
            source.GetNodeType <SbspTag>().State("valid_reference").AddDefaultMenuDefinition(edit, remove);

            source.GetNodeType <ScenarioTag>().State("missing_reference").AddMenuDefinitions(copyFromGameArchive, remove);
            source.GetNodeType <ScenarioTag>().State("valid_reference").AddDefaultMenuDefinition(previewTag);
            source.GetNodeType <ScenarioTag>().State("valid_reference").AddDefaultMenuDefinition(edit, remove);

            source.GetNodeType <ProjectTemplateTagNodeType>().States[0].AddMenuDefinitions(revertEssentialTag, edit);
            source.GetNodeType <GlobalTemplateTagNodeType>().States[0].AddDefaultMenuDefinition(editGlobal, selectProjectTag);

            source.GetNodeType <RecycleBinRootNodeType>().State("recyclebin_not_empty").AddDefaultMenuDefinition(browseRecycleBin, emptyRecycleBin);

#if DEBUG
            source.AddGlobalMenuDefinition(debugInfo);
#endif
        }
        private void AddDebugMenu(NodeSource source)
        {
#if DEBUG
            source.AddGlobalMenuDefinition(debugInfo);
#endif
        }