public ICollection <Tuple <int, int> > GetRanges(TextFormatInfo info) => new Tuple <int, int>[]
 {
 };
 public void SetRanges(TextFormatInfo info, ICollection <Tuple <int, int> > ranges)
 {
 }
 public IEnumerable <int> GetMarkerIndexes(TextFormatInfo info) => Enumerable.Empty <int>();
 public int GetCountMarkersBefore(TextFormatInfo info, int index) => 0;
 public abstract ICollection <Tuple <int, int> > GetRanges(TextFormatInfo info);
 public IEnumerable <int> GetMarkerIndexes(TextFormatInfo info) =>
 GetRanges(info)
 .SelectMany(r => new[] { r.Item1, r.Item2 });
 public int GetCountMarkersBefore(TextFormatInfo info, int index) =>
 GetRanges(info).Count(r => r.Item1 < index) + GetRanges(info).Count(r => r.Item2 < index);