FluxMerge<T> mergeAdditionalSource(Publisher<? extends T> source, IntFunction<Supplier<? extends Queue<T>>> newQueueSupplier) {
		int n = sources.length;
		@SuppressWarnings("unchecked")
		Publisher<? extends T>[] newArray = new Publisher[n + 1];
		System.arraycopy(sources, 0, newArray, 0, n);
		newArray[n] = source;
		
		// increase the maxConcurrency because if merged separately, it would have run concurrently anyway
		Supplier<? extends Queue<T>> newMainQueue;
		int mc = maxConcurrency;
		if (mc != Integer.MAX_VALUE) {
			mc++;
			newMainQueue = newQueueSupplier.apply(mc);
		} else {
			newMainQueue = mainQueueSupplier;
		}
		
		return new FluxMerge<>(newArray, delayError, mc, newMainQueue, prefetch, innerQueueSupplier);
	}
FluxMerge<T> mergeAdditionalSource(Publisher<? extends T> source, IntFunction<Supplier<? extends Queue<T>>> newQueueSupplier) {
		int n = sources.length;
		@SuppressWarnings("unchecked")
		Publisher<? extends T>[] newArray = new Publisher[n + 1];
		System.arraycopy(sources, 0, newArray, 0, n);
		newArray[n] = source;
		
		
		Supplier<? extends Queue<T>> newMainQueue;
		int mc = maxConcurrency;
		if (mc != Integer.MAX_VALUE) {
			mc++;
			newMainQueue = newQueueSupplier.apply(mc);
		} else {
			newMainQueue = mainQueueSupplier;
		}
		
		return new FluxMerge<>(newArray, delayError, mc, newMainQueue, prefetch, innerQueueSupplier);
	}
FluxMerge < T > mergeAdditionalSource ( Publisher < ? extends T > source , IntFunction < Supplier < ? extends Queue < T > > > newQueueSupplier ) { int n = sources . length ; @ SuppressWarnings ( "unchecked" ) Publisher < ? extends T > [ ] newArray = new Publisher [ n + 1 ] ; System . arraycopy ( sources , 0 , newArray , 0 , n ) ; newArray [ n ] = source ; // increase the maxConcurrency because if merged separately, it would have run concurrently anyway Supplier < ? extends Queue < T > > newMainQueue ; int mc = maxConcurrency ; if ( mc != Integer . MAX_VALUE ) { mc ++ ; newMainQueue = newQueueSupplier . apply ( mc ) ; } else { newMainQueue = mainQueueSupplier ; } return new FluxMerge <> ( newArray , delayError , mc , newMainQueue , prefetch , innerQueueSupplier ) ; }
Returns a new instance which has the additional source to be merged together with
the current array of sources.
<p>
This operation doesn't change the current FluxMerge instance.

@param source the new source to merge with the others
@param newQueueSupplier a function that should return a new queue supplier based on the change in the maxConcurrency value
@return the new FluxMerge instance
Returns a new instance which has the additional source to be merged together with the current array of sources . <p > This operation doesn t change the current FluxMerge instance .