Bug 184928 - [variables] stepping with logical structures loses selection
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/logicalstructures/JDIPlaceholderVariable.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/logicalstructures/JDIPlaceholderVariable.java
index feec65b..ac1df84 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/logicalstructures/JDIPlaceholderVariable.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/logicalstructures/JDIPlaceholderVariable.java
@@ -213,7 +213,7 @@
 	public boolean equals(Object obj) {
 		if (obj instanceof JDIPlaceholderVariable) {
 			JDIPlaceholderVariable var = (JDIPlaceholderVariable)obj;
-			return var.getName().equals(getName()) && var.getValue().equals(getValue());
+			return var.getName().equals(getName());
 		}
 		return false;
 	}
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIArrayEntryVariable.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIArrayEntryVariable.java
index e55488e..452f8d0 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIArrayEntryVariable.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIArrayEntryVariable.java
@@ -182,7 +182,7 @@
 	public boolean equals(Object obj) {
 		if (obj instanceof JDIArrayEntryVariable) {
 			JDIArrayEntryVariable entry = (JDIArrayEntryVariable)obj;
-			return entry.getArrayReference().equals(getArrayReference()) &&
+			return entry.getArrayReference().type().equals(getArrayReference().type()) &&
 				entry.getIndex() == getIndex();
 		}
 		return false;
@@ -192,7 +192,7 @@
 	 * @see java.lang.Object#hashCode()
 	 */
 	public int hashCode() {
-		return getArrayReference().hashCode() + getIndex();
+		return getArrayReference().type().hashCode() + getIndex();
 	}
 
 }
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIFieldVariable.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIFieldVariable.java
index 1665fea..7980aac 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIFieldVariable.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIFieldVariable.java
@@ -279,9 +279,6 @@
 	public boolean equals(Object o) {
 		if (o instanceof JDIFieldVariable) {
 			JDIFieldVariable f = (JDIFieldVariable)o;
-			if (fObject != null) {
-				return fObject.equals(f.fObject) && f.fField.equals(fField);
-			}
 			return f.fField.equals(fField);
 		}
 		return false;
@@ -291,10 +288,7 @@
 	 * @see java.lang.Object#hashCode()
 	 */
 	public int hashCode() {
-		if (fObject != null) {
-			return fField.hashCode() + fObject.hashCode();
-		}
-		return fField.hashCode();
+		return fField.hashCode() + fType.hashCode();
 	}
 
 	/* (non-Javadoc)