void (@NotNull Module module, Condition<? super Library> condition, ArrayList<? super Library> libraries, boolean exportedOnly, Set<? super Module> visited) { if (!visited.add(module)) { return; } for (OrderEntry entry : ModuleRootManager.getInstance(module).getOrderEntries()) { if (entry instanceof LibraryOrderEntry libEntry) { if (exportedOnly && !libEntry.isExported()) { continue; } Library library = libEntry.getLibrary(); if (condition.value(library)) { libraries.add(library); } } else if (entry instanceof ModuleOrderEntry) { final Module dep = ((ModuleOrderEntry)entry).getModule(); if (dep != null) { populateOrderEntries(dep, condition, libraries, true, visited); } } } }