/// <summary>
        /// This method moves all indices from index upward count lines
        /// (useful for deletion/insertion of text)
        /// </summary>
        void MoveIndices(object sender, LineManagerEventArgs e)
        {
            bool changed = false;

            OnBeforeChanged();
            for (int i = 0; i < bookmark.Count; ++i)
            {
                int mark = (int)bookmark[i];
                if (e.LinesMoved < 0 && mark == e.LineStart)
                {
                    bookmark.RemoveAt(i);
                    --i;
                    changed = true;
                }
                else if (mark > e.LineStart + 1 || (e.LinesMoved < 0 && mark > e.LineStart))
                {
                    changed     = true;
                    bookmark[i] = mark + e.LinesMoved;
                }
            }

            if (changed)
            {
                OnChanged();
            }
        }
 protected virtual void OnLineCountChanged(LineManagerEventArgs e)
 {
     if (LineCountChanged != null)
     {
         LineCountChanged(this, e);
     }
 }
		/// <summary>
		/// This method moves all indices from index upward count lines
		/// (useful for deletion/insertion of text)
		/// </summary>
		void MoveIndices(object sender,LineManagerEventArgs e)
		{
			bool changed = false;
			OnBeforeChanged();
			for (int i = 0; i < bookmark.Count; ++i) {
				int mark = (int)bookmark[i];
				if (e.LinesMoved < 0 && mark == e.LineStart) {
					bookmark.RemoveAt(i);
					--i;
					changed = true;
				} else if (mark > e.LineStart + 1 || (e.LinesMoved < 0 && mark > e.LineStart))  {
					changed = true;
					bookmark[i] = mark + e.LinesMoved;
				}
			}
			
			if (changed) {
				OnChanged();
			}
		}
		protected virtual void OnLineCountChanged(LineManagerEventArgs e)
		{
			if (LineCountChanged != null) {
				LineCountChanged(this, e);
			}
		}