private Collection<FrameworkSupportNodeBase> createNodes( List<FrameworkSupportInModuleProvider> providers, Set<String> associated, final Set<String> preselected) { Map<String, FrameworkSupportNode> nodes = new HashMap<String, FrameworkSupportNode>(); Map<FrameworkGroup<?>, FrameworkGroupNode> groups = new HashMap<FrameworkGroup<?>, FrameworkGroupNode>(); List<FrameworkSupportNodeBase> roots = new ArrayList<FrameworkSupportNodeBase>(); Map<String, FrameworkSupportNodeBase> associatedNodes = new LinkedHashMap<String, FrameworkSupportNodeBase>(); for (FrameworkSupportInModuleProvider provider : providers) { createNode(provider, nodes, groups, roots, providers, associated, associatedNodes); } FrameworkSupportNodeBase.sortByName( roots, new Comparator<FrameworkSupportNodeBase>() { @Override public int compare(FrameworkSupportNodeBase o1, FrameworkSupportNodeBase o2) { return Comparing.compare( preselected.contains(o2.getId()), preselected.contains(o1.getId())); } }); myRoots = roots; return associatedNodes.values(); }