code: public function get($menu, array $path = array(), array $options = array())
      {
          if (!$menu instanceof ItemInterface) {
              if (null === $this->menuProvider) {
                  throw new \BadMethodCallException('A menu provider must be set to retrieve a menu');
              }
  
              $menuName = $menu;
              $menu = $this->menuProvider->get($menuName, $options);
  
              if (!$menu instanceof ItemInterface) {
                  throw new \LogicException(sprintf('The menu "%s" exists, but is not a valid menu item object. Check where you created the menu to be sure it returns an ItemInterface object.', $menuName));
              }
          }
  
          foreach ($path as $child) {
              $menu = $menu->getChild($child);
              if (null === $menu) {
                  throw new \InvalidArgumentException(sprintf('The menu has no child named "%s"', $child));
              }
          }
  
          return $menu;
      }
docs: Retrieves item in the menu, eventually using the menu provider.
  
  @param ItemInterface|string $menu
  @param array                $path
  @param array                $options
  
  @return ItemInterface
  
  @throws \BadMethodCallException   when there is no menu provider and the menu is given by name
  @throws \LogicException
  @throws \InvalidArgumentException when the path is invalid