+ GArray *state_bitflags;
+ AccessibleStateSet *retval;
+
+ cspi_return_val_if_fail (obj != NULL, NULL);
+
+ cspi_dbus_call (obj, spi_interface_accessible, "getStateSet", NULL, "=>au", &state_bitflags);
+ cspi_return_val_if_ev ("getState", NULL);
+
+ retval = spi_state_set_cache_new (state_bitflags);
+
+ g_array_free (state_bitflags, TRUE);
+
+ return retval;
+}
+
+/**
+ * Accessible_getAttributes:
+ * @obj: The #Accessible being queried.
+ *
+ * Get the #AttributeSet representing any assigned
+ * name-value pair attributes or annotations for this object.
+ * For typographic, textual, or textually-semantic attributes, see
+ * AccessibleText_getAttributes instead.
+ *
+ * Returns: The name-value-pair attributes assigned to this object.
+ */
+AccessibleAttributeSet *
+Accessible_getAttributes (Accessible *obj)
+{
+ AccessibleAttributeSet *retval;
+ GArray *dbus_seq;
+
+ cspi_return_val_if_fail (obj != NULL, NULL);
+
+ cspi_dbus_call (obj, spi_interface_accessible, "getAttributes", NULL, "=>as", &dbus_seq);
+
+ cspi_return_val_if_ev ("getAttributes", NULL);
+
+ retval = _cspi_attribute_set_from_sequence (dbus_seq);
+
+ return retval;
+}
+
+/**
+ * Accessible_getHostApplication:
+ * @obj: The #Accessible being queried.
+ *
+ * Get the containing #AccessibleApplication for an object.
+ *
+ * Returns: the containing AccessibleApplication instance for this object.
+ */
+AccessibleApplication *
+Accessible_getHostApplication (Accessible *obj)
+{
+ while (obj->parent) obj = obj->parent;
+ return obj;