void (AntDomElement element) { ProgressManager.checkCanceled(); if (element instanceof AntDomCustomElement || myElementsOnThePath.contains(element)) { return; // avoid stack overflow } myElementsOnThePath.add(element); try { final XmlTag tag = element.getXmlTag(); if (tag != null) { final String[] uris = tag.knownNamespaces(); for (String uri : uris) { if (!processedAntlibs.contains(uri)) { processedAntlibs.add(uri); final String antLibResource = AntDomAntlib.toAntlibResource(uri); if (antLibResource != null) { final XmlElement xmlElement = element.getXmlElement(); if (xmlElement != null) { final ClassLoader loader = myAntProject.getClassLoader(); final InputStream stream = loader.getResourceAsStream(antLibResource); if (stream != null) { try { final XmlFile xmlFile = (XmlFile)loadContentAsFile(xmlElement.getProject(), stream, XmlFileType.INSTANCE); loadDefinitionsFromAntlib(xmlFile, uri, loader, null, myAntProject); } catch (IOException e) { LOG.info(e); } } } } } } } super.visitAntDomElement(element); } finally { myElementsOnThePath.remove(element); } }