code: public static <T> Function<Stream<Timed<T>>, Stream<Stream<Timed<T>>>> window(final int maxWindowSize, final Duration maxDuration,
              final LongSupplier startTime) {
          final Function<Stream<Timed<T>>, Stream<List<Timed<T>>>> mapper = window(maxWindowSize, maxDuration, startTime, Suppliers.<Timed<T>> ofList());
  
          return new Function<Stream<Timed<T>>, Stream<Stream<Timed<T>>>>() {
              @Override
              public Stream<Stream<Timed<T>>> apply(Stream<Timed<T>> t) {
                  return mapper.apply(t).map(new Function<List<Timed<T>>, Stream<Timed<T>>>() {
                      @Override
                      public Stream<Timed<T>> apply(List<Timed<T>> t) {
                          return Stream.of(t);
                      }
                  });
              }
          };
      }
docs: Split this stream by the specified duration.
  
  <pre>
  <code>
  Stream<Timed<MyObject>> s = ...;
  s.__(Fn.window(Duration.ofMinutes(3), () - System.currentTimeMillis()))...// Do your stuffs with Stream<Stream<Timed<T>>>;
  </code>
  </pre>
  
  @param maxWindowSize
  @param maxDuration
  @param startTime
  @return