`type t````=`

`|` `Base of AccessPath.base`
`|` `FieldOffset of t * Typ.Fieldname.t`
`|` `ArrayOffset of t * Typ.t * t list`
`|` `AddressOf of t`
`|` `Dereference of t`

``
`include sig ... end`
`val compare : t ‑> t ‑> int`
`val to_access_path : t ‑> AccessPath.t`
`val to_access_paths : t list ‑> AccessPath.t list`
`val of_id : Ident.t ‑> Typ.t ‑> t`

create an access expression from an ident

`val get_base : t ‑> AccessPath.base`
`val replace_base : remove_deref_after_base:bool ‑> AccessPath.base ‑> t ‑> t`
`val is_base : t ‑> bool`
`val get_typ : t ‑> Tenv.t ‑> Typ.t option`
`val pp : Format.formatter ‑> t ‑> unit`
`val equal : t ‑> t ‑> bool`
`val of_lhs_exp : include_array_indexes:bool ‑> add_deref:bool ‑> Exp.t ‑> Typ.t ‑> f_resolve_id:(Var.t ‑> t option) ‑> t option`

convert `lhs_exp` to an access expression, resolving identifiers using `f_resolve_id`

`val normalize : t ‑> t`