code: @CheckReturnValue
      @BackpressureSupport(BackpressureKind.UNBOUNDED_IN)
      @SchedulerSupport(SchedulerSupport.NONE)
      public final Single<T> elementAt(long index, T defaultItem) {
          if (index < 0) {
              throw new IndexOutOfBoundsException("index >= 0 required but it was " + index);
          }
          ObjectHelper.requireNonNull(defaultItem, "defaultItem is null");
          return RxJavaPlugins.onAssembly(new FlowableElementAtSingle<T>(this, index, defaultItem));
      }
docs: Returns a Flowable that emits the item found at a specified index in a sequence of emissions from
  this Flowable, or a default item if that index is out of range.
  <p>
  <img width="640" height="310" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/elementAtOrDefault.png" alt="">
  <dl>
  <dt><b>Backpressure:</b></dt>
  <dd>The operator honors backpressure from downstream and consumes the source {@code Publisher} in an unbounded manner
  (i.e., no backpressure applied to it).</dd>
  <dt><b>Scheduler:</b></dt>
  <dd>{@code elementAt} does not operate by default on a particular {@link Scheduler}.</dd>
  </dl>
  
  @param index
  the zero-based index of the item to retrieve
  @param defaultItem
  the default item
  @return a Flowable that emits the item at the specified position in the sequence emitted by the source
  Publisher, or the default item if that index is outside the bounds of the source sequence
  @throws IndexOutOfBoundsException
  if {@code index} is less than 0
  @see <a href="http://reactivex.io/documentation/operators/elementat.html">ReactiveX operators documentation: ElementAt</a>