void (@NotNull ModuleRootModel rootModel, @Nullable Set<? super Module> processed, boolean firstLevel, @NotNull List<? extends OrderEnumerationHandler> customHandlers, @NotNull PairProcessor<? super OrderEntry, ? super List<? extends OrderEnumerationHandler>> processor) { ProgressManager.checkCanceled(); if (processed != null && !processed.add(rootModel.getModule())) return; for (OrderEntry entry : rootModel.getOrderEntries()) { ProcessEntryAction action = shouldAddOrRecurse(entry, firstLevel, customHandlers); if (action.type == ProcessEntryActionType.SKIP) { continue; } if (action.type == ProcessEntryActionType.RECURSE) { processEntries(getRootModel(action.recurseOnModule), processed, false, customHandlers, processor); continue; } assert action.type == ProcessEntryActionType.PROCESS; if (!processor.process(entry, customHandlers)) { return; } } }