mobius-rx2/src/main/java/com/spotify/mobius/rx2/Transformers.java [142:173]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                doEffect.accept(effect);
                              }
                            });
                    return scheduler == null ? completable : completable.subscribeOn(scheduler);
                  }
                })
            .toObservable();
      }
    };
  }

  /**
   * Creates an {@link ObservableTransformer} that will flatten the provided {@link Function} into
   * the stream as an {@link Observable} every time it receives an effect from the upstream effects
   * observable. This will result in calling the function on the specified scheduler, and passing it
   * the requested effect object then emitting its returned value.
   *
   * @param function the {@link Function} to be invoked every time the effect is requested
   * @param scheduler the {@link Scheduler} to be used when invoking the function
   * @param <F> the type of Effect this transformer handles
   * @param <E> the type of Event this transformer emits
   * @return an {@link ObservableTransformer} that can be used with a {@link
   *     SubtypeEffectHandlerBuilder}.
   */
  static <F, E> ObservableTransformer<F, E> fromFunction(
      final Function<F, E> function, @Nullable final Scheduler scheduler) {
    return new ObservableTransformer<F, E>() {
      @Override
      public ObservableSource<E> apply(Observable<F> effectStream) {
        return effectStream.flatMap(
            new Function<F, ObservableSource<E>>() {
              @Override
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



mobius-rx3/src/main/java/com/spotify/mobius/rx3/Transformers.java [138:169]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                doEffect.accept(effect);
                              }
                            });
                    return scheduler == null ? completable : completable.subscribeOn(scheduler);
                  }
                })
            .toObservable();
      }
    };
  }

  /**
   * Creates an {@link ObservableTransformer} that will flatten the provided {@link Function} into
   * the stream as an {@link Observable} every time it receives an effect from the upstream effects
   * observable. This will result in calling the function on the specified scheduler, and passing it
   * the requested effect object then emitting its returned value.
   *
   * @param function the {@link Function} to be invoked every time the effect is requested
   * @param scheduler the {@link Scheduler} to be used when invoking the function
   * @param <F> the type of Effect this transformer handles
   * @param <E> the type of Event this transformer emits
   * @return an {@link ObservableTransformer} that can be used with a {@link
   *     RxMobius.SubtypeEffectHandlerBuilder}.
   */
  static <F, E> ObservableTransformer<F, E> fromFunction(
      final Function<F, E> function, @Nullable final Scheduler scheduler) {
    return new ObservableTransformer<F, E>() {
      @Override
      public ObservableSource<E> apply(Observable<F> effectStream) {
        return effectStream.flatMap(
            new Function<F, ObservableSource<E>>() {
              @Override
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



