Index: test/org/openstreetmap/josm/test/MergeVisitorTest.java
===================================================================
--- test/org/openstreetmap/josm/test/MergeVisitorTest.java	(revision 54)
+++ test/org/openstreetmap/josm/test/MergeVisitorTest.java	(revision 57)
@@ -7,5 +7,7 @@
 import org.openstreetmap.josm.data.osm.LineSegment;
 import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.visitor.MergeVisitor;
+import org.openstreetmap.josm.test.framework.Bug;
 import org.openstreetmap.josm.test.framework.DataSetTestCaseHelper;
 
@@ -19,14 +21,11 @@
 	public void testMergeOldLineSegmentsWithNew() {
 		DataSet ds = new DataSet();
-		Node n1 = DataSetTestCaseHelper.createNode(ds);
-		n1.id = 1;
-		Node n2 = DataSetTestCaseHelper.createNode(ds);
-		n2.id = 2;
-		LineSegment ls1 = DataSetTestCaseHelper.createLineSegment(ds, n1, n2);
+		Node[] n = createNodes(ds, 2);
+		LineSegment ls1 = DataSetTestCaseHelper.createLineSegment(ds, n[0], n[1]);
 		ls1.id = 3;
 
 		Node newnode = new Node();
-		newnode.coor = new GeoPoint(n2.coor.lat, n2.coor.lon);
-		LineSegment newls = new LineSegment(n1, newnode);
+		newnode.coor = new GeoPoint(n[1].coor.lat, n[1].coor.lon);
+		LineSegment newls = new LineSegment(n[0], newnode);
 
 		MergeVisitor v = new MergeVisitor(ds);
@@ -34,3 +33,44 @@
 		assertEquals("line segment should have been merged.", 1, ds.lineSegments.size());
 	}
+	
+	/**
+	 * Nodes beeing merged are equal but not the same.
+	 */
+	@Bug(54)
+	public void testEqualNotSame() {
+		// create a dataset with line segment a-b
+		DataSet ds = new DataSet();
+		Node n[] = createNodes(ds, 2);
+		LineSegment ls1 = DataSetTestCaseHelper.createLineSegment(ds, n[0], n[1]);
+		ls1.id = 1;
+		
+		// create an other dataset with line segment a'-c (a' is equal, but not same to a)
+		DataSet ds2 = new DataSet();
+		Node n2[] = createNodes(ds2, 2);
+		n2[0].coor = new GeoPoint(n[0].coor.lat, n[0].coor.lon);
+		n2[1].id = 42;
+		LineSegment ls2 = DataSetTestCaseHelper.createLineSegment(ds, n2[0], n2[1]);
+		
+		MergeVisitor v = new MergeVisitor(ds);
+		for (OsmPrimitive osm : ds2.allPrimitives())
+			osm.visit(v);
+		v.fixReferences();
+		
+		assertSame(ls1.start, ls2.start);
+	}
+	
+	
+	/**
+	 * Create that amount of nodes and add them to the dataset. The id will be 1,2,3,4...
+	 * @param amount Number of nodes to create.
+	 * @return The created nodes.
+	 */
+	private Node[] createNodes(DataSet ds, int amount) {
+		Node[] nodes = new Node[amount];
+		for (int i = 0; i < amount; ++i) {
+			nodes[i] = DataSetTestCaseHelper.createNode(ds);
+			nodes[i].id = i+1;
+		}
+		return nodes;
+	}
 }
