Index: trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 12907)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 12909)
@@ -87,4 +87,5 @@
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
@@ -464,5 +465,5 @@
      *
      */
-    private static class SelectionListModel extends AbstractListModel<OsmPrimitive>
+    static class SelectionListModel extends AbstractListModel<OsmPrimitive>
     implements ActiveLayerChangeListener, SelectionChangedListener, DataSetListener {
 
@@ -662,12 +663,17 @@
          */
         public synchronized void sort() {
-            if (selection.size() <= Config.getPref().getInt("selection.no_sort_above", 100_000)) {
-                boolean quick = selection.size() > Config.getPref().getInt("selection.fast_sort_above", 10_000);
+            int size = selection.size();
+            if (size > 1 && size <= Config.getPref().getInt("selection.no_sort_above", 100_000)) {
+                boolean quick = size > Config.getPref().getInt("selection.fast_sort_above", 10_000);
                 Comparator<OsmPrimitive> c = Config.getPref().getBoolean("selection.sort_relations_before_ways", true)
                         ? OsmPrimitiveComparator.orderingRelationsWaysNodes()
                         : OsmPrimitiveComparator.orderingWaysRelationsNodes();
-                selection.sort(c.thenComparing(quick
-                        ? OsmPrimitiveComparator.comparingUniqueId()
-                        : OsmPrimitiveComparator.comparingNames()));
+                try {
+                    selection.sort(c.thenComparing(quick
+                            ? OsmPrimitiveComparator.comparingUniqueId()
+                            : OsmPrimitiveComparator.comparingNames()));
+                } catch (IllegalArgumentException e) {
+                    throw BugReport.intercept(e).put("size", size).put("quick", quick).put("selection", selection);
+                }
             }
         }
Index: trunk/src/org/openstreetmap/josm/tools/AlphanumComparator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/AlphanumComparator.java	(revision 12907)
+++ trunk/src/org/openstreetmap/josm/tools/AlphanumComparator.java	(revision 12909)
@@ -9,18 +9,25 @@
  * The Alphanum Algorithm is discussed at http://www.DaveKoelle.com
  *
+ * Released under the MIT License - https://opensource.org/licenses/MIT
  *
- * This library is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or any later version.
+ * Copyright 2007-2017 David Koelle
  *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
  *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
  *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 import java.io.Serializable;
@@ -37,5 +44,5 @@
  *
  * This is an updated version with enhancements made by Daniel Migowski, Andre
- * Bogus, and David Koelle and others.
+ * Bogus, David Koelle and others.
  *
  */
