/**
  * {@inheritdoc}
  * NEXT_MAJOR : make this method private.
  */
 public function buildBreadcrumbs(AdminInterface $admin, $action, ItemInterface $menu = null)
 {
     if (!$menu) {
         $menu = $admin->getMenuFactory()->createItem('root');
         $menu = $this->createMenuItem($admin, $menu, 'dashboard', 'SonataAdminBundle', array('uri' => $admin->getRouteGenerator()->generate('sonata_admin_dashboard')));
     }
     $menu = $this->createMenuItem($admin, $menu, sprintf('%s_list', $admin->getClassnameLabel()), null, array('uri' => $admin->hasRoute('list') && $admin->isGranted('LIST') ? $admin->generateUrl('list') : null));
     $childAdmin = $admin->getCurrentChildAdmin();
     if ($childAdmin) {
         $id = $admin->getRequest()->get($admin->getIdParameter());
         $menu = $menu->addChild($admin->toString($admin->getSubject()), array('uri' => $admin->hasRoute('edit') && $admin->isGranted('EDIT') ? $admin->generateUrl('edit', array('id' => $id)) : null));
         return $this->buildBreadcrumbs($childAdmin, $action, $menu);
     }
     if ('list' === $action && $admin->isChild()) {
         $menu->setUri(false);
     } elseif ('create' !== $action && $admin->hasSubject()) {
         $menu = $menu->addChild($admin->toString($admin->getSubject()));
     } else {
         $menu = $this->createMenuItem($admin, $menu, sprintf('%s_%s', $admin->getClassnameLabel(), $action));
     }
     return $menu;
 }