# File lib/dbus/bus.rb, line 386
    def introspect_data(dest, path)
      m = DBus::Message.new(DBus::Message::METHOD_CALL)
      m.path = path
      m.interface = "org.freedesktop.DBus.Introspectable"
      m.destination = dest
      m.member = "Introspect"
      m.sender = unique_name
      if not block_given?
        # introspect in synchronous !
        send_sync(m) do |rmsg|
          if rmsg.is_a?(Error)
            raise rmsg
          else
            return rmsg.params[0] # return value of introspect_data
          end
        end
      else
        send(m.marshall)
        on_return(m) do |rmsg|
          if rmsg.is_a?(Error)
            yield rmsg
          else
            yield rmsg.params[0]
          end
        end
      end
      nil
    end