FindBugs: iterate over entry sets and add hashCode()
diff --git a/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/IvyNodeLabelProvider.java b/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/IvyNodeLabelProvider.java
index 8ea39b7..a129428 100644
--- a/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/IvyNodeLabelProvider.java
+++ b/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/IvyNodeLabelProvider.java
@@ -235,10 +235,9 @@
      * @param currentSelection IvyNodeElement
      */
     public void setCurrentSelection(IvyNodeElement root, IvyNodeElement currentSelection) {
-        for (EntityConnectionData entityConnectionData : highlightedRelationships.keySet()) {
-            ConnectionStyle style = highlightedRelationships.get(entityConnectionData);
-            if (style.isRevealOnHighlight()) {
-                viewer.unReveal(entityConnectionData);
+        for (Map.Entry<EntityConnectionData, ConnectionStyle> relationship : highlightedRelationships.entrySet()) {
+            if (relationship.getValue().isRevealOnHighlight()) {
+                viewer.unReveal(relationship.getKey());
             }
         }
 
@@ -258,10 +257,9 @@
                     highlightedRelationships, highlightedDependencies);
         }
 
-        for (EntityConnectionData entityConnectionData : highlightedRelationships.keySet()) {
-            ConnectionStyle style = highlightedRelationships.get(entityConnectionData);
-            if (style.isRevealOnHighlight()) {
-                viewer.reveal(entityConnectionData);
+        for (Map.Entry<EntityConnectionData, ConnectionStyle> relationship : highlightedRelationships.entrySet()) {
+            if (relationship.getValue().isRevealOnHighlight()) {
+                viewer.reveal(relationship.getKey());
             }
         }
 
diff --git a/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/MessageContentProvider.java b/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/MessageContentProvider.java
index 313e7cc..ed933dc 100644
--- a/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/MessageContentProvider.java
+++ b/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/MessageContentProvider.java
@@ -55,10 +55,11 @@
             }
         }
 
-        for (ModuleId conflictKey : conflicts.keySet()) {
+        for (Map.Entry<ModuleId, Collection<IvyNodeElement>> conflict : conflicts.entrySet()) {
+            final ModuleId conflictKey = conflict.getKey();
             manager.addMessage(conflictKey,
                     "Conflict on module " + conflictKey.getOrganisation() + "#" + conflictKey.getName(),
-                    conflicts.get(conflictKey), IMessageProvider.ERROR);
+                    conflict.getValue(), IMessageProvider.ERROR);
         }
     }
 
diff --git a/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/ResolveVisualizerView.java b/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/ResolveVisualizerView.java
index 5590d89..68964cd 100644
--- a/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/ResolveVisualizerView.java
+++ b/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/ResolveVisualizerView.java
@@ -157,9 +157,9 @@
                 }
                 list.clear();
                 if (textString.length() > 0) {
-                    for (String string : figureListing.keySet()) {
-                        if (string.toLowerCase().contains(textString.toLowerCase())) {
-                            list.add(figureListing.get(string));
+                    for (Map.Entry<String, GraphItem> figure : figureListing.entrySet()) {
+                        if (figure.getKey().toLowerCase().contains(textString.toLowerCase())) {
+                            list.add(figure.getValue());
                         }
                     }
                 }
@@ -458,7 +458,7 @@
     }
 
     private class ForceHiddenFilter extends IvyNodeElementFilterAdapter {
-        private final Collection/* <IvyNodeElement> */<IvyNodeElement> forceHidden = new HashSet/* <IvyNodeElement> */<>();
+        private final Collection<IvyNodeElement> forceHidden = new HashSet<>();
 
         public boolean accept(IvyNodeElement unfiltered) {
             return !forceHidden.contains(unfiltered);
diff --git a/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/model/IvyNodeElement.java b/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/model/IvyNodeElement.java
index 2016968..6e866ad 100644
--- a/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/model/IvyNodeElement.java
+++ b/org.apache.ivyde.eclipse.resolvevisualizer/src/org/apache/ivyde/eclipse/resolvevisualizer/model/IvyNodeElement.java
@@ -17,6 +17,7 @@
  */
 package org.apache.ivyde.eclipse.resolvevisualizer.model;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -35,6 +36,7 @@
     private final Collection<IvyNodeElement> dependencies = new HashSet<>();
     private final Collection<IvyNodeElement> callers = new HashSet<>();
     private Collection<IvyNodeElement> conflicts = new HashSet<>();
+    private int hash;
 
     /**
      * The caller configurations that caused this node to be reached in the resolution, grouped by caller.
@@ -57,6 +59,19 @@
         return false;
     }
 
+    public int hashCode() {
+        if (hash == 0) {
+            // CheckStyle:MagicNumber| OFF
+            hash = 31;
+            hash = hash * 13 + getModuleRevisionId().hashCode();
+            hash = hash * 13 + Arrays.hashCode(getDeepDependencies());
+            hash = hash * 13 + Arrays.hashCode(getConflicts());
+            hash = hash * 13 + Arrays.hashCode(getCallers());
+            // CheckStyle:MagicNumber| ON
+        }
+        return hash;
+    }
+
     public IvyNodeElement[] getDependencies() {
         return dependencies.toArray(new IvyNodeElement[dependencies.size()]);
     }