fix bug 263782
diff --git a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/MessagesEditorMarkers.java b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/MessagesEditorMarkers.java
index fc60fea..e2d1109 100644
--- a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/MessagesEditorMarkers.java
+++ b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/MessagesEditorMarkers.java
@@ -22,6 +22,7 @@
 import org.eclipse.babel.core.message.MessagesBundle;
 import org.eclipse.babel.core.message.MessagesBundleGroup;
 import org.eclipse.babel.core.message.MessagesBundleGroupAdapter;
+import org.eclipse.babel.core.message.checks.IMessageCheck;
 import org.eclipse.babel.core.message.checks.MissingValueCheck;
 import org.eclipse.babel.editor.resource.validator.IValidationMarkerStrategy;
 import org.eclipse.babel.editor.resource.validator.MessagesBundleGroupValidator;
@@ -41,10 +42,10 @@
     
    // private Map<String,Set<ValidationFailureEvent>> markersIndex = new HashMap();
     /** index is the name of the key. value is the collection of markers on that key */
-    private Map markersIndex = new HashMap();
+    private Map<String, Collection<IMessageCheck>> markersIndex = new HashMap<String, Collection<IMessageCheck>>();
     /** index is the concat of the locale and the key.
      * value is the collection of markers for that key and that locale */
-    private Map localizedMarkersIndex = new HashMap();
+    private Map<String, Collection<IMessageCheck>> localizedMarkersIndex = new HashMap<String, Collection<IMessageCheck>>();
     
     /**
      * @param messagesBundleGroup
@@ -89,20 +90,20 @@
      * @see org.eclipse.babel.editor.resource.validator.IValidationMarkerStrategy#markFailed(org.eclipse.core.resources.IResource, org.eclipse.babel.core.bundle.checks.IBundleEntryCheck)
      */
     public void markFailed(ValidationFailureEvent event) {
-        Collection markersForKey = (Collection) markersIndex.get(event.getKey());
+        Collection<IMessageCheck> markersForKey = markersIndex.get(event.getKey());
         if (markersForKey == null) {
-        	markersForKey = new HashSet();
+        	markersForKey = new HashSet<IMessageCheck>();
         	markersIndex.put(event.getKey(), markersForKey);
         }
-        markersForKey.add(event);
+        markersForKey.add(event.getCheck());
         
         String localizedKey = hash(event.getLocale(), event.getKey());
-        markersForKey = (Collection) localizedMarkersIndex.get(localizedKey);
+        markersForKey = localizedMarkersIndex.get(localizedKey);
         if (markersForKey == null) {
-        	markersForKey = new HashSet();
+        	markersForKey = new HashSet<IMessageCheck>();
         	localizedMarkersIndex.put(localizedKey, markersForKey);
         }
-        markersForKey.add(event);
+        markersForKey.add(event.getCheck());
         
         //System.out.println("CREATE EDITOR MARKER");
         setChanged();
@@ -120,11 +121,11 @@
     	return markersIndex.containsKey(key);
     }
 
-    public Collection getFailedChecks(String key) {
-    	return (Collection)markersIndex.get(key);
+    public Collection<IMessageCheck> getFailedChecks(String key) {
+    	return markersIndex.get(key);
     }
-    public Collection getFailedChecks(final String key, final Locale locale) {
-    	return (Collection)localizedMarkersIndex.get(hash(locale, key));
+    public Collection<IMessageCheck> getFailedChecks(final String key, final Locale locale) {
+    	return localizedMarkersIndex.get(hash(locale, key));
     }
         
     private void validate() {
@@ -137,7 +138,7 @@
      * @return true when the key has a missing or unused issue
      */
     public boolean isMissingOrUnusedKey(String key) {
-    	Collection markers = getFailedChecks(key);
+    	Collection<IMessageCheck> markers = getFailedChecks(key);
     	return markers != null && markersContainMissing(markers);
     }
     
@@ -151,7 +152,7 @@
     	if (!isMissingOrUnused) {
     		return false;
     	}
-    	Collection markers = getFailedChecks(key, UIUtils.ROOT_LOCALE);
+    	Collection<IMessageCheck> markers = getFailedChecks(key, UIUtils.ROOT_LOCALE);
     	//if we get a missing on the root locale, it means the
     	//that some localized resources are referring to a key that is not in
     	//the default locale anymore: in other words, assuming the
@@ -160,9 +161,9 @@
     	return markers != null && markersContainMissing(markers);
     }
     
-    private boolean markersContainMissing(Collection markers) {
-    	for (Iterator it = markers.iterator(); it.hasNext(); ) {
-    		if (((ValidationFailureEvent) it.next()).getCheck() == MissingValueCheck.MISSING_KEY) {
+    private boolean markersContainMissing(Collection<IMessageCheck> markers) {
+    	for (IMessageCheck marker : markers) {
+    		if (marker == MissingValueCheck.MISSING_KEY) {
     			return true;
     		}
     	}
diff --git a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/i18n/EntryRightBanner.java b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/i18n/EntryRightBanner.java
index 6f0689b..f7699aa 100644
--- a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/i18n/EntryRightBanner.java
+++ b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/i18n/EntryRightBanner.java
@@ -109,11 +109,9 @@
                     toolBarMgr.removeAll();
                     actionByMarkerIds.clear();
                     String key = editor.getSelectedKey();
-                    Collection checks = editor.getMarkers().getFailedChecks(
+                    Collection<IMessageCheck> checks = editor.getMarkers().getFailedChecks(
                             key, locale);
-                    for (Iterator iter = checks.iterator(); iter.hasNext();) {
-                        IMessageCheck check =
-                                (IMessageCheck) iter.next();
+                    for (IMessageCheck check : checks) {
                         Action action = getCheckAction(key, check);
                         if (action != null) {
                             toolBarMgr.add(action);
diff --git a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/resource/validator/ValidationFailureEvent.java b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/resource/validator/ValidationFailureEvent.java
index 4a61e68..b8b6afe 100644
--- a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/resource/validator/ValidationFailureEvent.java
+++ b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/resource/validator/ValidationFailureEvent.java
@@ -32,7 +32,7 @@
      * @param locale
      * @param key
      * @param resource
-     * @param check
+     * @param check not null
      */
     /*default*/ ValidationFailureEvent(
             final MessagesBundleGroup messagesBundleGroup,
@@ -54,7 +54,7 @@
         return messagesBundleGroup;
     }
     /**
-     * @return the check
+     * @return the check, never null
      */
     public IMessageCheck getCheck() {
         return check;
diff --git a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/tree/KeyTreeLabelProvider.java b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/tree/KeyTreeLabelProvider.java
index 88f31c8..1bb6932 100644
--- a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/tree/KeyTreeLabelProvider.java
+++ b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/tree/KeyTreeLabelProvider.java
@@ -13,6 +13,7 @@
 import java.util.Collection;
 
 import org.eclipse.babel.core.message.MessagesBundleGroup;
+import org.eclipse.babel.core.message.checks.IMessageCheck;
 import org.eclipse.babel.core.message.tree.IKeyTreeModel;
 import org.eclipse.babel.core.message.tree.KeyTreeNode;
 import org.eclipse.babel.editor.MessagesEditor;
@@ -65,7 +66,7 @@
 	public Image getImage(Object element) {
 		if (element instanceof KeyTreeNode) {
 			KeyTreeNode node = (KeyTreeNode)element;
-			Collection c = editor.getMarkers().getFailedChecks(node.getMessageKey());
+			Collection<IMessageCheck> c = editor.getMarkers().getFailedChecks(node.getMessageKey());
 			if (c == null || c.isEmpty()) {
 				return UIUtils.getImage(UIUtils.IMAGE_KEY);
 			}