// Token: 0x06003D0E RID: 15630 RVA: 0x0011B918 File Offset: 0x00119B18
        public override void DoCore()
        {
            base.VerifyTreeContentHashCode();
            TextPointer navigator = new TextPointer(base.TextContainer, base.SymbolOffset, LogicalDirection.Forward);

            for (TextTreeDeleteContentUndoUnit.ContentContainer contentContainer = this._content; contentContainer != null; contentContainer = contentContainer.NextContainer)
            {
                contentContainer.Do(navigator);
            }
        }
 // Token: 0x06003D15 RID: 15637 RVA: 0x0011BB88 File Offset: 0x00119D88
 private TextTreeNode CopyElementNode(TextTreeTextElementNode elementNode, out TextTreeDeleteContentUndoUnit.ContentContainer container)
 {
     if (elementNode.TextElement is Table)
     {
         container = new TextTreeDeleteContentUndoUnit.TableElementContentContainer(elementNode.TextElement as Table, TextTreeUndoUnit.GetPropertyRecordArray(elementNode.TextElement), this.CopyContent((TextTreeNode)elementNode.GetFirstContainedNode(), null));
     }
     else
     {
         container = new TextTreeDeleteContentUndoUnit.ElementContentContainer(elementNode.TextElement.GetType(), TextTreeUndoUnit.GetPropertyRecordArray(elementNode.TextElement), elementNode.TextElement.Resources, this.CopyContent((TextTreeNode)elementNode.GetFirstContainedNode(), null));
     }
     return((TextTreeNode)elementNode.GetNextNode());
 }
 private TextTreeNode CopyObjectNode(TextTreeObjectNode objectNode, out TextTreeDeleteContentUndoUnit.ContentContainer container)
 {
     if (SecurityHelper.CheckUnmanagedCodePermission())
     {
         string xml = XamlWriter.Save(objectNode.EmbeddedElement);
         container = new TextTreeDeleteContentUndoUnit.ObjectContentContainer(xml, objectNode.EmbeddedElement);
     }
     else
     {
         container = new TextTreeDeleteContentUndoUnit.ObjectContentContainer(null, null);
     }
     return((TextTreeNode)objectNode.GetNextNode());
 }
            // Token: 0x06008609 RID: 34313 RVA: 0x0024B804 File Offset: 0x00249A04
            internal override void Do(TextPointer navigator)
            {
                TextElement textElement = (TextElement)Activator.CreateInstance(this._elementType);

                textElement.Reposition(navigator, navigator);
                navigator.MoveToNextContextPosition(LogicalDirection.Backward);
                navigator.TextContainer.SetValues(navigator, TextTreeUndoUnit.ArrayToLocalValueEnumerator(this._localValues));
                textElement.Resources = this._resources;
                for (TextTreeDeleteContentUndoUnit.ContentContainer contentContainer = this._childContainer; contentContainer != null; contentContainer = contentContainer.NextContainer)
                {
                    contentContainer.Do(navigator);
                }
                navigator.MoveToNextContextPosition(LogicalDirection.Forward);
            }
 // Token: 0x06003D12 RID: 15634 RVA: 0x0011BA44 File Offset: 0x00119C44
 private TextTreeDeleteContentUndoUnit.ContentContainer CopyContent(TextTreeNode node, TextTreeNode haltNode)
 {
     TextTreeDeleteContentUndoUnit.ContentContainer result           = null;
     TextTreeDeleteContentUndoUnit.ContentContainer contentContainer = null;
     while (node != haltNode && node != null)
     {
         TextTreeTextNode textTreeTextNode = node as TextTreeTextNode;
         TextTreeDeleteContentUndoUnit.ContentContainer contentContainer2;
         if (textTreeTextNode != null)
         {
             node = this.CopyTextNode(textTreeTextNode, haltNode, out contentContainer2);
         }
         else
         {
             TextTreeObjectNode textTreeObjectNode = node as TextTreeObjectNode;
             if (textTreeObjectNode != null)
             {
                 node = this.CopyObjectNode(textTreeObjectNode, out contentContainer2);
             }
             else
             {
                 Invariant.Assert(node is TextTreeTextElementNode, "Unexpected TextTreeNode type!");
                 TextTreeTextElementNode elementNode = (TextTreeTextElementNode)node;
                 node = this.CopyElementNode(elementNode, out contentContainer2);
             }
         }
         if (contentContainer == null)
         {
             result = contentContainer2;
         }
         else
         {
             contentContainer.NextContainer = contentContainer2;
         }
         contentContainer = contentContainer2;
     }
     return(result);
 }
 // Token: 0x0600860A RID: 34314 RVA: 0x0024B877 File Offset: 0x00249A77
 internal TableElementContentContainer(Table table, PropertyRecord[] localValues, TextTreeDeleteContentUndoUnit.ContentContainer childContainer) : base(table.GetType(), localValues, table.Resources, childContainer)
 {
     this._cpTable = table.TextContainer.Start.GetOffsetToPosition(table.ContentStart);
     this._columns = TextTreeDeleteContentUndoUnit.SaveColumns(table);
 }
 // Token: 0x06008608 RID: 34312 RVA: 0x0024B7DC File Offset: 0x002499DC
 internal ElementContentContainer(Type elementType, PropertyRecord[] localValues, ResourceDictionary resources, TextTreeDeleteContentUndoUnit.ContentContainer childContainer)
 {
     this._elementType    = elementType;
     this._localValues    = localValues;
     this._childContainer = childContainer;
     this._resources      = resources;
 }
        // Token: 0x06003D13 RID: 15635 RVA: 0x0011BAC8 File Offset: 0x00119CC8
        private TextTreeNode CopyTextNode(TextTreeTextNode textNode, TextTreeNode haltNode, out TextTreeDeleteContentUndoUnit.ContentContainer container)
        {
            Invariant.Assert(textNode != haltNode, "Expect at least one node to copy!");
            int           symbolOffset = textNode.GetSymbolOffset(base.TextContainer.Generation);
            int           num          = 0;
            SplayTreeNode nextNode;

            do
            {
                num     += textNode.SymbolCount;
                nextNode = textNode.GetNextNode();
                textNode = (nextNode as TextTreeTextNode);
            }while (textNode != null && textNode != haltNode);
            char[] array = new char[num];
            TextTreeText.ReadText(base.TextContainer.RootTextBlock, symbolOffset, num, array, 0);
            container = new TextTreeDeleteContentUndoUnit.TextContentContainer(array);
            return((TextTreeNode)nextNode);
        }