sig
  type symbol
  type obj_val
  type undefined_val
  type null_val
  type function_val
  type _ t =
      Undefined : Js_types.undefined_val Js_types.t
    | Null : Js_types.null_val Js_types.t
    | Boolean : Js.boolean Js_types.t
    | Number : float Js_types.t
    | String : string Js_types.t
    | Function : Js_types.function_val Js_types.t
    | Object : Js_types.obj_val Js_types.t
    | Symbol : Js_types.symbol Js_types.t
  val reify_type : '-> 'Js_types.t * 'b
  val test : '-> 'Js_types.t -> bool
  type tagged_t =
      JSFalse
    | JSTrue
    | JSNull
    | JSUndefined
    | JSNumber of float
    | JSString of string
    | JSFunction of Js_types.function_val
    | JSObject of Js_types.obj_val
    | JSSymbol of Js_types.symbol
  val classify : '-> Js_types.tagged_t
end