code: public void processExtraModules(ModuleBuildReader reader, HttpServletRequest request, CacheEntry cacheEntry)
  			throws IOException {
  
  		List<String> extraModules = cacheEntry.getExtraModules();
  		if (!extraModules.isEmpty()) {
  			IAggregator aggr = (IAggregator)request.getAttribute(IAggregator.AGGREGATOR_REQATTRNAME);
  			IConfig config = aggr.getConfig();
  			for (String mid : cacheEntry.getExtraModules()) {
  				ModuleIdentifier ident = new ModuleIdentifier(mid);
  				String pluginName = ident.getPluginName();
  				boolean isJavaScript = pluginName == null || config.getJsPluginDelegators().contains(pluginName);
  				URI uri = config.locateModuleResource(ident.getModuleName(), isJavaScript);
  				IModule module = aggr.newModule(mid, uri);
  				Future<ModuleBuildReader> future = aggr.getCacheManager().getCache().getModules().getBuild(request, module);
  				ModuleBuildFuture mbf = new ModuleBuildFuture(
  						module,
  						future,
  						ModuleSpecifier.BUILD_ADDED);
  				reader.addExtraBuild(mbf);
  			}
  		}
  	}
docs: For any extra modules specified by {@code cacheEntry}, obtain a build
  future from the module cache manager and add it to the {@link ModuleBuildReader}
  specified by {@code reader}.
  
  @param reader
  the {@link ModuleBuildReader} to add the extra modules to
  @param request
  The http request
  @param cacheEntry
  The cache entry object for the current module
  @throws IOException