@Override public final String toString() { return asRanges().toString(); } }
@Override public boolean contains(C value) { return rangeContaining(value) != null; }
@Override public void clear() { remove(Range.<C>all()); }
@Override public void removeAll(Iterable<Range<C>> ranges) { for (Range<C> range : ranges) { remove(range); } }
@Override public boolean enclosesAll(RangeSet<C> other) { for (Range<C> range : other.asRanges()) { if (!encloses(range)) { return false; } } return true; }
@Override public void addAll(RangeSet<C> other) { for (Range<C> range : other.asRanges()) { add(range); } }
@Override public boolean enclosesAll(RangeSet<C> other) { return enclosesAll(other.asRanges()); }
@Override public void addAll(RangeSet<C> other) { addAll(other.asRanges()); }
@Override public boolean intersects(Range<C> otherRange) { return !subRangeSet(otherRange).isEmpty(); }
@Override public void removeAll(RangeSet<C> other) { removeAll(other.asRanges()); }
@Override public boolean enclosesAll(RangeSet<C> other) { for (Range<C> range : other.asRanges()) { if (!encloses(range)) { return false; } } return true; }
@Override public void addAll(RangeSet<C> other) { for (Range<C> range : other.asRanges()) { add(range); } }
@Override public boolean enclosesAll(Iterable<Range<C>> ranges) { for (Range<C> range : ranges) { if (!encloses(range)) { return false; } } return true; }
@Override public void addAll(Iterable<Range<C>> ranges) { for (Range<C> range : ranges) { add(range); } }
@Override public boolean intersects(Range<C> otherRange) { return !subRangeSet(otherRange).isEmpty(); }
@Override public void removeAll(RangeSet<C> other) { removeAll(other.asRanges()); }
@Override public final int hashCode() { return asRanges().hashCode(); }
@Override public void clear() { remove(Range.<C>all()); }
@Override public boolean contains(C value) { return rangeContaining(value) != null; }
@Override public boolean enclosesAll(RangeSet<C> other) { for (Range<C> range : other.asRanges()) { if (!encloses(range)) { return false; } } return true; }