docs: @Override
      public <B> Lazy<B> flatMap(Function<? super A, ? extends Monad<B, Lazy<?>>> f) {
          @SuppressWarnings("unchecked") Lazy<Object> source = (Lazy<Object>) this;
          @SuppressWarnings({"unchecked", "RedundantCast"})
          Function<Object, Lazy<Object>> flatMap = (Function<Object, Lazy<Object>>) (Object) f;
          return new Compose<>(source, flatMap);
      }