`class type mapper = object ... end`
`class type iterator = object ... end`
`class map : mapper`
`class iter : iterator`
`type t = {`

1. `use : Js_of_ocaml_compiler.Javascript.IdentSet.t;`
2. `def_var : Js_of_ocaml_compiler.Javascript.IdentSet.t;`
3. `def_local : Js_of_ocaml_compiler.Javascript.IdentSet.t;`

`}`
`type block =`

1. `| Catch of Javascript.formal_parameter`
2. `| Params of Javascript.formal_parameter_list`
3. `| Normal`

`class type freevar = object ... end`
`class free : freevar`
`val declared_names : Javascript.program -> Stdlib.StringSet.t`
`class fast_freevar : (string -> unit) -> iterator`
`type scope =`

1. `| Module`
2. `| Script`
3. `| Lexical_block`
4. `| Fun_block of Javascript.ident option`

`class rename_variable : esm:bool -> object ... end`
`val share_constant : Javascript.program -> Javascript.program`
`class compact_vardecl : object ... end`
`class clean : mapper`
`class simpl : mapper`