code: String generateHtmlForElement(boolean firstRun, MessageSource messageSource, FormCheckerElement elem, boolean html5Validation) {
  		InputElementStructure inputStruct = new InputElementStructure();
  		// errors
  		ValidationResult vr = getErrors(elem, firstRun);
  		if (!vr.isValid()) {
  			inputStruct.setErrors(formatError(messageSource.getMessage(vr)));
  		}
  
  		// label
  		boolean displayLabel = !StringUtils.isEmpty(elem.getDescription());
  		if (displayLabel) {
  			inputStruct.setLabel(getLabelForElement(elem, getLabelAttributes(elem), firstRun));
  		}
  		// input tag
  		Map<String, String> attribs = new LinkedHashMap<>();
  		addAttributesToInputFields(attribs, elem);
  		inputStruct.setInput(elem.getInputTag(attribs, messageSource, html5Validation));
  		// help tag
  		if (!StringUtils.isEmpty(elem.getHelpText())) {
  			inputStruct.setHelp(getHelpTag(elem.getHelpText(), elem));
  		}
  		return getCompleteRenderedInput(inputStruct, elem, firstRun);
  	}
docs: builds the html for one element