sig
  val make_table :
    (string * Json_type.t) list -> (string, Json_type.t) Hashtbl.t
  val field : (string, Json_type.t) Hashtbl.t -> string -> Json_type.t
  val fieldx : (string, Json_type.t) Hashtbl.t -> string -> Json_type.t
  val optfield :
    (string, Json_type.t) Hashtbl.t -> string -> Json_type.t option
  val optfieldx :
    (string, Json_type.t) Hashtbl.t -> string -> Json_type.t option
  val describe : Json_type.t -> string
  val type_mismatch : string -> Json_type.t -> 'a
  val is_null : Json_type.t -> bool
  val is_defined : Json_type.t -> bool
  val null : Json_type.t -> unit
  val string : Json_type.t -> string
  val bool : Json_type.t -> bool
  val number : Json_type.t -> float
  val int : Json_type.t -> int
  val float : Json_type.t -> float
  val array : Json_type.t -> Json_type.t list
  val objekt : Json_type.t -> (string * Json_type.t) list
  val list : (Json_type.t -> 'a) -> Json_type.t -> 'a list
  val option : Json_type.t -> Json_type.t option
  val optional : (Json_type.t -> 'a) -> Json_type.t -> 'a option
  val assert_object_or_array : Json_type.t -> unit
end