List<GroupingNode> (@NotNull RunConfigurationContributor contributor) { List<GroupingNode> result = new ArrayList<>(); GroupingNode parentGroupNode = null; for (RunDashboardGroupingRule groupingRule : RunDashboardManagerImpl.GROUPING_RULE_EP_NAME.getExtensions()) { RunDashboardGroup group = groupingRule.getGroup(contributor.asService()); if (group != null) { GroupingNode node = new GroupingNode(contributor.asService().getProject(), parentGroupNode == null ? null : parentGroupNode.getGroup(), group); node.setParent(parentGroupNode); result.add(node); parentGroupNode = node; } } return result; }