code: protected SelectItem createSelectItem(FacesContext context, UISelectItems uiSelectItems, Object value,
  			Object label) {
  		String var = (String) uiSelectItems.getAttributes().get("var");
  		Map<String, Object> attrs = uiSelectItems.getAttributes();
  		Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
  
  		if (var != null) {
  			requestMap.put(var, value);
  		}
  
  		Object itemLabelValue = attrs.get("itemLabel");
  		Object itemValue = attrs.get("itemValue");
  		String description = (String) attrs.get("itemDescription");
  		Object itemDisabled = attrs.get("itemDisabled");
  		Object itemEscaped = attrs.get("itemLabelEscaped");
  		Object noSelection = attrs.get("noSelectionOption");
  
  		if (itemValue == null) {
  			itemValue = value;
  		}
  
  		if (itemLabelValue == null) {
  			itemLabelValue = label;
  		}
  
  		String itemLabel = itemLabelValue == null ? String.valueOf(value) : String.valueOf(itemLabelValue);
  		boolean disabled = itemDisabled == null ? false : Boolean.valueOf(itemDisabled.toString());
  		boolean escaped = itemEscaped == null ? false : Boolean.valueOf(itemEscaped.toString());
  		boolean noSelectionOption = noSelection == null ? false : Boolean.valueOf(noSelection.toString());
  
  		if (var != null) {
  			requestMap.remove(var);
  		}
  
  		return new SelectItem(itemValue, itemLabel, description, disabled, escaped, noSelectionOption);
  	}
docs: Copied from the InputRenderer class of PrimeFaces 5.1.
  
  @param context
  @param uiSelectItems
  @param value
  @param label
  @return