Index: /trunk/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java	(revision 14164)
+++ /trunk/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java	(revision 14165)
@@ -5,10 +5,11 @@
 
 import java.util.Collection;
-import java.util.Optional;
 
 import javax.swing.Icon;
 import javax.swing.JLabel;
 
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -23,5 +24,5 @@
      * Maximum displayed length, in characters.
      */
-    public static final int MULTIPLE_NAME_MAX_LENGTH = 80;
+    public static final IntegerProperty MULTIPLE_NAME_MAX_LENGTH = new IntegerProperty("multiple.name.max.length", 140);
 
     /** The class name of the combined primitives */
@@ -43,6 +44,6 @@
         multipleClassname = null;
         for (OsmPrimitive osm : data) {
-            String name = Optional.ofNullable(osm.get("name")).orElseGet(() -> osm.get("ref"));
-            if (name != null && !name.isEmpty() && multipleName.length() <= MULTIPLE_NAME_MAX_LENGTH) {
+            String name = osm.getDisplayName(DefaultNameFormatter.getInstance());
+            if (name != null && !name.isEmpty() && multipleName.length() <= MULTIPLE_NAME_MAX_LENGTH.get()) {
                 if (multipleName.length() > 0) {
                     multipleName.append(", ");
@@ -67,8 +68,8 @@
             if (multipleName.length() > 0) {
                 sb.append(": ");
-                if (multipleName.length() <= MULTIPLE_NAME_MAX_LENGTH) {
+                if (multipleName.length() <= MULTIPLE_NAME_MAX_LENGTH.get()) {
                     sb.append(multipleName);
                 } else {
-                    sb.append(multipleName.substring(0, MULTIPLE_NAME_MAX_LENGTH)).append("...");
+                    sb.append(multipleName.substring(0, MULTIPLE_NAME_MAX_LENGTH.get())).append("...");
                 }
             }
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/util/MultipleNameVisitorTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/util/MultipleNameVisitorTest.java	(revision 14164)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/util/MultipleNameVisitorTest.java	(revision 14165)
@@ -8,4 +8,5 @@
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -32,5 +33,18 @@
         MultipleNameVisitor visitor = new MultipleNameVisitor();
         visitor.visit(Arrays.asList(new Way(), new Way()));
-        assertEquals("2 ways", visitor.toString());
+        assertEquals("2 ways: ‎0‎ (0 nodes), ‎0‎ (0 nodes)", visitor.toString());
+    }
+
+    /**
+     * Non-regression test for bug #16652.
+     */
+    @Test
+    public void testTicket16652() {
+        MultipleNameVisitor visitor = new MultipleNameVisitor();
+        visitor.visit(Arrays.asList(
+                TestUtils.newNode("name=foo"),
+                TestUtils.newWay("addr:housename=Stark"),
+                TestUtils.newRelation("type=route")));
+        assertEquals("3 objects: foo, ‎House Stark‎ (0 nodes), route (0, 0 members)", visitor.toString());
     }
 }
