private static bool TryFormatMediaRssGroup(MediaRssGroup groupToFormat, XNamespaceAliasSet namespaceAliases, ExtensionManifestDirectory extensionManifestDirectory, out XElement groupElement)
        {
            groupElement = default;

            if (groupToFormat == null)
            {
                return(false);
            }

            var childElements = new List <XElement>();

            // contents
            foreach (var contentToFormat in groupToFormat.Contents ?? Enumerable.Empty <MediaRssContent>())
            {
                if (TryFormatMediaRssContent(contentToFormat, namespaceAliases, extensionManifestDirectory, out var contentElement))
                {
                    childElements.Add(contentElement);
                }
            }

            // container
            if (TryFormatMediaRssContainer(groupToFormat, namespaceAliases, extensionManifestDirectory, out var containerChildElements))
            {
                foreach (var containerChildElement in containerChildElements)
                {
                    childElements.Add(containerChildElement);
                }
            }

            // extensions
            if (ExtensibleEntityFormatter.TryFormatXElementExtensions(groupToFormat, namespaceAliases, extensionManifestDirectory, out var extensionElements))
            {
                childElements.AddRange(extensionElements);
            }

            if (!childElements.Any())
            {
                return(false);
            }

            groupElement = new XElement(_media + "group", childElements);
            return(true);
        }
        private static bool TryParseMediaRssGroup(XElement groupElement, XNamespace ns, ExtensionManifestDirectory extensionManifestDirectory, out MediaRssGroup parsedGroup)
        {
            parsedGroup = null;

            if (groupElement == null)
            {
                return(false);
            }

            // contents
            foreach (var contentElement in groupElement.Elements(ns + "content"))
            {
                if (TryParseMediaRssContent(contentElement, ns, extensionManifestDirectory, out var parsedContent))
                {
                    parsedGroup = parsedGroup ?? new MediaRssGroup();
                    parsedGroup.Contents.Add(parsedContent);
                }
            }

            // container
            ParseMediaRssContainer(groupElement, ns, extensionManifestDirectory, ref parsedGroup);

            if (parsedGroup == null)
            {
                return(false);
            }

            // extensions
            ExtensibleEntityParser.ParseXElementExtensions(groupElement, extensionManifestDirectory, parsedGroup);

            return(true);
        }