diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/SocketTransportImpl.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/SocketTransportImpl.java
index 913e960..e16fe23 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/SocketTransportImpl.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/SocketTransportImpl.java
@@ -46,6 +46,7 @@
 	 * Listens for connections initiated by target VMs. 
 	 */
 	public void listen(int port) throws IOException {
+		closeListen();
 		fServerSocket = new ServerSocket(port);
 	}
 	
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpFieldID.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpFieldID.java
index 8201696..04495c9 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpFieldID.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpFieldID.java
@@ -21,14 +21,6 @@
 	}
 	
 	/**
-	 * @return Returns true if two IDs refer to the same entity in the target VM.
-	 * @see java.lang.Object#equals(Object)
-	 */
-	public boolean equals(Object object) {
-		return object != null && object.getClass().equals(this.getClass()) && fValue == ((JdwpFieldID)object).fValue;
-	}
-	
-	/**
 	 * @return Returns VM specific size of ID.
 	 */
 	public int getSize() {
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpFrameID.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpFrameID.java
index bad34b2..746b6ac 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpFrameID.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpFrameID.java
@@ -19,15 +19,7 @@
 	public JdwpFrameID(VirtualMachineImpl vmImpl) {
 		super(vmImpl);
 	}
-	
-	/**
-	 * @return Returns true if two IDs refer to the same entity in the target VM.
-	 * @see java.lang.Object#equals(Object)
-	 */
-	public boolean equals(Object object) {
-		return object != null && object.getClass().equals(this.getClass()) && fValue == ((JdwpFrameID)object).fValue;
-	}
-	
+		
 	/**
 	 * @return Returns VM specific size of ID.
 	 */
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpID.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpID.java
index e3d3567..8a3dc44 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpID.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpID.java
@@ -67,7 +67,9 @@
 	 * @return Returns true if two IDs refer to the same entity in the target VM.
 	 * @see java.lang.Object#equals(Object)
 	 */
-	public abstract boolean equals(Object ID);
+	public boolean equals(Object object) {
+		return object != null && object.getClass().equals(this.getClass()) && fValue == ((JdwpID)object).fValue;
+	}
 	
 	/**
 	 * @return Returns a has code for this object.
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpMethodID.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpMethodID.java
index 9674087..cc46f58 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpMethodID.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpMethodID.java
@@ -21,14 +21,6 @@
 	}
 	
 	/**
-	 * @return Returns true if two IDs refer to the same entity in the target VM.
-	 * @see java.lang.Object#equals(Object)
-	 */
-	public boolean equals(Object object) {
-		return object != null && object.getClass().equals(this.getClass()) && fValue == ((JdwpMethodID)object).fValue;
-	}
-	
-	/**
 	 * @return Returns VM specific size of ID.
 	 */
 	public int getSize() {
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpObjectID.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpObjectID.java
index f4bc7db..a77102a 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpObjectID.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpObjectID.java
@@ -21,14 +21,6 @@
 	}
 	
 	/**
-	 * @return Returns true if two IDs refer to the same entity in the target VM.
-	 * @see java.lang.Object#equals(Object)
-	 */
-	public boolean equals(Object object) {
-		return object != null && object.getClass().equals(this.getClass()) && fValue == ((JdwpObjectID)object).fValue;
-	}
-	
-	/**
 	 * @return Returns VM specific size of ID.
 	 */
 	public int getSize() {
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpReferenceTypeID.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpReferenceTypeID.java
index 09cbcfb..62a09cc 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpReferenceTypeID.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/jdwp/JdwpReferenceTypeID.java
@@ -21,14 +21,6 @@
 	}
 	
 	/**
-	 * @return Returns true if two IDs refer to the same entity in the target VM.
-	 * @see java.lang.Object#equals(Object)
-	 */
-	public boolean equals(Object object) {
-		return object != null && object.getClass().equals(this.getClass()) && fValue == ((JdwpReferenceTypeID)object).fValue;
-	}
-	
-	/**
 	 * @return Returns VM specific size of ID.
 	 */
 	public int getSize() {
