code: public static LocalDateRange of(LocalDate startInclusive, LocalDate endExclusive) {
          Objects.requireNonNull(startInclusive, "startInclusive");
          Objects.requireNonNull(endExclusive, "endExclusive");
          return new LocalDateRange(startInclusive, endExclusive);
      }
docs: Obtains a half-open range of dates, including the start and excluding the end.
  <p>
  The range includes the start date and excludes the end date, unless the end is {@code LocalDate.MAX}.
  The end date must be equal to or after the start date.
  This definition permits an empty range located at a specific date.
  <p>
  The constants {@code LocalDate.MIN} and {@code LocalDate.MAX} can be used
  to indicate an unbounded far-past or far-future.
  <p>
  The start inclusive date must not be {@code LocalDate.MAX} or {@code LocalDate.MAX.minusDays(1)}.
  The end inclusive date must not be {@code LocalDate.MIN} or {@code LocalDate.MIN.plusDays(1)}.
  No empty range can exist at {@code LocalDate.MIN} or {@code LocalDate.MAX}.
  
  @param startInclusive  the inclusive start date, not null
  @param endExclusive  the exclusive end date, not null
  @return the half-open range, not null
  @throws DateTimeException if the end is before the start,
  or the start date is {@code LocalDate.MAX} or {@code LocalDate.MAX.minusDays(1)},
  or the end date is {@code LocalDate.MIN} or {@code LocalDate.MIN.plusDays(1)}