void () { myRootNode.removeAllChildren(); final HashMap<CoverageRunner, Map<String, List<CoverageSuite>>> grouped = new HashMap<>(); groupSuites(grouped, myCoverageManager.getSuites()); final List<CoverageRunner> runners = new ArrayList<>(grouped.keySet()); runners.sort((o1, o2) -> o1.getPresentableName().compareToIgnoreCase(o2.getPresentableName())); for (CoverageRunner runner : runners) { final DefaultMutableTreeNode runnerNode = new DefaultMutableTreeNode(getCoverageRunnerTitle(runner)); myRootNode.add(runnerNode); final Map<String, List<CoverageSuite>> providers = grouped.get(runner); if (providers.size() == 1) { String providerKey = providers.keySet().iterator().next(); DefaultMutableTreeNode parent = runnerNode; if (!isLocalProvider(providerKey)) { DefaultMutableTreeNode remoteNode = new DefaultMutableTreeNode(CoverageBundle.message("remote.suites.node")); parent.add(remoteNode); parent = remoteNode; } List<CoverageSuite> suites = providers.get(providerKey); createSuitesNodes(suites, parent); } else { DefaultMutableTreeNode localNode = new DefaultMutableTreeNode(LOCAL); DefaultMutableTreeNode remoteNode = new DefaultMutableTreeNode(CoverageBundle.message("remote.suites.node")); runnerNode.add(localNode); runnerNode.add(remoteNode); for (var entry : providers.entrySet()) { DefaultMutableTreeNode parent = isLocalProvider(entry.getKey()) ? localNode : remoteNode; createSuitesNodes(entry.getValue(), parent); } } } }