code: private Set<String> getNewSelections(final Request request) {
  
  		// Check for any selections on the request
  		String[] paramValue = request.getParameterValues(getId());
  		String[] selectedRowIds = removeEmptyStrings(paramValue);
  		if (selectedRowIds == null || selectedRowIds.length == 0) {
  			return Collections.EMPTY_SET;
  		}
  
  		Set<String> newSelectionIds = new HashSet<>();
  
  		boolean singleSelect = getSelectMode() == SelectMode.SINGLE;
  
  		int offset = getItemIdPrefix().length();
  		for (String selectedRowId : selectedRowIds) {
  			if (selectedRowId.length() <= offset) {
  				LOG.warn("Selected row id [" + selectedRowId + "] does not have a valid prefix and will be ignored.");
  				continue;
  			}
  			String itemId = selectedRowId.substring(offset);
  			if (isValidTreeItem(itemId)) {
  				newSelectionIds.add(itemId);
  				if (singleSelect) {
  					break;
  				}
  			} else {
  				LOG.warn("Selected row id [" + itemId + "] is not valid and will be ignored.");
  			}
  		}
  
  		return newSelectionIds;
  	}
docs: Handles a request containing row selection data.
  
  @param request the request containing row selection data.
  @return the set of selected item ids.