internal bool NextInitialTextLikeNodes(out string value) { Debug.Assert(CurrentNode != null); Debug.Assert(CurrentNode.NodeType == XmlNodeType.Element); #if DEBUG // It's not OK to try to read the initial text value for sub-regions, because we do not know how to revert their initial state if (CurrentNode.NodeType == XmlNodeType.Element && DataSetMapper.GetTableSchemaForElement((XmlElement)(CurrentNode)) != null) { if (CurrentNode != _rowElement) { Debug.Fail("Reading the initial text value for sub-regions."); } } #endif ElementState oldState = _rowElement.ElementState; // We do not want to cause any foliation w/ this iterator or use this iterator once the region was defoliated Debug.Assert(oldState != ElementState.None); XmlNode?n = CurrentNode.FirstChild; value = GetInitialTextFromNodes(ref n); if (n == null) { // If we have been defoliated, we should have stayed that way Debug.Assert((oldState == ElementState.Defoliated) ? (_rowElement.ElementState == ElementState.Defoliated) : true); // Rollback eventual foliation _rowElement.ElementState = oldState; return(NextRight()); } Debug.Assert(!XmlDataDocument.IsTextLikeNode(n)); _currentNode = n; // If we have been defoliated, we should have stayed that way Debug.Assert((oldState == ElementState.Defoliated) ? (_rowElement.ElementState == ElementState.Defoliated) : true); // Rollback eventual foliation _rowElement.ElementState = oldState; return(true); }