public static Element ReverseCopy(Element rootElement) { return new Element { Value = rootElement.Value, Elements = rootElement.Elements .Reverse() .Select(el => ReverseCopy(el)) .ToList() }; }