General utility functions such as functions on lists

`type var_info``= InferGenerated.Clang_ast_t.decl_info * InferGenerated.Clang_ast_t.qual_type * InferGenerated.Clang_ast_t.var_decl_info * bool```
`val add_no_duplicates_fields : InferIR.Typ.Struct.field ‑> InferIR.Typ.Struct.field list ‑> InferIR.Typ.Struct.field list`
`val append_no_duplicates_fields : InferIR.Typ.Struct.field list ‑> InferIR.Typ.Struct.field list ‑> InferIR.Typ.Struct.field list`
`val append_no_duplicates_methods : InferIR.Typ.Procname.t list ‑> InferIR.Typ.Procname.t list ‑> InferIR.Typ.Procname.t list`
`val swap_elements_list : 'a list ‑> 'a list`
`val list_range : int ‑> int ‑> int list`
`val mk_class_field_name : InferIR.Typ.Name.t ‑> string ‑> InferIR.Typ.Fieldname.t`
`val get_var_name_mangled : InferGenerated.Clang_ast_t.decl_info ‑> InferGenerated.Clang_ast_t.named_decl_info ‑> InferGenerated.Clang_ast_t.var_decl_info ‑> string * InferIR.Mangled.t`
`val mk_sil_global_var : CFrontend_config.translation_unit_context ‑> ?⁠mk_name:(string ‑> InferIR.Mangled.t ‑> InferIR.Mangled.t) ‑> InferGenerated.Clang_ast_t.decl_info ‑> InferGenerated.Clang_ast_t.named_decl_info ‑> InferGenerated.Clang_ast_t.var_decl_info ‑> InferGenerated.Clang_ast_t.qual_type ‑> InferIR.Pvar.t`
`val mk_sil_var : CFrontend_config.translation_unit_context ‑> InferGenerated.Clang_ast_t.named_decl_info ‑> var_info option ‑> InferIR.Typ.Procname.t ‑> InferIR.Typ.Procname.t ‑> InferIR.Pvar.t`
`val is_cpp_translation : CFrontend_config.translation_unit_context ‑> bool`

true if the current language is C++ or ObjC++

`val is_objc_extension : CFrontend_config.translation_unit_context ‑> bool`

true if the current language is ObjC or ObjC++