code: public IntervalCollection<T> minus(Collection<? extends ChronoInterval<T>> intervals) {
  
          if (this.isEmpty() || intervals.isEmpty()) {
              return this;
          }
  
          List<ChronoInterval<T>> parts = new ArrayList<>();
          List<ChronoInterval<T>> list = new ArrayList<>();
  
          for (ChronoInterval<T> i : intervals) {
              if (!i.isEmpty()) {
                  list.add(this.adjust(i));
              }
          }
  
          list.sort(this.getComparator());
          IntervalCollection<T> subtrahend = this.create(list);
  
          for (int i = 0, n = this.intervals.size(); i < n; i++) {
              ChronoInterval<T> minuend = this.intervals.get(i);
              IntervalCollection<T> diff = subtrahend.withComplement(minuend);
  
              if (!diff.isEmpty()) {
                  parts.addAll(diff.intervals);
              }
          }
  
          parts.sort(this.getComparator());
          return this.create(parts);
  
      }
docs: /*[deutsch]
  <p>Subtrahiert alle in den angegebenen Zeitintervallen enthaltenen
  Zeitpunkte von dieser Intervallmenge. </p>
  
  @param   intervals   collection of intervals to be subtracted
  @return  new interval collection containing all timepoints of
  this instance excluding those of given intervals
  @throws  IllegalArgumentException if given list contains a finite
  interval with open start which cannot be adjusted to one
  with closed start
  @since   3.35/4.30