protected function getMenuItemsFromEvent(string $menuName, array $modules = [], $subject = null): MenuInterface
    {
        if (empty($subject)) {
            $subject = $this;
        }

        $event = new Event((string)EventName::GET_MENU_ITEMS(), $subject, [
            'name' => $menuName,
            'user' => $this->user,
            'fullBaseUrl' => $this->fullBaseUrl,
            'modules' => $modules
        ]);
        $this->getEventManager()->dispatch($event);

        return ($event->result instanceof MenuInterface) ? $event->result : new Menu();
    }