public function loadMenuByCode($menuCode)
    {
        $menu = $this->loadFromMemory($menuCode);
        if (!($menu instanceof MenuInterface)) {

            /**
             * Menu generation and caching block.
             */
            $key = $this->getCacheKey($menuCode);
            $menu = $this->loadFromCache($key);
            if (!($menu instanceof MenuInterface)) {
                $menu = $this->buildMenuFromRepository($menuCode);

                $this->applyMenuChangers(
                    $menu,
                    ElcodiMenuStages::BEFORE_CACHE
                );

                $this->saveToCache(
                    $key,
                    $menu
                );
            }

            $this->applyMenuChangers(
                $menu,
                ElcodiMenuStages::AFTER_CACHE
            );

            $this->saveToMemory($menu);
        }

        return $menu;
    }