sig
  type ('a, 'b, 'c) t
  type addr = int64
  val create :
    unit -> ([ `NoWordsize ], [ `NoEndian ], [ `NoMappings ]) Virt_mem_mmap.t
  val of_file :
    Unix.file_descr ->
    Virt_mem_mmap.addr ->
    ([ `NoWordsize ], [ `NoEndian ], [ `HasMapping ]) Virt_mem_mmap.t
  val add_file :
    ('a, 'b, 'c) Virt_mem_mmap.t ->
    Unix.file_descr ->
    Virt_mem_mmap.addr -> ('a, 'b, [ `HasMapping ]) Virt_mem_mmap.t
  val of_string :
    string ->
    Virt_mem_mmap.addr ->
    ([ `NoWordsize ], [ `NoEndian ], [ `HasMapping ]) Virt_mem_mmap.t
  val add_string :
    ('a, 'b, 'c) Virt_mem_mmap.t ->
    string -> Virt_mem_mmap.addr -> ('a, 'b, [ `HasMapping ]) Virt_mem_mmap.t
  val set_wordsize :
    ([ `NoWordsize ], 'a, 'b) Virt_mem_mmap.t ->
    Virt_mem_utils.wordsize -> ([ `Wordsize ], 'a, 'b) Virt_mem_mmap.t
  val set_endian :
    ('a, [ `NoEndian ], 'b) Virt_mem_mmap.t ->
    Bitstring.endian -> ('a, [ `Endian ], 'b) Virt_mem_mmap.t
  val get_wordsize :
    ([ `Wordsize ], 'a, 'b) Virt_mem_mmap.t -> Virt_mem_utils.wordsize
  val get_endian : ('a, [ `Endian ], 'b) Virt_mem_mmap.t -> Bitstring.endian
  val find :
    ('a, 'b, [ `HasMapping ]) Virt_mem_mmap.t ->
    ?start:Virt_mem_mmap.addr -> string -> Virt_mem_mmap.addr option
  val find_align :
    ([ `Wordsize ], 'a, [ `HasMapping ]) Virt_mem_mmap.t ->
    ?start:Virt_mem_mmap.addr -> string -> Virt_mem_mmap.addr option
  val find_all :
    ('a, 'b, [ `HasMapping ]) Virt_mem_mmap.t ->
    ?start:Virt_mem_mmap.addr -> string -> Virt_mem_mmap.addr list
  val find_all_align :
    ([ `Wordsize ], 'a, [ `HasMapping ]) Virt_mem_mmap.t ->
    ?start:Virt_mem_mmap.addr -> string -> Virt_mem_mmap.addr list
  val find_pointer :
    ([ `Wordsize ], [ `Endian ], [ `HasMapping ]) Virt_mem_mmap.t ->
    ?start:Virt_mem_mmap.addr ->
    Virt_mem_mmap.addr -> Virt_mem_mmap.addr option
  val find_pointer_all :
    ([ `Wordsize ], [ `Endian ], [ `HasMapping ]) Virt_mem_mmap.t ->
    ?start:Virt_mem_mmap.addr ->
    Virt_mem_mmap.addr -> Virt_mem_mmap.addr list
  val get_byte :
    ('a, 'b, [ `HasMapping ]) Virt_mem_mmap.t -> Virt_mem_mmap.addr -> int
  val get_bytes :
    ('a, 'b, [ `HasMapping ]) Virt_mem_mmap.t ->
    Virt_mem_mmap.addr -> int -> string
  val get_int32 :
    ('a, [ `Endian ], [ `HasMapping ]) Virt_mem_mmap.t ->
    Virt_mem_mmap.addr -> int32
  val get_int64 :
    ('a, [ `Endian ], [ `HasMapping ]) Virt_mem_mmap.t ->
    Virt_mem_mmap.addr -> int64
  val get_C_int :
    ([ `Wordsize ], [ `Endian ], [ `HasMapping ]) Virt_mem_mmap.t ->
    Virt_mem_mmap.addr -> int32
  val get_C_long :
    ([ `Wordsize ], [ `Endian ], [ `HasMapping ]) Virt_mem_mmap.t ->
    Virt_mem_mmap.addr -> int64
  val get_string :
    ('a, 'b, [ `HasMapping ]) Virt_mem_mmap.t -> Virt_mem_mmap.addr -> string
  val is_string :
    ('a, 'b, [ `HasMapping ]) Virt_mem_mmap.t -> Virt_mem_mmap.addr -> bool
  val is_C_identifier :
    ('a, 'b, [ `HasMapping ]) Virt_mem_mmap.t -> Virt_mem_mmap.addr -> bool
  val is_mapped : ('a, 'b, 'c) Virt_mem_mmap.t -> Virt_mem_mmap.addr -> bool
  val is_mapped_range :
    ('a, 'b, 'c) Virt_mem_mmap.t -> Virt_mem_mmap.addr -> int -> bool
  val follow_pointer :
    ([ `Wordsize ], [ `Endian ], [ `HasMapping ]) Virt_mem_mmap.t ->
    Virt_mem_mmap.addr -> Virt_mem_mmap.addr
  val succ_long :
    ([ `Wordsize ], 'a, [ `HasMapping ]) Virt_mem_mmap.t ->
    Virt_mem_mmap.addr -> Virt_mem_mmap.addr
  val pred_long :
    ([ `Wordsize ], 'a, [ `HasMapping ]) Virt_mem_mmap.t ->
    Virt_mem_mmap.addr -> Virt_mem_mmap.addr
  val align :
    ([ `Wordsize ], 'a, [ `HasMapping ]) Virt_mem_mmap.t ->
    Virt_mem_mmap.addr -> Virt_mem_mmap.addr
end