public List<I> findIntersections(ChronoInterval<T> interval) {

        // trivial case
        if (interval.isEmpty()) {
            return Collections.emptyList();
        }

        // make search interval half-open
        T low = interval.getStart().getTemporal();
        T high = interval.getEnd().getTemporal();

        if ((low != null) && interval.getStart().isOpen()) {
            low = this.timeLine.stepForward(low);
        }

        if ((high != null) && interval.getEnd().isClosed()) {
            high = this.timeLine.stepForward(high);
        }

        // collect recursively
        List<I> found = new ArrayList<>();
        findIntersections(low, high, this.root, found);
        return Collections.unmodifiableList(found);

    }
public List < I > findIntersections ( ChronoInterval < T > interval ) { if ( interval . isEmpty ( ) ) { return Collections . emptyList ( ) ; } T low = interval . getStart ( ) . getTemporal ( ) ; T high = interval . getEnd ( ) . getTemporal ( ) ; if ( ( low != null ) && interval . getStart ( ) . isOpen ( ) ) { low = this . timeLine . stepForward ( low ) ; } if ( ( high != null ) && interval . getEnd ( ) . isClosed ( ) ) { high = this . timeLine . stepForward ( high ) ; } List < I > found = new ArrayList < > ( ) ; findIntersections ( low , high , this . root , found ) ; return Collections . unmodifiableList ( found ) ; }
/*[deutsch]
<p>Liefert eine Liste aller gespeicherten Intervalle, die sich mit dem angegebenen Suchintervall
&uuml;berschneiden. </p>

@param   interval    the search interval
@return  unmodifiable list of all stored intervals which intersect the search interval, maybe empty