public boolean overlaps(Interval<T> interval) {
		if (interval == null)
			throw new NullPointerException("interval is null");

		return (this.contains(interval.min) && interval.contains(this.max))
				|| (this.contains(interval.max) && interval.contains(this.min))
				|| (interval.contains(this.min) && interval.contains(this.max))
				|| (this.contains(interval.min) && this.contains(interval.max))
				|| this.equals(interval);
	}