@UnstableApi
    @SuppressWarnings("ReturnOfNull")
    default CompletionStage<AuthorizationStatus> authorizeAndSupplyHandlers(ServiceRequestContext ctx,
                                                                            @Nullable T data) {
        if (data == null) {
            return UnmodifiableFuture.completedFuture(AuthorizationStatus.of(false));
        }
        return authorize(ctx, data).thenApply(b -> {
            if (b == null) {
                return null;
            }
            return AuthorizationStatus.of(b);
        });
    }
Authorizes the given {@code data}.

@param ctx {@link ServiceRequestContext} of the request being authorized.
@param data an actual authorization data, like {@link HttpRequest}, token extracted from it or
    {@code null} if such authorization data is missing.
@return a {@link CompletionStage} that will resolve to {@link AuthorizationStatus}. If the future
    resolves exceptionally, the request will not be authorized.
core/src/main/java/com/linecorp/armeria/server/auth/Authorizer.java