    sig
      val copy : (< .. > as 'a) -> 'a
      type label
      val new_method : string -> Oo.label
      type table
      and meth
      and t
      and obj
      val new_variable : Oo.table -> string -> int
      val get_variable : Oo.table -> string -> int
      val get_method_label : Oo.table -> string -> Oo.label
      val get_method : Oo.table -> Oo.label -> Oo.meth
      val set_method : Oo.table -> Oo.label -> Oo.meth -> unit
      val narrow : Oo.table -> string list -> string list -> string list -> unit
      val widen : Oo.table -> unit
      val add_initializer : Oo.table -> (Oo.obj -> unit) -> unit
      val create_table : string list -> Oo.table
      val init_class : Oo.table -> unit
      val create_object : Oo.table -> Oo.obj
      val run_initializers : Oo.obj -> Oo.table -> unit
      val send : Oo.obj -> Oo.label -> Oo.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 : Oo.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 -> Oo.stats
      val show_buckets : unit -> unit
    end