docs: @Override
      @SuppressWarnings("unchecked")
      public <B, App extends Applicative<?, App>, TravB extends Traversable<B, LambdaIterable<?>>,
              AppB extends Applicative<B, App>,
              AppTrav extends Applicative<TravB, App>> AppTrav traverse(Function<? super A, ? extends AppB> fn,
                                                                        Function<? super TravB, ? extends AppTrav> pure) {
          return FoldRight.<A, AppTrav>foldRight(
                  (a, lglb) -> fn.apply(a)
                          .lazyZip(lglb.<Applicative<Function<? super B, ? extends TravB>, App>>fmap(appTrav -> appTrav
                                  .fmap(travB -> b -> (TravB) wrap(cons(b, ((LambdaIterable<B>) travB).unwrap())))))
                          .fmap(appTrav -> (AppTrav) appTrav),
                  lazy(pure.apply((TravB) empty())),
                  as
          ).value();
      }