Element matchNode = (Element) i.next();
Element matchNode =  i.next();
	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 Match elements		Iterator<Node> i = filterDoc.selectNodes("/FindBugsFilter/Match").iterator();		while (i.hasNext()) {			Element matchNode = (Element) i.next();			AndMatcher matchMatcher = new AndMatcher();			// Each match node must have either "class" or "classregex" attributes			Matcher classMatcher = null;			String classAttr = matchNode.valueOf("@class");			if (!classAttr.equals("")) {				classMatcher = new ClassMatcher(classAttr);			} else {				String classRegex = matchNode.valueOf("@classregex");				if (!classRegex.equals(""))					classMatcher = new ClassRegexMatcher(classRegex);			}			if (classMatcher == null)				throw new FilterException("Match node must specify either class or classregex attribute");			matchMatcher.addChild(classMatcher);			if (DEBUG) System.out.println("Match node");			// Iterate over child elements of Match node.			Iterator<Element> j = matchNode.elementIterator();			while (j.hasNext()) {				Element child = j.next();				Matcher matcher = getMatcher(child);				matchMatcher.addChild(matcher);			}			// Add the Match matcher to the overall Filter			this.addChild(matchMatcher);		}	}