private function determineJumpToInformation()
    {
        // Get the right jumpto.
        $translated       = $this->metaModel->isTranslated();
        $desiredLanguage  = $this->metaModel->getActiveLanguage();
        $fallbackLanguage = $this->metaModel->getFallbackLanguage();
        $jumpToPageId     = '';
        $filterSettingId  = '';

        if (!isset($this->jumpToCache[$desiredLanguage . '.' . $fallbackLanguage])) {
            foreach ((array) $this->get('jumpTo') as $jumpTo) {
                $langCode = $jumpTo['langcode'];
                // If either desired language or fallback, keep the result.
                if (!$translated || ($langCode == $desiredLanguage) || ($langCode == $fallbackLanguage)) {
                    $jumpToPageId    = $jumpTo['value'];
                    $filterSettingId = $jumpTo['filter'];
                    // If the desired language, break.
                    // Otherwise try to get the desired one until all have been evaluated.
                    if ($desiredLanguage == $jumpTo['langcode']) {
                        break;
                    }
                }
            }

            $pageDetails   = $this->getPageDetails($jumpToPageId);
            $filterSetting = $filterSettingId
                ? $this->getFilterFactory()->createCollection($filterSettingId)
                : null;

            $this->jumpToCache[$desiredLanguage . '.' . $fallbackLanguage] = array(
                'page'          => $jumpToPageId,
                'pageDetails'   => $pageDetails,
                'filter'        => $filterSettingId,
                'filterSetting' => $filterSetting,
                // Mask out the "all languages" language key (See #687).
                'language'      => $pageDetails['language'],
                'label'         => $this->getJumpToLabel()
            );
        }

        return $this->jumpToCache[$desiredLanguage . '.' . $fallbackLanguage];
    }