public void build(Object object, Container location, IXMLElement xml, Runnable onUpdate) throws GUIBuilderException{
		if (!xml.getName().equals("parameters") && !xml.getName().equals("group")){
			throw new GUIBuilderException("Top level tag if XML must be <controls>. Parse failed.");
		}
		Enumeration children = xml.enumerateChildren();
		while (children.hasMoreElements()){
			IXMLElement child = (IXMLElement) children.nextElement();
			String childName = child.getName();
			
			if (childName.equals("int")){
				buildInt(object, location, child, onUpdate);
				continue;
			}
			if (childName.equals("double")){
				buildDouble(object, location, child, onUpdate);
				continue;
			}
			if (childName.equals("boolean")){
				buildBoolean(object, location, child, onUpdate);
				continue;
			}
			if (childName.equals("option")){
				buildOption(object, location, child, onUpdate);
				continue;
			}
			if (childName.equals("push")){
				buildPush(object, location, child, onUpdate);
				continue;
			}
			if (childName.equals("group")){
				buildGroup(object, location, child, onUpdate);
				continue;
			}
			//unknown tag: skipping it
			System.err.println("Unknown tag in a description:");
			System.err.println(child);
			
		}
	}