protected DBusSignal(String objectpath, Object... parameters) throws DBusException { super(null, "", null, "", parameters, 0); if (!objectpath.matches(DBusConnection.OBJECT_REGEX)) throw new DBusException("Invalid object path"); Class tc = getClass(); try { name = tc.getSimpleName(); if (null != tc.getEnclosingClass()) type = DBusConnection.dollar_pattern.matcher(tc.getEnclosingClass().getName()).replaceAll("."); this.objectpath = objectpath;   Type[] types = typeCache.get(tc); if (null == types) { Constructor con = tc.getDeclaredConstructors()[0]; conCache.put(tc, con); Type[] ts = con.getGenericParameterTypes(); types = new Type[ts.length-1]; for (int i = 1; i <= types.length; i++) if (ts[i] instanceof TypeVariable) types[i-1] = ((TypeVariable) ts[i]).getBounds()[0]; else types[i-1] = ts[i];  typeCache.put(tc, types); } if (null != parameters) parameters = DBusConnection.convertParameters(parameters, types);  } catch (Exception e) { if (DBusConnection.EXCEPTION_DEBUG) e.printStackTrace(); throw new DBusException("Failed to correctly determine DBusSignal type: "+e); } }
DBusSignal() { }
   protected DBusSignal(String objectpath, Object... parameters) throws DBusException   {      super(null, "", null, "", parameters, 0);      if (!objectpath.matches(DBusConnection.OBJECT_REGEX)) throw new DBusException("Invalid object path");      Class tc = getClass();      try {         name = tc.getSimpleName();         if (null != tc.getEnclosingClass())            type = DBusConnection.dollar_pattern.matcher(tc.getEnclosingClass().getName()).replaceAll(".");         this.objectpath = objectpath;         // convert recursively everything         Type[] types = typeCache.get(tc);         if (null == types) {            Constructor con = tc.getDeclaredConstructors()[0];            conCache.put(tc, con);            Type[] ts = con.getGenericParameterTypes();            types = new Type[ts.length-1];            for (int i = 1; i <= types.length; i++)                if (ts[i] instanceof TypeVariable)                  types[i-1] = ((TypeVariable) ts[i]).getBounds()[0];               else                  types[i-1] = ts[i];            typeCache.put(tc, types);         }         if (null != parameters)            parameters = DBusConnection.convertParameters(parameters, types);      } catch (Exception e) {         if (DBusConnection.EXCEPTION_DEBUG) e.printStackTrace();         throw new DBusException("Failed to correctly determine DBusSignal type: "+e);      }   }