constructor(identifierGenerator, reporter, options = undefined) {
    super(identifierGenerator, reporter, options);

    this.anonymousModule =
        options && !options.bundle && options.moduleName !== true;

    // does the module reference __moduleName
    this.usesModuleName = false;

    this.inExport_ = false;
    this.curDepIndex_ = null;

    this.dependencies = [];

    // export bindings from other modules
    // export {p as q} from 'r';
    // array of arrays, keyed by dependency index
    this.externalExportBindings = [];

    // local import bindings
    // import {s} from 't';
    // array of arrays, keyed by dependency index
    this.importBindings = [];

    // local export bindings
    // export {p as q}
    // array of bindings
    this.localExportBindings = [];

    // function declaration bindings
    // export function q() {}
    // export default function q() {}
    // array of bindings
    this.functionDeclarations = [];

    // module declaration bindings
    // import * as P from 'q';
    // string array keyed by dependency index
    this.moduleBindings = [];

    // whether this module has an export star
    // boolean array keyed by dependency index
    this.exportStarBindings = [];
  }
Transform a module to a 'instantiate' format:
System.register(localName, [deps], function($__export) {});
where [deps] are unnormalized (module-specifier-like) names
and $__export is the dynamic export binding setter function.