Index: /trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java	(revision 10198)
+++ /trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java	(revision 10199)
@@ -290,5 +290,5 @@
     // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search
     private static final String[] GENERIC_TLDS = new String[] {
-        // Taken from Version 2016051100, Last Updated Wed May 11 07:07:01 2016 UTC
+        // Taken from Version 2016051101, Last Updated Thu May 12 07:07:01 2016 UTC
         "aaa", // aaa American Automobile Association, Inc.
         "aarp", // aarp AARP
@@ -510,4 +510,5 @@
         "day", // day Charleston Road Registry Inc.
         "dclk", // dclk Charleston Road Registry Inc.
+        "dds", // dds Minds + Machines Group Limited
         "dealer", // dealer Dealer Dot Com, Inc.
         "deals", // deals Sand Sunset, LLC
@@ -815,4 +816,5 @@
         "menu", // menu Wedding TLD2, LLC
         "meo", // meo PT Comunicacoes S.A.
+        "metlife", // metlife MetLife Services and Solutions, LLC
         "miami", // miami Top Level Domain Holdings Limited
         "microsoft", // microsoft Microsoft Corporation
@@ -869,4 +871,5 @@
         "norton", // norton Symantec Corporation
         "nowruz", // nowruz Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
+        "nowtv", // nowtv Starbucks (HK) Limited
         "nra", // nra NRA Holdings Company, INC.
         "nrw", // nrw Minds + Machines GmbH
@@ -901,4 +904,5 @@
         "party", // party Blue Sky Registry Limited
         "passagens", // passagens Travel Reservations SRL
+        "pccw", // pccw PCCW Enterprises Limited
         "pet", // pet Afilias plc
         "pharmacy", // pharmacy National Association of Boards of Pharmacy
@@ -966,4 +970,5 @@
         "rexroth", // rexroth Robert Bosch GMBH
         "rich", // rich I-REGISTRY Ltd., Niederlassung Deutschland
+        "richardli", // richardli Pacific Century Asset Management (HK) Limited
         "ricoh", // ricoh Ricoh Company, Ltd.
         "rio", // rio Empresa Municipal de Informática SA - IPLANRIO
@@ -1237,4 +1242,5 @@
         "xn--fjq720a", // 娱乐 Will Bloom, LLC
         "xn--flw351e", // 谷歌 Charleston Road Registry Inc.
+        "xn--fzys8d69uvgm", // 電訊盈科 PCCW Enterprises Limited
         "xn--g2xx48c", // 购物 Minds + Machines Group Limited
         "xn--gckr3f0f", // クラウド Amazon Registry Services, Inc.
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 10198)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 10199)
@@ -8,4 +8,5 @@
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.TreeSet;
 import java.util.regex.Pattern;
 
@@ -206,15 +207,22 @@
     public String toString() {
         StringBuilder res = new StringBuilder("Cascade{ ");
+        // List properties in alphabetical order to be deterministic, without changing "prop" to a TreeMap
+        // (no reason too, not sure about the potential memory/performance impact of such a change)
+        TreeSet<String> props = new TreeSet<>();
         for (Entry<String, Object> entry : prop.entrySet()) {
-            res.append(entry.getKey()+':');
+            StringBuilder sb = new StringBuilder(entry.getKey()+':');
             Object val = entry.getValue();
             if (val instanceof float[]) {
-                res.append(Arrays.toString((float[]) val));
+                sb.append(Arrays.toString((float[]) val));
             } else if (val instanceof Color) {
-                res.append(Utils.toString((Color) val));
+                sb.append(Utils.toString((Color) val));
             } else if (val != null) {
-                res.append(val);
-            }
-            res.append("; ");
+                sb.append(val);
+            }
+            sb.append("; ");
+            props.add(sb.toString());
+        }
+        for (String s : props) {
+            res.append(s);
         }
         return res.append('}').toString();
Index: /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java	(revision 10198)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java	(revision 10199)
@@ -101,5 +101,5 @@
                 "Range:|s119.4328566955879-Infinity\n" +
                 " default: \n" +
-                "Cascade{ symbol-fill-color:#ff0000; symbol-stroke-color:#ff0000; major-z-index:4.95; font-size:8.0; symbol-shape:Keyword{square}; symbol-size:6.0; }\n" +
+                "Cascade{ font-size:8.0; major-z-index:4.95; symbol-fill-color:#ff0000; symbol-shape:Keyword{square}; symbol-size:6.0; symbol-stroke-color:#ff0000; }\n" +
                 "\n" +
                 "> skipping \"Potlatch 2\" (not active)\n" +
