void filter() {
		synchronized (addRemoveUpdater) {
			if (currentJob != null && pendingJob == null && currentJob.requestFilter()) {
				return;
			}

			if (pendingJob != null && pendingJob.requestFilter()) {
				return;
			}

			runJob(new FilterJob<>(model, monitor));
		}
	}
Tells this update manager that the table data needs to be re-filtered.  If a current job
is running, it will attempt to add the filter work directly to the running job.  If the running
job has not gotten to the filter phase yet, nothing needs to be done since the data will be
re-filtered anyway
If the current job is currently filtering or has already filtered, it will be 
interrupted and return to the filter state.
<p>
If a pending job is already waiting, the filter job will be added to the pending job.
<p>
if no jobs exists, a new job will be created to do the filter and runJob will be called to
start a thread to do the work.
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/threaded/ThreadedTableModelUpdateMgr.java