public Range <T> CombineNarrow(Range <T> other)
        {
            var lo = Lo.CompareTo(other.Lo) >= 0 ? Lo : other.Lo;
            var hi = Hi.CompareTo(other.Hi) <= 0 ? Hi : other.Hi;

            return(new Range <T>(lo, hi));
        }
 public bool Contains(T value)
 {
     return(Lo.CompareTo(value) <= 0 && value.CompareTo(Hi) <= 0);
 }
 public bool Equals(Range <T> other)
 {
     return(Lo.CompareTo(other.Lo) == 0 && Hi.CompareTo(other.Hi) == 0);
 }