public synchronized boolean requestSort(TableSortingContext<T> newSortingContext,
			boolean forceSort) {
		if (currentState == DONE) {
			return false;
		}
		this.doForceSort = forceSort;
		this.newSortContext = newSortingContext;
		if (hasSorted()) {
			// a new sort has been requested, and we've already sorted, so we need to sort again
			monitor.cancel();
			pendingRequestedState = SORTING;
		}
		return true;
	}
Sets the TableColumnComparator to use for sorting the data.  This method can be called on
the currently running job as well as the pending job.  If called on the running job, the
effect depends on the running job's state:
<ul>
    <li>If the sort state hasn't happened yet, all it does is set the comparator for when
     the sort occurs.</li>
    <li>If the sort state has already been started or completed, then this method attempts
     to stop the current process phase and cause the state machine to return to the sort
     phase.</li>
    <li>If the current job has already entered the DONE state, then the sort cannot take
     effect in this job and a false value is returned to indicate the
sort was not handled by this job.</li>
</ul>
@param newSortingContext the TableColumnComparator to use to sort the data.
@param forceSort True signals to re-sort, even if this is already sorted
@return true if the sort can be processed by this job, false if this job is essentially
        already completed and therefore cannot perform the sort job.
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/threaded/TableUpdateJob.java