code: public final <R> Mono<R> publish(Function<? super Mono<T>, ? extends Mono<? extends
  			R>> transform) {
  		return onAssembly(new MonoPublishMulticast<>(this, transform));
  	}
docs: Share a {@link Mono} for the duration of a function that may transform it and
  consume it as many times as necessary without causing multiple subscriptions
  to the upstream.
  
  @param transform the transformation function
  @param <R> the output value type
  
  @return a new {@link Mono}