`module TraceDomain : sig ... end`
`module AccessMap : sig ... end`
`module BaseMap = InferIR.AccessPath.BaseMap`
`type node``= TraceDomain.astate * tree```
`type tree``= InferModules__AccessTree.Make(Trace)(InferModules.AccessTree.DefaultConfig).tree``=`

`|` `Subtree of node AccessMap.t`
`|` `Star`

``
`type t``= node BaseMap.t```
`type astate``= t```
`val (<=) : lhs:astate ‑> rhs:astate ‑> bool`
`val join : astate ‑> astate ‑> astate`
`val widen : prev:astate ‑> next:astate ‑> num_iters:int ‑> astate`
`val pp : InferModules.AbstractDomain.F.formatter ‑> astate ‑> unit`
`val empty : astate`
`val is_empty : astate ‑> bool`
`val empty_node : node`
`val make_node : TraceDomain.astate ‑> node AccessMap.t ‑> node`
`val make_access_node : TraceDomain.astate ‑> InferIR.AccessPath.access ‑> TraceDomain.astate ‑> node`
`val make_normal_leaf : TraceDomain.astate ‑> node`
`val make_starred_leaf : TraceDomain.astate ‑> node`
`val get_node : InferIR.AccessPath.Abs.t ‑> t ‑> node option`
`val get_trace : InferIR.AccessPath.Abs.t ‑> t ‑> TraceDomain.astate option`
`val add_node : InferIR.AccessPath.Abs.t ‑> node ‑> t ‑> t`
`val add_trace : InferIR.AccessPath.Abs.t ‑> TraceDomain.astate ‑> t ‑> t`
`val node_join : node ‑> node ‑> node`
`val fold : ('a ‑> InferIR.AccessPath.Abs.t ‑> node ‑> 'a) ‑> t ‑> 'a ‑> 'a`
`val trace_fold : ('a ‑> InferIR.AccessPath.Abs.t ‑> TraceDomain.astate ‑> 'a) ‑> t ‑> 'a ‑> 'a`
`val exists : (InferIR.AccessPath.Abs.t ‑> node ‑> bool) ‑> t ‑> bool`
`val iter : (InferIR.AccessPath.Abs.t ‑> node ‑> unit) ‑> t ‑> unit`
`val depth : t ‑> int`
`val pp_node : Format.formatter ‑> node ‑> unit`