+ g_object_run_dispose (obj_data);
+}
+
+static void
+atspi_application_dispose (GObject *object)
+{
+ AtspiApplication *application = ATSPI_APPLICATION (object);
+
+ if (application->bus)
+ {
+ if (application->bus != _atspi_bus ())
+ dbus_connection_close (application->bus);
+ dbus_connection_unref (application->bus);
+ application->bus = NULL;
+ }
+
+ if (application->hash)
+ {
+ g_hash_table_foreach (application->hash, dispose_accessible, NULL);
+ g_hash_table_unref (application->hash);
+ application->hash = NULL;
+ }
+
+ if (application->root)
+ {
+ g_clear_object (&application->root->parent.app);
+ g_object_unref (application->root);
+ application->root = NULL;
+ }
+
+ G_OBJECT_CLASS (atspi_application_parent_class)->dispose (object);
+}
+
+static void
+atspi_application_finalize (GObject *object)
+{
+ AtspiApplication *application = ATSPI_APPLICATION (object);
+
+ g_free (application->bus_name);
+ g_free (application->toolkit_name);
+ g_free (application->toolkit_version);
+ g_free (application->atspi_version);