/**
  * Insert menu
  *
  * @param Menu $menu menu instance
  * @return Menu
  */
 public function insert(Menu $menu)
 {
     $cnt = 0;
     while ($cnt++ < static::DUPLICATE_RETRY_CNT) {
         try {
             $menu->{$menu->getKeyName()} = $this->generateNewId();
             $menu->save();
             break;
         } catch (QueryException $e) {
             if ($e->getCode() != "23000") {
                 throw $e;
             }
         }
     }
     return $menu;
 }