diff --git a/modules/menu.workbench_access.inc b/modules/menu.workbench_access.inc
index 1da7ca6..aa08a39 100644
--- a/modules/menu.workbench_access.inc
+++ b/modules/menu.workbench_access.inc
@@ -151,6 +151,7 @@ function menu_workbench_access_tree($info, $keys) {
  */
 function _workbench_access_menu_build_tree(&$tree, $link, $mlid = 0) {
   $item = (object) $link['link'];
+  // If the item matches the expected link id, or is the top-level, continue.
   if ($item->mlid == $mlid || $mlid === 0) {
     $tree[$item->mlid] = array(
       'access_id' => $item->mlid,
@@ -161,10 +162,11 @@ function _workbench_access_menu_build_tree(&$tree, $link, $mlid = 0) {
       'depth' => $item->depth,
       'parent' => ($item->plid == 0) ? $item->menu_name : $item->plid,
     );
-  }
-  if (!empty($link['below'])) {
-    foreach ($link['below'] as $below) {
-      _workbench_access_menu_build_tree($tree, $below, $below['link']['mlid']);
+    // Access to the parent grants access to the children.
+    if (!empty($link['below'])) {
+      foreach ($link['below'] as $below) {
+        _workbench_access_menu_build_tree($tree, $below, $below['link']['mlid']);
+      }
     }
   }
 }
