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