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

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

@param tasks                             task to be wrapped
@param releaseTtlValueReferenceAfterCall release TTL value reference after run, avoid memory leak even if {@link TtlRunnable} is referred.
@param idempotent                        is idempotent or not. {@code true} will cover up bugs! <b>DO NOT</b> set, only when you know why.
@return Wrapped {@link Callable}
ttl2-compatible/src/main/java/com/alibaba/ttl/TtlCallable.java