public static boolean genericIntersects(IIntervalsTimeDomain a, IIntervalsTimeDomain b) {
        // if boundary do not cross, they sure not intersect
        Interval aBounding = a.getBoundingInterval();
        Interval bBounding = b.getBoundingInterval();
        if (aBounding == null || bBounding == null) {
            return true;
        }
        
        if (!aBounding.intersects(bBounding)) {
            return false;
        }
        
        // if bounding interval intersects, test precisly
        IntervalsSet aIntervals = a.getIntervalsIn(aBounding);
        aIntervals.intersectWith(b.getIntervalsIn(bBounding));
        return !aIntervals.empty();
    }