code: public Stream<LocalDate> stream() {
          long count = end.toEpochDay() - start.toEpochDay() + (isUnboundedEnd() ? 1 : 0);
          Spliterator<LocalDate> spliterator = new Spliterators.AbstractSpliterator<LocalDate>(
                  count,
                  Spliterator.IMMUTABLE | Spliterator.NONNULL | Spliterator.DISTINCT | Spliterator.ORDERED |
                          Spliterator.SORTED | Spliterator.SIZED | Spliterator.SUBSIZED) {
  
              private LocalDate current = start;
              
              @Override
              public boolean tryAdvance(Consumer<? super LocalDate> action) {
                  if (current != null) {
                      if (current.isBefore(end)) {
                          action.accept(current);
                          current = current.plusDays(1);
                          return true;
                      }
                      if (current.equals(LocalDate.MAX)) {
                          action.accept(LocalDate.MAX);
                          current = null;
                          return true;
                      }
                  }
                  return false;
              }
              
              @Override
              public Comparator<? super LocalDate> getComparator() {
                  return null;
              }
          };
          return StreamSupport.stream(spliterator, false);
      }
docs: Streams the set of dates included in the range.
  <p>
  This returns a stream consisting of each date in the range.
  The stream is ordered.
  
  @return the stream of dates from the start to the end