public static Object executeRemoteMethod(RemoteObject ro, Method m, DBusConnection conn, Class<? extends DBusInterface> iface, boolean async, Object... args) throws DBusExecutionException
public static Object executeRemoteMethod(RemoteObject ro, Method m, DBusConnection conn, boolean async, Object... args) throws DBusExecutionException
   public static Object executeRemoteMethod(RemoteObject ro, Method m, DBusConnection conn, Class<? extends DBusInterface> iface, boolean async, Object... args) throws DBusExecutionException   {      Type[] ts = m.getGenericParameterTypes();      try {         args = DBusConnection.convertParameters(args, ts);      } catch (Exception e) {         if (DBusConnection.EXCEPTION_DEBUG) e.printStackTrace();         throw new DBusExecutionException(e.getMessage());      }      MethodCall call = new MethodCall(ro.busname, ro.objectpath, DBusConnection.dollar_pattern.matcher(ro.iface.getName()).replaceAll("."), m.getName(), args);      if (ro.autostart) call.setFlags(MethodCall.AUTO_START);      if (async) call.setFlags(MethodCall.ASYNC);      if (m.isAnnotationPresent(DBus.Method.NoReply.class)) call.setFlags(MethodCall.NO_REPLY);      synchronized (conn.outgoing) {         conn.outgoing.add(call);      }      if (async) return new DBusAsyncReply(call, m);      // get reply      if (m.isAnnotationPresent(DBus.Method.NoReply.class)) return null;      DBusMessage reply = call.getReply();      if (null == reply) throw new DBusExecutionException("No reply within specified time");                     if (reply instanceof DBusErrorMessage)         ((DBusErrorMessage) reply).throwException();      return convertRV(reply.getParameters(), m);   }