code: @Override
      public <B> Lazy<Compose<F, G, B>> lazyZip(
              Lazy<? extends Applicative<Function<? super A, ? extends B>, Compose<F, G, ?>>> lazyAppFn) {
          @SuppressWarnings("RedundantTypeArguments")
          Lazy<Applicative<Applicative<Function<? super A, ? extends B>, G>, F>> lazyAppFnCoerced =
                  lazyAppFn
                          .<Compose<F, G, Function<? super A, ? extends B>>>fmap(
                                  Applicative<Function<? super A, ? extends B>, Compose<F, G, ?>>::coerce)
                          .fmap(Compose<F, G, Function<? super A, ? extends B>>::getCompose);
  
          return fga.<Applicative<A, G>>fmap(upcast())
                  .<Applicative<B, G>>lazyZip(lazyAppFnCoerced.fmap(fgf -> fgf.fmap(gf -> ga -> ga.zip(gf))))
                  .fmap(Compose::new);
      }
docs: {@inheritDoc}
  
  @param lazyAppFn