code: public final <V> Flux<T> distinctUntilChanged(Function<? super T, ? extends V> keySelector,
  			BiPredicate<? super V, ? super V> keyComparator) {
  		return onAssembly(new FluxDistinctUntilChanged<>(this,
  				keySelector,
  				keyComparator));
  	}
docs: Filter out subsequent repetitions of an element (that is, if they arrive right
  after one another), as compared by a key extracted through the user provided {@link
  Function} and then comparing keys with the supplied {@link BiPredicate}.
  <p>
  <img class="marble" src="doc-files/marbles/distinctUntilChangedWithKey.svg" alt="">
  
  @reactor.discard This operator discards elements that are considered as "already seen"
  (for which the {@code keyComparator} returns {@literal true}). The keys themselves
  are not discarded.
  
  @param keySelector function to compute comparison key for each element
  @param keyComparator predicate used to compare keys.
  @param <V> the type of the key extracted from each value in this sequence
  
  @return a filtering {@link Flux} with only one occurrence in a row of each element
  of the same key for which the predicate returns true (yet element keys can repeat
  in the overall sequence)