public SubtypeEffectHandlerBuilder addTransformer()

in mobius-rx/src/main/java/com/spotify/mobius/rx/RxMobius.java [308:338]


    public <G extends F> SubtypeEffectHandlerBuilder<F, E> addTransformer(
        final Class<G> effectClass, final Transformer<G, E> effectHandler) {
      //noinspection ResultOfMethodCallIgnored
      checkNotNull(effectClass);
      //noinspection ResultOfMethodCallIgnored
      checkNotNull(effectHandler);

      for (Class<?> cls : effectPerformerMap.keySet()) {
        if (cls.isAssignableFrom(effectClass) || effectClass.isAssignableFrom(cls)) {
          throw new IllegalArgumentException(
              "Effect classes may not be assignable to each other, collision found: "
                  + effectClass.getSimpleName()
                  + " <-> "
                  + cls.getSimpleName());
        }
      }

      effectPerformerMap.put(
          effectClass,
          new Transformer<F, E>() {
            @Override
            public Observable<E> call(Observable<F> effects) {
              return effects
                  .ofType(effectClass)
                  .compose(effectHandler)
                  .doOnError(onErrorFunction.call(effectHandler));
            }
          });

      return this;
    }