public function parseCollection(BaseCollection &$collection)
 {
     $key = $collection->getUniqueKey();
     if (isset(self::$collectionCache[$key]) && !empty(self::$collectionCache[$key])) {
         return self::$collectionCache[$key];
     }
     if ($collection->isEmpty()) {
         return [];
     }
     \Debugbar::startMeasure('applyFilters', 'Применяем фильтры (' . count($collection->getFilters()) . ')');
     /** @var BaseCollectionFilter $filter */
     foreach ($collection->getFilters() as $filter) {
         $filter->execute($collection);
     }
     \Debugbar::stopMeasure('applyFilters');
     $result = [];
     \Debugbar::startMeasure('parseItems', 'Парсим предметы (' . $collection->size() . ')');
     foreach ($collection->toArray() as $itemInfo) {
         $item = $this->parseItem($itemInfo);
         $result[] = $item;
     }
     \Debugbar::stopMeasure('parseItems');
     self::$collectionCache[$key] = $result;
     return $result;
 }