This module creates extra ast constructs that are needed for the translation

`val create_pointer_qual_type : ?⁠quals:InferIR.Typ.type_quals ‑> InferGenerated.Clang_ast_t.qual_type ‑> InferGenerated.Clang_ast_t.qual_type`
`val create_reference_qual_type : ?⁠quals:InferIR.Typ.type_quals ‑> InferGenerated.Clang_ast_t.qual_type ‑> InferGenerated.Clang_ast_t.qual_type`
`val create_char_star_type : ?⁠quals:InferIR.Typ.type_quals ‑> unit ‑> InferGenerated.Clang_ast_t.qual_type`
`val make_next_object_exp : InferGenerated.Clang_ast_t.stmt_info ‑> InferGenerated.Clang_ast_t.stmt ‑> InferGenerated.Clang_ast_t.stmt ‑> InferGenerated.Clang_ast_t.stmt * InferGenerated.Clang_ast_t.stmt`
`val create_nil : InferGenerated.Clang_ast_t.stmt_info ‑> InferGenerated.Clang_ast_t.stmt`
`val create_implicit_cast_expr : InferGenerated.Clang_ast_t.stmt_info ‑> InferGenerated.Clang_ast_t.stmt list ‑> InferGenerated.Clang_ast_t.qual_type ‑> InferGenerated.Clang_ast_t.cast_kind ‑> InferGenerated.Clang_ast_t.stmt`
`val make_obj_c_message_expr_info_class : string ‑> InferIR.Typ.Name.t ‑> InferGenerated.Clang_ast_t.pointer option ‑> InferGenerated.Clang_ast_t.obj_c_message_expr_info`
`val trans_with_conditional : InferGenerated.Clang_ast_t.stmt_info ‑> InferGenerated.Clang_ast_t.expr_info ‑> InferGenerated.Clang_ast_t.stmt list ‑> InferGenerated.Clang_ast_t.stmt`

We translate an expression with a conditional x <=> x?1:0

`val trans_negation_with_conditional : InferGenerated.Clang_ast_t.stmt_info ‑> InferGenerated.Clang_ast_t.expr_info ‑> InferGenerated.Clang_ast_t.stmt list ‑> InferGenerated.Clang_ast_t.stmt`

We translate the logical negation of an expression with a conditional !x <=> x?0:1