if (DBusConnection.EXCEPTION_DEBUG) e.printStackTrace();
   public static Object convertRV(Object[] rp, Method m)   {      Class c = m.getReturnType();      if (null == rp) {          if(null == c || Void.TYPE.equals(c)) return null;         else throw new DBusExecutionException("Wrong return type (expected void)");      }      switch (rp.length) {         case 0:            if (null == c || Void.TYPE.equals(c))               return null;            else throw new DBusExecutionException("Wrong return type (expected void)");         case 1:            try {                rp = DBusConnection.deSerializeParameters(rp,                      new Type[] { m.getGenericReturnType() });            }            catch (Exception e) {                throw new DBusExecutionException("Wrong return type (failed to de-serialize correct types: "+e.getMessage()+")");            }            return rp[0];         default:            // check we are meant to return multiple values            if (!Tuple.class.isAssignableFrom(c))               throw new DBusExecutionException("Wrong return type (not expecting Tuple)");                        ParameterizedType p = (ParameterizedType) m.getGenericReturnType();                        // check we have the correct number of args            Type[] ts = p.getActualTypeArguments();            if (ts.length != rp.length)                throw new DBusExecutionException("Incorrect number of return values. Expected "+ts.length+" got "+rp.length);            Constructor con;            try {                // convert everything to the correct types               rp = DBusConnection.deSerializeParameters(rp, ts);               con = ((Class) p.getRawType()).getDeclaredConstructors()[0];             }            catch (Exception e) {                throw new DBusExecutionException("Wrong return type (Tuple type invalid: "+e.getMessage()+")");            }            // create tuple and return stuff            try { return con.newInstance(rp); }            catch (Exception e) {               throw new DBusExecutionException("Wrong return type (failed to create Tuple, contents probably invalid)");            }      }   }