/// <summary>
        /// Counts the tags.
        /// </summary>
        /// <param name="nodes">The nodes.</param>
        public void CountTags(IEnumerable <HtmlNode> nodes)
        {
            List <HtmlNode> newNodes = new List <HtmlNode>();

            newNodes.AddRange(nodes);

            while (newNodes.Count != 0)
            {
                List <HtmlNode> actNodes = newNodes;
                newNodes = new List <HtmlNode>();
                foreach (HtmlNode n in actNodes)
                {
                    if (n.NodeType == HtmlNodeType.Element)
                    {
                        String nl = n.Name.ToLower();
                        if (counterDictionary.ContainsKey(nl))
                        {
                            counterDictionary[nl].ScoreUp(nl);
                            if (!DistinctTags.Contains(nl))
                            {
                                DistinctTags.Add(nl);
                            }
                        }
                        else
                        {
                            UnknownTags.Score++;
                            if (!DistinctUnknownTags.Contains(nl))
                            {
                                DistinctUnknownTags.Add(nl);
                            }
                        }

                        newNodes.AddRange(n.ChildNodes);
                    }
                }
            }
        }