private TableData<T> getReusableFilteredData() {
		TableData<T> allTableData = model.getAllTableData();
		TableData<T> currentAppliedData = model.getCurrentTableData();
		if (allTableData == currentAppliedData) { // yes, '=='
			return null; // same data; no filter
		}

		if (currentAppliedData.isUnrelatedTo(allTableData)) {
			// the data has changed such that the currently applied data is not progeny of the
			// current master dataset
			return null;
		}

		TableFilter<T> appliedOrPendingFilter = model.getTableFilter();
		TableData<T> alreadyFilteredData =
			currentAppliedData.getLowestLevelSourceDataForFilter(appliedOrPendingFilter);
		return alreadyFilteredData;
	}
Gets any existing data that matches the current filter, if any.
@return data that should be the start point for the next filter state; null if there is no
        filter set or if the current data's filter does not match the pending filter
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/threaded/TableUpdateJob.java