docs: @SuppressWarnings("unchecked")
      public T overlap(final T otherInterval) {
          if (otherInterval == null) {
              return null;
          }
          if (otherInterval.isInfinite()) {
              return (T)this;
          }
          if (this.isInfinite()) {
              return otherInterval;
          }
          final Interval thisAsInterval = asInterval();
          final Interval otherAsInterval = otherInterval.asInterval();
          Interval overlap = thisAsInterval.overlap(otherAsInterval);
          if (overlap == null) {
              return null;
          }
          return newInterval(overlap);
      }