s.setSerial(serial); s.setSource(source); return s;
   static DBusSignal createSignal(Class<? extends DBusSignal> c, String source, String objectpath, String sig, long serial, Object... parameters) throws DBusException   {      Constructor con = c.getDeclaredConstructors()[0];      Type[] ts = con.getGenericParameterTypes();      Type[] types = new Type[ts.length-1];      for (int i = 1; i < ts.length; i++)         if (ts[i] instanceof TypeVariable)            for (Type b: ((TypeVariable) ts[i]).getBounds())               types[i-1] = b;         else            types[i-1] = ts[i];      try {         parameters = DBusConnection.deSerializeParameters(parameters, types);         if (null == parameters) return (DBusSignal) con.newInstance(objectpath);         else {            Object[] args = new Object[parameters.length + 1];            args[1] = objectpath;            for (int i = 1; i < args.length; i++)               args[i] = parameters[i-1];            return (DBusSignal) con.newInstance(args);         }      } catch (Exception e) {          throw new DBusException(e.getMessage());      }   }