@NonNull
    public static <T> List<TtlVertxHandler<T>> gets(@Nullable Collection<? extends Handler<T>> tasks, boolean releaseTtlValueReferenceAfterRun, boolean idempotent) {
        if (tasks == null) {
            return Collections.emptyList();
        }

        List<TtlVertxHandler<T>> copy = new ArrayList<>();
        for (Handler<T> task : tasks) {
            copy.add(TtlVertxHandler.get(task, releaseTtlValueReferenceAfterRun, idempotent));
        }
        return copy;
    }
wrap input {@link Handler} Collection to {@link TtlVertxHandler} Collection.

@param tasks                            task to be wrapped. if input is {@code null}, return {@code null}.
@param releaseTtlValueReferenceAfterRun release TTL value reference after run, avoid memory leak even if {@link TtlVertxHandler} is referred.
@param idempotent                       is idempotent mode or not. if {@code true}, just return input {@link Handler} when it's {@link TtlVertxHandler},
                                        otherwise throw {@link IllegalStateException}.
                                        <B><I>Caution</I></B>: {@code true} will cover up bugs! <b>DO NOT</b> set, only when you know why.
@return wrapped tasks
@throws IllegalStateException when input is {@link TtlVertxHandler} already and not idempotent.
ttl-integrations/vertx4-ttl-integration/src/main/java/com/alibaba/ttl/integration/vertx4/TtlVertxHandler.java