code: @Override
  	public Date getMidpoint() {
  		if (isEmpty())
  			return null;
  		long start = getStart() == null ? new Date(Long.MIN_VALUE).getTime() : getStart().getTime();
  		long end = getEnd() == null ? new Date(Long.MAX_VALUE).getTime() : getEnd().getTime();
  
  		// If the calculation would return the start point and the start point
  		// is actually not in the interval, return the end point.
  		if (start+1 == end && !isStartInclusive())
  			return getEnd();
  
  		// Prevent an overflow
  		if (start <= 0 && end >= 0)
  			return new Date((end + start) / 2);
  
  		return new Date(start + (end-start)/2);
  	}
docs: Determines the center of the interval.
  <p>
  Similarly to the class {@link IntegerInterval}, it assumes that unbounded intervals
  are bounded by Dates with timestamps Long.MIN_VALUE and/or Long.MAX_VALUE. The center
  of an unbounded interval is computed accordingly.
  </p>
  
  @return The center of the interval.