private LocalDate next(LocalDate date) {

    int newDayOfMonth = date.getDayOfMonth() + 1;
    if (newDayOfMonth <= date.getMonth().length(isIsoLeap(date.getYear()))) {
      return date.withDayOfMonth(newDayOfMonth);
    }
    date = date.withDayOfMonth(1);
    if (date.getMonth() == Month.DECEMBER) {
      date = date.withYear(date.getYear() + 1);
    }
    return date.with(date.getMonth().plus(1));
  }