code: public static Stream<Moment> stream(
          MachineTime<?> duration,
          Moment start,
          Moment end
      ) {
  
          if (!duration.isPositive()) {
              throw new IllegalArgumentException("Duration must be positive: " + duration);
          }
  
          int comp = start.compareTo(end);
  
          if (comp > 0) {
              throw new IllegalArgumentException("Start after end: " + start + "/" + end);
          } else if (comp == 0) {
              return Stream.empty();
          } else if (duration.getScale() == TimeScale.UTC) {
              return streamUTC(cast(duration), start, end);
          } else {
              return streamPOSIX(cast(duration), start, end);
          }
  
      }
docs: /*[deutsch]
  <p>Erzeugt einen {@code Stream}, der jeweils einen Moment als Vielfaches der Dauer angewandt auf
  den Start und bis zum Ende geht. </p>
  
  <p>Diese statische Methode vermeidet die Kosten der Intervallerzeugung. Die Gr&ouml;&szlig;e des
  {@code Stream} ist maximal {@code Integer.MAX_VALUE - 1}, ansonsten wird eine {@code ArithmeticException}
  geworfen. </p>
  
  @param   duration    duration which has to be added to the start multiple times
  @param   start       start boundary - inclusive
  @param   end         end boundary - exclusive
  @throws  IllegalArgumentException if start is after end or if the duration is not positive
  @return  stream consisting of distinct moments which are the result of adding the duration to the start
  @since   4.35