void DecompileSelectedNodes(DecompilerTextViewState state = null, bool recordHistory = true)
        {
            if (ignoreDecompilationRequests)
            {
                return;
            }

            if (recordHistory)
            {
                var dtState = decompilerTextView.GetState();
                if (dtState != null)
                {
                    history.UpdateCurrent(new NavigationState(dtState));
                }
                history.Record(new NavigationState(treeView.SelectedItems.OfType <SharpTreeNode>()));
            }

            if (treeView.SelectedItems.Count == 1)
            {
                ILSpyTreeNode node = treeView.SelectedItem as ILSpyTreeNode;
                if (node != null && node.View(decompilerTextView))
                {
                    return;
                }
            }

            decompilerTextView.Decompile(this.decompiledLanguage, this.SelectedNodes, new DecompilationOptions()
            {
                TextViewState = state
            });
        }