Index: /trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java	(revision 13206)
@@ -85,5 +85,5 @@
      */
     protected static Layer askTargetLayer(List<Layer> targetLayers) {
-        return askTargetLayer(targetLayers.toArray(new Layer[targetLayers.size()]),
+        return askTargetLayer(targetLayers.toArray(new Layer[0]),
                 tr("Please select the target layer."),
                 tr("Select target layer"),
Index: /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 13206)
@@ -169,5 +169,5 @@
         tree.updateTree(wms);
         List<String> wmsFormats = wms.getFormats();
-        final JComboBox<String> formats = new JComboBox<>(wmsFormats.toArray(new String[wmsFormats.size()]));
+        final JComboBox<String> formats = new JComboBox<>(wmsFormats.toArray(new String[0]));
         formats.setSelectedItem(wms.getPreferredFormats());
         formats.setToolTipText(tr("Select image format for WMS layer"));
Index: /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 13206)
@@ -249,5 +249,5 @@
      */
     Collection<DownloadTask> askWhichTasksToLoad(final Collection<DownloadTask> tasks) {
-        final JList<DownloadTask> list = new JList<>(tasks.toArray(new DownloadTask[tasks.size()]));
+        final JList<DownloadTask> list = new JList<>(tasks.toArray(new DownloadTask[0]));
         list.addSelectionInterval(0, tasks.size() - 1);
         final ExtendedDialog dialog = new WhichTasksToPerformDialog(list);
Index: /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 13206)
@@ -149,5 +149,5 @@
                 return Long.compare(o1.getUniqueId(), o2.getUniqueId());
             });
-            JList<OsmPrimitive> list = new JList<>(toPurgeAdditionally.toArray(new OsmPrimitive[toPurgeAdditionally.size()]));
+            JList<OsmPrimitive> list = new JList<>(toPurgeAdditionally.toArray(new OsmPrimitive[0]));
             /* force selection to be active for all entries */
             list.setCellRenderer(new SelectionForcedOsmPrimitivRenderer());
Index: /trunk/src/org/openstreetmap/josm/actions/RestartAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/RestartAction.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/actions/RestartAction.java	(revision 13206)
@@ -106,5 +106,5 @@
             public void run() {
                 try {
-                    Runtime.getRuntime().exec(cmd.toArray(new String[cmd.size()]));
+                    Runtime.getRuntime().exec(cmd.toArray(new String[0]));
                 } catch (IOException e) {
                     Logging.error(e);
Index: /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 13206)
@@ -170,5 +170,5 @@
             this.selection = selection;
             this.wayToKeep = wayToKeep;
-            this.list = new JList<>(newWays.toArray(new Way[newWays.size()]));
+            this.list = new JList<>(newWays.toArray(new Way[0]));
             configureList();
 
Index: /trunk/src/org/openstreetmap/josm/command/SequenceCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/SequenceCommand.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/command/SequenceCommand.java	(revision 13206)
@@ -42,5 +42,5 @@
         super(ds);
         this.name = name;
-        this.sequence = sequenz.toArray(new Command[sequenz.size()]);
+        this.sequence = sequenz.toArray(new Command[0]);
         this.continueOnError = continueOnError;
     }
Index: /trunk/src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 13206)
@@ -54,5 +54,5 @@
 
             if (members != null) {
-                this.members = members.toArray(new RelationMember[members.size()]);
+                this.members = members.toArray(new RelationMember[0]);
             } else {
                 this.members = new RelationMember[0];
Index: /trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 13206)
@@ -63,5 +63,5 @@
                 this.nodes = new Node[0];
             } else {
-                this.nodes = nodes.toArray(new Node[nodes.size()]);
+                this.nodes = nodes.toArray(new Node[0]);
             }
             for (Node node: this.nodes) {
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 13206)
@@ -1610,5 +1610,5 @@
 
             // We use parallel sort here. This is only available for arrays.
-            StyleRecord[] sorted = allStyleElems.toArray(new StyleRecord[allStyleElems.size()]);
+            StyleRecord[] sorted = allStyleElems.toArray(new StyleRecord[0]);
             Arrays.parallelSort(sorted, null);
 
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java	(revision 13206)
@@ -15,6 +15,4 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
-import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -29,4 +27,6 @@
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
+import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Geometry.AreaAndPerimeter;
@@ -580,5 +580,5 @@
     public static Collection<JoinedWay> joinWays(Collection<Way> waysToJoin) {
         final Collection<JoinedWay> result = new ArrayList<>();
-        final Way[] joinArray = waysToJoin.toArray(new Way[waysToJoin.size()]);
+        final Way[] joinArray = waysToJoin.toArray(new Way[0]);
         int left = waysToJoin.size();
         while (left > 0) {
Index: /trunk/src/org/openstreetmap/josm/data/validation/routines/InetAddressValidator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/routines/InetAddressValidator.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/data/validation/routines/InetAddressValidator.java	(revision 13206)
@@ -146,5 +146,5 @@
                 octetList.remove(0);
             }
-            octets = octetList.toArray(new String[octetList.size()]);
+            octets = octetList.toArray(new String[0]);
         }
         if (octets.length > IPV6_MAX_HEX_GROUPS) {
Index: /trunk/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java	(revision 13206)
@@ -56,5 +56,5 @@
             flavors.addAll(OsmLayerTransferData.FLAVORS);
         }
-        return flavors.toArray(new DataFlavor[flavors.size()]);
+        return flavors.toArray(new DataFlavor[0]);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 13206)
@@ -251,5 +251,5 @@
             build();
             lblMessage.setText(msg);
-            lstLayers.setListData(infos.toArray(new SaveLayerInfo[infos.size()]));
+            lstLayers.setListData(infos.toArray(new SaveLayerInfo[0]));
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 13206)
@@ -1649,5 +1649,5 @@
         actions.add(SeparatorLayerAction.INSTANCE);
         actions.add(new LayerListPopup.InfoAction(this));
-        return actions.toArray(new Action[actions.size()]);
+        return actions.toArray(new Action[0]);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/NoteLayer.java	(revision 13206)
@@ -392,5 +392,5 @@
         actions.add(new LayerSaveAction(this));
         actions.add(new LayerSaveAsAction(this));
-        return actions.toArray(new Action[actions.size()]);
+        return actions.toArray(new Action[0]);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 13206)
@@ -681,5 +681,5 @@
                 SeparatorLayerAction.INSTANCE,
                 new LayerListPopup.InfoAction(this)));
-        return actions.toArray(new Action[actions.size()]);
+        return actions.toArray(new Action[0]);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/WMSLayer.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/WMSLayer.java	(revision 13206)
@@ -82,5 +82,5 @@
         ret.add(new LayerSaveAsAction(this));
         ret.add(new BookmarkWmsAction());
-        return ret.toArray(new Action[ret.size()]);
+        return ret.toArray(new Action[0]);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 13206)
@@ -421,5 +421,5 @@
             Collections.sort(vtTimezones);
 
-            JosmComboBox<String> cbTimezones = new JosmComboBox<>(vtTimezones.toArray(new String[vtTimezones.size()]));
+            JosmComboBox<String> cbTimezones = new JosmComboBox<>(vtTimezones.toArray(new String[0]));
 
             String tzId = Config.getPref().get("geoimage.timezoneid", "");
@@ -573,5 +573,5 @@
         panelCb.add(new JLabel(tr("GPX track: ")));
 
-        cbGpx = new JosmComboBox<>(gpxLst.toArray(new GpxDataWrapper[gpxLst.size()]));
+        cbGpx = new JosmComboBox<>(gpxLst.toArray(new GpxDataWrapper[0]));
         if (defaultItem != null) {
             cbGpx.setSelectedItem(defaultItem);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 13206)
@@ -349,5 +349,5 @@
         entries.add(new LayerListPopup.InfoAction(this));
 
-        return entries.toArray(new Action[entries.size()]);
+        return entries.toArray(new Action[0]);
 
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 13206)
@@ -124,5 +124,5 @@
             return null;
         }
-        return AbstractMergeAction.askTargetLayer(targetLayers.toArray(new AbstractTileSourceLayer[targetLayers.size()]),
+        return AbstractMergeAction.askTargetLayer(targetLayers.toArray(new AbstractTileSourceLayer[0]),
                 tr("Please select the imagery layer."),
                 tr("Select imagery layer"),
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(revision 13206)
@@ -1033,5 +1033,5 @@
         }
 
-        return createColorLut(0, colorList.toArray(new Color[ colorList.size() ]));
+        return createColorLut(0, colorList.toArray(new Color[0]));
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 13206)
@@ -240,5 +240,5 @@
         components.add(SeparatorLayerAction.INSTANCE);
         components.add(new LayerListPopup.InfoAction(this));
-        return components.toArray(new Action[components.size()]);
+        return components.toArray(new Action[0]);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java	(revision 13206)
@@ -76,5 +76,5 @@
                 tree.updateTree(wms);
                 List<String> wmsFormats = wms.getFormats();
-                formats.setModel(new DefaultComboBoxModel<>(wmsFormats.toArray(new String[wmsFormats.size()])));
+                formats.setModel(new DefaultComboBoxModel<>(wmsFormats.toArray(new String[0])));
                 formats.setSelectedItem(wms.getPreferredFormats());
             } catch (MalformedURLException ex1) {
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java	(revision 13206)
@@ -92,5 +92,5 @@
             filter.getDocument().addDocumentListener(this);
 
-            selectionList = new JList<>(data.toArray(new String[data.size()]));
+            selectionList = new JList<>(data.toArray(new String[0]));
             selectionList.setModel(model);
             JScrollPane scroll = new JScrollPane(selectionList);
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java	(revision 13206)
@@ -358,5 +358,5 @@
     public ProjectionPreference() {
         this.projectionCombo = new JosmComboBox<>(
-            projectionChoices.toArray(new ProjectionChoice[projectionChoices.size()]));
+            projectionChoices.toArray(new ProjectionChoice[0]));
         this.coordinatesCombo = new JosmComboBox<>(
                 CoordinateFormatManager.getCoordinateFormats().toArray(new ICoordinateFormat[0]));
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/projection/UTMProjectionChoice.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/projection/UTMProjectionChoice.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/projection/UTMProjectionChoice.java	(revision 13206)
@@ -42,5 +42,5 @@
      */
     public UTMProjectionChoice() {
-        super(tr("UTM"), /* NO-ICON */ "core:utm", cbEntries.toArray(new String[cbEntries.size()]), tr("UTM Zone"));
+        super(tr("UTM"), /* NO-ICON */ "core:utm", cbEntries.toArray(new String[0]), tr("UTM Zone"));
     }
 
@@ -118,5 +118,5 @@
             }
         }
-        return projections.toArray(new String[projections.size()]);
+        return projections.toArray(new String[0]);
     }
 
@@ -144,5 +144,5 @@
 
         if (args != null) {
-            String[] array = args.toArray(new String[args.size()]);
+            String[] array = args.toArray(new String[0]);
 
             if (array.length > 1) {
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java	(revision 13206)
@@ -81,5 +81,5 @@
         allowedStates.add(QuadStateCheckBox.State.UNSET);
         check = new QuadStateCheckBox(locale_text, initialState,
-                allowedStates.toArray(new QuadStateCheckBox.State[allowedStates.size()]));
+                allowedStates.toArray(new QuadStateCheckBox.State[0]));
         check.setPropertyText(key);
         check.setState(check.getState()); // to update the tooltip text
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 13206)
@@ -344,5 +344,5 @@
             result.add(item.toString());
         }
-        return result.toArray(new String[result.size()]);
+        return result.toArray(new String[0]);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java	(revision 13206)
@@ -107,5 +107,5 @@
         } else {
             // the objects have different values
-            JosmComboBox<String> comboBox = new JosmComboBox<>(usage.values.toArray(new String[usage.values.size()]));
+            JosmComboBox<String> comboBox = new JosmComboBox<>(usage.values.toArray(new String[0]));
             comboBox.setEditable(true);
             comboBox.setEditor(textField);
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/NativeFileChooser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/NativeFileChooser.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/NativeFileChooser.java	(revision 13206)
@@ -56,5 +56,5 @@
         // https://bugs.openjdk.java.net/browse/JDK-4811090 : Extend awt filedialog
         // https://bugs.openjdk.java.net/browse/JDK-6192906 : Add more features to java.awt.FileDialog
-        return fileFilters.toArray(new FileFilter[fileFilters.size()]);
+        return fileFilters.toArray(new FileFilter[0]);
     }
 
Index: /trunk/src/org/openstreetmap/josm/tools/template_engine/TemplateParser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/template_engine/TemplateParser.java	(revision 13205)
+++ /trunk/src/org/openstreetmap/josm/tools/template_engine/TemplateParser.java	(revision 13206)
@@ -61,5 +61,5 @@
                 templateEntry = parseVariable();
             } else if (endTokens.contains(token.getType()))
-                return CompoundTemplateEntry.fromArray(entries.toArray(new TemplateEntry[entries.size()]));
+                return CompoundTemplateEntry.fromArray(entries.toArray(new TemplateEntry[0]));
             else if (token.getType() == TokenType.TEXT) {
                 tokenizer.nextToken();
Index: /trunk/tools/pmd/josm-ruleset.xml
===================================================================
--- /trunk/tools/pmd/josm-ruleset.xml	(revision 13205)
+++ /trunk/tools/pmd/josm-ruleset.xml	(revision 13206)
@@ -174,5 +174,4 @@
     <exclude name="ConsecutiveLiteralAppends"/>
     <exclude name="InefficientEmptyStringCheck"/>
-    <exclude name="OptimizableToArrayCall"/>
     <exclude name="SimplifyStartsWith"/>
     <exclude name="TooFewBranchesForASwitchStatement"/>
