public override async Task OnValidRequestAsync(Type underlyingType, StringValues clauses, ActionExecutingContext context, ActionExecutionDelegate next)
        {
            var executed = await next.Invoke();

            // FIXME:
            // "Note: If the collection is paginated the deltaLink will only be present on the final page but MUST reflect any changes to the data returned across all pages."

            if (executed.Result is ObjectResult result && !(result.Value is ProblemDetails))
            {
                var body = executed.GetResultBody(result, out var settable);

                if (settable)
                {
                    var deltaType = typeof(DeltaAnnotated <>).MakeGenericType(body.GetType());
                    var deltaLink = $"{context.HttpContext.Request.GetDisplayUrlNoQueryString()}/{_store.BuildDeltaLinkForQuery(underlyingType)}";

                    // FIXME: Instancing.CreateInstance will crash on DeltaAnnotated<> and Envelope<>,
                    //        so we have to use manual reflection until that is resolved
                    // var delta = Instancing.CreateInstance(typeof(DeltaAnnotated<>).MakeGenericType(deltaType), body, deltaLink);
                    var delta = Activator.CreateInstance(deltaType, body, deltaLink);

                    result.Value = delta;
                }
            }
        }