private static void recursiveParse(Corpus corpus, Element element, boolean includeTokensWithNonAToZ) {
		NodeList nodeList = element.getChildNodes();
		for (int i=0; i<nodeList.getLength(); i++) {
			Node node = nodeList.item(i);
			
			if (node instanceof Element) {
				Element el = (Element) node;
				switch (el.getNodeName()) {
				case "Article":
					corpus.startArticle();
					recursiveParse(corpus, el, includeTokensWithNonAToZ);
					break;
				case "sentence":
					corpus.startSentence();
					recursiveParse(corpus, el, includeTokensWithNonAToZ);
					break;
				case "cons":
					corpus.openConstituent(el.getAttribute("cat"));
					recursiveParse(corpus, el, includeTokensWithNonAToZ);
					corpus.closeConstituent();
					break;
				case "tok":
					String text = el.getTextContent();
					if (includeTokensWithNonAToZ || text.matches("[A-Za-z]+")) {
						corpus.addToken(el.getTextContent(), el.getAttribute("cat"));
					}
					break;
				default:
					recursiveParse(corpus, el, includeTokensWithNonAToZ);
				}
			}
		}
	}