class Bundler::PubGrub::VersionUnion
def intersect(other)
def intersect(other) my_ranges = ranges.dup other_ranges = other.ranges.dup new_ranges = [] my_range = my_ranges.shift other_range = other_ranges.shift while my_range && other_range new_ranges << my_range.intersect(other_range) if !my_range.max || other_range.empty? || (other_range.max && other_range.max < my_range.max) other_range = other_ranges.shift else my_range = my_ranges.shift end end new_ranges.reject!(&:empty?) VersionUnion.union(new_ranges, normalize: false) end