@SuppressWarnings("unchecked")
    @Override
    public <ReqT, RespT> Listener<ReqT> interceptCall(
            final ServerCall<ReqT, RespT> call,
            final Metadata headers,
            final ServerCallHandler<ReqT, RespT> next) {

        final InterceptorStatusToken token;
        try {
            token = beforeInvocation(call);
        } catch (final AuthenticationException | AccessDeniedException e) {
            log.debug("Access denied");
            throw e;
        }
        log.debug("Access granted");
        final Listener<ReqT> result;
        try {
            result = next.startCall(call, headers);
        } finally {
            finallyInvocation(token);
        }
        return (Listener<ReqT>) afterInvocation(token, result);
    }
Creates a new AuthorizationCheckingServerInterceptor with the given {@link AccessDecisionManager} and
{@link GrpcSecurityMetadataSource}.

@param accessDecisionManager The access decision manager to use.
@param securityMetadataSource The security metadata source to use.
grpc-server-spring-boot-starter/src/main/java/net/devh/boot/grpc/server/security/interceptors/AuthorizationCheckingServerInterceptor.java