private static void AddContent(OpenXmlElement element, object content) { switch (content) { case null: { return; } case OpenXmlElement child: { if (child.Parent is not null) { child = child.CloneNode(true); } element.AppendChild(child); break; } case OpenXmlAttribute attribute: { element.SetAttribute(attribute); break; } case object[] array: { foreach (object o in array) { AddContent(element, o); } break; } case IEnumerable enumerable: { foreach (object o in enumerable) { AddContent(element, o); } break; } } }