Annotations.

`val any_thread : string`
`val auto_cleanup : string`
`val expensive : string`
`val inject_prop : string`
`val no_allocation : string`
`val nullable : string`
`val nonnull : string`
`val performance_critical : string`
`val present : string`
`val prop : string`
`val for_non_ui_thread : string`
`val for_ui_thread : string`
`val guarded_by : string`
`val suppress_lint : string`
`val thread_confined : string`
`val thread_safe : string`
`val ui_thread : string`
`val visibleForTesting : string`
`val annot_ends_with : InferIR.Annot.t ‑> string ‑> bool`

`annot_ends_with annot ann_name` returns true if the class name of `annot`, without the package, is equal to `ann_name`

`val ia_ends_with : InferIR.Annot.Item.t ‑> string ‑> bool`

Check if there is an annotation in `ia` which ends with the given name

`val ia_has_annotation_with : InferIR.Annot.Item.t ‑> (InferIR.Annot.t ‑> bool) ‑> bool`
`val ia_get_strict : InferIR.Annot.Item.t ‑> InferIR.Annot.t option`
`val ia_is_false_on_null : InferIR.Annot.Item.t ‑> bool`
`val ia_is_initializer : InferIR.Annot.Item.t ‑> bool`
`val ia_is_field_injector_readonly : InferIR.Annot.Item.t ‑> bool`

Annotations for readonly injectors. The injector framework initializes the field but does not write null into it.

`val ia_is_field_injector_readwrite : InferIR.Annot.Item.t ‑> bool`

Annotations for read-write injectors. The injector framework initializes the field and can write null into it.

`val ia_is_mutable : InferIR.Annot.Item.t ‑> bool`
`val ia_is_nonnull : InferIR.Annot.Item.t ‑> bool`
`val ia_is_nullable : InferIR.Annot.Item.t ‑> bool`
`val ia_is_present : InferIR.Annot.Item.t ‑> bool`
`val ia_is_true_on_null : InferIR.Annot.Item.t ‑> bool`
`val ia_is_verify : InferIR.Annot.Item.t ‑> bool`
`val ia_is_expensive : InferIR.Annot.Item.t ‑> bool`
`val ia_is_functional : InferIR.Annot.Item.t ‑> bool`
`val ia_is_propagates_nullable : InferIR.Annot.Item.t ‑> bool`
`val ia_is_ignore_allocations : InferIR.Annot.Item.t ‑> bool`
`val ia_is_inject : InferIR.Annot.Item.t ‑> bool`
`val ia_is_suppress_lint : InferIR.Annot.Item.t ‑> bool`
`val ia_is_on_event : InferIR.Annot.Item.t ‑> bool`
`val ia_is_on_bind : InferIR.Annot.Item.t ‑> bool`
`val ia_is_on_mount : InferIR.Annot.Item.t ‑> bool`
`val ia_is_on_unbind : InferIR.Annot.Item.t ‑> bool`
`val ia_is_on_unmount : InferIR.Annot.Item.t ‑> bool`
`val ia_is_not_thread_safe : InferIR.Annot.Item.t ‑> bool`
`val ia_is_returns_ownership : InferIR.Annot.Item.t ‑> bool`
`val ia_is_synchronized_collection : InferIR.Annot.Item.t ‑> bool`
`val ia_is_thread_safe : InferIR.Annot.Item.t ‑> bool`
`val ia_is_thread_confined : InferIR.Annot.Item.t ‑> bool`
`val ia_is_thrift_service : InferIR.Annot.Item.t ‑> bool`
`val ia_is_ui_thread : InferIR.Annot.Item.t ‑> bool`
`val ia_is_volatile : InferIR.Annot.Item.t ‑> bool`
`val pdesc_get_return_annot : InferIR.Procdesc.t ‑> InferIR.Annot.Item.t`

get the list of annotations on the return value of `pdesc`

`val pdesc_has_return_annot : InferIR.Procdesc.t ‑> (InferIR.Annot.Item.t ‑> bool) ‑> bool`

return true if the given predicate evaluates to true on the annotation of `pdesc`'s return value

`val pname_has_return_annot : InferIR.Typ.Procname.t ‑> attrs_of_pname:(InferIR.Typ.Procname.t ‑> InferIR.ProcAttributes.t option) ‑> (InferIR.Annot.Item.t ‑> bool) ‑> bool`

return true if the given predicate evaluates to true on the annotation of `pname`'s return value. the function `attrs_of_pname` should resolve the proc attributes of `pname`. Specs.proc_resolve_attributes is a good choice for this resolution function.

`val pdesc_return_annot_ends_with : InferIR.Procdesc.t ‑> string ‑> bool`

return true if `pdesc`'s return value is annotated with a value ending with the given string

`val ma_has_annotation_with : InferIR.Annot.Method.t ‑> (InferIR.Annot.t ‑> bool) ‑> bool`
`val field_has_annot : InferIR.Typ.Fieldname.t ‑> InferIR.Typ.Struct.t ‑> (InferIR.Annot.Item.t ‑> bool) ‑> bool`
`val struct_typ_has_annot : InferIR.Typ.Struct.t ‑> (InferIR.Annot.Item.t ‑> bool) ‑> bool`

return true if the given predicate evaluates to true on some annotation of `struct_typ`