code: public static Iterable<Module> prepareModules(final ConfigurationContext context) {
          final List<Module> normalModules = context.getNormalModules();
          final List<Module> overridingModules = context.getOverridingModules();
          // use different lists to avoid possible side effects from listeners (not allowed to exclude or modify order)
          context.lifecycle().injectorCreation(
                  new ArrayList<>(normalModules),
                  new ArrayList<>(overridingModules),
                  context.getDisabledModules());
          return overridingModules.isEmpty() ? normalModules
                  : Collections.singletonList(Modules.override(normalModules).with(overridingModules));
      }
docs: Prepares modules to use for injector creation (applies module overrides).
  
  @param context configuration context
  @return modules for injector creation