excludeMatcher.addChild(matcher);
matchMatcher.addChild(matcher);
	private void parse(String fileName) throws IOException, FilterException {		Document filterDoc = null;		try {			SAXReader reader = new SAXReader();			filterDoc = reader.read(new BufferedInputStream(new FileInputStream(fileName)));		} catch (DocumentException e) {			throw new FilterException("Couldn't parse filter file " + fileName, e);		}		// Iterate over Exclude elements		Iterator i = filterDoc.selectNodes("/FindBugsFilter/Exclude").iterator();		while (i.hasNext()) {			Element excludeNode = (Element) i.next();			AndMatcher excludeMatcher = new AndMatcher();			// Each exclude node must have either "class" or "classregex" attributes			Matcher classMatcher = null;			String classAttr = excludeNode.valueOf("@class");			if (!classAttr.equals("")) {				classMatcher = new ClassMatcher(classAttr);			} else {				String classRegex = excludeNode.valueOf("@classregex");				if (!classRegex.equals(""))					classMatcher = new ClassRegexMatcher(classRegex);			}			if (classMatcher == null)				throw new FilterException("Exclude node must specify either class or classregex attribute");			excludeMatcher.addChild(classMatcher);			System.out.println("Exclude node");			// Iterate over child elements of Exclude node.			Iterator j = excludeNode.elementIterator();			while (j.hasNext()) {				Element child = (Element) j.next();				Matcher matcher = getMatcher(child);				excludeMatcher.addChild(matcher);			}			// Add the Exclude matcher to the overall Filter			this.addChild(excludeMatcher);		}	}