private void checkForMissingDefinitions() {
		Set<String> missing = new HashSet<String>();
		for (String s : definitions.keySet()) {
			Tree t = definitions.get(s);
			if (t != null) { // Definitions with null body are parser-specific.
				missing.addAll(checkTreeForMissingDefinitions(t));
			}
		}
		if (missing.size() > 0) {
			StringBuffer msg = new StringBuffer("The following definitions are missing");
			boolean comma = false;
			for (String s : missing) {
				if (comma) {
					msg.append(", ");
				} else {
					msg.append(": ");
				}
				msg.append(s);
				comma = true;
			}
			throw new RuntimeException(msg.toString());
		}
	}