/**
  * @param $menuKey
  * @param $menuArr
  * @param $itemList
  */
 protected function addItem($menuKey, $menuArr, &$itemList)
 {
     if (!isset($menuArr['label']) || !isset($menuArr['url'])) {
         throw new \Exception('Menu item array element invalid for key: ' . $menuKey);
     }
     $menuArr['url'] = str_replace('#baseurl#', $this->base_url, $menuArr['url']);
     $item = new Item($menuKey, $menuArr['label'], $menuArr['url']);
     $children = new ItemList();
     $item->addChildren($children);
     if (isset($menuArr['icon'])) {
         $item->setIcon($menuArr['icon']);
     }
     if (isset($menuArr['permission'])) {
         $item->setIcon('permission');
     }
     if (isset($menuArr['children'])) {
         foreach ($menuArr['children'] as $childKey => $childArr) {
             $this->addItem($childKey, $childArr, $children);
         }
     }
     $itemList->addObject($menuKey, $item);
 }