protected override void OnComplete(
            IConventionContext context,
            FilterProviderDefinition definition)
        {
            if (definition.Handlers.Count == 0)
            {
                throw FilterProvider_NoHandlersConfigured(this);
            }

            IServiceProvider services = new DictionaryServiceProvider(
                (typeof(IFilterProvider), this),
                (typeof(IConventionContext), context),
                (typeof(IDescriptorContext), context.DescriptorContext),
                (typeof(ITypeInspector), context.DescriptorContext.TypeInspector))
                                        .Include(context.Services);

            foreach ((Type Type, IFilterFieldHandler? Instance)handler in definition.Handlers)
            {
                switch (handler.Instance)
                {
                case null when services.TryGetOrCreateService(
                        handler.Type,
                        out IFilterFieldHandler <TContext>?service):
                    _fieldHandlers.Add(service);

                    break;

                case null:
                    context.ReportError(
                        FilterProvider_UnableToCreateFieldHandler(this, handler.Type));
                    break;

                case IFilterFieldHandler <TContext> casted:
                    _fieldHandlers.Add(casted);
                    break;
                }
            }
        }