public TBuilder FilterWith <TFilter, TBaseRequest, TBaseEntity>()
            where TBaseEntity : class
            where TFilter : IFilter <TBaseRequest, TBaseEntity>
        {
            if (!typeof(TBaseRequest).IsAssignableFrom(typeof(TRequest)))
            {
                throw new ContravarianceException(nameof(FilterWith), typeof(TBaseRequest), typeof(TRequest));
            }

            if (!typeof(TBaseEntity).IsAssignableFrom(typeof(TEntity)))
            {
                throw new ContravarianceException(nameof(FilterWith), typeof(TBaseEntity), typeof(TEntity));
            }

            return(AddRequestFilter(TypeFilterFactory.From <TFilter, TBaseRequest, TBaseEntity>()));
        }