public static void collectModulesDependsOn(@NotNull Module module, @NotNull Set<? super Module> result) {
    if (!result.add(module)) {
      return;
    }

    ModuleManager moduleManager = ModuleManager.getInstance(module.getProject());
    List<Module> dependentModules = moduleManager.getModuleDependentModules(module);
    for (Module dependentModule : dependentModules) {
      OrderEntry[] orderEntries = ModuleRootManager.getInstance(dependentModule).getOrderEntries();
      for (OrderEntry o : orderEntries) {
        if (o instanceof ModuleOrderEntry orderEntry) {
          if (orderEntry.getModule() == module) {
            if (orderEntry.isExported()) {
              collectModulesDependsOn(dependentModule, result);
            }
            else {
              result.add(dependentModule);
            }
            break;
          }
        }
      }
    }
  }
public static void collectModulesDependsOn(@NotNull Module module, @NotNull Set<? super Module> result)