@Override
		public int compareTo(End<T> that, Comparator<T> comparator) {
			if (that == Unbound.NEG_INF) {
				return 1;
			}
			if (that == Unbound.POS_INF) {
				return -1;
			}
			if (that instanceof Point<T> point) {
				int result = comparator.compare(this.val, point.val);
				if (result != 0) {
					return result;
				}
				result = this.epsilon.compareTo(point.epsilon);
				if (result != 0) {
					return result;
				}
				return 0;
			}
			throw new AssertionError();
		}
An endpoint representing a bound

@param val the value of the endpoint
@param epsilon determines whether the endpoint is included
@param <T> the type of values
Ghidra/Debug/ProposedUtils/src/main/java/generic/End.java