code: protected void renderSelectTagAttributes(ResponseWriter rw, String clientId, SelectOneMenu menu,
  			String outerClientId) throws IOException {
  		rw.writeAttribute("id", clientId, null);
  		// Tooltip.generateTooltip(FacesContext.getCurrentInstance(), menu, rw);
  		rw.writeAttribute("name", clientId, null);
  
  		StringBuilder sb;
  		String s;
  		sb = new StringBuilder(20); // optimize int
  		sb.append("form-control");
  		
  		Boolean select2 = menu.isSelect2();
  
  		if (select2 != null && select2) {
  			sb.append(" select2style");
  		}
  		
  		String fsize = menu.getFieldSize();
  
  		if (fsize != null) {
  			sb.append(" input-").append(fsize);
  		}
  		String cssClass = menu.getStyleClass();
  		if (cssClass != null) {
  			sb.append(" ").append(cssClass);
  		}
  		sb.append(" ").append(getErrorAndRequiredClass(menu, outerClientId));
  
  		s = sb.toString().trim();
  		if (s != null && s.length() > 0) {
  			rw.writeAttribute("class", s, "class");
  		}
  
  		if (menu.isDisabled() || menu.isReadonly()) {
  			rw.writeAttribute("disabled", "disabled", null);
  		}
  		if (menu.isReadonly()) {
  			rw.writeAttribute("readonly", "readonly", null);
  		}
  
  		AJAXRenderer.generateBootsFacesAJAXAndJavaScript(FacesContext.getCurrentInstance(), menu, rw, false);
  
  		// Encode attributes (HTML 4 pass-through + DHTML)
  		R.encodeHTML4DHTMLAttrs(rw, menu.getAttributes(), new String[] { "accesskey", "alt", "lang", "style", "tabindex", "title" });
  	}
docs: Renders the attributes of the input tag. This method is protected in order to
  allow third-party frameworks to derive from it.
  
  @param rw
  the response writer
  @param clientId
  the client id (used both as id and name)
  @throws IOException
  may be thrown by the response writer