I don't think there's any good documentation for Module. It's one of the things I find lacking in Node, and one of the things I love about Python. Say what you want about Python, but it's well-documented.

Basically I went spelunking through node's [lib/module.js](https://github.com/joyent/node/blob/master/lib/module.js) and what you see is the distillation of `Module.prototype.require` minus all the stuff we don't need.

There are other ways to get the same effect, but this was the least in terms of added code.

```
// Here is a rough diagram of Module.prototype.require
Module.prototype.require
  Module._load
    module = new Module
    module.load(...)
      // This is what sets up our node_modules paths correctly.
      Module._nodeModulePaths(...)
      Module._extensions['.traceur-compiled'](...)
```

`require.main.load(...)` would probably work too, but since we want a new module anyway, I went with `new Module`. I can't say I'm entirely comfortable with node's internals though.

----

Should I try distilling the above into a comment?

----

Workflow: here is a simple idea that works, but doubles the number of pull requests.

* Do all code reviews in the initial pull request as usual.
* After LGTM, the pull requester opens a "squashed" pull request with
the squashed commit.
* If there are still problems, they are discussed in the initial pull
request.
* The "squashed" pull request always gets over-written with the latest
squash of the agreed-upon final result.
* Once the "squashed" pull request is merged with master, close both
pull requests.