UndoSystem
UndoNode
Buffer
Line
This uses either a GapBuffer or PieceTable depending on the compilation.