Bug 46886 Build hangs
I use autobuild. Happened after pressing Ctrl+S (save) Starting Eclipse N20031114 *************************** The following JRE is used to launch Eclipse: java version "1.4.2" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-b28) Java HotSpot(TM) Client VM (build 1.4.2-b28, mixed mode) VM Options=-Xms50M -Xmx350M Target Workspace=c:\eclipse\workspaces\Development_2_2\plugins C:\eclipse\drops\N20031114>C:\JavaSDKs\jdk1.4.2\bin\java -Xms50M -Xmx350M -verify -cp startup.jar org.eclipse.core.launcher.Main -update -application org.eclipse.ui.ide.workbench -showlocation -data c :\eclipse\workspaces\Development_2_2\plugins Full thread dump Java HotSpot(TM) Client VM (1.4.2-b28 mixed mode): "Thread-81" prio=5 tid=0x03ea1730 nid=0xe7c in Object.wait() [46ef000..46efd94] at java.lang.Object.wait(Native Method) - waiting on <0x1030dd38> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:36) - locked <0x1030dd38> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.JobManager.join(JobManager.java:391) at org.eclipse.core.internal.jobs.InternalJob.join(InternalJob.java:175) at org.eclipse.core.runtime.jobs.Job.join(Job.java:286) at org.eclipse.core.internal.events.BuildManager.interrupt(BuildManager.java:309) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1515) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1549) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1573) at org.eclipse.jdt.internal.debug.core.hcr.JavaHotCodeReplaceManager$3.run(JavaHotCodeReplaceManager.java:1105) at java.lang.Thread.run(Thread.java:534) "Worker-40" prio=5 tid=0x03ea15a0 nid=0x34c in Object.wait() [47cf000..47cfd94] at java.lang.Object.wait(Native Method) - waiting on <0x100bb150> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:36) - locked <0x100bb150> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.OrderedLock.doAcquire(OrderedLock.java:153) at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:98) at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:74) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:109) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1516) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1549) at org.eclipse.core.internal.events.NotificationManager$NotifyJob.run(NotificationManager.java:37) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:62) "Worker-39" prio=5 tid=0x03edcc88 nid=0xee8 in Object.wait() [473f000..473fd94] at java.lang.Object.wait(Native Method) - waiting on <0x11c36c78> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:189) - locked <0x11c36c78> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:215) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) "Worker-38" prio=5 tid=0x03e2b300 nid=0x948 waiting on condition [388f000..388fd94] at java.lang.Thread.sleep(Native Method) at org.eclipse.ui.internal.progress.AnimationManager.animateLoop(AnimationManager.java:318) at org.eclipse.ui.internal.progress.AnimationManager$3.run(AnimationManager.java:467) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:62) "Worker-31" prio=5 tid=0x03e2d448 nid=0x1a0 waiting for monitor entry [454f000..454fd94] at org.eclipse.jdt.internal.ui.javaeditor.filebuffers.CompilationUnitDocumentProvider2$CompilationUnitAnnotationModel.update(CompilationUnitDocumentProvider2.java:413) - waiting to lock <0x122bf510> (a org.eclipse.jdt.internal.core.CompilationUnit) at org.eclipse.ui.texteditor.ResourceMarkerAnnotationModel$ResourceChangeListener.resourceChanged(ResourceMarkerAnnotationModel.java:53) at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:251) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:244) at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:138) at org.eclipse.core.internal.resources.Workspace.broadcastChanges(Workspace.java:146) at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:847) at org.eclipse.core.internal.resources.File.setContents(File.java:283) at org.eclipse.core.internal.resources.File.setContents(File.java:323) at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.writeClassFileBytes(IncrementalImageBuilder.java:581) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.writeClassFile(AbstractImageBuilder.java:445) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.acceptResult(AbstractImageBuilder.java:117) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:340) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:205) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:155) at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:113) at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:223) at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:151) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:482) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:130) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:156) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:182) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:185) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:219) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:247) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:76) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:109) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:62) "Thread timer" prio=7 tid=0x03e9fdc0 nid=0xb78 waiting on condition [4a1f000..4a1fd94] at java.lang.Thread.sleep(Native Method) at org.eclipse.debug.internal.ui.views.launch.LaunchViewEventHandler$ThreadTimer.checkTimers(LaunchViewEventHandler.java:435) at org.eclipse.debug.internal.ui.views.launch.LaunchViewEventHandler$ThreadTimer.access$2(LaunchViewEventHandler.java:402) at org.eclipse.debug.internal.ui.views.launch.LaunchViewEventHandler$1.run(LaunchViewEventHandler.java:394) at java.lang.Thread.run(Thread.java:534) "org.eclipse.jdt.debug: JDI Event Dispatcher" prio=5 tid=0x03e2c7a0 nid=0xbe4 in Object.wait() [4b1f000..4b1fd94] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:429) at org.eclipse.jdi.internal.connect.PacketReceiveManager.waitForPacketAvailable(PacketReceiveManager.java:168) at org.eclipse.jdi.internal.connect.PacketReceiveManager.getCommand(PacketReceiveManager.java:93) - locked <0x157c8c88> (a org.eclipse.jdi.internal.connect.PacketReceiveManager) at org.eclipse.jdi.internal.MirrorImpl.getCommandVM(MirrorImpl.java:276) at org.eclipse.jdi.internal.event.EventQueueImpl.remove(EventQueueImpl.java:63) at org.eclipse.jdi.internal.event.EventQueueImpl.remove(EventQueueImpl.java:48) at org.eclipse.jdt.internal.debug.core.EventDispatcher.run(EventDispatcher.java:206) at java.lang.Thread.run(Thread.java:534) "Packet Send Manager" prio=5 tid=0x03e2a9a0 nid=0xbd8 in Object.wait() [4a9f000..4a9fd94] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:429) at org.eclipse.jdi.internal.connect.PacketSendManager.sendAvailablePackets(PacketSendManager.java:94) - locked <0x157c8dd0> (a org.eclipse.jdi.internal.connect.PacketSendManager) at org.eclipse.jdi.internal.connect.PacketSendManager.run(PacketSendManager.java:54) at java.lang.Thread.run(Thread.java:534) "Packet Receive Manager" prio=5 tid=0x03e66118 nid=0x310 runnable [4a5f000..4a5fd94] at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.net.SocketInputStream.read(SocketInputStream.java:182) at java.io.DataInputStream.readInt(DataInputStream.java:443) at org.eclipse.jdi.internal.jdwp.JdwpPacket.read(JdwpPacket.java:124) at org.eclipse.jdi.internal.connect.PacketReceiveManager.readAvailablePacket(PacketReceiveManager.java:224) at org.eclipse.jdi.internal.connect.PacketReceiveManager.run(PacketReceiveManager.java:70) at java.lang.Thread.run(Thread.java:534) "Console Polling Thread" prio=7 tid=0x03e66498 nid=0x888 waiting on condition [49df000..49dfd94] at java.lang.Thread.sleep(Native Method) at org.eclipse.debug.internal.ui.views.console.ConsoleDocumentPartitioner.pollAndSleep(ConsoleDocumentPartitioner.java:563) at org.eclipse.debug.internal.ui.views.console.ConsoleDocumentPartitioner$1.run(ConsoleDocumentPartitioner.java:547) at java.lang.Thread.run(Thread.java:534) "Input Stream Monitor" prio=5 tid=0x035c7d48 nid=0xbc4 in Object.wait() [499f000..499fd94] at java.lang.Object.wait(Native Method) - waiting on <0x157b1538> (a java.lang.Object) at java.lang.Object.wait(Object.java:429) at org.eclipse.debug.internal.core.InputStreamMonitor.writeNext(InputStreamMonitor.java:124) - locked <0x157b1538> (a java.lang.Object) at org.eclipse.debug.internal.core.InputStreamMonitor.write(InputStreamMonitor.java:99) at org.eclipse.debug.internal.core.InputStreamMonitor$1.run(InputStreamMonitor.java:75) at java.lang.Thread.run(Thread.java:534) "Output Stream Monitor" prio=5 tid=0x03e8bee8 nid=0xe44 runnable [495f000..495fd94] at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(FileInputStream.java:177) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:132) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:124) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:177) at java.lang.Thread.run(Thread.java:534) "Output Stream Monitor" prio=5 tid=0x03edc728 nid=0xba8 runnable [491f000..491fd94] at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(FileInputStream.java:194) at java.io.BufferedInputStream.read1(BufferedInputStream.java:220) at java.io.BufferedInputStream.read(BufferedInputStream.java:277) - locked <0x157b0a30> (a java.io.BufferedInputStream) at java.io.FilterInputStream.read(FilterInputStream.java:90) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:132) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:124) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:177) at java.lang.Thread.run(Thread.java:534) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x03e8c848 nid=0xbe8 in Object.wait() [48cf000..48cfd94] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:161) - locked <0x15456b28> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x034f0470 nid=0x890 in Object.wait() [478f000..478fd94] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:161) - locked <0x15456b88> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x03e666a8 nid=0xff4 in Object.wait() [463f000..463fd94] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:161) - locked <0x15456d18> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x03de28d8 nid=0xbe0 in Object.wait() [458f000..458fd94] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:161) - locked <0x153dd118> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x03d86648 nid=0xd1c in Object.wait() [45ff000..45ffd94] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:161) - locked <0x14f36df8> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x032a7620 nid=0x838 in Object.wait() [381f000..381fd94] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:161) - locked <0x14daa2b0> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "Worker-3" prio=5 tid=0x0354d3e0 nid=0xc30 runnable [443f000..443fd94] at java.lang.Win32Process.waitFor(Native Method) at org.eclipse.debug.core.model.RuntimeProcess$ProcessMonitorJob.run(RuntimeProcess.java:347) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:62) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x03570230 nid=0x2d8 in Object.wait() [3a6f000..3a6fd94] at java.lang.Object.wait(Native Method) - waiting on <0x12c54ec8> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:161) - locked <0x12c54ec8> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0349ef60 nid=0xfe4 in Object.wait() [38df000..38dfd94] at java.lang.Object.wait(Native Method) - waiting on <0x12ac2500> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:161) - locked <0x12ac2500> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "Java indexing" daemon prio=4 tid=0x00a3d600 nid=0x9f0 in Object.wait() [379f000..379fd94] at java.lang.Object.wait(Native Method) - waiting on <0x121b2348> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Object.wait(Object.java:429) at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:325) - locked <0x121b2348> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Thread.run(Thread.java:534) "Signal Dispatcher" daemon prio=10 tid=0x00a13e88 nid=0x954 waiting on condition [0..0] "Finalizer" daemon prio=9 tid=0x00a0f0e8 nid=0xfb0 in Object.wait() [2c6f000..2c6fd94] at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x11af0138> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x009c1a20 nid=0xfac in Object.wait() [2c2f000..2c2fd94] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:429) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115) - locked <0x11af01a0> (a java.lang.ref.Reference$Lock) "main" prio=5 tid=0x000350d8 nid=0xf18 in Object.wait() [7e000..7fc3c] at java.lang.Object.wait(Native Method) - waiting on <0x16b3d468> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:36) - locked <0x16b3d468> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.JobManager.join(JobManager.java:391) at org.eclipse.core.internal.jobs.InternalJob.join(InternalJob.java:175) at org.eclipse.core.runtime.jobs.Job.join(Job.java:286) at org.eclipse.core.internal.events.BuildManager.interrupt(BuildManager.java:309) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1515) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1549) at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:105) - locked <0x16b3d4b8> (a org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation) at org.eclipse.ui.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:72) at org.eclipse.ui.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:62) at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation(TextFileDocumentProvider.java:388) at org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument(TextFileDocumentProvider.java:597) at org.eclipse.ui.texteditor.AbstractTextEditor.performSave(AbstractTextEditor.java:3140) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSave(CompilationUnitEditor.java:821) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:885) - locked <0x122bf510> (a org.eclipse.jdt.internal.core.CompilationUnit) at org.eclipse.ui.internal.EditorManager$10.run(EditorManager.java:1080) at org.eclipse.ui.internal.EditorManager$8.run(EditorManager.java:936) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:302) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:252) at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:444) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84) at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:441) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:1458) at org.eclipse.ui.internal.EditorManager.runProgressMonitorOperation(EditorManager.java:942) at org.eclipse.ui.internal.EditorManager.savePart(EditorManager.java:1085) at org.eclipse.ui.internal.WorkbenchPage.savePart(WorkbenchPage.java:2267) at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:2279) at org.eclipse.ui.internal.SaveAction.run(SaveAction.java:72) at org.eclipse.jface.action.Action.runWithEvent(Action.java:842) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:542) at org.eclipse.jface.action.ActionContributionItem.access$4(ActionContributionItem.java:494) at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:466) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:847) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2187) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1877) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1413) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1389) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:236) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:139) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:47) at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:858) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:299) at org.eclipse.core.launcher.Main.run(Main.java:767) at org.eclipse.core.launcher.Main.main(Main.java:601) "VM Thread" prio=5 tid=0x009bd970 nid=0xf9c runnable "VM Periodic Task Thread" prio=10 tid=0x00a10498 nid=0xfe8 waiting on condition "Suspend Checker Thread" prio=10 tid=0x00a02540 nid=0x960 runnable
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/filebuffers/CompilationUnitDocumentProvider2.java
private ListenerList fListenerList;
			
			public GlobalAnnotationModelListener() {
				fListenerList= new ListenerList();
			}
			
			/**
			 * @see IAnnotationModelListener#modelChanged(IAnnotationModel)
			 */
			public void modelChanged(IAnnotationModel model) {
				Object[] listeners= fListenerList.getListeners();
				for (int i= 0; i < listeners.length; i++) {
					((IAnnotationModelListener) listeners[i]).modelChanged(model);
				}
			}
			/**
			 * @see IAnnotationModelListenerExtension#modelChanged(AnnotationModelEvent)
			 */
			public void modelChanged(AnnotationModelEvent event) {
				Object[] listeners= fListenerList.getListeners();
				for (int i= 0; i < listeners.length; i++) {
					Object curr= listeners[i];
					if (curr instanceof IAnnotationModelListenerExtension) {
						((IAnnotationModelListenerExtension) curr).modelChanged(event);
					}
				}
			}