/**
  * @param MenuItem $menu
  * @param array $options
  * @param int $depth
  */
 protected function prepareItems(MenuItem $menu, array $options = [], $depth = 1)
 {
     $menu->setChildrenAttribute('class', 'integrated-website-menu-list');
     if (1 === $depth) {
         $menu->setChildrenAttribute('data-json', json_encode($menu->toArray(false)));
     }
     /** @var MenuItem $child */
     foreach ($menu->getChildren() as $child) {
         $child->setAttributes(['class' => 'integrated-website-menu-item', 'data-action' => 'integrated-website-menu-item-edit', 'data-json' => json_encode($child->toArray(false))]);
         $this->prepareItems($child, $options, $depth + 1);
         // recursion
     }
     if (isset($options['depth']) && $depth <= (int) $options['depth']) {
         $uuid = $this->generator->generateV5($this->generator->generateV4(), uniqid(rand(), true));
         $child = $menu->addChild('+', ['uri' => '#', 'attributes' => ['class' => 'integrated-website-menu-item', 'data-action' => 'integrated-website-menu-item-add']]);
         $child->setId($uuid);
         $child->setAttribute('data-json', json_encode($child->toArray(false)));
     }
 }