public static bool Contains <R, T>(this R range, IRangeEx <R, T> other) where R : IRangeEx <R, T>, ICloneable <R> { int r0 = range.SliceStart, o0 = other.SliceStart; return(r0 <= o0 && r0 + range.Count >= o0 + other.Count && object.Equals(range.InnerList, other.InnerList)); }
public static bool Overlaps <R, T>(this R range, IRangeEx <R, T> other) where R : IRangeEx <R, T>, ICloneable <R> { int r0 = range.SliceStart, r1 = r0 + range.Count; int o0 = other.SliceStart, o1 = o0 + other.Count; return(r1 > o0 && o1 > r0 && object.Equals(range.InnerList, other.InnerList)); }