code: @CheckReturnValue
      @SchedulerSupport(SchedulerSupport.NONE)
      public final <R> Maybe<R> flatMap(
              Function<? super T, ? extends MaybeSource<? extends R>> onSuccessMapper,
              Function<? super Throwable, ? extends MaybeSource<? extends R>> onErrorMapper,
              Callable<? extends MaybeSource<? extends R>> onCompleteSupplier) {
          ObjectHelper.requireNonNull(onSuccessMapper, "onSuccessMapper is null");
          ObjectHelper.requireNonNull(onErrorMapper, "onErrorMapper is null");
          ObjectHelper.requireNonNull(onCompleteSupplier, "onCompleteSupplier is null");
          return RxJavaPlugins.onAssembly(new MaybeFlatMapNotification<T, R>(this, onSuccessMapper, onErrorMapper, onCompleteSupplier));
      }
docs: Maps the onSuccess, onError or onComplete signals of this Maybe into MaybeSource and emits that
  MaybeSource's signals.
  <p>
  <img width="640" height="354" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/Maybe.flatMap.mmm.png" alt="">
  <dl>
  <dt><b>Scheduler:</b></dt>
  <dd>{@code flatMap} does not operate by default on a particular {@link Scheduler}.</dd>
  </dl>
  
  @param <R>
  the result type
  @param onSuccessMapper
  a function that returns a MaybeSource to merge for the onSuccess item emitted by this Maybe
  @param onErrorMapper
  a function that returns a MaybeSource to merge for an onError notification from this Maybe
  @param onCompleteSupplier
  a function that returns a MaybeSource to merge for an onComplete notification this Maybe
  @return the new Maybe instance
  @see <a href="http://reactivex.io/documentation/operators/flatmap.html">ReactiveX operators documentation: FlatMap</a>