/// <summary>
        /// Creates the structure of the text document's context menu.
        /// </summary>
        private void AddContextMenu()
        {
            var commandExtension = Editor.Extensions.OfType <CommandExtension>().FirstOrDefault().WarnIfMissing();

            if (commandExtension == null)
            {
                _contextMenuNodes = new MergeableNodeCollection <ICommandItem>();
            }
            else
            {
                _contextMenuNodes = new MergeableNodeCollection <ICommandItem>
                {
                    new MergeableNode <ICommandItem>(commandExtension.CommandItems["Cut"]),
                    new MergeableNode <ICommandItem>(commandExtension.CommandItems["Copy"]),
                    new MergeableNode <ICommandItem>(commandExtension.CommandItems["Paste"]),
                    new MergeableNode <ICommandItem>(commandExtension.CommandItems["Delete"]),
                    new MergeableNode <ICommandItem>(new CommandSeparator("ClipboardSeparator")),
                    new MergeableNode <ICommandItem>(commandExtension.CommandItems["SelectAll"]),
                    new MergeableNode <ICommandItem>(new CommandSeparator("SelectSeparator")),
                    CreateFormatMenu(),
                    CreateFoldingMenu(),
                    new MergeableNode <ICommandItem>(new CommandSeparator("EditSeparator")),
                    new MergeableNode <ICommandItem>(CommandItems["SyntaxHighlighting"]),
                    new MergeableNode <ICommandItem>(new CommandSeparator("ViewSeparator"))
                };
            }

            ContextMenuNodeCollections.Add(_contextMenuNodes);
        }
 private void RemoveContextMenu()
 {
     ContextMenuNodeCollections.Remove(_contextMenuNodes);
     _contextMenuNodes = null;
 }