private function getMetaModelsPages(
        $config,
        $rootPage = null,
        $language = null
    ) {
        $metaModelsIdentifier = $config['pid'];
        $filterIdentifier     = $config['filter'];
        $presetParams         = StringUtil::deserialize($config['filterparams'], true);
        $renderSettingId      = $config['rendersetting'];

        // Get the MetaModels.
        $metaModels         = $this->getMetaModel($metaModelsIdentifier, false);
        $availableLanguages = $this->getLanguage($language, $metaModels);
        $currentLanguage    = $GLOBALS['TL_LANGUAGE'];

        foreach ($availableLanguages as $newLanguage) {
            // Change language.
            $GLOBALS['TL_LANGUAGE'] = $newLanguage;

            // Get the view.
            $view    = $this->getView($metaModelsIdentifier, $renderSettingId);
            $jumpTos = $view->get('jumpTo');

            // Set the filter.
            $processed = $this->setFilterParameters($filterIdentifier, $presetParams, array());

            // Create a new filter for the search.
            $filter        = $metaModels->getEmptyFilter();
            $filterSetting = $this->getFilterSettings($filterIdentifier);
            $filterSetting->addRules($filter, $processed);

            // Get all jumpTos.
            $newEntries = $this->getJumpTosFor($metaModels, $filter, $view, $rootPage);

            // Remove all empty page details.
            $this->removeEmptyDetailPages($jumpTos);

            // Reset language.
            $GLOBALS['TL_LANGUAGE'] = $currentLanguage;

            // Merge all results.
            $this->foundPages = array_merge($this->foundPages, $newEntries);
        }

        // Reset the language.
        $GLOBALS['TL_LANGUAGE'] = $currentLanguage;
    }