Author: Tobias Nyholm (tobias.nyholm@gmail.com)
 /**
  * @param TaggableItemInterface $item
  *
  * @return $this
  */
 protected function saveTags(TaggableItemInterface $item)
 {
     $tags = $item->getTags();
     foreach ($tags as $tag) {
         $this->appendListItem($this->getTagKey($tag), $item->getKey());
     }
     return $this;
 }
 /**
  * @param TaggableItemInterface $item
  */
 private function addTags(TaggableItemInterface $item)
 {
     foreach ($this->tags as $tag) {
         $item->addTag($tag);
     }
 }
 /**
  * @param CacheItem|TaggableItemInterface $item
  * @return mixed
  */
 protected function decodeItem($item)
 {
     if ($item->isHit()) {
         return $item->get();
     }
     return null;
 }