void refreshSymbolServerLocationStatus(boolean trustedOnly) {
			executeMonitoredRunnable("Refresh Symbol Server Location Status", true, true, 0,
				monitor -> {
					List<SymbolServerRow> rowsCopy = new ArrayList<>(tableModel.getModelData());
					monitor.initialize(rowsCopy.size(), "Refreshing symbol server status");
					try {
						for (SymbolServerRow row : rowsCopy) {
							if (monitor.isCancelled()) {
								break;
							}
							monitor.setMessage("Checking " + row.getSymbolServer().getName());
							monitor.incrementProgress();

							SymbolServer symbolServer = row.getSymbolServer();
							if (symbolServer instanceof SymbolServer.StatusRequiresContext || // we don't have program context here in the config dialog
								(trustedOnly && !symbolServer.isTrusted())) {
								continue;
							}
							row.setStatus(symbolServer.isValid(monitor) ? VALID : INVALID);
						}
					}
					finally {
						Swing.runLater(() -> tableModel.fireTableDataChanged());
					}
				});
		}
The union of the changed status of the local storage path and the additional
search paths table model changed status.

@return boolean true if the config has changed
Ghidra/Features/PDB/src/main/java/pdb/symbolserver/ui/ConfigPdbDialog.java