code: @CheckReturnValue
      @SchedulerSupport(SchedulerSupport.NONE)
      @SuppressWarnings({ "unchecked", "rawtypes" })
      public static <T> Maybe<T> merge(MaybeSource<? extends MaybeSource<? extends T>> source) {
          ObjectHelper.requireNonNull(source, "source is null");
          return RxJavaPlugins.onAssembly(new MaybeFlatten(source, Functions.identity()));
      }
docs: Flattens a {@code MaybeSource} that emits a {@code MaybeSource} into a single {@code MaybeSource} that emits the item
  emitted by the nested {@code MaybeSource}, without any transformation.
  <p>
  <img width="640" height="393" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/Maybe.merge.oo.png" alt="">
  <dl>
  <dt><b>Scheduler:</b></dt>
  <dd>{@code merge} does not operate by default on a particular {@link Scheduler}.</dd>
  <dt><b>Error handling:</b></dt>
  <dd>The resulting {@code Maybe} emits the outer source's or the inner {@code MaybeSource}'s {@code Throwable} as is.
  Unlike the other {@code merge()} operators, this operator won't and can't produce a {@code CompositeException} because there is
  only one possibility for the outer or the inner {@code MaybeSource} to emit an {@code onError} signal.
  Therefore, there is no need for a {@code mergeDelayError(MaybeSource<MaybeSource<T>>)} operator.
  </dd>
  </dl>
  
  @param <T> the value type of the sources and the output
  @param source
  a {@code MaybeSource} that emits a {@code MaybeSource}
  @return a {@code Maybe} that emits the item that is the result of flattening the {@code MaybeSource} emitted
  by {@code source}
  @see <a href="http://reactivex.io/documentation/operators/merge.html">ReactiveX operators documentation: Merge</a>