protected function fetchProviderItems($parameters)
    {
        if (isset($parameters['repository'])) {
            $provider = $this->container
                ->get('doctrine.orm.default_entity_manager')
                ->getRepository($parameters['repository']);
        } elseif (isset($parameters['service'])) {
            $provider = $this->container->get($parameters['service']);
        } else {
            throw new \InvalidArgumentException(
                sprintf('You should specify either "repository" or "service" for the provider.')
            );
        }

        $method = $parameters['method'];
        $arguments = isset($parameters['arguments']) ? $parameters['arguments'] : array();

        if (!method_exists($provider, $method)) {
            throw new \BadMethodCallException(
                sprintf('Class "%s" does not contain method "%s"', get_class($provider), $method)
            );
        }

        return call_user_func_array(array($provider, $method), $arguments);
    }