def introspect(dest, path)
      if !block_given?
        # introspect in synchronous !
        data = introspect_data(dest, path)
        pof = DBus::ProxyObjectFactory.new(data, self, dest, path)
        pof.build
      else
        introspect_data(dest, path) do |async_data|
          yield(DBus::ProxyObjectFactory.new(async_data, self, dest, path).build)
        end
      end
    end
def introspect(dest, path)
      if !block_given?
        # introspect in synchronous !
        data = introspect_data(dest, path)
        pof = DBus::ProxyObjectFactory.new(data, self, dest, path)
        pof.build
      else
        introspect_data(dest, path) do |async_data|
          yield(DBus::ProxyObjectFactory.new(async_data, self, dest, path).build)
        end
      end
    end
@api private
 Issues a call to the org.freedesktop.DBus.Introspectable.Introspect method
 _dest_ is the service and _path_ the object path you want to introspect
 If a code block is given, the introspect call in asynchronous. If not
 data is returned

 FIXME: link to ProxyObject data definition
 The returned object is a ProxyObject that has methods you can call to
 issue somme METHOD_CALL messages, and to setup to receive METHOD_RETURN