'Return a string of XML encoding this object\'s supported interfaces,
methods and signals.'

@method(INTROSPECTABLE_IFACE, in_signature='', out_signature='s', path_keyword='object_path', connection_keyword='connection')
def Introspect(self, object_path, connection):

    reflection_data = _dbus_bindings.DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
    reflection_data += ('<node    name="%s">\n' % object_path)
    interfaces = self._dbus_interface_table
    for (name, funcs) in interfaces.items():
        reflection_data += ('        <interface    name="%s">\n' % name)
        for func in funcs.values():
            if getattr(func, '_dbus_is_method', False):
                reflection_data += self.__class__._reflect_on_method(func)
            elif getattr(func, '_dbus_is_signal', False):
                reflection_data += self.__class__._reflect_on_signal(func)
            elif isinstance(func, dbus_property):
                reflection_data += self.__class__._reflect_on_property(func)
        reflection_data += '        </interface>\n'
    for name in connection.list_exported_child_objects(object_path):
        reflection_data += ('        <node    name="%s"/>\n' % name)
    reflection_data += '</node>\n'
    return reflection_data
