docs: @Pure
  	private static Element getElementFromPath(Node document, boolean caseSensitive, int idxStart, String... path) {
  		assert document != null : AssertMessages.notNullParameter(0);
  		if (path != null && (path.length - idxStart) >= 1) {
  			final NodeList nodes = document.getChildNodes();
  			final int len = nodes.getLength();
  			for (int i = 0; i < len; ++i) {
  				final Node node = nodes.item(i);
  				if (node instanceof Element) {
  					final Element element = (Element) node;
  					final String name = node.getNodeName();
  					if (name != null
  							&& ((caseSensitive && name.equals(path[idxStart]))
  									|| (!caseSensitive && name.equalsIgnoreCase(path[idxStart])))) {
  						final Element nd = (path.length - idxStart) == 1
  								? element : getElementFromPath(node, caseSensitive, idxStart + 1, path);
  						if (nd != null) {
  							return nd;
  						}
  					}
  				}
  			}
  		}
  		return null;
  	}