`type def =`

1. `| Expr of Code.expr`
2. `| Phi of {`
   1. `known : Js_of_ocaml_compiler.Code.Var.Set.t;`
   2. `others : bool;`
   `}`

`type approx =`

1. `| Top`
2. `| Values of {`
   1. `known : Js_of_ocaml_compiler.Code.Var.Set.t;`
   2. `others : bool;`
   `}`

`type escape_status =`

1. `| Escape`
2. `| Escape_constant`
3. `| No`

`type info = {`

1. `info_defs : def array;`
2. `info_approximation : approx Code.Var.Tbl.t;`
3. `info_may_escape : Code.Var.ISet.t;`
4. `info_variable_may_escape : escape_status array;`
5. `info_return_vals : Js_of_ocaml_compiler.Code.Var.Set.t Js_of_ocaml_compiler.Code.Var.Map.t;`

`}`
`val f : fast:bool -> Code.program -> info`
`val exact_call : info -> Code.Var.t -> int -> bool`
`val function_arity : info -> Code.Var.t -> int option`