private static OrderEntry[] calcOrderEntries( @NotNull RootInfo info, @NotNull MultiMap<VirtualFile, OrderEntry> depEntries, @NotNull MultiMap<VirtualFile, OrderEntry> libClassRootEntries, @NotNull MultiMap<VirtualFile, OrderEntry> libSourceRootEntries, @NotNull List<VirtualFile> hierarchy) { @Nullable VirtualFile libraryClassRoot = info.findLibraryRootInfo(hierarchy, false); @Nullable VirtualFile librarySourceRoot = info.findLibraryRootInfo(hierarchy, true); Set<OrderEntry> orderEntries = ContainerUtil.newLinkedHashSet(); orderEntries.addAll( info.getLibraryOrderEntries( hierarchy, libraryClassRoot, librarySourceRoot, libClassRootEntries, libSourceRootEntries)); for (VirtualFile root : hierarchy) { orderEntries.addAll(depEntries.get(root)); } VirtualFile moduleContentRoot = info.findModuleRootInfo(hierarchy); if (moduleContentRoot != null) { ContainerUtil.addIfNotNull( orderEntries, info.getModuleSourceEntry(hierarchy, moduleContentRoot, libClassRootEntries)); } if (orderEntries.isEmpty()) { return null; } OrderEntry[] array = orderEntries.toArray(new OrderEntry[orderEntries.size()]); Arrays.sort(array, BY_OWNER_MODULE); return array; }