sig
  type t = Obj.t
  type tag =
      Lazy
    | Closure
    | Object
    | Infix
    | Forward
    | Block
    | Abstract
    | String
    | Double
    | Double_array
    | Custom
    | Int
    | Out_of_heap
    | Unaligned
  type custom =
      Custom_nativeint of nativeint
    | Custom_int32 of int32
    | Custom_int64 of int64
    | Custom_bigarray
    | Custom_channel
    | Custom_unknown
    | Not_custom
  module TagSet :
    sig
      type elt = tag
      type t
      val empty : t
      val is_empty : t -> bool
      val mem : elt -> t -> bool
      val add : elt -> t -> t
      val singleton : elt -> t
      val remove : elt -> t -> t
      val union : t -> t -> t
      val inter : t -> t -> t
      val diff : t -> t -> t
      val compare : t -> t -> int
      val equal : t -> t -> bool
      val subset : t -> t -> bool
      val iter : (elt -> unit) -> t -> unit
      val fold : (elt -> '-> 'a) -> t -> '-> 'a
      val for_all : (elt -> bool) -> t -> bool
      val exists : (elt -> bool) -> t -> bool
      val filter : (elt -> bool) -> t -> t
      val partition : (elt -> bool) -> t -> t * t
      val cardinal : t -> int
      val elements : t -> elt list
      val min_elt : t -> elt
      val max_elt : t -> elt
      val choose : t -> elt
      val split : elt -> t -> t * bool * t
      val all : Value.t
      val of_list : Value.tag list -> Value.t
    end
  val equal : Value.t -> Value.t -> bool
  val hash : Value.t -> int
  val bits : Value.t -> nativeint
  val bits_to_string : ?base:[ `Bin | `Dec | `Hex ] -> Value.t -> string
  val tag : Value.t -> Value.tag
  val heap_words : Value.t -> int
  val is_in_heap : Value.t -> bool
  val custom_identifier : Value.t -> string
  val custom_value : Value.t -> Value.custom
  val custom_ops_info : Value.t -> string
  val custom_is_int : Value.t -> bool
  val custom_has_finalize : Value.t -> bool
  val custom_has_compare : Value.t -> bool
  val custom_has_hash : Value.t -> bool
  val custom_has_serialize : Value.t -> bool
  val custom_has_deserialize : Value.t -> bool
  val mnemonic : Value.t -> string
  val mnemonic_unknown : string
  val abbrev : Value.t -> string
  val description : Value.t -> string
end