@Before
	public void setUp() throws Exception {

		model = createTestModel();
		testTableModelListener = createListener();
		model.addThreadedTableModelListener(testTableModelListener);

		// do this in swing, as some of the table column setup can trigger concurrent modifications
		// due to the swing and the test working on the widgets at the same time
		runSwing(() -> {
			threadedTablePanel = new GThreadedTablePanel<>(model);
			table = threadedTablePanel.getTable();
			header = table.getTableHeader();

			buildFrame(threadedTablePanel);
		});

		// Restore this JVM property, as some tests change it
		System.setProperty(RowObjectFilterModel.SUB_FILTERING_DISABLED_PROPERTY,
			Boolean.FALSE.toString());

		waitForTableModel(model);
	}
Specifically tests the sub-filtering behavior of the {@link ThreadedTableModel}, as well
as some other more complicated filtering combinations
Ghidra/Framework/Docking/src/test.slow/java/docking/widgets/table/threaded/DefaultThreadedTableFilterTest.java