public override void HandleTextRemove(TextRemovedMessage message) {
            if (message.RemovedText == string.Empty) {
                if (IsCaretInbetweenTags(message.OldCaretPosition)) {
                    DecreaseFoldHeight(message.OldCaretPosition);
                } else {
                    MoveFoldsUp(message.NewCaretPosition);
                }
            } else {
                var positions = GetClosedFoldingInfos().ToDictionary(pair => pair.Key.Position, pair => pair.Value.Position);
                var removedKey = FoldingAlgorithm.DeleteFolds(message.RemovedText, message.NewCaretPosition, positions);

                if (removedKey == null) {
                    return;
                }

                DeleteFolds(removedKey, message.RemovedText);
            }

            RedrawFolds();
        }
 public abstract void HandleTextRemove(TextRemovedMessage message);
 public override void HandleTextRemove(TextRemovedMessage message) {}