/// <inheritdoc /> public override void Undo(DocumentEditorContext context) { var caret = (TextCaret)_handle.GetCaret(context); var block = caret.Block; // optimization; if it was originally a block of the same type, we can just deserialize // but leave it in-place if (block.DescriptorHandle == _originalDescriptor) { var originalBlock = block; originalBlock.DeserializeProperties(_originalProperties); } else { // otherwise we have to re-create it TextBlock original = (TextBlock)_originalDescriptor.CreateInstance(); original.DeserializeProperties(_originalProperties); Replace(context, caret.Block, original); } }