`sig type t external repr : 'a -> Obj.t = "%identity" external obj : Obj.t -> 'a = "%identity" external magic : 'a -> 'b = "%identity" external is_block : Obj.t -> bool = "caml_obj_is_block" external is_int : Obj.t -> bool = "%obj_is_int" external tag : Obj.t -> int = "caml_obj_tag" external size : Obj.t -> int = "%obj_size" external field : Obj.t -> int -> Obj.t = "%obj_field" external set_field : Obj.t -> int -> Obj.t -> unit = "%obj_set_field" external set_tag : Obj.t -> int -> unit = "caml_obj_set_tag" val double_field : Obj.t -> int -> float val set_double_field : Obj.t -> int -> float -> unit external new_block : int -> int -> Obj.t = "caml_obj_block" external dup : Obj.t -> Obj.t = "caml_obj_dup" external truncate : Obj.t -> int -> unit = "caml_obj_truncate" external add_offset : Obj.t -> Int32.t -> Obj.t = "caml_obj_add_offset" val first_non_constant_constructor_tag : int val last_non_constant_constructor_tag : int 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 int_tag : int val out_of_heap_tag : int val unaligned_tag : int val extension_constructor : 'a -> extension_constructor val extension_name : extension_constructor -> string val extension_id : extension_constructor -> int val marshal : Obj.t -> bytes val unmarshal : bytes -> int -> Obj.t * int module Ephemeron : sig type obj_t = Obj.t type t val create : int -> Obj.Ephemeron.t val length : Obj.Ephemeron.t -> int val get_key : Obj.Ephemeron.t -> int -> Obj.Ephemeron.obj_t option val get_key_copy : Obj.Ephemeron.t -> int -> Obj.Ephemeron.obj_t option val set_key : Obj.Ephemeron.t -> int -> Obj.Ephemeron.obj_t -> unit val unset_key : Obj.Ephemeron.t -> int -> unit val check_key : Obj.Ephemeron.t -> int -> bool val blit_key : Obj.Ephemeron.t -> int -> Obj.Ephemeron.t -> int -> int -> unit val get_data : Obj.Ephemeron.t -> Obj.Ephemeron.obj_t option val get_data_copy : Obj.Ephemeron.t -> Obj.Ephemeron.obj_t option val set_data : Obj.Ephemeron.t -> Obj.Ephemeron.obj_t -> unit val unset_data : Obj.Ephemeron.t -> unit val check_data : Obj.Ephemeron.t -> bool val blit_data : Obj.Ephemeron.t -> Obj.Ephemeron.t -> unit end end`