internal protected override void MouseHover(MarginMouseEventArgs args)
        {
            base.MouseHover(args);

            LineSegment lineSegment = null;

            if (args.LineSegment != null)
            {
                lineSegment = args.LineSegment;
                if (lineHover != lineSegment)
                {
                    lineHover = lineSegment;
                    editor.RedrawMargin(this);
                }
            }
            lineHover = lineSegment;
            bool found = false;

            foreach (FoldSegment segment in editor.Document.GetFoldingContaining(lineSegment))
            {
                if (segment.StartLine.Offset == lineSegment.Offset)
                {
                    found = true;
                    break;
                }
            }

            delayTimer.Stop();
            if (found)
            {
                foldings = editor.Document.GetFoldingContaining(lineSegment);
                if (editor.TextViewMargin.BackgroundRenderer == null)
                {
                    delayTimer.Start();
                }
                else
                {
                    DelayTimerElapsed(this, null);
                }
            }
            else
            {
                RemoveBackgroundRenderer();
            }
        }
 void HandleEditorDocumentFoldTreeUpdated(object sender, EventArgs e)
 {
     editor.RedrawMargin(this);
 }