fixed 25434
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationModel.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationModel.java
index 3f70073..1d02bb8 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationModel.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationModel.java
@@ -214,7 +214,7 @@
 	 */
 	protected void cleanup(boolean fireModelChanged) {
 		ArrayList deleted= new ArrayList();
-		Iterator e= fAnnotations.keySet().iterator();
+		Iterator e= new ArrayList(fAnnotations.keySet()).iterator();
 		while (e.hasNext()) {
 			Annotation a= (Annotation) e.next();
 			Position p= (Position) fAnnotations.get(a);