code: public static <I> Mono<I> fromDirect(Publisher<? extends I> source){
  		if(source instanceof Mono){
  			@SuppressWarnings("unchecked")
  			Mono<I> m = (Mono<I>)source;
  			return m;
  		}
  		if(source instanceof Flux){
  			@SuppressWarnings("unchecked")
  			Flux<I> f = (Flux<I>)source;
  			if(source instanceof Fuseable){
  				return onAssembly(new MonoSourceFluxFuseable<>(f));
  			}
  			return onAssembly(new MonoSourceFlux<>(f));
  		}
  		if(source instanceof Fuseable){
  			return onAssembly(new MonoSourceFuseable<>(source));
  		}
  		return onAssembly(new MonoSource<>(source));
  	}
docs: Convert a {@link Publisher} to a {@link Mono} without any cardinality check
  (ie this method doesn't check if the source is already a Mono, nor cancels the
  source past the first element). Conversion supports {@link Fuseable} sources.
  Note this is an advanced interoperability operator that implies you know the
  {@link Publisher} you are converting follows the {@link Mono} semantics and only
  ever emits one element.
  
  @param source the Mono-compatible {@link Publisher} to wrap
  @param <I> type of the value emitted by the publisher
  @return a wrapped {@link Mono}