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);