sig
  type error = { typ : string; str : string; ofs : int; msg : string; }
  val error_message : OBus_string.error -> string
  val typ : OBus_string.error -> string
  val str : OBus_string.error -> string
  val ofs : OBus_string.error -> int
  val msg : OBus_string.error -> string
  type validator = string -> OBus_string.error option
  exception Invalid_string of OBus_string.error
  val assert_validate : OBus_string.validator -> string -> unit
  type t = string
  val validate : OBus_string.validator
end