public static QueryExecutionBuilder ConfigureInterceptors(this QueryExecutionBuilder builder, Action <QueryExecutionBuilder>?addQueryCacherInterceptors)
        {
            // order matters: the earlier an interceptor is registered, the earlier it runs during execution

            // query cacher interceptors should be as close to the caller as possible!
            addQueryCacherInterceptors?.Invoke(builder);

            builder.AddInterceptorFor <IQuery>((sp, next) => new QueryPerformanceLoggerInterceptor(next, sp.GetRequiredService <IGuidProvider>(), sp.GetRequiredService <ILogger <QueryPerformanceLoggerInterceptor> >()));

            builder.AddInterceptorFor <IQuery>((sp, next) => new QueryDataAnnotationsValidatorInterceptor(next));

            return(builder);
        }