public Duration calcRest() {
        Duration normal = super.calcRest();
        Duration split = restSplit();
        Duration reduced = restReduced();

        Duration min;

        if (split != null) {
            min = Utils.minDuration(normal, split);
        } else {
            min = normal;
        }

        if (reduced == null) {
            return min;
        }

        return Utils.minDuration(min, reduced);
    }