I still do not see how this will work:

Given

```js
q();
function q() {
  return new C;
}
class C {}
```

which gets transformed into:

```js
var tmp;
function q() {
  return new C;  // ReferenceError
}
return {
  exports: ...,
  execute: function() {
    q();
    class C {}
    tmp = C;
  }
};
```

All references to C needs to be renamed. We need to do the same for let/const bindings too.