Hi Dave,
I think this is what is happening:
In ShowFilterDialogAction.run(), when it computes 'allElements', it will only get the elements from the currently analysis from the content provider. Then further down the 'filteredElements' will only contain hidden elements from the current analysis, and therefore the filtered elements on the other analysis are lost when you use the filter dialog.
As you stated in your opening message, AbstractTimeGraphView keeps a map of filters for the current trace. Here we are talking about the original trace or perhaps this could be an experiment with multiple traces. That map is private as you noted.
I believe what you could try is have your own map of ViewerFilter[] where the key is the current analysis (or wrapped trace, whatever is easily accessible), and then when you switch analyses you store timegraphViewer.getFilters() in the map for the old analysis and restore (if exists) timegraphViewer.setFilters() from the map for the new analysis.
You might also have to override traceClosed() to remove from the map both ViewerFilter[] when closing the original trace. When switching the original trace from one to the other, AbstractTimeGraphView's private map should restore the correct filters, as long as it also restores the correct elements for the current analysis (I'm hoping this is already working correctly?).