sig
  type y
  type loffset
  type widen_hint_offsetmap
  module Make :
    functor
      (Default_offsetmap : sig
                             val default_offsetmap :
                               Base.t -> Lmap.Location_map.loffset
                           end->
      sig
        type t
        val ty : t Type.t
        val name : string
        val descr : t Descr.t
        val packed_descr : Structural_descr.pack
        val reprs : t list
        val equal : t -> t -> bool
        val compare : t -> t -> int
        val hash : t -> int
        val pretty_code : Format.formatter -> t -> unit
        val internal_pretty_code :
          Type.precedence -> Format.formatter -> t -> unit
        val pretty : Format.formatter -> t -> unit
        val varname : t -> string
        val mem_project : (Project_skeleton.t -> bool) -> t -> bool
        val copy : t -> t
        type widen_hint =
            bool * Base.Set.t *
            (Base.t -> Lmap.Location_map.widen_hint_offsetmap)
        type instanciation = Locations.Location_Bytes.t Base.Map.t
        val inject : Base.t -> Lmap.Location_map.loffset -> t
        val add_offsetmap : Base.t -> Lmap.Location_map.loffset -> t -> t
        val pretty_without_null : Format.formatter -> t -> unit
        val pretty_filter :
          Format.formatter ->
          t -> Locations.Zone.t -> (Base.t -> bool) -> unit
        val add_binding :
          with_alarms:CilE.warn_mode ->
          exact:bool -> t -> Locations.location -> Lmap.Location_map.y -> t
        val find :
          conflate_bottom:bool ->
          with_alarms:CilE.warn_mode ->
          t -> Locations.location -> Lmap.Location_map.y
        val join : t -> t -> Locations.location list * t
        val is_included : t -> t -> bool
        val is_included_actual_generic :
          Locations.Zone.t -> t -> t -> Lmap.Location_map.Make.instanciation
        val top : t
        val empty_map : t
        val is_empty_map : t -> bool
        val bottom : t
        val is_reachable : t -> bool
        val widen : Lmap.Location_map.Make.widen_hint -> t -> t -> bool * t
        val filter_base : (Base.t -> bool) -> t -> t
        val find_base : Base.t -> t -> Lmap.Location_map.loffset
        val remove_base : Base.t -> t -> t
        val reduce_binding :
          with_alarms:CilE.warn_mode ->
          t -> Locations.location -> Lmap.Location_map.y -> t
        val copy_paste : Locations.location -> Locations.location -> t -> t
        val paste_offsetmap :
          Lmap.Location_map.loffset ->
          Locations.Location_Bits.t ->
          Abstract_interp.Int.t -> Abstract_interp.Int.t -> t -> t
        val copy_offsetmap :
          with_alarms:CilE.warn_mode ->
          Locations.location -> t -> Lmap.Location_map.loffset option
        val compute_actual_final_from_generic :
          t ->
          t ->
          Locations.Zone.t ->
          Lmap.Location_map.Make.instanciation ->
          t * Locations.Location_Bits.Top_Param.t
        val is_included_by_location_enum : t -> t -> Locations.Zone.t -> bool
        val fold :
          size:Abstract_interp.Int.t ->
          (Locations.location -> Lmap.Location_map.y -> '-> 'a) ->
          t -> '-> 'a
        val fold_single_bindings :
          size:Abstract_interp.Int.t ->
          (Locations.location -> Lmap.Location_map.y -> '-> 'a) ->
          t -> '-> 'a
        val fold_base : (Base.t -> '-> 'a) -> t -> '-> 'a
        val fold_base_offsetmap :
          (Base.t -> Lmap.Location_map.loffset -> '-> 'a) -> t -> '-> 'a
        val find_offsetmap_for_location :
          Locations.Location_Bits.t -> t -> Lmap.Location_map.loffset
        val add_whole : Locations.location -> Lmap.Location_map.y -> t -> t
        val remove_whole : Locations.location -> t -> t
        val comp_prefixes : t -> t -> unit
        type subtree
        val find_prefix :
          t -> Hptmap.prefix -> Lmap.Location_map.Make.subtree option
        val hash_subtree : Lmap.Location_map.Make.subtree -> int
        val equal_subtree :
          Lmap.Location_map.Make.subtree ->
          Lmap.Location_map.Make.subtree -> bool
        val reciprocal_image :
          Base.t -> t -> Locations.Zone.t * Locations.Location_Bits.t
        val create_initial :
          base:Base.t ->
          v:Lmap.Location_map.y -> modu:Abstract_interp.Int.t -> state:t -> t
        exception Error_Bottom
        val cached_fold :
          f:(Base.t -> Lmap.Location_map.loffset -> 'a) ->
          cache:string * int ->
          temporary:bool -> joiner:('-> '-> 'a) -> empty:'-> t -> 'a
        val cached_map :
          f:(Base.t -> Lmap.Location_map.loffset -> Lmap.Location_map.loffset) ->
          cache:string * int -> temporary:bool -> t -> t
        exception Found_prefix of Hptmap.prefix *
                    Lmap.Location_map.Make.subtree *
                    Lmap.Location_map.Make.subtree
      end
end