if (DBusConnection.EXCEPTION_DEBUG) DBEe.printStackTrace();
if (EXCEPTION_DEBUG && Debug.debug) Debug.print(Debug.ERR, DBEe);
         public void run()          {             try {               Type[] ts = me.getGenericParameterTypes();               m.setArgs(Marshalling.deSerializeParameters(m.getParameters(), ts, conn));               if (Debug.debug) Debug.print(Debug.DEBUG, "Deserialised "+Arrays.deepToString(m.getParameters())+" to types "+Arrays.deepToString(ts));            } catch (Exception e) {               if (DBusConnection.EXCEPTION_DEBUG) e.printStackTrace();               try {                  synchronized (outqueue) {                     outqueue.add(new Error(m, new DBus.Error.UnknownMethod("Failure in de-serializing message ("+e+")")));                   }               } catch (DBusException DBe) {}                return;            }            try {                synchronized (infomap) {                  infomap.put(Thread.currentThread(), info);               }               Object result;               try {                  result = me.invoke(ob, m.getParameters());               } catch (InvocationTargetException ITe) {                  if (DBusConnection.EXCEPTION_DEBUG) ITe.getCause().printStackTrace();                  throw ITe.getCause();               }               synchronized (infomap) {                  infomap.remove(Thread.currentThread());               }               if (!noreply) {                  MethodReturn reply;                  if (Void.TYPE.equals(me.getReturnType()))                      reply = new MethodReturn(m, null);                  else {                     StringBuffer sb = new StringBuffer();                     for (String s: Marshalling.getDBusType(me. getGenericReturnType()))                        sb.append(s);                     Object[] nr = Marshalling.convertParameters(new Object[] { result }, new Type[] {me.getGenericReturnType()}, conn);                                          reply = new MethodReturn(m, sb.toString(),nr);                  }                  synchronized (outqueue) {                     outqueue.add(reply);                  }               }            } catch (DBusExecutionException DBEe) {               if (DBusConnection.EXCEPTION_DEBUG) DBEe.printStackTrace();               try {                  synchronized (outqueue) {                     outqueue.add(new Error(m, DBEe));                   }               } catch (DBusException DBe) {}            } catch (Throwable e) {               if (DBusConnection.EXCEPTION_DEBUG) e.printStackTrace();               try {                   synchronized (outqueue) {                     outqueue.add(new Error(m, new DBusExecutionException("Error Executing Method "+m.getInterface()+"."+m.getName()+": "+e.getMessage())));                   }               } catch (DBusException DBe) {}            }          }