public function processConfiguration()
    {
        Debug::enterScope('config');
        Debug::enterScope('load');
        try {
            $zfiles = (array)$this->configLocator->locate($this->configFilename, null, false);
        } catch (\InvalidArgumentException $e) {
            $zfiles = array();
        }
        foreach ($zfiles as $file) {
            Debug::enterScope($file);
            $this->sourceFiles[] = $file;
            $this->loader->load($file);
            Debug::exitScope($file);
        }
        foreach ($this->loader->getPlugins() as $name => $file) {
            Debug::enterScope($file);
            $this->sourceFiles[] = $file;
            $this->loadPlugin($name, $file);
            Debug::exitScope($file);
        }
        Debug::exitScope('load');

        Debug::enterScope('process');
        $processor = new Processor();
        $ret = $processor->processConfiguration(
            new Configuration($this->plugins),
            $this->loader->getConfigs()
        );
        Debug::exitScope('process');
        Debug::exitScope('config');
        return $ret;
    }