if (pack.startsWith("org.freedesktop.DBus") && !builtin) continue;
   void parseRoot(Element root) throws DBusException, IOException   {      Map<StructStruct, Type[]> structs = new HashMap<StructStruct, Type[]>();      Set<String> exceptions = new TreeSet<String>();      Set<String> annotations = new TreeSet<String>();      for (Node iface: new IterableNodeList(root.getChildNodes())) {         if (Node.ELEMENT_NODE != iface.getNodeType()) continue;         checkNode(iface, "interface", "node");         if ("interface".equals(iface.getNodeName())) {            Map<String, Integer> tuples = new HashMap<String, Integer>();            String name = ((Element) iface).getAttribute("name");            String file = name.replaceAll("\\.","/")+".java";            String path = file.replaceAll("/[^/]*$", "");            String pack = name.replaceAll("\\.[^.]*$","");            factory.init(file, path);            parseInterface((Element) iface,                   factory.createPrintStream(file), tuples, structs, exceptions, annotations);            structs = StructStruct.fillPackages(structs, pack);            createTuples(tuples, pack);         }         else if ("node".equals(iface.getNodeName()))             parseRoot((Element) iface);         else {            System.err.println("ERROR: Unknown node: "+iface.getNodeName()+".");            System.exit(1);         }      }      createStructs(structs, structs);      createExceptions(exceptions);      createAnnotations(annotations);   }