code: public void intersect(Collection<? extends Range> ranges) {
  		Ranges targetRanges;
  		if (ranges instanceof Ranges) {
  			targetRanges = (Ranges) ranges;
  		} else {
  			targetRanges = new Ranges(ranges);
  		}
  
  		List<Range> newList = new ArrayList<>();
  		for (Iterator<? extends Range> iterator = this.ranges.iterator(); iterator.hasNext();) {
  			Range r = iterator.next();
  			List<Range> hasIntersections = getHasIntersections(targetRanges, r);
  			if (hasIntersections.isEmpty()) {
  				iterator.remove();
  			} else {
  				if (hasIntersections.size() == 1) {
  					Range target = hasIntersections.get(0);
  					if (r.equals(target)) {
  						continue;
  					}
  				}
  				iterator.remove();
  				for (Range rangeHasIntersection : hasIntersections) {
  					newList.add(rangeHasIntersection.intersection(r));
  				}
  			}
  		}
  		addAll(newList);
  	}
docs: 積集合部のみにする
  
  @param ranges Rangeコレクション