//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();
            }
        }