Index: /trunk/build.xml
===================================================================
--- /trunk/build.xml	(revision 16642)
+++ /trunk/build.xml	(revision 16643)
@@ -302,5 +302,5 @@
             <!-- Undocumented argument to ignore "Sun internal proprietary API" warning, see http://stackoverflow.com/a/13862308/2257172 -->
             <compilerarg value="-XDignore.symbol.file"/>
-            <compilerarg value="-Xplugin:ErrorProne -XepExcludedPaths:.*/parsergen/.* -Xep:ReferenceEquality:OFF -Xep:FutureReturnValueIgnored:OFF -Xep:StringSplitter:OFF -Xep:JdkObsolete:OFF -Xep:EqualsGetClass:OFF -Xep:UndefinedEquals:OFF -Xep:BadImport:OFF -Xep:AnnotateFormatMethod:OFF"/>
+            <compilerarg value="-Xplugin:ErrorProne -XepExcludedPaths:.*/parsergen/.* -Xep:ReferenceEquality:OFF -Xep:FutureReturnValueIgnored:OFF -Xep:JdkObsolete:OFF -Xep:EqualsGetClass:OFF -Xep:UndefinedEquals:OFF -Xep:BadImport:OFF -Xep:AnnotateFormatMethod:OFF"/>
             <compilerarg line="-Xmaxwarns 1000"/>
             <classpath>
Index: /trunk/src/com/kitfox/svg/Text.java
===================================================================
--- /trunk/src/com/kitfox/svg/Text.java	(revision 16642)
+++ /trunk/src/com/kitfox/svg/Text.java	(revision 16643)
@@ -268,5 +268,5 @@
     {
         //Get font
-        String[] families = fontFamily.split(",");
+        String[] families = fontFamily.split(",", -1);
         Font font = null;
         for (int i = 0; i < families.length; ++i)
Index: /trunk/src/com/kitfox/svg/util/FontSystem.java
===================================================================
--- /trunk/src/com/kitfox/svg/util/FontSystem.java	(revision 16642)
+++ /trunk/src/com/kitfox/svg/util/FontSystem.java	(revision 16643)
@@ -78,5 +78,5 @@
     public static FontSystem createFont(String fontFamily, int fontStyle, int fontWeight, int fontSize)
     {
-        String[] families = fontFamily.split(",");
+        String[] families = fontFamily.split(",", -1);
         for (String fontName: families)
         {
Index: /trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 16643)
@@ -369,5 +369,5 @@
         final Collection<String> extensionsPlusArchive = new LinkedHashSet<>();
         final Collection<String> extensionsForDescription = new LinkedHashSet<>();
-        for (String e : extensions.split(",")) {
+        for (String e : extensions.split(",", -1)) {
             extensionsPlusArchive.add(e);
             if (addArchiveExtension != AddArchiveExtension.NONE) {
@@ -420,5 +420,5 @@
      */
     public boolean acceptName(String filename) {
-        return Utils.hasExtension(filename, extensions.split(","));
+        return Utils.hasExtension(filename, extensions.split(",", -1));
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/RestartAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/RestartAction.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/actions/RestartAction.java	(revision 16643)
@@ -121,5 +121,5 @@
         final List<String> cmd = new ArrayList<>();
         cmd.add("/usr/bin/osascript");
-        for (String line : RESTART_APPLE_SCRIPT.split("\n")) {
+        for (String line : RESTART_APPLE_SCRIPT.split("\n", -1)) {
             cmd.add("-e");
             cmd.add(line);
@@ -142,5 +142,5 @@
             throw new IOException("Unable to retrieve sun.java.command property");
         }
-        String[] mainCommand = javaCommand.split(" ");
+        String[] mainCommand = javaCommand.split(" ", -1);
         if (javaCommand.endsWith(".jnlp") && jnlp == null) {
             // see #11751 - jnlp on Linux
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 16643)
@@ -86,5 +86,5 @@
 
         } else if (GpxUrlPattern.TRACKPOINTS_BBOX.matches(url)) {
-            String[] table = url.split("\\?|=|&");
+            String[] table = url.split("\\?|=|&", -1);
             for (int i = 0; i < table.length; i++) {
                 if ("bbox".equals(table[i]) && i < table.length-1)
Index: /trunk/src/org/openstreetmap/josm/data/Bounds.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/Bounds.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/Bounds.java	(revision 16643)
@@ -251,5 +251,5 @@
     public Bounds(String asString, String separator, ParseMethod parseMethod, boolean roundToOsmPrecision) {
         CheckParameterUtil.ensureParameterNotNull(asString, "asString");
-        String[] components = asString.split(separator);
+        String[] components = asString.split(separator, -1);
         if (components.length != 4)
             throw new IllegalArgumentException(
Index: /trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java	(revision 16643)
@@ -451,5 +451,5 @@
         String cacheControl = urlConn.getHeaderField("Cache-Control");
         if (cacheControl != null) {
-            for (String token: cacheControl.split(",")) {
+            for (String token: cacheControl.split(",", -1)) {
                 try {
                     if (token.startsWith("max-age=")) {
Index: /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 16643)
@@ -400,5 +400,5 @@
             if (e.shapes != null) {
                 try {
-                    for (String s : e.shapes.split(";")) {
+                    for (String s : e.shapes.split(";", -1)) {
                         bounds.addShape(new Shape(s, ","));
                     }
@@ -410,5 +410,5 @@
         if (e.projections != null && !e.projections.isEmpty()) {
             // split generates null element on empty string which gives one element Array[null]
-            setServerProjections(Arrays.asList(e.projections.split(",")));
+            setServerProjections(Arrays.asList(e.projections.split(",", -1)));
         }
         attributionText = Utils.intern(e.attribution_text);
@@ -666,5 +666,5 @@
             Matcher m = Pattern.compile(".*\\{PROJ\\(([^)}]+)\\)\\}.*").matcher(url.toUpperCase(Locale.ENGLISH));
             if (m.matches()) {
-                setServerProjections(Arrays.asList(m.group(1).split(",")));
+                setServerProjections(Arrays.asList(m.group(1).split(",", -1)));
             }
         }
Index: /trunk/src/org/openstreetmap/josm/data/imagery/Shape.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/Shape.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/Shape.java	(revision 16643)
@@ -29,5 +29,5 @@
     public Shape(String asString, String separator) {
         CheckParameterUtil.ensureParameterNotNull(asString, "asString");
-        String[] components = asString.split(separator);
+        String[] components = asString.split(separator, -1);
         if (components.length % 2 != 0)
             throw new IllegalArgumentException(MessageFormat.format("Even number of doubles expected in string, got {0}: {1}",
Index: /trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 16643)
@@ -746,5 +746,5 @@
 
     private static <T> T parseCoor(String coor, boolean switchXY, BiFunction<String, String, T> function) {
-        String[] parts = coor.split(" ");
+        String[] parts = coor.split(" ", -1);
         if (switchXY) {
             return function.apply(parts[1], parts[0]);
Index: /trunk/src/org/openstreetmap/josm/data/osm/TagCollection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/TagCollection.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/osm/TagCollection.java	(revision 16643)
@@ -698,5 +698,5 @@
         Map<String, Collection<String>> originalSplitValues = new LinkedHashMap<>();
         for (String v : originalValues) {
-            List<String> vs = Arrays.asList(SPLIT_VALUES_PATTERN.split(v));
+            List<String> vs = Arrays.asList(SPLIT_VALUES_PATTERN.split(v, -1));
             originalSplitValues.put(v, vs);
             values.addAll(vs);
Index: /trunk/src/org/openstreetmap/josm/data/osm/search/SearchCompiler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/search/SearchCompiler.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/osm/search/SearchCompiler.java	(revision 16643)
@@ -190,5 +190,5 @@
                         // add leading/trailing space in order to get expected split (e.g. "a--" => {"a", ""})
                         String rangeS = ' ' + tokenizer.readTextOrNumber() + ' ';
-                        String[] rangeA = rangeS.split("/");
+                        String[] rangeA = rangeS.split("/", -1);
                         if (rangeA.length == 1) {
                             return new KeyValue(keyword, rangeS.trim(), regexSearch, caseSensitive);
Index: /trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 16643)
@@ -358,5 +358,5 @@
 
         Pattern keyPattern = Pattern.compile("\\+(?<key>[a-zA-Z0-9_]+)(=(?<value>.*))?");
-        String[] parts = Utils.WHITE_SPACES_PATTERN.split(trimmedPref);
+        String[] parts = Utils.WHITE_SPACES_PATTERN.split(trimmedPref, -1);
         for (String part : parts) {
             Matcher m = keyPattern.matcher(part);
@@ -511,5 +511,5 @@
      */
     public Datum parseToWGS84(String paramList, Ellipsoid ellps) throws ProjectionConfigurationException {
-        String[] numStr = paramList.split(",");
+        String[] numStr = paramList.split(",", -1);
 
         if (numStr.length != 3 && numStr.length != 7)
@@ -621,5 +621,5 @@
      */
     public static Bounds parseBounds(String boundsStr) throws ProjectionConfigurationException {
-        String[] numStr = boundsStr.split(",");
+        String[] numStr = boundsStr.split(",", -1);
         if (numStr.length != 4)
             throw new ProjectionConfigurationException(tr("Unexpected number of arguments for parameter ''+bounds'' (must be 4)"));
Index: /trunk/src/org/openstreetmap/josm/data/projection/ProjectionCLI.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/projection/ProjectionCLI.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/projection/ProjectionCLI.java	(revision 16643)
@@ -166,5 +166,5 @@
 
     private EastNorth parseEastNorth(String s, ToDoubleFunction<String> parser) {
-        String[] en = s.split("[;, ]+");
+        String[] en = s.split("[;, ]+", -1);
         if (en.length != 2)
             throw new IllegalArgumentException(tr("Expected two coordinates, separated by white space, found {0} in ''{1}''", en.length, s));
Index: /trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 16643)
@@ -371,5 +371,5 @@
 
             ArrayList<String> ignoredElementList = new ArrayList<>();
-            String[] osmobjects = elemId1Pattern.split(key);
+            String[] osmobjects = elemId1Pattern.split(key, -1);
             for (int i = 1; i < osmobjects.length; i++) {
                 String osmid = osmobjects[i];
Index: /trunk/src/org/openstreetmap/josm/data/validation/routines/InetAddressValidator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/routines/InetAddressValidator.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/validation/routines/InetAddressValidator.java	(revision 16643)
@@ -137,5 +137,5 @@
             return false;
         }
-        String[] octets = inet6Address.split(":");
+        String[] octets = inet6Address.split(":", -1);
         if (containsCompressedZeroes) {
             List<String> octetList = new ArrayList<>(Arrays.asList(octets));
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/Addresses.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/Addresses.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/Addresses.java	(revision 16643)
@@ -268,5 +268,5 @@
      */
     static List<String> expandHouseNumber(String houseNumber) {
-        return Arrays.asList(houseNumber.split(",|;"));
+        return Arrays.asList(houseNumber.split(",|;", -1));
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java	(revision 16643)
@@ -106,5 +106,5 @@
             return false;
         }
-        final String[] parts = key.replace(":conditional", "").split(":");
+        final String[] parts = key.replace(":conditional", "").split(":", -1);
         return isKeyValid3Parts(parts) || isKeyValid1Part(parts) || isKeyValid2Parts(parts);
     }
@@ -178,5 +178,5 @@
                 while (i + 1 <= m.groupCount() && m.group(i + 1) != null) {
                     final String restrictionValue = m.group(i);
-                    final String[] conditions = m.group(i + 1).replace("(", "").replace(")", "").split("\\s+(AND|and)\\s+");
+                    final String[] conditions = m.group(i + 1).replace("(", "").replace(")", "").split("\\s+(AND|and)\\s+", -1);
                     r.add(new ConditionalValue(restrictionValue, Arrays.asList(conditions)));
                     i += 3;
@@ -197,5 +197,5 @@
             for (final ConditionalValue conditional : ConditionalValue.parse(value)) {
                 // validate restriction value
-                if (isTransportationMode(key.split(":")[0]) && !isRestrictionValue(conditional.restrictionValue)) {
+                if (isTransportationMode(key.split(":", -1)[0]) && !isRestrictionValue(conditional.restrictionValue)) {
                     return tr("{0} is not a valid restriction value", conditional.restrictionValue);
                 }
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/ConnectivityRelations.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/ConnectivityRelations.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/ConnectivityRelations.java	(revision 16643)
@@ -93,5 +93,5 @@
             }
             Map<Integer, Boolean> connections = new HashMap<>();
-            String[] toLanes = TO_LANE_PATTERN.split(lane[1]);
+            String[] toLanes = TO_LANE_PATTERN.split(lane[1], -1);
             for (int j = 0; j < toLanes.length; j++) {
                 String toLane = toLanes[j].trim();
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java	(revision 16643)
@@ -96,5 +96,5 @@
         List<TestError> errors = new ArrayList<>();
         String values = v != null ? v : p.get(k);
-        for (String value : values.split(";")) {
+        for (String value : values.split(";", -1)) {
             if (!validator.isValid(value)) {
                 Supplier<Command> fix = null;
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerAsserts.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerAsserts.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerAsserts.java	(revision 16643)
@@ -139,5 +139,5 @@
                 .map(e -> ((LiteralExpression) e).getLiteral())
                 .filter(l -> l instanceof String)
-                .map(l -> ((String) l).split(",")[0])
+                .map(l -> ((String) l).split(",", -1)[0])
                 .findFirst();
     }
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/NameMismatch.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/NameMismatch.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/NameMismatch.java	(revision 16643)
@@ -102,5 +102,5 @@
         Check if this is the case. */
 
-        String[] splitNames = NAME_SPLIT_PATTERN.split(name);
+        String[] splitNames = NAME_SPLIT_PATTERN.split(name, -1);
         if (splitNames.length == 1) {
             /* The name is not composed of multiple parts. Complain. */
Index: /trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 16643)
@@ -1150,5 +1150,5 @@
     private static void processOffline(ProgramArguments args) {
         for (String offlineNames : args.get(Option.OFFLINE)) {
-            for (String s : offlineNames.split(",")) {
+            for (String s : offlineNames.split(",", -1)) {
                 try {
                     NetworkManager.setOffline(OnlineResource.valueOf(s.toUpperCase(Locale.ENGLISH)));
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolutionUtil.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolutionUtil.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolutionUtil.java	(revision 16643)
@@ -298,5 +298,5 @@
             Set<String> results = instantiateSortedSet();
             for (String value: values) {
-                for (String part: value.split(Pattern.quote(separator))) {
+                for (String part: value.split(Pattern.quote(separator), -1)) {
                     results.add(part);
                 }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java	(revision 16643)
@@ -362,5 +362,5 @@
      */
     public static EastNorth parseEastNorth(String s) {
-        String[] en = s.split("[;, ]+");
+        String[] en = s.split("[;, ]+", -1);
         if (en.length != 2) return null;
         try {
Index: /trunk/src/org/openstreetmap/josm/gui/io/ChangesetCommentModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/ChangesetCommentModel.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/io/ChangesetCommentModel.java	(revision 16643)
@@ -46,5 +46,5 @@
      */
     public List<String> findHashTags() {
-        return Arrays.stream(comment.split("\\s"))
+        return Arrays.stream(comment.split("\\s", -1))
                 .map(s -> Utils.strip(s, ",;"))
                 .filter(s -> s.matches("#[a-zA-Z][a-zA-Z_\\-0-9]+"))
Index: /trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java	(revision 16643)
@@ -170,5 +170,5 @@
         if (!opts.isEmpty()) {
             return JOptionPane.showOptionDialog(MainApplication.getMainFrame(), text, "Question",
-                    JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, opts.split(";"), 0);
+                    JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, opts.split(";", -1), 0);
         } else {
             return JOptionPane.showOptionDialog(MainApplication.getMainFrame(), text, "Question",
@@ -298,7 +298,7 @@
         final List<String> removeList = new ArrayList<>();
         final List<String> deleteList = new ArrayList<>();
-        Collections.addAll(installList, install.toLowerCase(Locale.ENGLISH).split(";"));
-        Collections.addAll(removeList, uninstall.toLowerCase(Locale.ENGLISH).split(";"));
-        Collections.addAll(deleteList, delete.toLowerCase(Locale.ENGLISH).split(";"));
+        Collections.addAll(installList, install.toLowerCase(Locale.ENGLISH).split(";", -1));
+        Collections.addAll(removeList, uninstall.toLowerCase(Locale.ENGLISH).split(";", -1));
+        Collections.addAll(deleteList, delete.toLowerCase(Locale.ENGLISH).split(";", -1));
         installList.remove("");
         removeList.remove("");
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 16643)
@@ -1128,5 +1128,5 @@
             StringBuilder line = new StringBuilder();
             StringBuilder ret = new StringBuilder();
-            for (String s: text.split(" ")) {
+            for (String s: text.split(" ", -1)) {
                 if (g.getFontMetrics().stringWidth(line.toString() + s) > tileSource.getTileSize()) {
                     ret.append(line).append('\n');
@@ -1139,5 +1139,5 @@
         }
         int offset = 0;
-        for (String s: textToDraw.split("\n")) {
+        for (String s: textToDraw.split("\n", -1)) {
             g.setColor(Color.black);
             g.drawString(s, x + 1, y + offset + 1);
@@ -1632,5 +1632,5 @@
             if (tileLoader instanceof TMSCachedTileLoader) {
                 int offset = 200;
-                for (String part: ((TMSCachedTileLoader) tileLoader).getStats().split("\n")) {
+                for (String part: ((TMSCachedTileLoader) tileLoader).getStats().split("\n", -1)) {
                     offset += 15;
                     myDrawString(g, tr("Cache stats: {0}", part), 50, offset);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AutosaveTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AutosaveTask.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AutosaveTask.java	(revision 16643)
@@ -392,5 +392,5 @@
                             String jvmId = reader.readLine();
                             if (jvmId != null) {
-                                String pid = jvmId.split("@")[0];
+                                String pid = jvmId.split("@", -1)[0];
                                 skipFile = jvmPerfDataFileExists(pid);
                             }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 16643)
@@ -797,5 +797,5 @@
                             .orElse(k);
                     if (k.startsWith("extension")) {
-                        String[] chain = k.split(":");
+                        String[] chain = k.split(":", -1);
                         if (chain.length >= 3 && "segment".equals(chain[2])) {
                             segExts.addFlat(chain, v);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(revision 16643)
@@ -1017,5 +1017,5 @@
 
                 // use comma as separator
-                String[] column = line.split(",");
+                String[] column = line.split(",", -1);
 
                 // empty or comment line
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/RenderingCLI.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/RenderingCLI.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/RenderingCLI.java	(revision 16643)
@@ -286,5 +286,5 @@
             break;
         case ANCHOR:
-            String[] parts = arg.split(",");
+            String[] parts = arg.split(",", -1);
             if (parts.length != 2)
                 throw new OptionParseException(
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.java	(revision 16643)
@@ -1159,5 +1159,5 @@
      */
     public static boolean inside(Environment env, String codes) { // NO_UCD (unused code)
-        return Arrays.stream(codes.toUpperCase(Locale.ENGLISH).split(","))
+        return Arrays.stream(codes.toUpperCase(Locale.ENGLISH).split(",", -1))
                 .anyMatch(code -> Territories.isIso3166Code(code.trim(), center(env)));
     }
Index: /trunk/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java	(revision 16643)
@@ -198,5 +198,5 @@
 
         for (String setCookie: setCookies) {
-            String[] kvPairs = setCookie.split(";");
+            String[] kvPairs = setCookie.split(";", -1);
             if (kvPairs.length == 0) {
                 continue;
@@ -204,5 +204,5 @@
             for (String kvPair : kvPairs) {
                 kvPair = kvPair.trim();
-                String[] kv = kvPair.split("=");
+                String[] kv = kvPair.split("=", -1);
                 if (kv.length != 2) {
                     continue;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 16643)
@@ -511,5 +511,5 @@
 
         private void activatePlugins(JTextArea textField, boolean deleteNotInList) {
-            String[] lines = textField.getText().split("\n");
+            String[] lines = textField.getText().split("\n", -1);
             List<String> toActivate = new ArrayList<>();
             List<String> notFound = new ArrayList<>();
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java	(revision 16643)
@@ -87,5 +87,5 @@
             return TYPE_CACHE.get(types);
         Set<TaggingPresetType> result = EnumSet.noneOf(TaggingPresetType.class);
-        for (String type : Arrays.asList(types.split(","))) {
+        for (String type : Arrays.asList(types.split(",", -1))) {
             try {
                 TaggingPresetType presetType = TaggingPresetType.fromString(type);
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 16643)
@@ -130,5 +130,5 @@
             String locName = preset.getLocaleName();
             if (locName != null) {
-                Collections.addAll(collection, locName.toLowerCase(Locale.ENGLISH).split("\\s"));
+                Collections.addAll(collection, locName.toLowerCase(Locale.ENGLISH).split("\\s", -1));
             }
         }
@@ -282,9 +282,9 @@
 
             if (searchText.contains("/")) {
-                groupWords = searchText.substring(0, searchText.lastIndexOf('/')).split("[\\s/]");
-                nameWords = searchText.substring(searchText.indexOf('/') + 1).split("\\s");
+                groupWords = searchText.substring(0, searchText.lastIndexOf('/')).split("[\\s/]", -1);
+                nameWords = searchText.substring(searchText.indexOf('/') + 1).split("\\s", -1);
             } else {
                 groupWords = null;
-                nameWords = searchText.split("\\s");
+                nameWords = searchText.split("\\s", -1);
             }
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 16643)
@@ -174,5 +174,5 @@
             } else {
                 String s = o.toString();
-                Set<String> parts = new TreeSet<>(Arrays.asList(s.split(String.valueOf(delimiter))));
+                Set<String> parts = new TreeSet<>(Arrays.asList(s.split(String.valueOf(delimiter), -1)));
                 ListModel<PresetListEntry> lm = getModel();
                 int[] intParts = new int[lm.getSize()];
@@ -440,5 +440,5 @@
 
         if (values_from != null) {
-            String[] classMethod = values_from.split("#");
+            String[] classMethod = values_from.split("#", -1);
             if (classMethod.length == 2) {
                 try {
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java	(revision 16643)
@@ -67,5 +67,5 @@
         AutoCompletingTextField textField = new AutoCompletingTextField();
         if (alternative_autocomplete_keys != null) {
-            initAutoCompletionField(textField, (key + ',' + alternative_autocomplete_keys).split(","));
+            initAutoCompletionField(textField, (key + ',' + alternative_autocomplete_keys).split(",", -1));
         } else {
             initAutoCompletionField(textField, key);
@@ -126,5 +126,5 @@
 
             // first, one button for each auto_increment value
-            for (final String ai : auto_increment.split(",")) {
+            for (final String ai : auto_increment.split(",", -1)) {
                 JToggleButton aibutton = new JToggleButton(ai);
                 aibutton.setToolTipText(tr("Select auto-increment of {0} for this field", ai));
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/FilterField.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/FilterField.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/FilterField.java	(revision 16643)
@@ -87,5 +87,5 @@
                     expr = expr.replace("+", "\\+");
                     // split search string on whitespace, do case-insensitive AND search
-                    List<RowFilter<Object, Object>> andFilters = Arrays.stream(expr.split("\\s+"))
+                    List<RowFilter<Object, Object>> andFilters = Arrays.stream(expr.split("\\s+", -1))
                             .map(word -> RowFilter.regexFilter("(?i)" + word))
                             .collect(Collectors.toList());
Index: /trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 16643)
@@ -480,5 +480,5 @@
 
         protected Date[] parseTime(String value) throws ChangesetQueryUrlException {
-            String[] dates = value.split(",");
+            String[] dates = value.split(",", -1);
             if (dates.length == 0 || dates.length > 2)
                 throw new ChangesetQueryUrlException(
@@ -495,5 +495,5 @@
                 return Collections.<Long>emptySet();
             } else {
-                return Stream.of(value.split(",")).map(Long::valueOf).collect(Collectors.toSet());
+                return Stream.of(value.split(",", -1)).map(Long::valueOf).collect(Collectors.toSet());
             }
         }
@@ -560,7 +560,7 @@
         protected Map<String, String> createMapFromQueryString(String query) {
             Map<String, String> queryParams = new HashMap<>();
-            String[] keyValuePairs = query.split("&");
+            String[] keyValuePairs = query.split("&", -1);
             for (String keyValuePair: keyValuePairs) {
-                String[] kv = keyValuePair.split("=");
+                String[] kv = keyValuePair.split("=", -1);
                 queryParams.put(kv[0], kv.length > 1 ? kv[1] : "");
             }
Index: /trunk/src/org/openstreetmap/josm/io/GpxReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/GpxReader.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/GpxReader.java	(revision 16643)
@@ -147,5 +147,5 @@
                 String schemaLocation = atts.getValue(GpxConstants.XML_URI_XSD, "schemaLocation");
                 if (schemaLocation != null) {
-                    String[] schemaLocations = schemaLocation.split(" ");
+                    String[] schemaLocations = schemaLocation.split(" ", -1);
                     for (int i = 0; i < schemaLocations.length - 1; i += 2) {
                         final String schemaURI = schemaLocations[i];
Index: /trunk/src/org/openstreetmap/josm/io/GpxWriter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/GpxWriter.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/GpxWriter.java	(revision 16643)
@@ -197,5 +197,5 @@
             // write the email address
             if (attr.containsKey(META_AUTHOR_EMAIL)) {
-                String[] tmp = data.getString(META_AUTHOR_EMAIL).split("@");
+                String[] tmp = data.getString(META_AUTHOR_EMAIL).split("@", -1);
                 if (tmp.length == 2) {
                     inline("email", "id=\"" + encode(tmp[0]) + "\" domain=\"" + encode(tmp[1]) +'\"');
Index: /trunk/src/org/openstreetmap/josm/io/NameFinder.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/NameFinder.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/NameFinder.java	(revision 16643)
@@ -284,5 +284,5 @@
                     currentResult.lat = Double.parseDouble(atts.getValue("lat"));
                     currentResult.lon = Double.parseDouble(atts.getValue("lon"));
-                    String[] bbox = atts.getValue("boundingbox").split(",");
+                    String[] bbox = atts.getValue("boundingbox").split(",", -1);
                     currentResult.bounds = new Bounds(
                             Double.parseDouble(bbox[0]), Double.parseDouble(bbox[2]),
Index: /trunk/src/org/openstreetmap/josm/io/OsmConnection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmConnection.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/OsmConnection.java	(revision 16643)
@@ -90,5 +90,5 @@
             try {
                 String[] token = new String(Base64.getDecoder().decode(auth.substring(BASIC_AUTH.length())),
-                        StandardCharsets.UTF_8).split(":");
+                        StandardCharsets.UTF_8).split(":", -1);
                 if (token.length == 2) {
                     return token[0];
Index: /trunk/src/org/openstreetmap/josm/io/OverpassDownloadReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OverpassDownloadReader.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/OverpassDownloadReader.java	(revision 16643)
@@ -336,7 +336,7 @@
             final String errorIndicator = "Error</strong>: ";
             if (ex.getMessage() != null && ex.getMessage().contains(errorIndicator)) {
-                final String errorPlusRest = ex.getMessage().split(errorIndicator)[1];
+                final String errorPlusRest = ex.getMessage().split(errorIndicator, -1)[1];
                 if (errorPlusRest != null) {
-                    ex.setErrorHeader(errorPlusRest.split("</")[0].replaceAll(".*::request_read_and_idx::", ""));
+                    ex.setErrorHeader(errorPlusRest.split("</", -1)[0].replaceAll(".*::request_read_and_idx::", ""));
                 }
             }
Index: /trunk/src/org/openstreetmap/josm/io/nmea/NmeaReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/nmea/NmeaReader.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/nmea/NmeaReader.java	(revision 16643)
@@ -313,5 +313,5 @@
             // if there is no * or other meanities it will throw
             // and result in a malformed packet.
-            String[] chkstrings = s.split("\\*");
+            String[] chkstrings = s.split("\\*", -1);
             if (chkstrings.length > 1) {
                 byte[] chb = chkstrings[0].getBytes(StandardCharsets.UTF_8);
@@ -329,5 +329,5 @@
             }
             // now for the content
-            String[] e = chkstrings[0].split(",");
+            String[] e = chkstrings[0].split(",", -1);
             String accu;
 
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java	(revision 16643)
@@ -24,5 +24,5 @@
     protected void handleRequest() throws RequestHandlerErrorException, RequestHandlerBadRequestException {
         String q = args.get("q");
-        Collection<String> handlers = q == null ? null : Arrays.asList(q.split("[,\\s]+"));
+        Collection<String> handlers = q == null ? null : Arrays.asList(q.split("[,\\s]+", -1));
         content = RequestProcessor.getHandlersInfoAsJSON(handlers).toString();
         contentType = "application/json";
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 16643)
@@ -330,5 +330,5 @@
         if (args != null && args.containsKey("select")) {
             toSelect.clear();
-            for (String item : args.get("select").split(",")) {
+            for (String item : args.get("select").split(",", -1)) {
                 if (!item.isEmpty()) {
                     if (CURRENT_SELECTION.equalsIgnoreCase(item)) {
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 16643)
@@ -244,5 +244,5 @@
 
     protected final String[] splitArg(String arg, Pattern splitter) {
-        return splitter.split(args != null ? args.get(arg) : "");
+        return splitter.split(args != null ? args.get(arg) : "", -1);
     }
 
@@ -259,5 +259,5 @@
             return r;
         }
-        for (String kv : uri.getRawQuery().split("&")) {
+        for (String kv : uri.getRawQuery().split("&", -1)) {
             final String[] kvs = Utils.decodeUrl(kv).split("=", 2);
             r.put(kvs[0], kvs.length > 1 ? kvs[1] : null);
Index: /trunk/src/org/openstreetmap/josm/io/rtklib/RtkLibPosReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/rtklib/RtkLibPosReader.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/rtklib/RtkLibPosReader.java	(revision 16643)
@@ -86,5 +86,5 @@
                     } else if (!line.startsWith("%")) {
                         try {
-                            String[] fields = line.split("[ ]+");
+                            String[] fields = line.split("[ ]+", -1);
                             WayPoint currentwp = new WayPoint(new LatLon(
                                     Double.parseDouble(fields[IDX_LAT]),
Index: /trunk/src/org/openstreetmap/josm/io/session/SessionReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 16643)
@@ -487,5 +487,5 @@
                     String depStr = e.getAttribute("depends");
                     if (!depStr.isEmpty()) {
-                        for (String sd : depStr.split(",")) {
+                        for (String sd : depStr.split(",", -1)) {
                             Integer d = null;
                             try {
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 16643)
@@ -1003,5 +1003,5 @@
             String systemProp = Utils.getSystemProperty("josm.plugins");
             if (systemProp != null) {
-                plugins.addAll(Arrays.asList(systemProp.split(",")));
+                plugins.addAll(Arrays.asList(systemProp.split(",", -1)));
                 Logging.debug("josm.plugins system property set to ''{0}''. Plugins list is now {1}", systemProp, plugins);
             }
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 16643)
@@ -307,5 +307,5 @@
         String classPath = attr.getValue(Attributes.Name.CLASS_PATH);
         if (classPath != null) {
-            for (String entry : classPath.split(" ")) {
+            for (String entry : classPath.split(" ", -1)) {
                 File entryFile;
                 if (new File(entry).isAbsolute() || file == null) {
@@ -510,5 +510,5 @@
     public boolean matches(String filter) {
         if (filter == null) return true;
-        String[] words = filter.split("\\s+");
+        String[] words = filter.split("\\s+", -1);
         for (String word: words) {
             if (matches(word, name)
@@ -556,5 +556,5 @@
         List<String> requiredPlugins = new ArrayList<>();
         if (pluginList != null) {
-            for (String s : pluginList.split(";")) {
+            for (String s : pluginList.split(";", -1)) {
                 String plugin = s.trim();
                 if (!plugin.isEmpty()) {
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginListParser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginListParser.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginListParser.java	(revision 16643)
@@ -77,5 +77,5 @@
                 }
                 addPluginInformation(ret, name, url, manifest.toString());
-                String[] x = line.split(";");
+                String[] x = line.split(";", -1);
                 if (x.length != 2)
                     throw new IOException(tr("Illegal entry in plugin list.") + " " + line);
Index: /trunk/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java	(revision 16643)
@@ -221,5 +221,5 @@
             panel.add(new JLabel(firstMessage), GBC.eol().insets(0, 0, 0, 10));
             StringBuilder b = new StringBuilder();
-            for (String part : msg.split("(?<=\\G.{200})")) {
+            for (String part : msg.split("(?<=\\G.{200})", -1)) {
                 b.append(part).append('\n');
             }
Index: /trunk/src/org/openstreetmap/josm/tools/ExceptionUtil.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ExceptionUtil.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/tools/ExceptionUtil.java	(revision 16643)
@@ -107,5 +107,5 @@
         if (m.matches()) {
             OsmPrimitive n = new Node(Long.parseLong(m.group(1)));
-            for (String s : m.group(2).split(",")) {
+            for (String s : m.group(2).split(",", -1)) {
                 refs.add(new Relation(Long.parseLong(s)));
             }
@@ -115,5 +115,5 @@
         if (m.matches()) {
             OsmPrimitive n = new Node(Long.parseLong(m.group(1)));
-            for (String s : m.group(2).split(",")) {
+            for (String s : m.group(2).split(",", -1)) {
                 refs.add(new Way(Long.parseLong(s)));
             }
@@ -123,5 +123,5 @@
         if (m.matches()) {
             OsmPrimitive n = new Relation(Long.parseLong(m.group(1)));
-            for (String s : m.group(2).split(",")) {
+            for (String s : m.group(2).split(",", -1)) {
                 refs.add(new Relation(Long.parseLong(s)));
             }
@@ -131,5 +131,5 @@
         if (m.matches()) {
             OsmPrimitive n = new Way(Long.parseLong(m.group(1)));
-            for (String s : m.group(2).split(",")) {
+            for (String s : m.group(2).split(",", -1)) {
                 refs.add(new Relation(Long.parseLong(s)));
             }
@@ -140,5 +140,5 @@
         if (m.matches()) {
             OsmPrimitive n = OsmPrimitiveType.WAY.newInstance(Long.parseLong(m.group(1)), true);
-            for (String s : m.group(2).split(",")) {
+            for (String s : m.group(2).split(",", -1)) {
                 refs.add(new Node(Long.parseLong(s)));
             }
@@ -149,5 +149,5 @@
         if (m.matches()) {
             OsmPrimitive n = OsmPrimitiveType.RELATION.newInstance(Long.parseLong(m.group(1)), true);
-            for (String s : m.group(2).split(",")) {
+            for (String s : m.group(2).split(",", -1)) {
                 refs.add(new Node(Long.parseLong(s)));
             }
@@ -158,5 +158,5 @@
         if (m.matches()) {
             OsmPrimitive n = OsmPrimitiveType.RELATION.newInstance(Long.parseLong(m.group(1)), true);
-            for (String s : m.group(2).split(",")) {
+            for (String s : m.group(2).split(",", -1)) {
                 refs.add(new Way(Long.parseLong(s)));
             }
Index: /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 16643)
@@ -1976,5 +1976,5 @@
                                         String value = ((Element) item).getAttribute("value");
                                         if (!value.isEmpty()) {
-                                            String[] s = value.split(" ");
+                                            String[] s = value.split(" ", -1);
                                             if (s.length == 3) {
                                                 return parseRGB(s);
Index: /trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java	(revision 16643)
@@ -58,5 +58,5 @@
             return null;
         }
-        String[] args = url.substring(i+1).split("&");
+        String[] args = url.substring(i+1).split("&", -1);
         Map<String, String> map = new HashMap<>();
         for (String arg : args) {
@@ -69,5 +69,5 @@
         try {
             if (map.containsKey("bbox")) {
-                String[] bbox = map.get("bbox").split(",");
+                String[] bbox = map.get("bbox").split(",", -1);
                 b = new Bounds(
                         Double.parseDouble(bbox[1]), Double.parseDouble(bbox[0]),
@@ -103,5 +103,5 @@
         if (endIndex == -1) endIndex = url.length();
         String coordPart = url.substring(startIndex+(url.contains("#map=") ? "#map=".length() : "#".length()), endIndex);
-        String[] parts = coordPart.split("/");
+        String[] parts = coordPart.split("/", -1);
         if (parts.length < 3) {
             Logging.warn(tr("URL does not contain {0}/{1}/{2}", tr("zoom"), tr("latitude"), tr("longitude")));
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 16643)
@@ -315,5 +315,5 @@
                         while (result == null && (line = reader.readLine()) != null) {
                             if (line.contains("=")) {
-                                String[] tokens = line.split("=");
+                                String[] tokens = line.split("=", -1);
                                 if (tokens.length >= 2) {
                                     // Description, if available, contains exactly what we need
Index: /trunk/src/org/openstreetmap/josm/tools/TextTagParser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/TextTagParser.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/tools/TextTagParser.java	(revision 16643)
@@ -50,5 +50,5 @@
      */
     public static Map<String, String> readTagsByRegexp(String text, String splitRegex, String tagRegex, boolean unescapeTextInQuotes) {
-         String[] lines = text.split(splitRegex);
+         String[] lines = text.split(splitRegex, -1);
          Pattern p = Pattern.compile(tagRegex);
          Map<String, String> tags = new LinkedHashMap<>();
Index: /trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 16642)
+++ /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 16643)
@@ -1051,5 +1051,5 @@
             return null;
         } else {
-            return String.join("\n", limit(Arrays.asList(s.split("\\n")), maxLines, "..."));
+            return String.join("\n", limit(Arrays.asList(s.split("\\n", -1)), maxLines, "..."));
         }
     }
@@ -1707,5 +1707,5 @@
                             "java.baseline.version.url",
                             Config.getUrls().getJOSMWebsite() + "/remote/oracle-java-update-baseline.version")))
-                    .connect().fetchContent().split("\n");
+                    .connect().fetchContent().split("\n", -1);
             if (getJavaVersion() <= 8) {
                 for (String version : versions) {
@@ -1841,5 +1841,5 @@
         // Workaround to https://bugs.openjdk.java.net/browse/JDK-4523159
         String urlPath = jarUrl.getPath().replace("%20", " ");
-        if (urlPath.startsWith("file:/") && urlPath.split("!").length > 2) {
+        if (urlPath.startsWith("file:/") && urlPath.split("!", -1).length > 2) {
             // Locate jar file
             int index = urlPath.lastIndexOf("!/");
Index: /trunk/test/functional/org/openstreetmap/josm/data/imagery/ImageryCompareTestIT.java
===================================================================
--- /trunk/test/functional/org/openstreetmap/josm/data/imagery/ImageryCompareTestIT.java	(revision 16642)
+++ /trunk/test/functional/org/openstreetmap/josm/data/imagery/ImageryCompareTestIT.java	(revision 16643)
@@ -44,5 +44,5 @@
         String comparison = HttpClient.create(new URL("https://josm.openstreetmap.de/wiki/ImageryCompare")).connect().fetchContent();
         String rubricLine = null;
-        for (String line : comparison.split("\n")) {
+        for (String line : comparison.split("\n", -1)) {
             boolean black = line.startsWith(BLACK_PREFIX);
             if (black) {
Index: /trunk/test/unit/org/openstreetmap/josm/TestUtils.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 16642)
+++ /trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 16643)
@@ -598,6 +598,5 @@
     public static List<String> getIgnoredErrorMessages(Class<?> integrationTest) throws IOException {
         return Arrays.stream(new WikiReader()
-                .read("https://josm.openstreetmap.de/wiki/IntegrationTestIgnores?format=txt")
-                .split("\\n"))
+                .read("https://josm.openstreetmap.de/wiki/IntegrationTestIgnores?format=txt").split("\\n", -1))
                 .filter(s -> s.startsWith("|| " + integrationTest.getSimpleName() + " ||"))
                 .map(s -> s.substring(s.indexOf("{{{") + 3, s.indexOf("}}}")))
Index: /trunk/test/unit/org/openstreetmap/josm/data/osm/TagCollectionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/osm/TagCollectionTest.java	(revision 16642)
+++ /trunk/test/unit/org/openstreetmap/josm/data/osm/TagCollectionTest.java	(revision 16643)
@@ -689,5 +689,5 @@
         TagCollection g = new TagCollection(Arrays.asList(new Tag("k", "b"), new Tag("k", "a"), new Tag("k", "b"),
                 new Tag("k", "c"), new Tag("k", "d")));
-        assertEquals("a;b;c;d", Stream.of(g.getJoinedValues("k").split(";")).sorted().collect(Collectors.joining(";")));
+        assertEquals("a;b;c;d", Stream.of(g.getJoinedValues("k").split(";", -1)).sorted().collect(Collectors.joining(";")));
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java	(revision 16642)
+++ /trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java	(revision 16643)
@@ -99,5 +99,5 @@
             debug = "debug".equals(args[0]);
             if (args[args.length - 1].startsWith("EPSG:")) {
-                forcedCodes = Arrays.asList(args[args.length - 1].split(","));
+                forcedCodes = Arrays.asList(args[args.length - 1].split(",", -1));
             }
         }
@@ -137,5 +137,5 @@
                     result.add(curEntry);
                 } else if (curEntry != null) {
-                    String[] f = line.trim().split(",");
+                    String[] f = line.trim().split(",", -1);
                     double lon = Double.parseDouble(f[0]);
                     double lat = Double.parseDouble(f[1]);
@@ -277,5 +277,5 @@
         List<String> args = new ArrayList<>();
         args.add(CS2CS_EXE);
-        args.addAll(Arrays.asList("-f %.9f +proj=longlat +datum=WGS84 +to".split(" ")));
+        args.addAll(Arrays.asList("-f %.9f +proj=longlat +datum=WGS84 +to".split(" ", -1)));
         // proj.4 cannot read our ntf_r93_b.gsb file
         // possibly because it is big endian. Use equivalent
@@ -286,5 +286,5 @@
             def = def.replace("'", "\\'").replace("\"", "\\\"");
         }
-        args.addAll(Arrays.asList(def.split(" ")));
+        args.addAll(Arrays.asList(def.split(" ", -1)));
         ProcessBuilder pb = new ProcessBuilder(args);
         pb.environment().put("PROJ_LIB", new File(PROJ_LIB_DIR).getAbsolutePath());
Index: /trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionRegressionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionRegressionTest.java	(revision 16642)
+++ /trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionRegressionTest.java	(revision 16643)
@@ -125,5 +125,5 @@
 
     private static Pair<Double, Double> readLine(String expectedName, String input) {
-        String[] fields = input.trim().split("[ ]+");
+        String[] fields = input.trim().split("[ ]+", -1);
         if (fields.length != 3) throw new AssertionError();
         if (!fields[0].equals(expectedName)) throw new AssertionError();
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/ValidatorTestUtils.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/ValidatorTestUtils.java	(revision 16642)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/ValidatorTestUtils.java	(revision 16643)
@@ -51,5 +51,5 @@
                     Set<Integer> expectedCodes = new TreeSet<>();
                     if (!"none".equals(codes)) {
-                        for (String code : codes.split(",")) {
+                        for (String code : codes.split(",", -1)) {
                             expectedCodes.add(Integer.parseInt(code));
                         }
Index: /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/RenderingCLIAreaTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/RenderingCLIAreaTest.java	(revision 16642)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/RenderingCLIAreaTest.java	(revision 16643)
@@ -154,5 +154,5 @@
 
     public RenderingCLIAreaTest(String args, Matcher<Double> scaleMatcher, Matcher<Bounds> boundsMatcher) {
-        this.args = args.split("\\s+");
+        this.args = args.split("\\s+", -1);
         this.scaleMatcher = scaleMatcher;
         this.boundsMatcher = boundsMatcher;
Index: /trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java	(revision 16642)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java	(revision 16643)
@@ -248,5 +248,5 @@
         // Check if we have received an error message
         String error = helper.detectErrorMessage(new String(data, StandardCharsets.UTF_8));
-        String errorMsg = url + zoomMarker(zoom) + (error != null ? error.split("\\n")[0] : defaultMessage);
+        String errorMsg = url + zoomMarker(zoom) + (error != null ? error.split("\\n", -1)[0] : defaultMessage);
         addError(info, errorMsg);
         return errorMsg;
@@ -344,5 +344,5 @@
 
     private static boolean isZoomError(String error) {
-        String[] parts = error.split(ERROR_SEP);
+        String[] parts = error.split(ERROR_SEP, -1);
         String lastPart = parts.length > 0 ? parts[parts.length - 1].toLowerCase(Locale.ENGLISH) : "";
         return lastPart.contains("bbox")
Index: /trunk/test/unit/org/openstreetmap/josm/tools/KeyboardUtilsTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/tools/KeyboardUtilsTest.java	(revision 16642)
+++ /trunk/test/unit/org/openstreetmap/josm/tools/KeyboardUtilsTest.java	(revision 16643)
@@ -108,5 +108,5 @@
     private static void testgetCharactersForKeyE00(String locale, Character... expected) {
         if (locale.contains("_")) {
-            String[] l = locale.split("_");
+            String[] l = locale.split("_", -1);
             testgetCharactersForKeyE00(new Locale(l[0], l[1]), expected);
         } else {
