code: public Range merge(final Range otherRange) {
  		int newMin = Math.min(otherRange.min, min);
  		int newMax = Math.max(otherRange.max, max);
  		return new Range(newMin, newMax);
  	}
docs: Merges this range with the passed range. Returns a range object whose min and max values
  match the minimum or maximum of the two values, respectively. So the range returned contains
  this and the passed range in any case.
  
  @return a range object with [min(this.min,other.min), max(this.max, other.max)]