sig
  type t
  val repr : '-> Obj.t
  val obj : Obj.t -> 'a
  val magic : '-> 'b
  val is_block : Obj.t -> bool
  val is_int : Obj.t -> bool
  val tag : Obj.t -> int
  val set_tag : Obj.t -> int -> unit
  val size : Obj.t -> int
  val truncate : Obj.t -> int -> unit
  val field : Obj.t -> int -> Obj.t
  val set_field : Obj.t -> int -> Obj.t -> unit
  val new_block : int -> int -> Obj.t
  val dup : Obj.t -> Obj.t
  val lazy_tag : int
  val closure_tag : int
  val object_tag : int
  val infix_tag : int
  val forward_tag : int
  val no_scan_tag : int
  val abstract_tag : int
  val string_tag : int
  val double_tag : int
  val double_array_tag : int
  val custom_tag : int
  val final_tag : int
  val marshal : Obj.t -> string
  val unmarshal : string -> int -> Obj.t * int
end