code: public Range intersectionWithTouch(Range other) {
          if (!intersectsWithOrTouches(other))
              return null;
  
          return new Range(Math.max(lower, other.lower), Math.min(upper, other.upper), reversed && other.reversed);
      }
docs: Returns intersection range with {@code other} range.
  
  @param other other range
  @return intersection range with {@code other} range or null if ranges not intersects