//private SolutionItem(Package package, Project project) : this(package, project, true) {}

        private SolutionItem(Package package, Project project, bool recursive)
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            IncrementSettings = new SolutionItemIncrementSettings(this);

            Package = package ?? throw new ArgumentNullException(nameof(package));
            _item   = project ?? throw new ArgumentNullException(nameof(project));
            Name    = project.Name;

            Filename   = project.FileName;
            UniqueName = project.UniqueName;

            if (!string.IsNullOrEmpty(Filename) && string.IsNullOrEmpty(Path.GetExtension(Filename)))
            {
                Filename += Path.GetExtension(project.UniqueName);
            }

            if (string.IsNullOrEmpty(project.FullName))
            {
                ItemType = SolutionItemType.Folder;
                Icon     = IconReader.AddFolderIcon(FolderType.Closed).ToImageSource();
                if (recursive)
                {
                    FillSolutionTree(package, this, project.ProjectItems);
                }
            }
            else
            {
                ItemType = SolutionItemType.Project;
                Icon     = IconReader.AddFileIcon(Filename).ToImageSource();

                GetGlobalVariables();
            }
        }
        public SolutionItem(Package package, Solution solution, bool recursive)
        {
            if (package == null)
            {
                throw (new ArgumentNullException(nameof(package)));
            }

            if (solution == null)
            {
                throw (new ArgumentNullException(nameof(solution)));
            }

            IncrementSettings = new SolutionItemIncrementSettings(this);

            Package    = package;
            _item      = solution;
            ItemType   = SolutionItemType.Solution;
            Icon       = IconReader.AddFileIcon(solution.FileName).ToImageSource();
            Name       = Path.GetFileNameWithoutExtension(solution.FileName);
            Filename   = solution.FileName;
            UniqueName = Name;

            GetGlobalVariables();

            if (recursive)
            {
                FillSolutionTree(package, this, solution.Projects);
            }
        }