if (DBusConnection.EXCEPTION_DEBUG) e.printStackTrace();
if (EXCEPTION_DEBUG && Debug.debug) Debug.print(Debug.ERR, e);
   DBusInterface dynamicProxy(String source, String path) throws DBusException   {      try {         DBus.Introspectable intro = (DBus.Introspectable) getRemoteObject(source, path, DBus.Introspectable.class);         String data = intro.Introspect();         String[] tags = data.split("[<>]");         Vector<String> ifaces = new Vector<String>();         for (String tag: tags) {            if (tag.startsWith("interface")) {               ifaces.add(tag.replaceAll("^interface *name *= *['\"]([^'\"]*)['\"].*$", "$1"));            }         }         Vector<Class> ifcs = new Vector<Class>();         for(String iface: ifaces) {            int j = 0;            while (j >= 0) {               try {                  ifcs.add(Class.forName(iface));                  break;               } catch (Exception e) {}               j = iface.lastIndexOf(".");               char[] cs = iface.toCharArray();               if (j >= 0) {                  cs[j] = '$';                  iface = String.valueOf(cs);               }            }         }         if (ifcs.size() == 0) throw new DBusException("Could not find an interface to cast to");         RemoteObject ro = new RemoteObject(source, path, null, false);         DBusInterface newi =  (DBusInterface) Proxy.newProxyInstance(ifcs.get(0).getClassLoader(),                (Class[]) ifcs.toArray(new Class[0]), new RemoteInvocationHandler(this, ro));         importedObjects.put(newi, ro);         return newi;      } catch (Exception e) {         if (DBusConnection.EXCEPTION_DEBUG) e.printStackTrace();         throw new DBusException("Failed to create proxy object for "+path+" exported by "+source+". Reason: "+e.getMessage());      }   }