/**************************************************************************/

        private void RenderTreeViewSummary(MacroscopeDocumentCollection DocCollection)
        {
            MacroscopeJobMaster JobMaster = this.MainForm.GetJobMaster();

            this.tvTreeView.BeginUpdate();

            try
            {
                {
                    SortedDictionary <string, double> DataPoints = new SortedDictionary <string, double>();

                    {
                        TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("UrlsFound", true);
                        int        Count = JobMaster.GetPagesFound();
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Total URLs Found: {0}", Count);
                        }
                        DataPoints.Add("URLs Found", (double)Count);
                    }

                    {
                        TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("UrlsCrawled", true);
                        int        Count = DocCollection.CountDocuments();
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Total URLs Crawled: {0}", Count);
                        }
                        DataPoints.Add("URLs Crawled", (double)Count);
                    }

                    {
                        TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("UrlsInternal", true);
                        ulong      Count = DocCollection.CountUrlsInternal();
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Total Internal URLs: {0}", Count);
                        }
                        DataPoints.Add("Internal URLs", (double)Count);
                    }

                    {
                        TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("UrlsExternal", true);
                        ulong      Count = DocCollection.CountUrlsExternal();
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Total External URLs: {0}", Count);
                        }
                        DataPoints.Add("External URLs", (double)Count);
                    }

                    this.SiteStructurePanelCharts.UpdateSiteSummary(DataPoints: DataPoints);
                }

                {
                    SortedDictionary <string, double> DataPoints = new SortedDictionary <string, double>();
                    decimal Fastest = DocCollection.GetStatsDurationsFastest();
                    decimal Slowest = DocCollection.GetStatsDurationsSlowest();
                    decimal Average = DocCollection.GetStatsDurationAverage();

                    {
                        TreeNode[] Leaf = this.tvTreeView.Nodes.Find("FASTESTPAGERESPONSE", true);
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Fastest Page Response: {0:0.00} secs", Fastest);
                            DataPoints.Add("Fastest Page Response", (double)Fastest);
                        }
                        else
                        {
                            DataPoints.Add("Fastest Page Response", 0);
                        }
                    }

                    {
                        TreeNode[] Leaf = this.tvTreeView.Nodes.Find("SLOWESTPAGERESPONSE", true);
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Slowest Page Response: {0:0.00} secs", Slowest);
                            DataPoints.Add("Slowest Page Response", (double)Slowest);
                        }
                        else
                        {
                            DataPoints.Add("Slowest Page Response", 0);
                        }
                    }

                    {
                        TreeNode[] Leaf = this.tvTreeView.Nodes.Find("AVERAGEPAGEDURATION", true);
                        if (Leaf.Length > 0)
                        {
                            Leaf[0].Text = string.Format("Average Page Duration: {0:0.00} secs", Average);
                            DataPoints.Add("Average Page Duration", (double)Average);
                        }
                        else
                        {
                            DataPoints.Add("Average Page Duration", 0);
                        }
                    }

                    this.SiteStructurePanelCharts.UpdateResponseTimes(DataPoints: DataPoints);
                }

                {
                    TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("UrlsRobotsBlocked", true);
                    int        Count = JobMaster.GetBlockedByRobotsList().Count;
                    if (Leaf.Length > 0)
                    {
                        Leaf[0].Text = string.Format("URLs Blocked by Robots.txt: {0}", Count);
                    }
                }

                {
                    TreeNode[] Leaf  = this.tvTreeView.Nodes.Find("SitemapsFound", true);
                    ulong      Count = DocCollection.CountUrlsSitemaps();
                    if (Leaf.Length > 0)
                    {
                        Leaf[0].Text = string.Format("Sitemaps Found: {0}", Count);
                    }
                }

                {
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("FETCH_WARNINGS", true);
                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];
                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicMessages = DocCollection.GetStatsWarningsCount();
                            Leaf.Nodes.Clear();
                            foreach (string MessagesKey in dicMessages.Keys)
                            {
                                Leaf.Nodes.Add(string.Format("{0}: {1}", MessagesKey, dicMessages[MessagesKey]));
                            }
                        }
                    }
                }

                {
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("FETCH_ERRORS", true);
                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];
                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicMessages = DocCollection.GetStatsErrorsCount();
                            Leaf.Nodes.Clear();
                            foreach (string MessagesKey in dicMessages.Keys)
                            {
                                Leaf.Nodes.Add(string.Format("{0}: {1}", MessagesKey, dicMessages[MessagesKey]));
                            }
                        }
                    }
                }

                {
                    Dictionary <bool, int> Canonicals = DocCollection.GetStatsCanonicalsCount();
                    {
                        TreeNode[] Leaf = this.tvTreeView.Nodes.Find("CANONICALS_SPECIFIED_SPECIFIED", true);
                        if ((Leaf.Length > 0) && (Canonicals.ContainsKey(true)))
                        {
                            Leaf[0].Text = string.Format("Specified: {0}", Canonicals[true]);
                        }
                        else
                        {
                            Leaf[0].Text = string.Format("Specified: {0}", 0);
                        }
                    }
                    {
                        TreeNode[] Leaf = this.tvTreeView.Nodes.Find("CANONICALS_SPECIFIED_NOT_SPECIFIED", true);
                        if ((Leaf.Length > 0) && (Canonicals.ContainsKey(false)))
                        {
                            Leaf[0].Text = string.Format("Not Specified: {0}", Canonicals[false]);
                        }
                        else
                        {
                            Leaf[0].Text = string.Format("Not Specified: {0}", 0);
                        }
                    }
                }

                {
                    {
                        TreeNode[] Leaves = this.tvTreeView.Nodes.Find("DOCUMENT_TYPES_FOUND_INTERNAL", true);
                        if (Leaves.Length > 0)
                        {
                            TreeNode Leaf = Leaves[0];
                            if (Leaf != null)
                            {
                                Dictionary <string, int> Stats = DocCollection.GetStatsDocumentTypesInternalCount();
                                Leaf.Nodes.Clear();
                                foreach (string ContentKey in Stats.Keys)
                                {
                                    TreeNode LeafNode = Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, Stats[ContentKey]));
                                    LeafNode.Tag = "DOCUMENT_TYPES_FOUND_INTERNAL_TYPE"; // For graph selection click
                                }
                            }
                        }
                    }
                    {
                        TreeNode[] Leaves = this.tvTreeView.Nodes.Find("DOCUMENT_TYPES_FOUND_EXTERNAL", true);
                        if (Leaves.Length > 0)
                        {
                            TreeNode Leaf = Leaves[0];
                            if (Leaf != null)
                            {
                                Dictionary <string, int> Stats = DocCollection.GetStatsDocumentTypesExternalCount();
                                Leaf.Nodes.Clear();
                                foreach (string ContentKey in Stats.Keys)
                                {
                                    TreeNode LeafNode = Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, Stats[ContentKey]));
                                    LeafNode.Tag = "DOCUMENT_TYPES_FOUND_EXTERNAL_TYPE"; // For graph selection click
                                }
                            }
                        }
                    }
                }

                {
                    SortedDictionary <string, double> DataPoints = new SortedDictionary <string, double>();
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("LANGUAGES_SPECIFIED_PAGES", true);
                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];
                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicContents = DocCollection.GetStatsLanguagesPagesCount();
                            Leaf.Nodes.Clear();
                            foreach (string ContentKey in dicContents.Keys)
                            {
                                TreeNode LeafNode = Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, dicContents[ContentKey]));
                                LeafNode.Tag = "LANGUAGES_SPECIFIED_PAGES_LANG";
                                DataPoints.Add(ContentKey, (double)dicContents[ContentKey]);
                            }
                        }
                        this.SiteStructurePanelCharts.UpdateLanguagesSpecified(DataPoints: DataPoints);
                    }
                }

                {
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("LANGUAGES_DETECTED_TITLES", true);

                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];

                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicContents = DocCollection.GetStatsLanguagesTitlesCount();

                            Leaf.Nodes.Clear();

                            foreach (string ContentKey in dicContents.Keys)
                            {
                                Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, dicContents[ContentKey]));
                            }
                        }
                    }
                }

                {
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("LANGUAGES_DETECTED_DESCRIPTIONS", true);

                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];

                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicContents = DocCollection.GetStatsLanguagesDescriptionsCount();

                            Leaf.Nodes.Clear();

                            foreach (string ContentKey in dicContents.Keys)
                            {
                                Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, dicContents[ContentKey]));
                            }
                        }
                    }
                }

                {
                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("LANGUAGES_DETECTED_BODYTEXTS", true);

                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];

                        if (Leaf != null)
                        {
                            Dictionary <string, int> dicContents = DocCollection.GetStatsLanguagesBodyTextsCount();

                            Leaf.Nodes.Clear();

                            foreach (string ContentKey in dicContents.Keys)
                            {
                                Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, dicContents[ContentKey]));
                            }
                        }
                    }
                }

                {
                    SortedDictionary <string, double> DataPoints = new SortedDictionary <string, double>();

                    TreeNode[] Leaves = this.tvTreeView.Nodes.Find("TEXT_READABILITY", true);

                    if (Leaves.Length > 0)
                    {
                        TreeNode Leaf = Leaves[0];

                        if (Leaf != null)
                        {
                            SortedDictionary <string, int> dicContents = DocCollection.GetStatsReadabilityGradeStringsCount();

                            Leaf.Nodes.Clear();

                            foreach (string ContentKey in dicContents.Keys)
                            {
                                TreeNode LeafLeaf = Leaf.Nodes.Add(string.Format("{0}: {1}", ContentKey, dicContents[ContentKey]));

                                LeafLeaf.Tag = "TEXT_READABILITY_NODE";

                                DataPoints.Add(ContentKey, (double)dicContents[ContentKey]);
                            }
                        }

                        this.SiteStructurePanelCharts.UpdateReadability(DataPoints: DataPoints);
                    }
                }
            }
            catch (Exception ex)
            {
                this.DebugMsg(ex.Message);
                this.DebugMsg(ex.Source);
            }

            this.tvTreeView.EndUpdate();
        }