@Nullable
    @Contract(value = "null -> null; !null -> !null", pure = true)
    public static Comparator<Runnable> getTtlRunnableUnwrapComparator(@Nullable Comparator<Runnable> comparator) {
        if (comparator == null || isTtlRunnableUnwrapComparator(comparator)) return comparator;

        return new TtlUnwrapComparator<>(comparator);
    }
Wrapper of {@code Comparator<Runnable>} which unwrap {@link com.alibaba.ttl3.TtlRunnable} before compare,
aka {@code TtlRunnableUnwrapComparator}.
<p>
Prepared for {@code comparator} parameter of constructor
{@link PriorityBlockingQueue#PriorityBlockingQueue(int, Comparator)}.
<p>
{@link PriorityBlockingQueue} can be used by constructor
{@link ThreadPoolExecutor#ThreadPoolExecutor(int, int, long, TimeUnit, BlockingQueue)}.

@param comparator input comparator
@return wrapped comparator
@see ThreadPoolExecutor
@see ThreadPoolExecutor#ThreadPoolExecutor(int, int, long, TimeUnit, BlockingQueue)
@see PriorityBlockingQueue
@see PriorityBlockingQueue#PriorityBlockingQueue(int, Comparator)
ttl-core/src/main/java/com/alibaba/ttl3/executor/TtlExecutors.java