public static bool AnyPropertyGroupElementExists(this ProjectXElement projectXElement, out PropertyGroupXElement propertyGroupXElement)
        {
            var anyPropertyGroupElementExists = projectXElement.Value.HasElement(ProjectFileXmlElementName.PropertyGroup, out var xElement);

            propertyGroupXElement = anyPropertyGroupElementExists ? PropertyGroupXElement.New(xElement) : default;

            return(anyPropertyGroupElementExists);
        }
        /// <summary>
        /// The primary property group element makes use of the fact that the <see cref="ProjectFileXmlElementName.TargetFramework"/> property always exists.
        /// </summary>
        public static bool HasPrimaryPropertyGroupElement(this ProjectXElement projectXElement, out PropertyGroupXElement primaryPropertyGroupXElement)
        {
            var hasPrimaryPropertyGroupElement = projectXElement.HasPropertyGroupElementWithChildSingleOrDefault(ProjectFileXmlElementName.TargetFramework, out var propertyGroupElement);

            primaryPropertyGroupXElement = hasPrimaryPropertyGroupElement ? PropertyGroupXElement.New(propertyGroupElement) : default;

            return(hasPrimaryPropertyGroupElement);
        }
        public static PropertyGroupXElement AcquireFirstPropertyGroupXElement(this ProjectXElement projectXElement)
        {
            // Do any <PropertyGroup> elements exist?
            var anyPropertyGroupElementExists = projectXElement.AnyPropertyGroupElementExists(out var propertyGroupXElement);

            if (!anyPropertyGroupElementExists)
            {
                // No? Create and add a <PropertyGroup> element,
                var xElement = projectXElement.Value.AddElement(ProjectFileXmlElementName.PropertyGroup);

                propertyGroupXElement = PropertyGroupXElement.New(xElement);
            }

            return(propertyGroupXElement);
        }
        public static PropertyGroupXElement AsPropertyGroup(this XElement xElement)
        {
            var propertyGroup = new PropertyGroupXElement(xElement);

            return(propertyGroup);
        }