Bug 55451 Assertion Failed in ASTProvider
plugin export 20040319 1. Browse into CVS of org.eclipse.swt (win32), and open TableItem.java 2. Endless repretitions of error dialogs org.eclipse.jface.text.Assert$AssertionFailedException: Assertion failed: at java.lang.Throwable.<init>(Throwable.java) at java.lang.Throwable.<init>(Throwable.java) at org.eclipse.jface.text.Assert$AssertionFailedException.<init>(Assert.java:54) at org.eclipse.jface.text.Assert.isTrue(Assert.java:175) at org.eclipse.jface.text.Assert.isTrue(Assert.java) at org.eclipse.jdt.internal.ui.javaeditor.ASTProvider.getAST(ASTProvider.java:140) at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$PartListenerGroup.calculateASTandInform(SelectionListenerWithASTManager.java) at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$1.run(SelectionListenerWithASTManager.java:97) at org.eclipse.core.internal.jobs.Worker.run(Worker.java)
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/SelectionListenerWithASTManager.java
if (listenerGroup == null) {
				listenerGroup= new PartListenerGroup(part);
				fPartListeners.put(part, listenerGroup);
			}
			listenerGroup.install(listener);
		}
		
		public void uninstall(IEditorPart part, ISelectionListenerWithAST listener) {
			PartListenerGroup listenerGroup= (PartListenerGroup) fPartListeners.get(part);
			if (listenerGroup == null) {
				return;
			}
			listenerGroup.uninstall(listener);
			if (listenerGroup.isEmpty()) {
				fPartListeners.remove(part);
				if (fPartListeners.isEmpty()) {
					fSelectionService.removePostSelectionListener(fPostSelectionListener);
					fSelectionService.removePostSelectionListener(fSelectionListener);
				}
			}
		}		
		
		protected void doPostSelectionChanged(IWorkbenchPart part, ISelection selection) {
			if (part instanceof IEditorPart && selection instanceof ITextSelection) { 
				PartListenerGroup listenerGroup= (PartListenerGroup) fPartListeners.get(part);
				if (listenerGroup != null) {
					listenerGroup.firePostSelectionChanged((ITextSelection) selection);
				}
			}
		}