// Demand creates a TextContainer if no tree is associated with this instance. // Otherwise returns the exisiting tree, and clears the tree's DeadPositionList. private TextContainer EnsureTextContainer() { TextContainer tree; TextPointer start; if (this.IsInTree) { tree = _textElementNode.GetTextTree(); tree.EmptyDeadPositionList(); } else { tree = new TextContainer(null, false /* plainTextOnly */); start = tree.Start; tree.BeginChange(); try { tree.InsertElementInternal(start, start, this); } finally { // No event will be raised, since we know there are no listeners yet! tree.EndChange(); } Invariant.Assert(this.IsInTree); } return tree; }