Module type for the type checking functions.

`type check_return_type``= InferIR.Typ.Procname.t ‑> InferIR.Procdesc.t ‑> InferIR.Typ.t ‑> InferIR.Typ.t option ‑> InferBase.Location.t ‑> unit```
`type find_canonical_duplicate``= InferIR.Procdesc.Node.t ‑> InferIR.Procdesc.Node.t```
`type get_proc_desc``= InferModules.TypeState.get_proc_desc```
`type checks````=` `{`

`eradicate : bool;`
`check_extension : bool;`
`check_ret_type : check_return_type list;`

`}```
`val typecheck_node : InferIR.Tenv.t ‑> 'a InferModules.TypeState.ext ‑> bool InferStdlib.IStd.ref ‑> checks ‑> InferModules.Idenv.t ‑> get_proc_desc ‑> InferIR.Typ.Procname.t ‑> InferIR.Procdesc.t ‑> find_canonical_duplicate ‑> InferModules.AnnotatedSignature.t ‑> 'a InferModules.TypeState.t ‑> InferIR.Procdesc.Node.t ‑> InferModules.Printer.LineReader.t ‑> 'a InferModules.TypeState.t list * 'a InferModules.TypeState.t list`