/// <summary>
        /// Adds the new project item to the project item collection.
        /// </summary>
        /// <param name="addToSelected">Whether or not the items should be added under the selected item.</param>
        /// <param name="projectItems">The project item to add.</param>
        public void AddNewProjectItems(Boolean addToSelected = true, params ProjectItem[] projectItems)
        {
            if (projectItems.IsNullOrEmpty())
            {
                return;
            }

            foreach (ProjectItem projectItem in projectItems)
            {
                if (ProjectRoot.HasNode(projectItem))
                {
                    return;
                }

                ProjectItem target = this.SelectedProjectItems?.FirstOrDefault();

                // Atempt to find the correct folder to place the new item into
                while (target != null && !(target is FolderItem))
                {
                    target = target.Parent as ProjectItem;
                }

                FolderItem targetFolder = target as FolderItem;

                if (target != null)
                {
                    targetFolder.AddChild(projectItem);
                }
                else
                {
                    this.ProjectRoot.AddChild(projectItem);
                }
            }

            this.NotifyObserversStructureChange();
        }