`type def =`

1. `| Phi of Js_of_ocaml_compiler.Code.Var.Set.t`
2. `| Expr of Code.expr`
3. `| Param`

`type info = {`

1. `info_defs : def array;`
2. `info_known_origins : Js_of_ocaml_compiler.Code.Var.Set.t Code.Var.Tbl.t;`
3. `info_maybe_unknown : bool Code.Var.Tbl.t;`
4. `info_possibly_mutable : Code.Var.ISet.t;`

`}`
`val get_approx : info -> (Js_of_ocaml_compiler.Code.Var.Set.elt -> 'b) -> 'b -> ('b -> 'b -> 'b) -> Code.Var.Tbl.key -> 'b`
`val the_def_of : info -> Code.prim_arg -> Code.expr option`
`val the_const_of : info -> Code.prim_arg -> Code.constant option`
`val the_string_of : info -> Code.prim_arg -> string option`
`val the_native_string_of : info -> Code.prim_arg -> Code.Native_string.t option`
`val the_int : info -> Code.prim_arg -> int32 option`
`val update_def : info -> Code.Var.t -> Code.expr -> unit`
`val f : ?skip_param:bool -> Code.program -> Code.program * info`