code: public final Flux<Flux<T>> window(int maxSize, int skip) {
  		return onAssembly(new FluxWindow<>(this,
  				maxSize,
  				skip,
  				Queues.unbounded(Queues.XS_BUFFER_SIZE),
  				Queues.unbounded(Queues.XS_BUFFER_SIZE)));
  	}
docs: Split this {@link Flux} sequence into multiple {@link Flux} windows of size
  {@code maxSize}, that each open every {@code skip} elements in the source.
  
  <p>
  When maxSize < skip : dropping windows
  <p>
  <img class="marble" src="doc-files/marbles/windowWithMaxSizeLessThanSkipSize.svg" alt="">
  <p>
  When maxSize > skip : overlapping windows
  <p>
  <img class="marble" src="doc-files/marbles/windowWithMaxSizeGreaterThanSkipSize.svg" alt="">
  <p>
  When maxSize == skip : exact windows
  <p>
  <img class="marble" src="doc-files/marbles/windowWithMaxSizeEqualsSkipSize.svg" alt="">
  
  @reactor.discard The overlapping variant DOES NOT discard elements, as they might be part of another still valid window.
  The exact window and dropping window variants bot discard elements they internally queued for backpressure
  upon cancellation or error triggered by a data signal. The dropping window variant also discards elements in between windows.
  
  @param maxSize the maximum number of items to emit in the window before closing it
  @param skip the number of items to count before opening and emitting a new window
  
  @return a {@link Flux} of {@link Flux} windows based on element count and opened every skipCount