docs: @Override
      public final <B> IO<B> zip(Applicative<Function<? super A, ? extends B>, IO<?>> appFn) {
          @SuppressWarnings("unchecked")
          IO<Object> source = (IO<Object>) this;
          @SuppressWarnings("unchecked")
          IO<Function<Object, Object>> zip = (IO<Function<Object, Object>>) (Object) appFn;
          return new Compose<>(source, a(zip));
      }