sig
  type label
  val new_method : string -> CamlinternalOO.label
  val public_method_label : string -> CamlinternalOO.label
  type table
  and meth
  and t
  and obj
  val new_variable : CamlinternalOO.table -> string -> int
  val get_variable : CamlinternalOO.table -> string -> int
  val get_method_label :
    CamlinternalOO.table -> string -> CamlinternalOO.label
  val get_method :
    CamlinternalOO.table -> CamlinternalOO.label -> CamlinternalOO.meth
  val set_method :
    CamlinternalOO.table ->
    CamlinternalOO.label -> CamlinternalOO.meth -> unit
  val narrow :
    CamlinternalOO.table -> string list -> string list -> string list -> unit
  val widen : CamlinternalOO.table -> unit
  val add_initializer :
    CamlinternalOO.table -> (CamlinternalOO.obj -> unit) -> unit
  val create_table : string list -> CamlinternalOO.table
  val init_class : CamlinternalOO.table -> unit
  val copy : (< .. > as 'a) -> 'a
  val create_object : CamlinternalOO.table -> CamlinternalOO.obj
  val create_object_opt :
    CamlinternalOO.obj -> CamlinternalOO.table -> CamlinternalOO.obj
  val run_initializers : CamlinternalOO.obj -> CamlinternalOO.table -> unit
  val run_initializers_opt :
    CamlinternalOO.obj ->
    CamlinternalOO.obj -> CamlinternalOO.table -> CamlinternalOO.obj
  val create_object_and_run_initializers :
    CamlinternalOO.obj -> CamlinternalOO.table -> CamlinternalOO.obj
  val send : CamlinternalOO.obj -> CamlinternalOO.label -> CamlinternalOO.t
  type params = {
    mutable compact_table : bool;
    mutable copy_parent : bool;
    mutable clean_when_copying : bool;
    mutable retry_count : int;
    mutable bucket_small_size : int;
  } 
  val params : CamlinternalOO.params
  type stats = {
    classes : int;
    labels : int;
    methods : int;
    inst_vars : int;
    buckets : int;
    distrib : int array;
    small_bucket_count : int;
    small_bucket_max : int;
  } 
  val stats : unit -> CamlinternalOO.stats
  val show_buckets : unit -> unit
end