code: public IntervalCollection<T> intersect(IntervalCollection<T> other) {
  
          if (this.isEmpty() || other.isEmpty()) {
              List<ChronoInterval<T>> zero = Collections.emptyList();
              return this.create(zero);
          }
  
          List<ChronoInterval<T>> list = new ArrayList<>();
  
          for (ChronoInterval<T> a : this.intervals) {
              for (ChronoInterval<T> b : other.intervals) {
                  List<ChronoInterval<T>> candidates = new ArrayList<>(2);
                  candidates.add(a);
                  candidates.add(b);
                  candidates.sort(this.getComparator());
                  candidates = this.intersect(candidates);
                  if (!candidates.isEmpty()) {
                      list.addAll(candidates);
                  }
              }
          }
  
          list.sort(this.getComparator());
          return this.create(list).withBlocks();
  
      }
docs: /*[deutsch]
  <p>Ermittelt die gemeinsame Schnittmenge. </p>
  
  @param   other       another interval collection
  @return  new interval collection with disjunct blocks containing all time points in both interval collections
  @since   3.8/4.5