docs: @Override
      @SuppressWarnings("unchecked")
      public <I, App extends Applicative<?, App>, TravB extends Traversable<I, Choice8<A, B, C, D, E, F, G, ?>>,
              AppB extends Applicative<I, App>,
              AppTrav extends Applicative<TravB, App>> AppTrav traverse(Function<? super H, ? extends AppB> fn,
                                                                        Function<? super TravB, ? extends AppTrav> pure) {
          return match(a -> pure.apply((TravB) Choice8.<A, B, C, D, E, F, G, I>a(a)).coerce(),
                       b -> pure.apply((TravB) Choice8.<A, B, C, D, E, F, G, I>b(b)).coerce(),
                       c -> pure.apply((TravB) Choice8.<A, B, C, D, E, F, G, I>c(c)),
                       d -> pure.apply((TravB) Choice8.<A, B, C, D, E, F, G, I>d(d)),
                       e -> pure.apply((TravB) Choice8.<A, B, C, D, E, F, G, I>e(e)),
                       f -> pure.apply((TravB) Choice8.<A, B, C, D, E, F, G, I>f(f)),
                       g -> pure.apply((TravB) Choice8.<A, B, C, D, E, F, G, I>g(g)),
                       h -> fn.apply(h).<Choice8<A, B, C, D, E, F, G, I>>fmap(Choice8::h)
                               .<TravB>fmap(Applicative::coerce).coerce());
      }