protected void processEntries(@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;
      }
    }
  }
protected void processEntries(@NotNull ModuleRootModel rootModel,
                                @Nullable Set<? super Module> processed,
                                boolean firstLevel,
                                @NotNull List<? extends OrderEnumerationHandler> customHandlers,
                                @NotNull PairProcessor<? super OrderEntry, ? super List<? extends OrderEnumerationHandler>> processor)