docs: @Override
      @SuppressWarnings("unchecked")
      public final <R2, App extends Applicative<?, App>, TravB extends Traversable<R2, Either<L, ?>>,
              AppB extends Applicative<R2, App>,
              AppTrav extends Applicative<TravB, App>> AppTrav traverse(Function<? super R, ? extends AppB> fn,
                                                                        Function<? super TravB, ? extends AppTrav> pure) {
          return (AppTrav) match(l -> pure.apply((TravB) left(l)), r -> fn.apply(r).fmap(Either::right));
      }