protected function getCacheItem(/*# string */ $key)/*# : CacheItemExtendedInterface */
    {
        // validate key first
        $this->validateKey($key);

        // try local cache
        if ($this->use_item_cache) {
            if (!isset($this->item_cache[$key[0]][$key])) {
                $this->item_cache[$key[0]][$key] = $this->createCacheItem($key);
            }
            return $this->item_cache[$key[0]][$key];
        } else {
            return $this->createCacheItem($key);
        }
    }