/**
  *
  * @return \Gems_Tracker_Engine_TrackEngineInterface
  * @throws \Gems_Exception
  */
 protected function getTrackEngine()
 {
     if ($this->trackEngine instanceof \Gems_Tracker_Engine_TrackEngineInterface) {
         return $this->trackEngine;
     }
     $trackId = $this->_getIdParam();
     if (!$trackId) {
         throw new \Gems_Exception($this->_('Missing track identifier.'));
     }
     $menuSource = $this->menu->getParameterSource();
     $this->trackEngine = $this->loader->getTracker()->getTrackEngine($trackId);
     $this->trackEngine->applyToMenuSource($menuSource);
     $menuSource->setRequestId($trackId);
     // Tell the menu we're using track id as request id
     return $this->trackEngine;
 }