code: @CheckReturnValue
      @SchedulerSupport(SchedulerSupport.NONE)
      @SuppressWarnings({ "unchecked", "rawtypes" })
      public static <T> Observable<T> concat(ObservableSource<? extends SingleSource<? extends T>> sources) {
          ObjectHelper.requireNonNull(sources, "sources is null");
          return RxJavaPlugins.onAssembly(new ObservableConcatMap(sources, SingleInternalHelper.toObservable(), 2, ErrorMode.IMMEDIATE));
      }
docs: Concatenate the single values, in a non-overlapping fashion, of the SingleSources provided by
  an Observable sequence.
  <p>
  <img width="640" height="319" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/Single.concat.o.png" alt="">
  <dl>
  <dt><b>Scheduler:</b></dt>
  <dd>{@code concat} does not operate by default on a particular {@link Scheduler}.</dd>
  </dl>
  @param <T> the value type
  @param sources the ObservableSource of SingleSource instances
  @return the new Observable instance
  @since 2.0