Currently, the dispose of "graphical listeners"* are made in the DDiagramEditorImpl.dispose(). But this method is finally called in asyncExec by org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor.close(boolean). This can be problematic because these listeners can be called with inconsistent state during the close.
It is possible to dispose these graphical listeners directly in DDiagramEditorImpl.dispose(), before the call to super.close(boolean), to avoid this kind of problem.
"Graphical listeners": All the listeners that update the diagram accordingly to notifications
A regression has been detected by automatic tests: PinnedElementsOnTreeDiagramTest.testPinnedAttributeIsPersistent() is in timeout
The dispose of the tabbar must be called in UI thread.