code: function(oEvent, $Cell, oTable) {
  			TableUtils.toggleRowSelection(oTable, $Cell, null, function(iRowIndex) {
  				// IE and Edge perform a text selection if holding shift while clicking. This is not desired for range selection of rows.
  				if ((Device.browser.msie || Device.browser.edge) && oEvent.shiftKey) {
  					oTable._clearTextSelection();
  				}
  
  				var oSelMode = oTable.getSelectionMode();
  
  				// Single selection
  				if (oSelMode === SelectionMode.Single) {
  					if (!oTable.isIndexSelected(iRowIndex)) {
  						oTable.setSelectedIndex(iRowIndex);
  					} else {
  						oTable.clearSelection();
  					}
  
  				// Multi selection (range)
  				} else if (oEvent.shiftKey) {
  					// If no row is selected, getSelectedIndex returns -1. Then we simply select the clicked row.
  					var iSelectedIndex = oTable.getSelectedIndex();
  					if (iSelectedIndex >= 0) {
  						oTable.addSelectionInterval(iSelectedIndex, iRowIndex);
  					} else {
  						oTable.setSelectedIndex(iRowIndex);
  					}
  
  				// Multi selection (toggle)
  				} else if (!oTable._legacyMultiSelection) {
  					if (!oTable.isIndexSelected(iRowIndex)) {
  						oTable.addSelectionInterval(iRowIndex, iRowIndex);
  					} else {
  						oTable.removeSelectionInterval(iRowIndex, iRowIndex);
  					}
  
  				// Multi selection (legacy)
  				} else {
  					oTable._legacyMultiSelection(iRowIndex, oEvent);
  				}
  
  				return true;
  			});
  		}
docs: /*
  Changes the selection based on the given click event on the given row selector, data cell or row action cell.