code: @Override
  	public Object getData() {
  		Object data = super.getData();
  
  		// Treat "empty" the same as null (ie no selection)
  		boolean empty = false;
  		if (data == null) {
  			empty = true;
  		} else if (data instanceof List<?>) {
  			empty = ((List<?>) data).isEmpty();
  		} else if (data instanceof Object[]) {
  			empty = ((Object[]) data).length == 0;
  		}
  
  		// Check if we need to default to the first option
  		if (empty && !isAllowNoSelection()) {
  			List<?> options = getOptions();
  			if (options != null && !options.isEmpty()) {
  				// Check if NULL is an option
  				if (SelectListUtil.containsOption(options, null)) {
  					return Arrays.asList(new Object[]{null});
  				} else {
  					// Use the first option
  					Object firstOption = SelectListUtil.getFirstOption(options);
  					return Arrays.asList(new Object[]{firstOption});
  				}
  			}
  		}
  
  		return data;
  	}
docs: {@inheritDoc}
  <p>
  getData expects the data to be either null (for no selection) or a {@link List} of selected options.
  </p>
  <p>
  getData will check that if no options have been selected (ie data is null) and the list component requires an
  option to be selected (ie {@link #isAllowNoSelection()} is false), it will return a list containing the first
  option as the default selected option. If the data is an empty list or an empty array, then it will be treated
  the same as there being no selection.
  </p>