sig
  module T :
    sig
      type basic =
          Byte
        | Boolean
        | Int16
        | Int32
        | Int64
        | Uint16
        | Uint32
        | Uint64
        | Double
        | String
        | Signature
        | Object_path
        | Unix_fd
      type single =
          Basic of OBus_value.T.basic
        | Structure of OBus_value.T.single list
        | Array of OBus_value.T.single
        | Dict of OBus_value.T.basic * OBus_value.T.single
        | Variant
      type sequence = OBus_value.T.single list
      val byte : OBus_value.T.basic
      val boolean : OBus_value.T.basic
      val int16 : OBus_value.T.basic
      val int32 : OBus_value.T.basic
      val int64 : OBus_value.T.basic
      val uint16 : OBus_value.T.basic
      val uint32 : OBus_value.T.basic
      val uint64 : OBus_value.T.basic
      val double : OBus_value.T.basic
      val string : OBus_value.T.basic
      val signature : OBus_value.T.basic
      val object_path : OBus_value.T.basic
      val unix_fd : OBus_value.T.basic
      val basic : OBus_value.T.basic -> OBus_value.T.single
      val structure : OBus_value.T.single list -> OBus_value.T.single
      val array : OBus_value.T.single -> OBus_value.T.single
      val dict :
        OBus_value.T.basic -> OBus_value.T.single -> OBus_value.T.single
      val variant : OBus_value.T.single
      val basic_byte : OBus_value.T.single
      val basic_boolean : OBus_value.T.single
      val basic_int16 : OBus_value.T.single
      val basic_int32 : OBus_value.T.single
      val basic_int64 : OBus_value.T.single
      val basic_uint16 : OBus_value.T.single
      val basic_uint32 : OBus_value.T.single
      val basic_uint64 : OBus_value.T.single
      val basic_double : OBus_value.T.single
      val basic_string : OBus_value.T.single
      val basic_signature : OBus_value.T.single
      val basic_object_path : OBus_value.T.single
      val basic_unix_fd : OBus_value.T.single
      val print_basic : Format.formatter -> OBus_value.T.basic -> unit
      val print_single : Format.formatter -> OBus_value.T.single -> unit
      val print_sequence : Format.formatter -> OBus_value.T.sequence -> unit
      val string_of_basic : OBus_value.T.basic -> string
      val string_of_single : OBus_value.T.single -> string
      val string_of_sequence : OBus_value.T.sequence -> string
    end
  type signature = OBus_value.T.sequence
  exception Invalid_signature of string * string
  val string_of_signature : OBus_value.signature -> string
  val signature_of_string : string -> OBus_value.signature
  val validate_signature : OBus_value.signature -> string option
  module V :
    sig
      type basic =
          Byte of char
        | Boolean of bool
        | Int16 of int
        | Int32 of int32
        | Int64 of int64
        | Uint16 of int
        | Uint32 of int32
        | Uint64 of int64
        | Double of float
        | String of string
        | Signature of OBus_value.signature
        | Object_path of OBus_path.t
        | Unix_fd of Unix.file_descr
      type single = private
          Basic of OBus_value.V.basic
        | Array of OBus_value.T.single * OBus_value.V.single list
        | Byte_array of string
        | Dict of OBus_value.T.basic * OBus_value.T.single *
            (OBus_value.V.basic * OBus_value.V.single) list
        | Structure of OBus_value.V.single list
        | Variant of OBus_value.V.single
      type sequence = OBus_value.V.single list
      val byte : char -> OBus_value.V.basic
      val boolean : bool -> OBus_value.V.basic
      val int16 : int -> OBus_value.V.basic
      val int32 : int32 -> OBus_value.V.basic
      val int64 : int64 -> OBus_value.V.basic
      val uint16 : int -> OBus_value.V.basic
      val uint32 : int32 -> OBus_value.V.basic
      val uint64 : int64 -> OBus_value.V.basic
      val double : float -> OBus_value.V.basic
      val string : string -> OBus_value.V.basic
      val signature : OBus_value.signature -> OBus_value.V.basic
      val object_path : OBus_path.t -> OBus_value.V.basic
      val unix_fd : Unix.file_descr -> OBus_value.V.basic
      val basic : OBus_value.V.basic -> OBus_value.V.single
      val array :
        OBus_value.T.single ->
        OBus_value.V.single list -> OBus_value.V.single
      val byte_array : string -> OBus_value.V.single
      val dict :
        OBus_value.T.basic ->
        OBus_value.T.single ->
        (OBus_value.V.basic * OBus_value.V.single) list ->
        OBus_value.V.single
      val structure : OBus_value.V.single list -> OBus_value.V.single
      val variant : OBus_value.V.single -> OBus_value.V.single
      val unsafe_array :
        OBus_value.T.single ->
        OBus_value.V.single list -> OBus_value.V.single
      val unsafe_dict :
        OBus_value.T.basic ->
        OBus_value.T.single ->
        (OBus_value.V.basic * OBus_value.V.single) list ->
        OBus_value.V.single
      val basic_byte : char -> OBus_value.V.single
      val basic_boolean : bool -> OBus_value.V.single
      val basic_int16 : int -> OBus_value.V.single
      val basic_int32 : int32 -> OBus_value.V.single
      val basic_int64 : int64 -> OBus_value.V.single
      val basic_uint16 : int -> OBus_value.V.single
      val basic_uint32 : int32 -> OBus_value.V.single
      val basic_uint64 : int64 -> OBus_value.V.single
      val basic_double : float -> OBus_value.V.single
      val basic_string : string -> OBus_value.V.single
      val basic_signature : OBus_value.signature -> OBus_value.V.single
      val basic_object_path : OBus_path.t -> OBus_value.V.single
      val basic_unix_fd : Unix.file_descr -> OBus_value.V.single
      val type_of_basic : OBus_value.V.basic -> OBus_value.T.basic
      val type_of_single : OBus_value.V.single -> OBus_value.T.single
      val type_of_sequence : OBus_value.V.sequence -> OBus_value.T.sequence
      val print_basic : Format.formatter -> OBus_value.V.basic -> unit
      val print_single : Format.formatter -> OBus_value.V.single -> unit
      val print_sequence : Format.formatter -> OBus_value.V.sequence -> unit
      val string_of_basic : OBus_value.V.basic -> string
      val string_of_single : OBus_value.V.single -> string
      val string_of_sequence : OBus_value.V.sequence -> string
      val basic_dup : OBus_value.V.basic -> OBus_value.V.basic
      val single_dup : OBus_value.V.single -> OBus_value.V.single
      val sequence_dup : OBus_value.V.sequence -> OBus_value.V.sequence
      val basic_close : OBus_value.V.basic -> unit Lwt.t
      val single_close : OBus_value.V.single -> unit Lwt.t
      val sequence_close : OBus_value.V.sequence -> unit Lwt.t
    end
  module C :
    sig
      type 'a basic
      type 'a single
      type 'a sequence
      val byte : char OBus_value.C.basic
      val boolean : bool OBus_value.C.basic
      val int16 : int OBus_value.C.basic
      val int32 : int32 OBus_value.C.basic
      val int64 : int64 OBus_value.C.basic
      val uint16 : int OBus_value.C.basic
      val uint32 : int32 OBus_value.C.basic
      val uint64 : int64 OBus_value.C.basic
      val double : float OBus_value.C.basic
      val string : string OBus_value.C.basic
      val signature : OBus_value.signature OBus_value.C.basic
      val object_path : OBus_path.t OBus_value.C.basic
      val unix_fd : Unix.file_descr OBus_value.C.basic
      val basic : 'OBus_value.C.basic -> 'OBus_value.C.single
      val structure : 'OBus_value.C.sequence -> 'OBus_value.C.single
      val byte_array : string OBus_value.C.single
      val array : 'OBus_value.C.single -> 'a list OBus_value.C.single
      val dict :
        'OBus_value.C.basic ->
        'OBus_value.C.single -> ('a * 'b) list OBus_value.C.single
      val variant : OBus_value.V.single OBus_value.C.single
      val basic_byte : char OBus_value.C.single
      val basic_boolean : bool OBus_value.C.single
      val basic_int16 : int OBus_value.C.single
      val basic_int32 : int32 OBus_value.C.single
      val basic_int64 : int64 OBus_value.C.single
      val basic_uint16 : int OBus_value.C.single
      val basic_uint32 : int32 OBus_value.C.single
      val basic_uint64 : int64 OBus_value.C.single
      val basic_double : float OBus_value.C.single
      val basic_string : string OBus_value.C.single
      val basic_signature : OBus_value.signature OBus_value.C.single
      val basic_object_path : OBus_path.t OBus_value.C.single
      val basic_unix_fd : Unix.file_descr OBus_value.C.single
      val type_basic : 'OBus_value.C.basic -> OBus_value.T.basic
      val type_single : 'OBus_value.C.single -> OBus_value.T.single
      val type_sequence : 'OBus_value.C.sequence -> OBus_value.T.sequence
      val make_basic : 'OBus_value.C.basic -> '-> OBus_value.V.basic
      val make_single : 'OBus_value.C.single -> '-> OBus_value.V.single
      val make_sequence :
        'OBus_value.C.sequence -> '-> OBus_value.V.sequence
      exception Signature_mismatch
      val cast_basic : 'OBus_value.C.basic -> OBus_value.V.basic -> 'a
      val cast_single : 'OBus_value.C.single -> OBus_value.V.single -> 'a
      val cast_sequence :
        'OBus_value.C.sequence -> OBus_value.V.sequence -> 'a
      val dyn_basic :
        OBus_value.T.basic -> OBus_value.V.basic OBus_value.C.basic
      val dyn_single :
        OBus_value.T.single -> OBus_value.V.single OBus_value.C.single
      val dyn_sequence :
        OBus_value.T.sequence -> OBus_value.V.sequence OBus_value.C.sequence
      val seq0 : unit OBus_value.C.sequence
      val seq1 : 'a1 OBus_value.C.single -> 'a1 OBus_value.C.sequence
      val seq2 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single -> ('a1 * 'a2) OBus_value.C.sequence
      val seq3 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single -> ('a1 * 'a2 * 'a3) OBus_value.C.sequence
      val seq4 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4) OBus_value.C.sequence
      val seq5 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5) OBus_value.C.sequence
      val seq6 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        'a6 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6) OBus_value.C.sequence
      val seq7 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        'a6 OBus_value.C.single ->
        'a7 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7) OBus_value.C.sequence
      val seq8 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        'a6 OBus_value.C.single ->
        'a7 OBus_value.C.single ->
        'a8 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8) OBus_value.C.sequence
      val seq9 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        'a6 OBus_value.C.single ->
        'a7 OBus_value.C.single ->
        'a8 OBus_value.C.single ->
        'a9 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9)
        OBus_value.C.sequence
      val seq10 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        'a6 OBus_value.C.single ->
        'a7 OBus_value.C.single ->
        'a8 OBus_value.C.single ->
        'a9 OBus_value.C.single ->
        'a10 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10)
        OBus_value.C.sequence
      val seq11 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        'a6 OBus_value.C.single ->
        'a7 OBus_value.C.single ->
        'a8 OBus_value.C.single ->
        'a9 OBus_value.C.single ->
        'a10 OBus_value.C.single ->
        'a11 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11)
        OBus_value.C.sequence
      val seq12 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        'a6 OBus_value.C.single ->
        'a7 OBus_value.C.single ->
        'a8 OBus_value.C.single ->
        'a9 OBus_value.C.single ->
        'a10 OBus_value.C.single ->
        'a11 OBus_value.C.single ->
        'a12 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 *
         'a12)
        OBus_value.C.sequence
      val seq13 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        'a6 OBus_value.C.single ->
        'a7 OBus_value.C.single ->
        'a8 OBus_value.C.single ->
        'a9 OBus_value.C.single ->
        'a10 OBus_value.C.single ->
        'a11 OBus_value.C.single ->
        'a12 OBus_value.C.single ->
        'a13 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 *
         'a12 * 'a13)
        OBus_value.C.sequence
      val seq14 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        'a6 OBus_value.C.single ->
        'a7 OBus_value.C.single ->
        'a8 OBus_value.C.single ->
        'a9 OBus_value.C.single ->
        'a10 OBus_value.C.single ->
        'a11 OBus_value.C.single ->
        'a12 OBus_value.C.single ->
        'a13 OBus_value.C.single ->
        'a14 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 *
         'a12 * 'a13 * 'a14)
        OBus_value.C.sequence
      val seq15 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        'a6 OBus_value.C.single ->
        'a7 OBus_value.C.single ->
        'a8 OBus_value.C.single ->
        'a9 OBus_value.C.single ->
        'a10 OBus_value.C.single ->
        'a11 OBus_value.C.single ->
        'a12 OBus_value.C.single ->
        'a13 OBus_value.C.single ->
        'a14 OBus_value.C.single ->
        'a15 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 *
         'a12 * 'a13 * 'a14 * 'a15)
        OBus_value.C.sequence
      val seq16 :
        'a1 OBus_value.C.single ->
        'a2 OBus_value.C.single ->
        'a3 OBus_value.C.single ->
        'a4 OBus_value.C.single ->
        'a5 OBus_value.C.single ->
        'a6 OBus_value.C.single ->
        'a7 OBus_value.C.single ->
        'a8 OBus_value.C.single ->
        'a9 OBus_value.C.single ->
        'a10 OBus_value.C.single ->
        'a11 OBus_value.C.single ->
        'a12 OBus_value.C.single ->
        'a13 OBus_value.C.single ->
        'a14 OBus_value.C.single ->
        'a15 OBus_value.C.single ->
        'a16 OBus_value.C.single ->
        ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 *
         'a12 * 'a13 * 'a14 * 'a15 * 'a16)
        OBus_value.C.sequence
    end
  type 'a arguments = private {
    arg_types : 'OBus_value.C.sequence;
    arg_names : string option list;
  }
  val arguments :
    arg_types:'OBus_value.C.sequence ->
    arg_names:string option list -> 'OBus_value.arguments
  val arg_types : 'OBus_value.arguments -> 'OBus_value.C.sequence
  val arg_names : 'OBus_value.arguments -> string option list
  val arg_cons :
    string option * 'OBus_value.C.single ->
    'OBus_value.arguments -> ('a * 'b) OBus_value.arguments
  val arg0 : unit OBus_value.arguments
  val arg1 :
    string option * 'a1 OBus_value.C.single -> 'a1 OBus_value.arguments
  val arg2 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    ('a1 * 'a2) OBus_value.arguments
  val arg3 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3) OBus_value.arguments
  val arg4 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4) OBus_value.arguments
  val arg5 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5) OBus_value.arguments
  val arg6 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    string option * 'a6 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6) OBus_value.arguments
  val arg7 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    string option * 'a6 OBus_value.C.single ->
    string option * 'a7 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7) OBus_value.arguments
  val arg8 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    string option * 'a6 OBus_value.C.single ->
    string option * 'a7 OBus_value.C.single ->
    string option * 'a8 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8) OBus_value.arguments
  val arg9 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    string option * 'a6 OBus_value.C.single ->
    string option * 'a7 OBus_value.C.single ->
    string option * 'a8 OBus_value.C.single ->
    string option * 'a9 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9)
    OBus_value.arguments
  val arg10 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    string option * 'a6 OBus_value.C.single ->
    string option * 'a7 OBus_value.C.single ->
    string option * 'a8 OBus_value.C.single ->
    string option * 'a9 OBus_value.C.single ->
    string option * 'a10 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10)
    OBus_value.arguments
  val arg11 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    string option * 'a6 OBus_value.C.single ->
    string option * 'a7 OBus_value.C.single ->
    string option * 'a8 OBus_value.C.single ->
    string option * 'a9 OBus_value.C.single ->
    string option * 'a10 OBus_value.C.single ->
    string option * 'a11 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11)
    OBus_value.arguments
  val arg12 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    string option * 'a6 OBus_value.C.single ->
    string option * 'a7 OBus_value.C.single ->
    string option * 'a8 OBus_value.C.single ->
    string option * 'a9 OBus_value.C.single ->
    string option * 'a10 OBus_value.C.single ->
    string option * 'a11 OBus_value.C.single ->
    string option * 'a12 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 * 'a12)
    OBus_value.arguments
  val arg13 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    string option * 'a6 OBus_value.C.single ->
    string option * 'a7 OBus_value.C.single ->
    string option * 'a8 OBus_value.C.single ->
    string option * 'a9 OBus_value.C.single ->
    string option * 'a10 OBus_value.C.single ->
    string option * 'a11 OBus_value.C.single ->
    string option * 'a12 OBus_value.C.single ->
    string option * 'a13 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 *
     'a12 * 'a13)
    OBus_value.arguments
  val arg14 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    string option * 'a6 OBus_value.C.single ->
    string option * 'a7 OBus_value.C.single ->
    string option * 'a8 OBus_value.C.single ->
    string option * 'a9 OBus_value.C.single ->
    string option * 'a10 OBus_value.C.single ->
    string option * 'a11 OBus_value.C.single ->
    string option * 'a12 OBus_value.C.single ->
    string option * 'a13 OBus_value.C.single ->
    string option * 'a14 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 *
     'a12 * 'a13 * 'a14)
    OBus_value.arguments
  val arg15 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    string option * 'a6 OBus_value.C.single ->
    string option * 'a7 OBus_value.C.single ->
    string option * 'a8 OBus_value.C.single ->
    string option * 'a9 OBus_value.C.single ->
    string option * 'a10 OBus_value.C.single ->
    string option * 'a11 OBus_value.C.single ->
    string option * 'a12 OBus_value.C.single ->
    string option * 'a13 OBus_value.C.single ->
    string option * 'a14 OBus_value.C.single ->
    string option * 'a15 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 *
     'a12 * 'a13 * 'a14 * 'a15)
    OBus_value.arguments
  val arg16 :
    string option * 'a1 OBus_value.C.single ->
    string option * 'a2 OBus_value.C.single ->
    string option * 'a3 OBus_value.C.single ->
    string option * 'a4 OBus_value.C.single ->
    string option * 'a5 OBus_value.C.single ->
    string option * 'a6 OBus_value.C.single ->
    string option * 'a7 OBus_value.C.single ->
    string option * 'a8 OBus_value.C.single ->
    string option * 'a9 OBus_value.C.single ->
    string option * 'a10 OBus_value.C.single ->
    string option * 'a11 OBus_value.C.single ->
    string option * 'a12 OBus_value.C.single ->
    string option * 'a13 OBus_value.C.single ->
    string option * 'a14 OBus_value.C.single ->
    string option * 'a15 OBus_value.C.single ->
    string option * 'a16 OBus_value.C.single ->
    ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 *
     'a12 * 'a13 * 'a14 * 'a15 * 'a16)
    OBus_value.arguments
end