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