code: public Pair<RangeLong,RangeLong> removeIntersect(RangeLong o) {
  		if (o.max < min || o.min > max) // o is outside: no intersection
  			return new Pair<>(copy(), null);
  		if (o.min <= min) {
  			// nothing before
  			if (o.max >= max)
  				return new Pair<>(null, null); // o is fully overlapping this
  			return new Pair<>(null, new RangeLong(o.max + 1, max));
  		}
  		if (o.max >= max) {
  			// nothing after
  			return new Pair<>(new RangeLong(min, o.min - 1), null);
  		}
  		// in the middle
  		return new Pair<>(new RangeLong(min, o.min - 1), new RangeLong(o.max + 1, max));
  	}
docs: Remove the intersection between this range and the given range, and return the range before and the range after the intersection.