code: 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);
  	}
docs: 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