sig
  module Method :
    sig
      type ('a, 'b) t = {
        interface : OBus_name.interface;
        member : OBus_name.member;
        i_args : 'OBus_value.arguments;
        o_args : 'OBus_value.arguments;
        annotations : OBus_introspect.annotation list;
      }
      val make :
        interface:OBus_name.interface ->
        member:OBus_name.member ->
        i_args:'OBus_value.arguments ->
        o_args:'OBus_value.arguments ->
        annotations:OBus_introspect.annotation list ->
        ('a, 'b) OBus_member.Method.t
      val interface : ('a, 'b) OBus_member.Method.t -> OBus_name.interface
      val member : ('a, 'b) OBus_member.Method.t -> OBus_name.member
      val i_args : ('a, 'b) OBus_member.Method.t -> 'OBus_value.arguments
      val o_args : ('a, 'b) OBus_member.Method.t -> 'OBus_value.arguments
      val annotations :
        ('a, 'b) OBus_member.Method.t -> OBus_introspect.annotation list
      val introspect :
        ('a, 'b) OBus_member.Method.t -> OBus_introspect.member
    end
  module Signal :
    sig
      type 'a t = {
        interface : OBus_name.interface;
        member : OBus_name.member;
        args : 'OBus_value.arguments;
        annotations : OBus_introspect.annotation list;
      }
      val make :
        interface:OBus_name.interface ->
        member:OBus_name.member ->
        args:'OBus_value.arguments ->
        annotations:OBus_introspect.annotation list ->
        'OBus_member.Signal.t
      val interface : 'OBus_member.Signal.t -> OBus_name.interface
      val member : 'OBus_member.Signal.t -> OBus_name.member
      val args : 'OBus_member.Signal.t -> 'OBus_value.arguments
      val annotations :
        'OBus_member.Signal.t -> OBus_introspect.annotation list
      val introspect : 'OBus_member.Signal.t -> OBus_introspect.member
    end
  module Property :
    sig
      type 'a access = private Readable | Writable | Readable_writable
      val readable : [ `readable ] OBus_member.Property.access
      val writable : [ `writable ] OBus_member.Property.access
      val readable_writable :
        [ `readable | `writable ] OBus_member.Property.access
      type ('a, 'access) t = {
        interface : OBus_name.interface;
        member : OBus_name.member;
        typ : 'OBus_value.C.single;
        access : 'access OBus_member.Property.access;
        annotations : OBus_introspect.annotation list;
      }
      val make :
        interface:OBus_name.interface ->
        member:OBus_name.member ->
        typ:'OBus_value.C.single ->
        access:'access OBus_member.Property.access ->
        annotations:OBus_introspect.annotation list ->
        ('a, 'access) OBus_member.Property.t
      val interface :
        ('a, 'access) OBus_member.Property.t -> OBus_name.interface
      val member : ('a, 'access) OBus_member.Property.t -> OBus_name.member
      val typ :
        ('a, 'access) OBus_member.Property.t -> 'OBus_value.C.single
      val access :
        ('a, 'access) OBus_member.Property.t ->
        'access OBus_member.Property.access
      val annotations :
        ('a, 'access) OBus_member.Property.t ->
        OBus_introspect.annotation list
      val introspect :
        ('a, 'access) OBus_member.Property.t -> OBus_introspect.member
    end
end