code: @CheckReturnValue
      @SchedulerSupport(SchedulerSupport.CUSTOM)
      private Completable timeout0(long timeout, TimeUnit unit, Scheduler scheduler, CompletableSource other) {
          ObjectHelper.requireNonNull(unit, "unit is null");
          ObjectHelper.requireNonNull(scheduler, "scheduler is null");
          return RxJavaPlugins.onAssembly(new CompletableTimeout(this, timeout, unit, scheduler, other));
      }
docs: Returns a Completable that runs this Completable and optionally switches to the other Completable
  in case this Completable doesn't complete within the given time while "waiting" on
  the specified scheduler.
  <dl>
  <dt><b>Scheduler:</b></dt>
  <dd>You specify the {@link Scheduler} this operator runs on.</dd>
  </dl>
  @param timeout the timeout value
  @param unit the timeout unit
  @param scheduler the scheduler to use to wait for completion
  @param other the other Completable instance to switch to in case of a timeout,
  if null a TimeoutException is emitted instead
  @return the new Completable instance
  @throws NullPointerException if unit or scheduler