+ /** A colon-delimited string indicating the type of the event.
+ * The string can be interpreted as
+ * \c class:type:subtype
+ * For instance ¨object:text-changed:insert¨ is an event
+ * from the 'Object' class, which corresponds to Accessible objects
+ * general, the type of the event is a ¨text-changed¨ event (i.e. a change in the
+ * content of an implementor of the Text interface), and the
+ * specific subtype of the change is an insertion event.
+ *
+ * Event classes include the following:
+ * \li focus: an object has received keyboard focus. This event has no type or subtype.
+ * \li window: a toplevel window has changed state.
+ * \li object: an object (i.e. Accessible) has undergone some change in state, content,
+ * or hierarchy
+ * \li document:a change to a document's content has occurred, or its
+ * content loading status has changed.
+ * \li mouse: an event originating from the pointing device. Rarely used;
+ * in most cases clients will wish to register for pointer events via
+ * the DeviceEventController::registerDeviceEvent method instead.
+ * \li keyboard: an event indicating that the keyboard state (for example, the
+ * modifier state) has changed significantly.
+ * "keyboard:" events are not sent for individual keystrokes except as
+ * a side-effect of certain keys, for instance modifier keys.
+ * Clients interested in key events should listen for DeviceEvents
+ * via DeviceEventController::registerKeystrokeListener instead.
+ *
+ * @note For more information on specific event types, see the documentation for
+ * each of the individual interfaces supported by some Accessible objects.
+ *
+ * @see Accessible, Component, Image, Selection, Table, Text, Value.
+ */
+ string type;
+ /**
+ * The Accessible object which is the source of the event. The source object is the object
+ * to which the change inferred by the event emission occurs; for instance,
+ * the object emitting a ¨object:parent-changed¨ event is the child, not the parent.
+ * Likewise, the event source of an ¨object:children-changed:insert¨ event is the parent,
+ * not the inserted child.
+ */
+ Accessible source;
+ /** An integer whose meaning is event type dependent. It may indicate the offset of
+ * text being inserted, in the case of ¨object:text-changed:insert¨, or the index of a
+ * newly added child in the case of ¨object:children-changed:add¨.
+ * @note since most AT-SPI clients react to events via an asynchronous queue, for
+ * performance reasons, this field may be of limited utility unless the client maintains
+ * a large client-side cache of the hierarchy and contained data. This is because by the time
+ * such an event is asynchronously processed, the state of the originating object may have
+ * changed. In other words, the data in the detail1 member is not state-coherent outside
+ * of the event handler. More useful results are gotten by examination of the 'any_data' field.
+ */
+ long detail1;
+ /** see description of detail2 */
+ long detail2;
+ /**
+ * A generic storage location for event-type-specific data which provides more specific
+ * information about the event; for instance, in AT-SPI versions prior to 1.7.0,
+ * in the case of ¨object:text-changed:insert¨ events, this field contains a string
+ * indicating the inserted text.
+ *
+ * @note Since AT-SPI 1.7.0, the data contained in this field is an EventDetails struct.
+ */
+ any any_data;