reactor-core/src/main/java/reactor/core/publisher/Flux.java
public final Mono<T> singleOrEmpty() {
	    if (this instanceof Callable) {
		    @SuppressWarnings("unchecked")
		    Callable<T> thiz = (Callable<T>)this;
	        return convertToMono(thiz);
	    }
		return Mono.onAssembly(new MonoSingle<>(this, null, true));
	}
public final Mono<T> singleOrEmpty() {
	    if (this instanceof Callable) {
		    @SuppressWarnings("unchecked")
		    Callable<T> thiz = (Callable<T>)this;
	        return convertToMono(thiz);
	    }
		return Mono.onAssembly(new MonoSingle<>(this, null, true));
	}
Expect and emit a single item from this {@link Flux} source, and accept an empty
source but signal an {@link IndexOutOfBoundsException} for a source with more than
one element.
<p>
<img class="marble" src="doc-files/marbles/singleOrEmpty.svg" alt="">

@return a {@link Mono} with the expected single item, no item or an error