if (this.numberChildren() == 0) throw new  IllegalArgumentException("Could not find any /FindBugsFilter/Match nodes in filter file " + fileName);
	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		for (Object matchObj : filterDoc.selectNodes("/FindBugsFilter/Match")) {			Element matchNode = (Element) matchObj;			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 ClassMatcher("~" + classRegex);			}			if (classMatcher != null)				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);		}	}