code: public static Module combineAndOverride(List<? extends Module> modules) {
          Iterator<? extends Module> iter = modules.iterator();
          Module current = Modules.EMPTY_MODULE;
          if (iter.hasNext()) {
              current = iter.next();
              if (iter.hasNext()) {
                  current = Modules.override(current).with(iter.next());
              }
          }
          
          return current;
      }
docs: Generate a single module that is produced by accumulating and overriding
  each module with the next.
  
  <pre>
  {@code
  Guice.createInjector(ModuleUtils.combineAndOverride(moduleA, moduleAOverrides, moduleB));
  }
  </pre>
  
  @param modules
  @return