private Element parseBranch() throws ParserException, XMLStreamException {
		String condition = getAttribute("condition");
		startElement("branch");
		Labelled left = null, right = null;
		while (look().isStartElement()) {
			String name = getNameOfStartElement();
			if (name.equals("left")) {
				if (left != null) {
					throw new ParserException("Duplicate left branch.");
				}
				left = parseLabelled("left");
			} else if (name.equals("right")) {
				if (right != null) {
					throw new ParserException("Duplicate right branch.");
				}
				right = parseLabelled("right");
			} else {
				throw new ParserException("Unkown branch child: " + name);
			}
		}
		endElement("branch");
		return new Branch(condition, left == null ? new Labelled() : left, right == null ? new Labelled()
			: right);
	}