sig
  type anydbm_open_flag = { read : bool; write : bool; create : bool; }
  type open_flag = Dbm_rdonly | Dbm_wronly | Dbm_rdwr | Dbm_create
  class virtual t :
    object
      method virtual add : string -> string -> unit
      method virtual close : unit
      method virtual find : string -> string
      method virtual iter : (string -> string -> unit) -> unit
      method virtual remove : string -> unit
      method virtual replace : string -> string -> unit
    end
  exception Dbm_error of string
  val close : AnyDBM.t -> unit
  val find : AnyDBM.t -> string -> string
  val add : AnyDBM.t -> string -> string -> unit
  val replace : AnyDBM.t -> string -> string -> unit
  val remove : AnyDBM.t -> string -> unit
  val iter : (string -> string -> unit) -> AnyDBM.t -> unit
  module AnyDBMUtils :
    sig
      val flags_old_to_new : AnyDBM.open_flag list -> AnyDBM.anydbm_open_flag
      val flags_new_to_old : AnyDBM.anydbm_open_flag -> AnyDBM.open_flag list
      val flags_new_to_open :
        AnyDBM.anydbm_open_flag ->
        Pervasives.open_flag -> Pervasives.open_flag list
      class virtual anyDBM_Base :
        AnyDBM.anydbm_open_flag ->
        object
          method add : string -> string -> unit
          method private assert_read : unit
          method private assert_write : unit
          method private can_read : bool
          method private can_write : bool
          method close : unit
          method private virtual do_add : string -> string -> unit
          method private virtual do_close : unit
          method private virtual do_find : string -> string
          method private virtual do_iter : (string -> string -> unit) -> unit
          method private virtual do_remove : string -> unit
          method private virtual do_replace : string -> string -> unit
          method find : string -> string
          method iter : (string -> string -> unit) -> unit
          method remove : string -> unit
          method replace : string -> string -> unit
        end
    end
end