@Override
	public void valueChanged(ListSelectionEvent e) {
		super.valueChanged(e);

		// This check ensures that we only update the selected row when it happens as a result
		// of user input (table selection happens behind the scenes for other reasons that would
		// be problematic).
		//
		// IF the shift key is down, then we're selecting a range. It may be the case that the start
		// of the range is no longer in the table (ie: click one row, then scroll 7 chunks down, 
		// hold shift, and click again). To make sure we handle this case, ONLY reset the 
		// selected end position if the shift key is down.
		//
		// However, if the user is selecting a row ABOVE the currently-selected one(s), then
		// leave that row as the 'end' selection and reset the start.
		//
		// Also, if the mouse is dragging, don't reset the start position as the user is selecting
		// a range via the mouse.
		if (e.getValueIsAdjusting() && getSelectedRow() >= 0) {
			int[] selectedRows = getSelectedRows();

			if (!shiftDown && !mouseDragging) {
				Pair filePos = model.getFilePositionForRow(selectedRows[0]);
				if (filePos == null) {
					return;
				}
				model.selectedByteStart = filePos.getStart();
				model.selectedByteEnd = filePos.getEnd();
			}

			else {
				Pair filePosFirstRow = model.getFilePositionForRow(selectedRows[0]);
				Pair filePosLastRow  = model.getFilePositionForRow(selectedRows[selectedRows.length - 1]);
				
				if (filePosFirstRow == null || filePosLastRow == null) {
					return;
				}
				long newFilePosStart = filePosFirstRow.getStart();
				long newFilePosEnd = filePosLastRow.getEnd();

				if (newFilePosStart <= model.selectedByteStart) {
					model.selectedByteStart = newFilePosStart;
				}
				if (newFilePosEnd >= model.selectedByteEnd) {
					model.selectedByteEnd = newFilePosEnd;
				}
				restoreSelection();
			}
		}
	}
Invoked when a new row has been selected in the table. Update our chunk model to 
reflect as much.

@param e
Ghidra/Framework/Project/src/main/java/ghidra/framework/main/logviewer/ui/FVTable.java