|| timeline.isClosingAnyWorkedPeriod(timePoint) || timePoint
|| timeline.isClosingAndNotOpeningWorkedPeriod(timePoint) || timePoint
    private Duration calculateNotWorkedMealDuration(Timeline timeline, TimeOfDay beginLunch,            TimeOfDay endLunch, TimePoint firstClocking) {        Duration totalDuration = Duration.ZERO;        Interval scheduleMealBreak = getMeal().getMealBreak().toInterval(                new YearMonthDay().toDateTimeAtMidnight());        for (TimePoint timePoint : timeline.getTimePoints()) {            DateTime timePointDateTime = timePoint.getDateTime(new YearMonthDay());            if (scheduleMealBreak.contains(timePointDateTime)                    && (!timePoint.getTime().isEqual(beginLunch))                    && (timeline.isOpeningAndNotClosingWorkedPeriod(timePoint)                            || timeline.isClosingAnyWorkedPeriod(timePoint) || timePoint                            .isAtSameTime(firstClocking))) {                if (!timePoint.getTime().isAfter(beginLunch)) {                    totalDuration = totalDuration.plus(new Duration(scheduleMealBreak.getStart(),                            timePointDateTime));                } else if (!timePoint.getTime().isBefore(endLunch)) {                    totalDuration = totalDuration.plus(new Duration(timePointDateTime, scheduleMealBreak                            .getEnd()));                }            }        }        return totalDuration;    }