code: @CheckReturnValue
      @BackpressureSupport(BackpressureKind.FULL)
      @SchedulerSupport(SchedulerSupport.NONE)
      public final Flowable<T> defaultIfEmpty(T defaultItem) {
          ObjectHelper.requireNonNull(defaultItem, "item is null");
          return switchIfEmpty(just(defaultItem));
      }
docs: Returns a Flowable that emits the items emitted by the source Publisher or a specified default item
  if the source Publisher is empty.
  <p>
  <img width="640" height="305" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/defaultIfEmpty.png" alt="">
  <dl>
  <dt><b>Backpressure:</b></dt>
  <dd>If the source {@code Publisher} is empty, this operator is guaranteed to honor backpressure from downstream.
  If the source {@code Publisher} is non-empty, it is expected to honor backpressure as well; if the rule is violated,
  a {@code MissingBackpressureException} <em>may</em> get signaled somewhere downstream.
  </dd>
  <dt><b>Scheduler:</b></dt>
  <dd>{@code defaultIfEmpty} does not operate by default on a particular {@link Scheduler}.</dd>
  </dl>
  
  @param defaultItem
  the item to emit if the source Publisher emits no items
  @return a Flowable that emits either the specified default item if the source Publisher emits no
  items, or the items emitted by the source Publisher
  @see <a href="http://reactivex.io/documentation/operators/defaultifempty.html">ReactiveX operators documentation: DefaultIfEmpty</a>