protected override ReferenceNode CreateFileComponent(VSCOMPONENTSELECTORDATA selectorData, string _wrapperTool = null)
        {
            ReferenceNode node     = null;
            ReferenceNode existing = null;

            // To avoid the add of the Reference in the reference list
            // we will first check if it is already in there
            if (selectorData.bstrFile == null)
            {
                throw new ArgumentNullException("selectorData");
            }
            //
            if (selectorData.bstrFile[0] == '*')
            {
                selectorData.bstrFile = selectorData.bstrFile.Substring(1);
            }
            // We have a path to a file, it could be anything
            // First see if it is a managed assembly
            if (File.Exists(selectorData.bstrFile))
            {
                string assemblyPath = selectorData.bstrFile;
                System.Reflection.AssemblyName assemblyName = System.Reflection.AssemblyName.GetAssemblyName(assemblyPath);
                string caption = assemblyName.Name;
                if (isDuplicateNode(caption, ref existing))
                {
                    //
                    string existingUrl = existing.Url;
                    if (File.Exists(existingUrl))
                    {
                        return(existing);
                    }
                    // file does not exist so this new node is better
                    existing.Remove(false);
                }
            }
            //
            // Ok, try to create and add the reference
            node = base.CreateFileComponent(selectorData, _wrapperTool);
            if (isDuplicateNode(node, ref existing))
            {
                // The CreateFileComponent create and Add the project element
                // but as it is duplicated..Remove it !
                node.Remove(false);
                return(existing);
            }
            return(node);
        }