private List <Node> FindNodesToAdd(List <Host> hosts)
        {
            List <Node> list = new List <Node>(hosts.Count);

            foreach (Host host in hosts)
            {
                try
                {
                    NodeValidator nv   = new NodeValidator(this, host);
                    Node          node = FindNode(nv.name, list);

                    if (node != null)
                    {
                        // Duplicate node name found.  This usually occurs when the server
                        // services list contains both internal and external IP addresses
                        // for the same node.  Add new host to list of alias filters
                        // and do not add new node.
                        node.referenceCount++;
                        node.AddAlias(host);
                        aliases[host] = node;
                        continue;
                    }
                    node = CreateNode(nv);
                    list.Add(node);
                }
                catch (Exception e)
                {
                    if (Log.WarnEnabled())
                    {
                        Log.Warn("Add node " + host + " failed: " + Util.GetErrorMessage(e));
                    }
                }
            }
            return(list);
        }