private IEnumerable <T> EvaluateIterator <T>(XPathNodeIterator result) { IEnumerator enumerator = result.GetEnumerator(); while (enumerator.MoveNext()) { XPathNavigator current = (XPathNavigator)enumerator.Current; object underlyingObject = current.UnderlyingObject; if (!(underlyingObject is T)) { throw new InvalidOperationException(System.Xml.Linq.Res.GetString("InvalidOperation_UnexpectedEvaluation", new object[] { underlyingObject.GetType() })); } yield return((T)underlyingObject); XText next = underlyingObject as XText; if ((next != null) && (next.parent != null)) { while (next != next.parent.content) { next = next.next as XText; if (next != null) { yield return((T)next); } } } } }