code: public void configure(Object obj, Element cfg, int startIdx)
  			throws Exception {
  		String id = getAttribute(cfg, "id");
  		if (id != null) {
  			_idMap.put(id, obj);
  		}
  
  		Element[] children = getChildren(cfg);
  
  		for (int i = startIdx; i < children.length; i++) {
  			Element node = children[i];
  			//CHECKSTYLE:OFF
  			try {
  				// TODO: in case switching to jdk 7, this could be a switch!
  				String tag = node.getTagName();
  				if ("Set".equals(tag)) {
  					set(obj, node);
  				} else if ("Put".equals(tag)) {
  					put(obj, node);
  				} else if ("Call".equals(tag)) {
  					call(obj, node);
  				} else if ("Get".equals(tag)) {
  					get(obj, node);
  				} else if ("New".equals(tag)) {
  					newObj(obj, node);
  				} else if ("Array".equals(tag)) {
  					newArray(obj, node);
  				} else if ("Ref".equals(tag)) {
  					refObj(obj, node);
  				} else if ("Property".equals(tag)) {
  					propertyObj(obj, node);
  				} else {
  					throw new IllegalStateException("Unknown tag: " + tag);
  				}
  			} catch (Exception e) {
  				LOG.warn("Config error at " + node, e.toString());
  				throw e;
  			}
  			//CHECKSTYLE:ON
  		}
  	}
docs: Recursive configuration step. This method applies the remaining Set, Put
  and Call elements to the current object.
  
  @param obj
  @param cfg
  @param startIdx the child element index to start with
  @throws Exception