<spec xmlns:xi="http://www.w3.org/2001/XInclude">
<node name="/node">
<interface name="org.a11y.atspi.Accessible">
<property name="Name" type="s" access="read"/>
<property name="Description" type="s" access="read"/>
<property name="Parent" type="(so)" access="read">
</property>
<property name="ChildCount" type="i" access="read"/>
<property name="Locale" type="s" access="read"/>
<property name="AccessibleId" type="s" access="read"/>
<method name="GetChildAtIndex">
<arg direction="in" name="index" type="i"/>
<arg direction="out" type="(so)"/>
</method>
<method name="GetChildren">
<arg direction="out" type="a(so)"/>
</method>
<method name="GetIndexInParent">
<arg direction="out" type="i"/>
</method>
<method name="GetRelationSet">
<arg direction="out" type="a(ua(so))"/>
</method>
<method name="GetRole">
<arg direction="out" type="u"/>
</method>
<method name="GetRoleName">
<arg direction="out" type="s"/>
</method>
<method name="GetLocalizedRoleName">
<arg direction="out" type="s"/>
</method>
<method name="GetState">
<arg direction="out" type="au"/>
</method>
<method name="GetAttributes">
<arg direction="out" type="a{ss}"/>
</method>
<method name="GetApplication">
<arg direction="out" type="(so)"/>
</method>
<method name="GetInterfaces">
<arg direction="out" type="as"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Action">
<property name="NActions" type="i" access="read"/>
<method name="GetDescription">
<arg type="i" name="index" direction="in"/>
<arg type="s" direction="out"/>
</method>
<method name="GetName">
<arg type="i" name="index" direction="in"/>
<arg type="s" direction="out"/>
</method>
<method name="GetLocalizedName">
<arg type="i" name="index" direction="in"/>
<arg type="s" direction="out"/>
</method>
<method name="GetKeyBinding">
<arg type="i" name="index" direction="in"/>
<arg type="s" direction="out"/>
</method>
<method name="GetActions">
<arg direction="out" type="a(sss)"/>
</method>
<method name="DoAction">
<arg direction="in" name="index" type="i"/>
<arg direction="out" type="b"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Application">
<property name="ToolkitName" type="s" access="read"/>
<property name="Version" type="s" access="read"/>
<property name="AtspiVersion" type="s" access="read"/>
<property name="Id" type="i" access="readwrite"/>
<method name="GetLocale">
<arg direction="in" name="lctype" type="u"/>
<arg direction="out" type="s"/>
</method>
<method name="RegisterEventListener">
<arg direction="in" name="event" type="s"/>
</method>
<method name="DeregisterEventListener">
<arg direction="in" name="event" type="s"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Collection">
<method name="GetMatches">
<arg direction="in" name="rule" type="(aiia{ss}iaiiasib)"/>
<arg direction="in" name="sortby" type="u"/>
<arg direction="in" name="count" type="i"/>
<arg direction="in" name="traverse" type="b"/>
<arg direction="out" type="a(so)"/>
</method>
<method name="GetMatchesTo">
<arg direction="in" name="current_object" type="o"/>
<arg direction="in" name="rule" type="(aiia{ss}iaiiasib)"/>
<arg direction="in" name="sortby" type="u"/>
<arg direction="in" name="tree" type="u"/>
<arg direction="in" name="limit_scope" type="b"/>
<arg direction="in" name="count" type="i"/>
<arg direction="in" name="traverse" type="b"/>
<arg direction="out" type="a(so)"/>
</method>
<method name="GetMatchesFrom">
<arg direction="in" name="current_object" type="o"/>
<arg direction="in" name="rule" type="(aiia{ss}iaiiasib)"/>
<arg direction="in" name="sortby" type="u"/>
<arg direction="in" name="tree" type="u"/>
<arg direction="in" name="count" type="i"/>
<arg direction="in" name="traverse" type="b"/>
<arg direction="out" type="a(so)"/>
</method>
<method name="GetActiveDescendant">
<arg direction="out" type="(so)"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Component">
<method name="Contains">
<arg direction="in" name="x" type="i"/>
<arg direction="in" name="y" type="i"/>
<arg direction="in" name="coord_type" type="u"/>
<arg direction="out" type="b"/>
</method>
<method name="GetAccessibleAtPoint">
<arg direction="in" name="x" type="i"/>
<arg direction="in" name="y" type="i"/>
<arg direction="in" name="coord_type" type="u"/>
<arg direction="out" type="(so)"/>
</method>
<method name="GetExtents">
<arg direction="in" name="coord_type" type="u"/>
<arg direction="out" type="(iiii)"/>
</method>
<method name="GetPosition">
<arg direction="in" name="coord_type" type="u"/>
<arg direction="out" name="x" type="i"/>
<arg direction="out" name="y" type="i"/>
</method>
<method name="GetSize">
<arg direction="out" name="width" type="i"/>
<arg direction="out" name="height" type="i"/>
</method>
<method name="GetLayer">
<arg direction="out" type="u"/>
</method>
<method name="GetMDIZOrder">
<arg direction="out" type="n"/>
</method>
<method name="GrabFocus">
<arg direction="out" type="b"/>
</method>
<method name="GetAlpha">
<arg direction="out" type="d"/>
</method>
<method name="SetExtents">
<arg direction="in" name="x" type="i"/>
<arg direction="in" name="y" type="i"/>
<arg direction="in" name="width" type="i"/>
<arg direction="in" name="height" type="i"/>
<arg direction="in" name="coord_type" type="u"/>
<arg direction="out" type="b"/>
</method>
<method name="SetPosition">
<arg direction="in" name="x" type="i"/>
<arg direction="in" name="y" type="i"/>
<arg direction="in" name="coord_type" type="u"/>
<arg direction="out" type="b"/>
</method>
<method name="SetSize">
<arg direction="in" name="width" type="i"/>
<arg direction="in" name="height" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="ScrollTo">
<arg direction="in" name="type" type="u"/>
<arg direction="out" type="b"/>
</method>
<method name="ScrollToPoint">
<arg direction="in" name="type" type="u"/>
<arg direction="in" name="x" type="i"/>
<arg direction="in" name="y" type="i"/>
<arg direction="out" type="b"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Document">
<property name="CurrentPageNumber" type="i" access="read"/>
<property name="PageCount" type="i" access="read"/>
<method name="GetLocale">
<arg direction="out" type="s"/>
</method>
<method name="GetAttributeValue">
<arg direction="in" name="attributename" type="s"/>
<arg direction="out" type="s"/>
</method>
<method name="GetAttributes">
<arg direction="out" type="a{ss}"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Hypertext">
<method name="GetNLinks">
<arg direction="out" type="i"/>
</method>
<method name="GetLink">
<arg direction="in" name="linkIndex" type="i"/>
<arg direction="out" type="(so)"/>
</method>
<method name="GetLinkIndex">
<arg direction="in" name="characterIndex" type="i"/>
<arg direction="out" type="i"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Hyperlink">
<property name="NAnchors" type="n" access="read"/>
<property name="StartIndex" type="i" access="read"/>
<property name="EndIndex" type="i" access="read"/>
<method name="GetObject">
<arg direction="in" name="i" type="i"/>
<arg direction="out" type="(so)"/>
</method>
<method name="GetURI">
<arg direction="in" name="i" type="i"/>
<arg direction="out" type="s"/>
</method>
<method name="IsValid">
<arg direction="out" type="b"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Image">
<property name="ImageDescription" type="s" access="read"/>
<property name="ImageLocale" type="s" access="read"/>
<method name="GetImageExtents">
<arg direction="in" name="coordType" type="u"/>
<arg direction="out" type="(iiii)"/>
</method>
<method name="GetImagePosition">
<arg direction="out" name="x" type="i"/>
<arg direction="out" name="y" type="i"/>
<arg direction="in" name="coordType" type="u"/>
</method>
<method name="GetImageSize">
<arg direction="out" name="width" type="i"/>
<arg direction="out" name="height" type="i"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Selection">
<property name="NSelectedChildren" type="i" access="read"/>
<method name="GetSelectedChild">
<arg direction="in" name="selectedChildIndex" type="i"/>
<arg direction="out" type="(so)"/>
</method>
<method name="SelectChild">
<arg direction="in" name="childIndex" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="DeselectSelectedChild">
<arg direction="in" name="selectedChildIndex" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="IsChildSelected">
<arg direction="in" name="childIndex" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="SelectAll">
<arg direction="out" type="b"/>
</method>
<method name="ClearSelection">
<arg direction="out" type="b"/>
</method>
<method name="DeselectChild">
<arg direction="in" name="childIndex" type="i"/>
<arg direction="out" type="b"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Table">
<property name="NRows" type="i" access="read"/>
<property name="NColumns" type="i" access="read"/>
<property name="Caption" type="(so)" access="read">
</property>
<property name="Summary" type="(so)" access="read">
</property>
<property name="NSelectedRows" type="i" access="read"/>
<property name="NSelectedColumns" type="i" access="read"/>
<method name="GetAccessibleAt">
<arg direction="in" name="row" type="i"/>
<arg direction="in" name="column" type="i"/>
<arg direction="out" type="(so)"/>
</method>
<method name="GetIndexAt">
<arg direction="in" name="row" type="i"/>
<arg direction="in" name="column" type="i"/>
<arg direction="out" type="i"/>
</method>
<method name="GetRowAtIndex">
<arg direction="in" name="index" type="i"/>
<arg direction="out" type="i"/>
</method>
<method name="GetColumnAtIndex">
<arg direction="in" name="index" type="i"/>
<arg direction="out" type="i"/>
</method>
<method name="GetRowDescription">
<arg direction="in" name="row" type="i"/>
<arg direction="out" type="s"/>
</method>
<method name="GetColumnDescription">
<arg direction="in" name="column" type="i"/>
<arg direction="out" type="s"/>
</method>
<method name="GetRowExtentAt">
<arg direction="in" name="row" type="i"/>
<arg direction="in" name="column" type="i"/>
<arg direction="out" type="i"/>
</method>
<method name="GetColumnExtentAt">
<arg direction="in" name="row" type="i"/>
<arg direction="in" name="column" type="i"/>
<arg direction="out" type="i"/>
</method>
<method name="GetRowHeader">
<arg direction="in" name="row" type="i"/>
<arg direction="out" type="(so)"/>
</method>
<method name="GetColumnHeader">
<arg direction="in" name="column" type="i"/>
<arg direction="out" type="(so)"/>
</method>
<method name="GetSelectedRows">
<arg direction="out" type="ai"/>
</method>
<method name="GetSelectedColumns">
<arg direction="out" type="ai"/>
</method>
<method name="IsRowSelected">
<arg direction="in" name="row" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="IsColumnSelected">
<arg direction="in" name="column" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="IsSelected">
<arg direction="in" name="row" type="i"/>
<arg direction="in" name="column" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="AddRowSelection">
<arg direction="in" name="row" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="AddColumnSelection">
<arg direction="in" name="column" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="RemoveRowSelection">
<arg direction="in" name="row" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="RemoveColumnSelection">
<arg direction="in" name="column" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="GetRowColumnExtentsAtIndex">
<arg direction="in" name="index" type="i"/>
<arg direction="out" type="b"/>
<arg direction="out" name="row" type="i"/>
<arg direction="out" name="col" type="i"/>
<arg direction="out" name="row_extents" type="i"/>
<arg direction="out" name="col_extents" type="i"/>
<arg direction="out" name="is_selected" type="b"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.TableCell">
<property access="read" name="ColumnSpan" type="i"/>
<property access="read" name="Position" type="(ii)">
</property>
<property access="read" name="RowSpan" type="i"/>
<property access="read" name="Table" type="(so)">
</property>
<method name="GetRowColumnSpan">
<arg direction="out" type="b"/>
<arg direction="out" name="row" type="i"/>
<arg direction="out" name="col" type="i"/>
<arg direction="out" name="row_extents" type="i"/>
<arg direction="out" name="col_extents" type="i"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Text">
<property name="CharacterCount" type="i" access="read"/>
<property name="CaretOffset" type="i" access="read"/>
<method name="GetStringAtOffset">
<arg direction="in" name="offset" type="i"/>
<arg direction="in" name="granularity" type="u"/>
<arg direction="out" type="s"/>
<arg direction="out" name="startOffset" type="i"/>
<arg direction="out" name="endOffset" type="i"/>
</method>
<method name="GetText">
<arg direction="in" name="startOffset" type="i"/>
<arg direction="in" name="endOffset" type="i"/>
<arg direction="out" type="s"/>
</method>
<method name="SetCaretOffset">
<arg direction="in" name="offset" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="GetTextBeforeOffset">
<arg direction="in" name="offset" type="i"/>
<arg direction="in" name="type" type="u"/>
<arg direction="out" type="s"/>
<arg direction="out" name="startOffset" type="i"/>
<arg direction="out" name="endOffset" type="i"/>
</method>
<method name="GetTextAtOffset">
<arg direction="in" name="offset" type="i"/>
<arg direction="in" name="type" type="u"/>
<arg direction="out" type="s"/>
<arg direction="out" name="startOffset" type="i"/>
<arg direction="out" name="endOffset" type="i"/>
</method>
<method name="GetTextAfterOffset">
<arg direction="in" name="offset" type="i"/>
<arg direction="in" name="type" type="u"/>
<arg direction="out" type="s"/>
<arg direction="out" name="startOffset" type="i"/>
<arg direction="out" name="endOffset" type="i"/>
</method>
<method name="GetCharacterAtOffset">
<arg name="offset" type="i" direction="in"/>
<arg type="i" direction="out"/>
</method>
<method name="GetAttributeValue">
<arg direction="in" name="offset" type="i"/>
<arg direction="in" name="attributeName" type="s"/>
<arg direction="out" type="s"/>
</method>
<method name="GetAttributes">
<arg direction="in" name="offset" type="i"/>
<arg direction="out" type="a{ss}"/>
<arg direction="out" name="startOffset" type="i"/>
<arg direction="out" name="endOffset" type="i"/>
</method>
<method name="GetDefaultAttributes">
<arg direction="out" type="a{ss}"/>
</method>
<method name="GetCharacterExtents">
<arg direction="in" name="offset" type="i"/>
<arg direction="out" name="x" type="i"/>
<arg direction="out" name="y" type="i"/>
<arg direction="out" name="width" type="i"/>
<arg direction="out" name="height" type="i"/>
<arg direction="in" name="coordType" type="u"/>
</method>
<method name="GetOffsetAtPoint">
<arg direction="in" name="x" type="i"/>
<arg direction="in" name="y" type="i"/>
<arg direction="in" name="coordType" type="u"/>
<arg direction="out" type="i"/>
</method>
<method name="GetNSelections">
<arg direction="out" type="i"/>
</method>
<method name="GetSelection">
<arg direction="in" name="selectionNum" type="i"/>
<arg direction="out" name="startOffset" type="i"/>
<arg direction="out" name="endOffset" type="i"/>
</method>
<method name="AddSelection">
<arg direction="in" name="startOffset" type="i"/>
<arg direction="in" name="endOffset" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="RemoveSelection">
<arg direction="in" name="selectionNum" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="SetSelection">
<arg direction="in" name="selectionNum" type="i"/>
<arg direction="in" name="startOffset" type="i"/>
<arg direction="in" name="endOffset" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="GetRangeExtents">
<arg direction="in" name="startOffset" type="i"/>
<arg direction="in" name="endOffset" type="i"/>
<arg direction="out" name="x" type="i"/>
<arg direction="out" name="y" type="i"/>
<arg direction="out" name="width" type="i"/>
<arg direction="out" name="height" type="i"/>
<arg direction="in" name="coordType" type="u"/>
</method>
<method name="GetBoundedRanges">
<arg direction="in" name="x" type="i"/>
<arg direction="in" name="y" type="i"/>
<arg direction="in" name="width" type="i"/>
<arg direction="in" name="height" type="i"/>
<arg direction="in" name="coordType" type="u"/>
<arg direction="in" name="xClipType" type="u"/>
<arg direction="in" name="yClipType" type="u"/>
<arg direction="out" type="a(iisv)"/>
</method>
<method name="GetAttributeRun">
<arg direction="in" name="offset" type="i"/>
<arg direction="in" name="includeDefaults" type="b"/>
<arg direction="out" type="a{ss}"/>
<arg direction="out" name="startOffset" type="i"/>
<arg direction="out" name="endOffset" type="i"/>
</method>
<method name="GetDefaultAttributeSet">
<arg direction="out" type="a{ss}"/>
</method>
<method name="ScrollSubstringTo">
<arg direction="in" name="startOffset" type="i"/>
<arg direction="in" name="endOffset" type="i"/>
<arg direction="in" name="type" type="u"/>
<arg direction="out" type="b"/>
</method>
<method name="ScrollSubstringToPoint">
<arg direction="in" name="startOffset" type="i"/>
<arg direction="in" name="endOffset" type="i"/>
<arg direction="in" name="type" type="u"/>
<arg direction="in" name="x" type="i"/>
<arg direction="in" name="y" type="i"/>
<arg direction="out" type="b"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.EditableText">
<method name="SetTextContents">
<arg direction="in" name="newContents" type="s"/>
<arg direction="out" type="b"/>
</method>
<method name="InsertText">
<arg direction="in" name="position" type="i"/>
<arg direction="in" name="text" type="s"/>
<arg direction="in" name="length" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="CopyText">
<arg direction="in" name="startPos" type="i"/>
<arg direction="in" name="endPos" type="i"/>
</method>
<method name="CutText">
<arg direction="in" name="startPos" type="i"/>
<arg direction="in" name="endPos" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="DeleteText">
<arg direction="in" name="startPos" type="i"/>
<arg direction="in" name="endPos" type="i"/>
<arg direction="out" type="b"/>
</method>
<method name="PasteText">
<arg direction="in" name="position" type="i"/>
<arg direction="out" type="b"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Cache">
<method name="GetItems">
<arg direction="out" name="nodes" type="a((so)(so)iiassusau)"/>
</method>
<signal name="AddAccessible">
<arg direction="in" name="nodeAdded" type="((so)(so)iiassusau)"/>
</signal>
<signal name="RemoveAccessible">
<arg direction="in" name="nodeRemoved" type="(so)"/>
</signal>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Value">
<property name="MinimumValue" type="d" access="read"/>
<property name="MaximumValue" type="d" access="read"/>
<property name="MinimumIncrement" type="d" access="read"/>
<property name="CurrentValue" type="d" access="readwrite"/>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.Registry">
<method name="RegisterEvent">
<arg direction="in" name="event" type="s">
</arg>
</method>
<method name="DeregisterEvent">
<arg direction="in" name="event" type="s">
</arg>
</method>
<method name="GetRegisteredEvents">
<arg direction="out" name="events" type="a(ss)"/>
</method>
<signal name="EventListenerRegistered">
<arg direction="out" name="bus" type="s"/>
<arg direction="out" name="path" type="s"/>
</signal>
<signal name="EventListenerDeregistered">
<arg direction="out" name="bus" type="s"/>
<arg direction="out" name="path" type="s"/>
</signal>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.DeviceEventController">
<method name="RegisterKeystrokeListener">
<arg direction="in" name="listener" type="o"/>
<arg direction="in" name="keys" type="a(iisi)"/>
<arg direction="in" name="mask" type="u"/>
<arg direction="in" name="type" type="au"/>
<arg direction="in" name="mode" type="(bbb)"/>
<arg direction="out" type="b"/>
</method>
<method name="DeregisterKeystrokeListener">
<arg direction="in" name="listener" type="o"/>
<arg direction="in" name="keys" type="a(iisi)"/>
<arg direction="in" name="mask" type="u"/>
<arg direction="in" name="type" type="u"/>
</method>
<method name="RegisterDeviceEventListener">
<arg direction="in" name="listener" type="o"/>
<arg direction="in" name="types" type="u"/>
<arg direction="out" type="b"/>
</method>
<method name="DeregisterDeviceEventListener">
<arg direction="in" name="listener" type="o"/>
<arg direction="in" name="types" type="u"/>
</method>
<method name="GenerateKeyboardEvent">
<arg direction="in" name="keycode" type="i"/>
<arg direction="in" name="keystring" type="s"/>
<arg direction="in" name="type" type="u"/>
</method>
<method name="GenerateMouseEvent">
<arg direction="in" name="x" type="i"/>
<arg direction="in" name="y" type="i"/>
<arg direction="in" name="eventName" type="s"/>
</method>
<method name="NotifyListenersSync">
<arg direction="in" name="event" type="(uiuuisb)"/>
<arg direction="out" type="b"/>
</method>
<method name="NotifyListenersAsync">
<arg direction="in" name="event" type="(uiuuisb)"/>
</method>
</interface>
</node>
<node name="/node">
<interface name="org.a11y.atspi.DeviceEventListener">
<method name="NotifyEvent">
<arg direction="in" name="event" type="(uiuuisb)"/>
<arg direction="out" type="b"/>
</method>
</interface>
</node>
</spec>