code: public IntervalCollection<T> minus(ChronoInterval<T> interval) {
  
          if (this.isEmpty() || interval.isEmpty()) {
              return this;
          }
  
          ChronoInterval<T> minuend = this.intervals.get(0);
          ChronoInterval<T> iv = this.adjust(interval);
  
          if (
              !minuend.getStart().isInfinite()
              && iv.isBefore(minuend.getStart().getTemporal())
          ) {
              return this;
          }
  
          List<ChronoInterval<T>> parts = new ArrayList<>();
          IntervalCollection<T> subtrahend = this.create(Collections.singletonList(iv));
          IntervalCollection<T> diff = subtrahend.withComplement(minuend);
  
          if (!diff.isEmpty()) {
              parts.addAll(diff.intervals);
          }
  
          for (int i = 1, n = this.intervals.size(); i < n; i++) {
              minuend = this.intervals.get(i);
  
              if (
                  !minuend.getStart().isInfinite()
                  && iv.isBefore(minuend.getStart().getTemporal())
              ) {
                  parts.add(minuend);
                  for (int j = i + 1; j < n; j++) {
                      parts.add(this.intervals.get(j));
                  }
                  break; // short cut
              } else {
                  diff = subtrahend.withComplement(minuend);
                  if (!diff.isEmpty()) {
                      parts.addAll(diff.intervals);
                  }
              }
          }
  
          parts.sort(this.getComparator());
          return this.create(parts);
  
      }
docs: /*[deutsch]
  <p>Subtrahiert alle im angegebenen Zeitintervall enthaltenen
  Zeitpunkte von dieser Intervallmenge. </p>
  
  @param   interval    other interval to be subtracted from this
  @return  new interval collection containing all timepoints of
  this instance excluding those of given interval
  @throws  IllegalArgumentException if given interval is finite and has
  open start which cannot be adjusted to one with closed start
  @since   2.2