private static object TryGetElementsOrValue(IEnumerable<XElement> requestedElements) { if (requestedElements.HasPluralElements()) { if (DynamicXmlExtensions.ContainsValueOnly((XElement) requestedElements.First())) return requestedElements.Select(e => e.Value); return new DynamicXmlReader(requestedElements); } if (requestedElements.HasSingleElement()) { var element = requestedElements.Single(); if (element.ContainsValueOnly()) return element.Value; return new DynamicXmlReader(element, true); } return null; }