public function build(array $filterConfigurations)
    {
        $resolver = new OptionsResolver();
        $filters = [];

        foreach ($filterConfigurations as $filterName => $filterConfiguration) {
            $resolver->clear();

            if ($filterConfiguration === null) {
                $filterConfiguration = [];
            }
            $configuration = $this->getFilterConfiguration($filterName);
            $configuration->configureOptions($resolver);
            $configuration->setParameters($resolver->resolve($filterConfiguration));

            $class = $this->mapping[$filterName];

            /** @var FilterInterface $filter */
            $filter = new $class(
                // filter's name
                $filterName,
                // filter's configuration
                $configuration,
                // event dispatcher
                $this->eventDispatcher
            );
            $filter->checkRequirements();

            $filters[$filterName] = $filter;
        }

        return $filters;
    }