A complex textual edition can be described by a tree of TextEdits. An edit
can be applied to an IDocument by calling TextEdit.apply or by
using a TextEditProcessor. Applying a text edit can record a reverse edit
description that can be used to undo the edition.
ReplaceEditDeleteEditInsertEditRangeMarker
Other subclasses of TextEdit exist for specialized tasks. Use MultiTextEdit to
compose a complex edit tree, or subclass it to provide a custom edit.