public static ActionElement getByNode(Node node) {
		if (node.getNodeType() != Node.ELEMENT_NODE) return null;

		if (! "action".equals(((Element)node).getTagName())) return null;

		ActionElement a = new ActionElement();

		for (node = node.getFirstChild(); node != null; node = node.getNextSibling()) {
			if (node.getNodeType() != Node.ELEMENT_NODE) continue;

			String tag = ((Element)node).getTagName();

			if (tag == null) {
				;
			} else if (tag.equals("name")) {
				a.setName(Description.getStringByNode(node));
			} else if (tag.equals("argument")) {
				ArgumentElement g = ArgumentElement.getByNode(node);
				if (g != null) a.addArgumentElement(g);
			}
		}

		if (a.getName() == null) return null;

		return a;
	}