public void offerPermissionCheckEvent(CheckOrigin origin, VerboseCheckTarget checkTarget, QueryOptions checkQueryOptions, String permission, TristateResult result) {
        // don't bother even processing the check if there are no listeners registered
        if (!this.listening) {
            return;
        }

        long time = System.currentTimeMillis();
        Throwable trace = new Throwable();
        String thread = Thread.currentThread().getName();

        // add the check data to a queue to be processed later.
        this.queue.offer(new PermissionCheckEvent(origin, checkTarget, checkQueryOptions, time, trace, thread, permission, result));
    }
Offers permission check data to the handler, to be eventually passed onto listeners.

<p>The check data is added to a queue to be processed later, to avoid blocking
the main thread each time a permission check is made.</p>

@param origin the origin of the check
@param checkTarget the target of the permission check
@param checkQueryOptions the query options used for the check
@param permission the permission which was checked for
@param result the result of the permission check
common/src/main/java/me/lucko/luckperms/common/verbose/VerboseHandler.java