docs: public Range<T> intersect(T lower, T upper) {
          if (lower == null)
              throw new IllegalArgumentException("lower must not be null");
  
          if (upper == null)
              throw new IllegalArgumentException("upper must not be null");
  
          int cmpLower = lower.compareTo(mLower);
          int cmpUpper = upper.compareTo(mUpper);
  
          if (cmpLower <= 0 && cmpUpper >= 0) {
              // [lower, upper] includes this
              return this;
          } else {
              return Range.create(
                      cmpLower <= 0 ? mLower : lower,
                      cmpUpper >= 0 ? mUpper : upper);
          }
      }