List<File> (final Set<AntFilesProvider> processed) { processed.add(this); try { final AntDomElement referenced = getRefId().getValue(); if (referenced instanceof AntFilesProvider) { return ((AntFilesProvider)referenced).getFiles(processed); } return getFiles(getAntPattern(), processed); } finally { processed.remove(this); } }