code: public final Ix<T> doOnCompleted(Runnable action) {
          return new IxDoOn<T>(this, IxEmptyAction.instance1(), nullCheck(action, "action is null"));
      }
docs: Calls the given action after consumption of this sequence has completed, i.e., when
  hasNext() of this Ix.iterator() returns false.
  <p>
  The result's iterator() forwards calls to remove() to this' Iterator.
  @param action the action to call after the source sequence completes
  @return the new Ix instance
  @throws NullPointerException if action is null
  @since 1.0