`type kind````=`

`|` `CPPMethod of` `{`
`mangled : string option;`
`}```
`|` `CPPConstructor of` `{`
`mangled : string option;`
`is_constexpr : bool;`
`}```
`|` `CPPDestructor of` `{`
`mangled : string option;`
`}```
`|` `ObjCClassMethod`
`|` `ObjCInstanceMethod`
`|` `ObjCInternalMethod`

``
`include sig ... end`
`val compare_kind : kind ‑> kind ‑> int`
`type t````=` `{`

`method_name : string;`
`class_name : Name.t;`
`kind : kind;`
`template_args : template_spec_info;`

`}```

Type of Objective C and C++ procedure names: method signatures.

`include sig ... end`
`val compare : t ‑> t ‑> int`
`val make : Name.t ‑> string ‑> kind ‑> template_spec_info ‑> t`

Create an objc procedure name from a class_name and method_name.

`val get_class_name : t ‑> string`
`val get_class_type_name : t ‑> Name.t`
`val get_class_qualifiers : t ‑> InferIR.QualifiedCppName.t`
`val objc_method_kind_of_bool : bool ‑> kind`

Create ObjC method type from a bool is_instance.

`val is_objc_constructor : string ‑> bool`

Check if this is a constructor method in Objective-C.

`val is_objc_dealloc : string ‑> bool`

Check if this is a dealloc method in Objective-C.

`val is_destructor : t ‑> bool`

Check if this is a dealloc method.

`val is_inner_destructor : t ‑> bool`

Check if this is a frontend-generated "inner" destructor (see D5834555/D7189239)

`val is_constexpr : t ‑> bool`

Check if this is a constexpr function.

`val is_cpp_lambda : t ‑> bool`

Return whether the procname is a cpp lambda.

`val is_operator_equal : t ‑> bool`

Return true if the procname is operator=