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