code: private Interval1D<K> search(Node<K, V> x, Interval1D<K> interval) {
      while (x != null) {
        if (interval.intersects(x.interval)) {
          return x.interval;
        } else if (x.left == null) {
          x = x.right;
        } else if (x.left.max.compareTo(interval.lo) < 0) {
          x = x.right;
        } else {
          x = x.left;
        }
      }
      return null;
    }
docs: Look in subtree rooted at {@code x}.
  
  @param x the root where to start search
  @param interval the interval to search for
  @return null, if