function ModuleLoader() {
  ModuleLoader.base(this, 'constructor');

  /**
   * Event handler for managing handling events.
   * @type {!EventHandler<!ModuleLoader>}
   * @private
   */
  this.eventHandler_ = new EventHandler(this);
  this.registerDisposable(this.eventHandler_);

  /**
   * A map from module IDs to ModuleLoader.LoadStatus.
   * @type {!Object<!Array<string>, !ModuleLoader.LoadStatus>}
   * @private
   */
  this.loadingModulesStatus_ = {};

  /**
   * Whether the module loader has prefetched a module.
   * @type {boolean}
   * @private
   */
  this.hasPrefetched_ = false;
}
A class that loads JavaScript modules.
@constructor
@extends {EventTarget}
@implements {AbstractModuleLoader}