void (@NotNull Map<? super AnAction, GroupMapping> actionGroups, @NotNull ActionGroup group, @NotNull List<ActionGroup> path, boolean showNonPopupGroups) { if (actionGroups.containsKey(group)) return; AnAction[] actions = group instanceof DefaultActionGroup ? group.getChildren(null, ActionManager.getInstance()) : AnAction.EMPTY_ARRAY; boolean hasRegisteredChild = ContainerUtil.exists(actions, action -> myActionManager.getId(action) != null); if (!hasRegisteredChild) { GroupMapping mapping = actionGroups.computeIfAbsent(group, __ -> new GroupMapping(showNonPopupGroups)); mapping.addPath(path); } List<ActionGroup> newPath = ContainerUtil.append(path, group); for (AnAction action : actions) { if (action == null || action instanceof Separator) continue; if (action instanceof ActionGroup) { collectActions(actionGroups, (ActionGroup)action, newPath, showNonPopupGroups); } else { GroupMapping mapping = actionGroups.computeIfAbsent(action, __ -> new GroupMapping(showNonPopupGroups)); mapping.addPath(newPath); } } }