reactor-core/src/main/java/reactor/core/publisher/Flux.java
@SuppressWarnings("unchecked")
	static <I> Flux<I> wrap(Publisher<? extends I> source){
		if(source instanceof Mono){
			if(source instanceof Fuseable){
				return new FluxSourceMonoFuseable<>((Mono<I>)source);
			}
			return new FluxSourceMono<>((Mono<I>)source);
		}
		if(source instanceof Fuseable){
			return new FluxSourceFuseable<>(source);
		}
		return new FluxSource<>(source);
	}
@SuppressWarnings("unchecked")
	static <I> Flux<I> wrap(Publisher<? extends I> source){
		if(source instanceof Mono){
			if(source instanceof Fuseable){
				return new FluxSourceMonoFuseable<>((Mono<I>)source);
			}
			return new FluxSourceMono<>((Mono<I>)source);
		}
		if(source instanceof Fuseable){
			return new FluxSourceFuseable<>(source);
		}
		return new FluxSource<>(source);
	}
Unchecked wrap of {@link Publisher} as {@link Flux}, supporting {@link Fuseable} sources

@param source the {@link Publisher} to wrap
@param <I> input upstream type
@return a wrapped {@link Flux}