code: @Override
  	public Set<String> getValue() {
  		// Convert data to a set (if necessary)
  		Set<String> data = TreeItemUtil.convertDataToSet(getData());
  		if (data == null || data.isEmpty()) {
  			return Collections.EMPTY_SET;
  		}
  		// TODO Similar to select lists, consider validating the selected items
  		return data;
  	}
docs: Returns a {@link Set} of the selected options. If no options have been selected, then it returns an empty list.
  <p>
  As getValue calls {@link #getData()} for the currently selected options, it usually expects getData to return
  null (for no selection) or a {@link List} of selected options. If the data returned by getData is not null and is
  not a List, then setData will either (1) if the data is an array, convert the array to a List or (2) create a
  List and add the data as the selected option.
  </p>
  <p>
  getValue will verify the selected option/s are valid. If a selected option does not exist, then it will throw an
  {@link IllegalArgumentException}.
  </p>
  
  @return the selected options in the given UI context.