if (DBusConnection.EXCEPTION_DEBUG) e.printStackTrace();
if (DBusConnection.EXCEPTION_DEBUG && Debug.debug) Debug.print(Debug.ERR, e);
   public static Object executeRemoteMethod(RemoteObject ro, Method m, DBusConnection conn, boolean async, Object... args) throws DBusExecutionException   {      Type[] ts = m.getGenericParameterTypes();      String sig = null;      if (ts.length > 0) try {         sig = Marshalling.getDBusType(ts);         args = Marshalling.convertParameters(args, ts, conn);      } catch (DBusException DBe) {         throw new DBusExecutionException("Failed to construct D-Bus type: "+DBe.getMessage());      }      MethodCall call;      byte flags = 0;      if (!ro.autostart) flags |= Message.Flags.NO_AUTO_START;      if (async) flags |= Message.Flags.ASYNC;      if (m.isAnnotationPresent(DBus.Method.NoReply.class)) flags |= Message.Flags.NO_REPLY_EXPECTED;      try {         if (null == ro.iface)            call = new MethodCall(ro.busname, ro.objectpath, null, m.getName(),flags, sig, args);         else            call = new MethodCall(ro.busname, ro.objectpath, DBusConnection.dollar_pattern.matcher(ro.iface.getName()).replaceAll("."), m.getName(), flags, sig, args);      } catch (DBusException DBe) {         if (DBusConnection.EXCEPTION_DEBUG)            DBe.printStackTrace();         throw new DBusExecutionException("Failed to construct outgoing method call: "+DBe.getMessage());      }      if (null == conn.outgoing) throw new NotConnected("Not Connected");      synchronized (conn.outgoing) {         conn.outgoing.add(call);      }      if (async) return new DBusAsyncReply(call, m, conn);      // get reply      if (m.isAnnotationPresent(DBus.Method.NoReply.class)) return null;      Message reply = call.getReply();      if (null == reply) throw new DBus.Error.NoReply("No reply within specified time");                     if (reply instanceof Error)         ((Error) reply).throwException();      try {         return convertRV(reply.getSig(), reply.getParameters(), m, conn);      } catch (DBusException e) {         if (DBusConnection.EXCEPTION_DEBUG) e.printStackTrace();         throw new DBusExecutionException(e.getMessage());      }   }