function Module(node) {
    var exports = node.body.exports;
    var modDefns = node.body.modDefns;

    var exportedModules = new Dict();

    exports.forEach(function(name, exp) {
        var node = exp.node;
        if (node.type === MODULE) {
            exportedModules.set(name, node);
        } else if (!exp.isDefinition && node.type === IDENTIFIER && modDefns.has(node.value)) {
            var mod = modDefns.get(node.value);
            exportedModules.set(name, mod);
        }
    });

    this.node = node;
    this.exports = exports;
    this.exportedModules = exportedModules;
}
function Module(node) {
    var exports = node.body.exports;
    var modDefns = node.body.modDefns;

    var exportedModules = new Dict();

    exports.forEach(function(name, exp) {
        var node = exp.node;
        if (node.type === MODULE) {
            exportedModules.set(name, node);
        } else if (!exp.isDefinition && node.type === IDENTIFIER && modDefns.has(node.value)) {
            var mod = modDefns.get(node.value);
            exportedModules.set(name, mod);
        }
    });

    this.node = node;
    this.exports = exports;
    this.exportedModules = exportedModules;
}
function Module ( node ) { var exports = node . body . exports ; var modDefns = node . body . modDefns ; var exportedModules = new Dict ( ) ; exports . forEach ( function ( name , exp ) { var node = exp . node ; if ( node . type === MODULE ) { exportedModules . set ( name , node ) ; } else if ( ! exp . isDefinition && node . type === IDENTIFIER && modDefns . has ( node . value ) ) { var mod = modDefns . get ( node . value ) ; exportedModules . set ( name , mod ) ; } } ) ; this . node = node ; this . exports = exports ; this . exportedModules = exportedModules ; }
/*
Module :: (node) -> Module

Static semantic representation of a module.
/ * Module :: ( node ) - > Module