protected function mergeCacheInfo(array $cacheInfo1, array $cacheInfo2)
    {
        $maxAge = $cacheInfo1[self::MAX_AGE];

        if ($maxAge < 0 || (($cacheInfo2[self::MAX_AGE] < $maxAge)) && (-1 < $cacheInfo2[self::MAX_AGE])) {
            $maxAge = $cacheInfo2[self::MAX_AGE];
        }

        $isPublic = $cacheInfo1[self::IS_PUBLIC] && $cacheInfo2[self::IS_PUBLIC];

        return $this->formatCacheInfo($maxAge, $isPublic);
    }