Index: trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 19050)
@@ -15,4 +15,5 @@
 import java.time.Year;
 import java.time.ZoneOffset;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -26,4 +27,6 @@
 import javax.swing.JScrollPane;
 
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.imagery.DefaultLayer;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
@@ -60,7 +63,7 @@
         SelectWmsLayersDialog(WMSLayerTree tree, JComboBox<String> formats) {
             super(MainApplication.getMainFrame(), tr("Select WMS layers"), tr("Add layers"), tr("Cancel"));
-            final var scrollPane = new JScrollPane(tree.getLayerTree());
+            final JScrollPane scrollPane = new JScrollPane(tree.getLayerTree());
             scrollPane.setPreferredSize(new Dimension(400, 400));
-            final var panel = new JPanel(new GridBagLayout());
+            final JPanel panel = new JPanel(new GridBagLayout());
             panel.add(scrollPane, GBC.eol().fill());
             panel.add(formats, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
@@ -82,5 +85,5 @@
 
         // change toolbar icon from if specified
-        var icon = info.getIcon();
+        String icon = info.getIcon();
         if (icon != null) {
             new ImageProvider(icon).setOptional(true).getResourceAsync(result -> {
@@ -101,8 +104,8 @@
         try {
             if (info.getUrl() != null && info.getUrl().contains("{time}")) {
-                final var instant = Year.now(ZoneOffset.UTC).atDay(1).atStartOfDay(ZoneOffset.UTC).toInstant().toString();
-                final var example = String.join("/", instant, instant);
-                final var initialSelectionValue = info.getDate() != null ? info.getDate() : example;
-                final var userDate = JOptionPane.showInputDialog(MainApplication.getMainFrame(),
+                final String instant = Year.now(ZoneOffset.UTC).atDay(1).atStartOfDay(ZoneOffset.UTC).toInstant().toString();
+                final String example = String.join("/", instant, instant);
+                final String initialSelectionValue = info.getDate() != null ? info.getDate() : example;
+                final String userDate = JOptionPane.showInputDialog(MainApplication.getMainFrame(),
                         tr("Time filter for \"{0}\" such as \"{1}\"", info.getName(), example),
                         initialSelectionValue);
@@ -124,10 +127,10 @@
                 // specify which layer to use
                 if (Utils.isEmpty(info.getDefaultLayers())) {
-                    var tileSource = new WMTSTileSource(info);
-                    var layerId = tileSource.userSelectLayer();
+                    WMTSTileSource tileSource = new WMTSTileSource(info);
+                    DefaultLayer layerId = tileSource.userSelectLayer();
                     if (layerId != null) {
-                        var copy = new ImageryInfo(info);
+                        ImageryInfo copy = new ImageryInfo(info);
                         copy.setDefaultLayers(Collections.singletonList(layerId));
-                        var layerName = tileSource.getLayers().stream()
+                        String layerName = tileSource.getLayers().stream()
                                 .filter(x -> x.getIdentifier().equals(layerId.getLayerName()))
                                 .map(Layer::getUserTitle)
@@ -163,5 +166,5 @@
         ImageryLayer layer = null;
         try {
-            final var infoToAdd = convertImagery(info);
+            final ImageryInfo infoToAdd = convertImagery(info);
             if (infoToAdd != null) {
                 layer = ImageryLayer.create(infoToAdd);
@@ -205,14 +208,14 @@
 
     private static LayerSelection askToSelectLayers(WMSImagery wms) {
-        final var tree = new WMSLayerTree();
-
-        var wmsFormats = wms.getFormats();
-        final var formats = new JComboBox<String>(wmsFormats.toArray(new String[0]));
+        final WMSLayerTree tree = new WMSLayerTree();
+
+        Collection<String> wmsFormats = wms.getFormats();
+        final JComboBox<String> formats = new JComboBox<>(wmsFormats.toArray(new String[0]));
         formats.setSelectedItem(wms.getPreferredFormat());
         formats.setToolTipText(tr("Select image format for WMS layer"));
 
-        var checkBounds = new JCheckBox(tr("Show only layers for current view"), true);
+        JCheckBox checkBounds = new JCheckBox(tr("Show only layers for current view"), true);
         Runnable updateTree = () -> {
-            var latLon = checkBounds.isSelected() && MainApplication.isDisplayingMapView()
+            LatLon latLon = checkBounds.isSelected() && MainApplication.isDisplayingMapView()
                     ? MainApplication.getMap().mapView.getProjection().eastNorth2latlon(MainApplication.getMap().mapView.getCenter())
                     : null;
@@ -225,9 +228,9 @@
 
         if (!GraphicsEnvironment.isHeadless()) {
-            var dialog = new ExtendedDialog(MainApplication.getMainFrame(),
+            ExtendedDialog dialog = new ExtendedDialog(MainApplication.getMainFrame(),
                     tr("Select WMS layers"), tr("Add layers"), tr("Cancel"));
-            final var scrollPane = new JScrollPane(tree.getLayerTree());
+            final JScrollPane scrollPane = new JScrollPane(tree.getLayerTree());
             scrollPane.setPreferredSize(new Dimension(400, 400));
-            final var panel = new JPanel(new GridBagLayout());
+            final JPanel panel = new JPanel(new GridBagLayout());
             panel.add(scrollPane, GBC.eol().fill());
             panel.add(checkBounds, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
@@ -281,12 +284,12 @@
         CheckParameterUtil.ensureThat(ImageryType.WMS_ENDPOINT == info.getImageryType(), "wms_endpoint imagery type expected");
         // We need to get the URL with {apikey} replaced. See #22642.
-        final var tileSource = new TemplatedWMSTileSource(info, ProjectionRegistry.getProjection());
-        final var wms = new WMSImagery(tileSource.getBaseUrl(), info.getCustomHttpHeaders());
-        var selection = choice.apply(wms);
+        final TemplatedWMSTileSource tileSource = new TemplatedWMSTileSource(info, ProjectionRegistry.getProjection());
+        final WMSImagery wms = new WMSImagery(tileSource.getBaseUrl(), info.getCustomHttpHeaders());
+        LayerSelection selection = choice.apply(wms);
         if (selection == null) {
             return null;
         }
 
-        final var url = wms.buildGetMapUrl(
+        final String url = wms.buildGetMapUrl(
                 selection.layers.stream().map(LayerDetails::getName).collect(Collectors.toList()),
                 (List<String>) null,
@@ -295,9 +298,9 @@
                 );
 
-        var selectedLayers = selection.layers.stream()
+        String selectedLayers = selection.layers.stream()
                 .map(LayerDetails::getName)
                 .collect(Collectors.joining(", "));
         // Use full copy of original Imagery info to copy all attributes. Only overwrite what's different
-        var ret = new ImageryInfo(info);
+        ImageryInfo ret = new ImageryInfo(info);
         ret.setUrl(url);
         ret.setImageryType(ImageryType.WMS);
Index: trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 19050)
@@ -8,4 +8,5 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.awt.geom.Area;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -22,4 +23,5 @@
 import org.openstreetmap.josm.data.DataSource;
 import org.openstreetmap.josm.data.conflict.Conflict;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.OsmData;
@@ -32,4 +34,5 @@
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener;
+import org.openstreetmap.josm.gui.dialogs.ConflictDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.ValidatorDialog.ValidatorBoundingXYVisitor;
@@ -143,5 +146,5 @@
      */
     public static void zoomTo(Collection<? extends IPrimitive> sel) {
-        final var bboxCalculator = new BoundingXYVisitor();
+        BoundingXYVisitor bboxCalculator = new BoundingXYVisitor();
         bboxCalculator.computeBoundingBox(sel);
         if (bboxCalculator.getBounds() != null) {
@@ -241,5 +244,5 @@
     public void autoScale() {
         if (MainApplication.isDisplayingMapView()) {
-            final var mapView = MainApplication.getMap().mapView;
+            MapView mapView = MainApplication.getMap().mapView;
             switch (mode) {
             case PREVIOUS:
@@ -309,5 +312,5 @@
     private void modeLayer(BoundingXYVisitor v) {
         // try to zoom to the first selected layer
-        final var l = getFirstSelectedLayer();
+        Layer l = getFirstSelectedLayer();
         if (l == null)
             return;
@@ -324,5 +327,5 @@
             }
         } else {
-            final var conflictDialog = MainApplication.getMap().conflictDialog;
+            ConflictDialog conflictDialog = MainApplication.getMap().conflictDialog;
             Conflict<? extends IPrimitive> c = conflictDialog.getSelectedConflict();
             if (c != null) {
@@ -356,5 +359,5 @@
         }
         Bounds bbox = null;
-        final var dataset = getLayerManager().getActiveDataSet();
+        final DataSet dataset = getLayerManager().getActiveDataSet();
         if (dataset != null) {
             List<DataSource> dataSources = new ArrayList<>(dataset.getDataSources());
@@ -369,5 +372,5 @@
                 } else {
                     lastZoomArea = -1;
-                    final var sourceArea = getLayerManager().getActiveDataSet().getDataSourceArea();
+                    Area sourceArea = getLayerManager().getActiveDataSet().getDataSourceArea();
                     if (sourceArea != null) {
                         bbox = new Bounds(sourceArea.getBounds2D());
Index: trunk/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java	(revision 19050)
@@ -37,6 +37,6 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        final var bounds = MainApplication.getMap().mapView.getRealBounds();
-        final var task = new DownloadOsmInViewTask();
+        final Bounds bounds = MainApplication.getMap().mapView.getRealBounds();
+        DownloadOsmInViewTask task = new DownloadOsmInViewTask();
         task.setZoomAfterDownload(false);
         Future<?> future = task.download(bounds);
@@ -55,5 +55,5 @@
     }
 
-    private static class DownloadOsmInViewTask extends DownloadOsmTask {
+    private static final class DownloadOsmInViewTask extends DownloadOsmTask {
         Future<?> download(Bounds downloadArea) {
             return download(new DownloadTask(new DownloadParams(), new BoundingBoxDownloader(downloadArea), null, false), downloadArea);
Index: trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 19050)
@@ -210,9 +210,9 @@
 
         public List<Node> getNodes() {
-            final var nodes = new ArrayList<Node>();
+            List<Node> nodes = new ArrayList<>();
             for (WayInPolygon way : this.ways) {
                 //do not add the last node as it will be repeated in the next way
                 if (way.insideToTheRight) {
-                    for (var pos = 0; pos < way.way.getNodesCount() - 1; pos++) {
+                    for (int pos = 0; pos < way.way.getNodesCount() - 1; pos++) {
                         nodes.add(way.way.getNode(pos));
                     }
@@ -343,7 +343,7 @@
          */
         private static double getAngle(Node n1, Node n2, Node n3) {
-            final var en1 = n1.getEastNorth();
-            final var en2 = n2.getEastNorth();
-            final var en3 = n3.getEastNorth();
+            EastNorth en1 = n1.getEastNorth();
+            EastNorth en2 = n2.getEastNorth();
+            EastNorth en3 = n3.getEastNorth();
             double angle = Math.atan2(en3.getY() - en1.getY(), en3.getX() - en1.getX()) -
                     Math.atan2(en2.getY() - en1.getY(), en2.getX() - en1.getX());
@@ -362,6 +362,6 @@
          */
         public WayInPolygon walk() {
-            final var headNode = getHeadNode();
-            final var prevNode = getPrevNode();
+            Node headNode = getHeadNode();
+            Node prevNode = getPrevNode();
 
             double headAngle = Math.atan2(headNode.getEastNorth().east() - prevNode.getEastNorth().east(),
@@ -371,5 +371,5 @@
             //find best next way
             WayInPolygon bestWay = null;
-            var bestWayReverse = false;
+            boolean bestWayReverse = false;
 
             for (WayInPolygon way : availableWays) {
@@ -418,9 +418,9 @@
          */
         public WayInPolygon leftComingWay() {
-            final var headNode = getHeadNode();
-            final var prevNode = getPrevNode();
+            Node headNode = getHeadNode();
+            Node prevNode = getPrevNode();
 
             WayInPolygon mostLeft = null; // most left way connected to head node
-            var comingToHead = false; // true if candidate come to head node
+            boolean comingToHead = false; // true if candidate come to head node
             double angle = 2*Math.PI;
 
@@ -649,9 +649,9 @@
         }
 
-        var hasChanges = false;
-
-        final var allStartingWays = new ArrayList<Way>();
-        final var innerStartingWays = new ArrayList<Way>();
-        final var outerStartingWays = new ArrayList<Way>();
+        boolean hasChanges = false;
+
+        List<Way> allStartingWays = new ArrayList<>();
+        List<Way> innerStartingWays = new ArrayList<>();
+        List<Way> outerStartingWays = new ArrayList<>();
 
         for (Multipolygon area : areas) {
@@ -721,10 +721,10 @@
         if (discardedWays.stream().anyMatch(w -> !w.isNew())) {
             for (AssembledPolygon ring : boundaries) {
-                for (var k = 0; k < ring.ways.size(); k++) {
+                for (int k = 0; k < ring.ways.size(); k++) {
                     WayInPolygon ringWay = ring.ways.get(k);
                     Way older = keepOlder(ringWay.way, oldestWayMap, discardedWays);
 
                     if (ringWay.way != older) {
-                        final var repl = new WayInPolygon(older, ringWay.insideToTheRight);
+                        WayInPolygon repl = new WayInPolygon(older, ringWay.insideToTheRight);
                         ring.ways.set(k, repl);
                     }
@@ -769,5 +769,5 @@
         // Delete the discarded inner ways
         if (!discardedWays.isEmpty()) {
-            final var deleteCmd = DeleteCommand.delete(discardedWays, true);
+            Command deleteCmd = DeleteCommand.delete(discardedWays, true);
             if (deleteCmd != null) {
                 cmds.add(deleteCmd);
@@ -796,6 +796,6 @@
     private Way keepOlder(Way way, Map<Node, Way> oldestWayMap, List<Way> discardedWays) {
         Way oldest = null;
-        for (var n : way.getNodes()) {
-            final var orig = oldestWayMap .get(n);
+        for (Node n : way.getNodes()) {
+            Way orig = oldestWayMap .get(n);
             if (orig != null && (oldest == null || oldest.getUniqueId() > orig.getUniqueId())
                     && discardedWays.contains(orig)) {
@@ -830,5 +830,5 @@
         }
 
-        final var wayTags = TagCollection.unionOfAllPrimitives(ways);
+        TagCollection wayTags = TagCollection.unionOfAllPrimitives(ways);
         try {
             cmds.addAll(CombinePrimitiveResolverDialog.launchIfNecessary(wayTags, ways, ways));
@@ -847,6 +847,6 @@
      */
     private boolean removeDuplicateNodes(List<Way> ways) {
-        final var nodeMap = new TreeMap<Node, Node>(new NodePositionComparator());
-        var totalWaysModified = 0;
+        Map<Node, Node> nodeMap = new TreeMap<>(new NodePositionComparator());
+        int totalWaysModified = 0;
 
         for (Way way : ways) {
@@ -855,10 +855,10 @@
             }
 
-            final var newNodes = new ArrayList<Node>();
+            List<Node> newNodes = new ArrayList<>();
             Node prevNode = null;
-            var modifyWay = false;
+            boolean modifyWay = false;
 
             for (Node node : way.getNodes()) {
-                var representator = nodeMap.get(node);
+                Node representator = nodeMap.get(node);
                 if (representator == null) {
                     //new node
@@ -923,5 +923,5 @@
         cmds.clear();
         if (addUndoRedo && !executedCmds.isEmpty()) {
-            final var ur = UndoRedoHandler.getInstance();
+            UndoRedoHandler ur = UndoRedoHandler.getInstance();
             if (executedCmds.size() == 1) {
                 ur.add(executedCmds.getFirst(), false);
@@ -945,5 +945,5 @@
         Map<Way, Way> nextWayMap = new HashMap<>();
 
-        for (var pos = 0; pos < parts.size(); pos++) {
+        for (int pos = 0; pos < parts.size(); pos++) {
 
             if (!parts.get(pos).lastNode().equals(parts.get((pos + 1) % parts.size()).firstNode()))
@@ -956,10 +956,10 @@
         Way topWay = null;
         Node topNode = null;
-        var topIndex = 0;
+        int topIndex = 0;
         double minY = Double.POSITIVE_INFINITY;
 
         for (Way way : parts) {
-            for (var pos = 0; pos < way.getNodesCount(); pos++) {
-                final var node = way.getNode(pos);
+            for (int pos = 0; pos < way.getNodesCount(); pos++) {
+                Node node = way.getNode(pos);
 
                 if (node.getEastNorth().getY() < minY) {
@@ -996,5 +996,5 @@
             for (Way way : parts) {
                 if (way.firstNode().equals(headNode)) {
-                    final var nextNode = way.getNode(1);
+                    Node nextNode = way.getNode(1);
 
                     if (topWay == null || !Geometry.isToTheRightSideOfLine(prevNode, headNode, bestWayNextNode, nextNode)) {
@@ -1008,5 +1008,5 @@
                 if (way.lastNode().equals(headNode)) {
                     //end adjacent to headNode
-                    final var nextNode = way.getNode(way.getNodesCount() - 2);
+                    Node nextNode = way.getNode(way.getNodesCount() - 2);
 
                     if (topWay == null || !Geometry.isToTheRightSideOfLine(prevNode, headNode, bestWayNextNode, nextNode)) {
@@ -1020,6 +1020,6 @@
         } else {
             //node is inside way - pick the clockwise going end.
-            final var prev = topWay.getNode(topIndex - 1);
-            final var next = topWay.getNode(topIndex + 1);
+            Node prev = topWay.getNode(topIndex - 1);
+            Node next = topWay.getNode(topIndex + 1);
 
             //there will be no parallel segments in the middle of way, so all fine.
@@ -1027,5 +1027,5 @@
         }
 
-        var curWay = topWay;
+        Way curWay = topWay;
         boolean curWayInsideToTheRight = wayClockwise ^ isInner;
         List<WayInPolygon> result = new ArrayList<>();
@@ -1035,12 +1035,12 @@
 
             //add cur way
-            final var resultWay = new WayInPolygon(curWay, curWayInsideToTheRight);
+            WayInPolygon resultWay = new WayInPolygon(curWay, curWayInsideToTheRight);
             result.add(resultWay);
 
             //process next way
-            final var nextWay = nextWayMap.get(curWay);
-            final var prevNode = curWay.getNode(curWay.getNodesCount() - 2);
-            final var headNode = curWay.lastNode();
-            final var nextNode = nextWay.getNode(1);
+            Way nextWay = nextWayMap.get(curWay);
+            Node prevNode = curWay.getNode(curWay.getNodesCount() - 2);
+            Node headNode = curWay.lastNode();
+            Node nextNode = nextWay.getNode(1);
 
             if (nextWay == topWay) {
@@ -1068,5 +1068,5 @@
             //                       |
 
-            var intersectionCount = 0;
+            int intersectionCount = 0;
 
             for (Way wayA : parts) {
@@ -1078,10 +1078,10 @@
                 if (wayA.lastNode().equals(headNode)) {
 
-                    final var wayB = nextWayMap.get(wayA);
+                    Way wayB = nextWayMap.get(wayA);
 
                     //test if wayA is opposite wayB relative to curWay and nextWay
 
-                    final var wayANode = wayA.getNode(wayA.getNodesCount() - 2);
-                    final var wayBNode = wayB.getNode(1);
+                    Node wayANode = wayA.getNode(wayA.getNodesCount() - 2);
+                    Node wayBNode = wayB.getNode(1);
 
                     boolean wayAToTheRight = Geometry.isToTheRightSideOfLine(prevNode, headNode, nextNode, wayANode);
@@ -1117,5 +1117,5 @@
      */
     private static void revertDuplicateTwoNodeWays(List<WayInPolygon> parts) {
-        for (var i = 0; i < parts.size(); i++) {
+        for (int i = 0; i < parts.size(); i++) {
             WayInPolygon w1 = parts.get(i);
             if (w1.way.getNodesCount() != 2)
@@ -1141,9 +1141,9 @@
     private List<Way> splitWayOnNodes(Way way, Set<Node> nodes, Map<Node, Way> oldestWayMap) {
 
-        final var result = new ArrayList<Way>();
+        List<Way> result = new ArrayList<>();
         List<List<Node>> chunks = buildNodeChunks(way, nodes);
 
         if (chunks.size() > 1) {
-            final var split = SplitWayCommand.splitWay(way, chunks,
+            SplitWayCommand split = SplitWayCommand.splitWay(way, chunks,
                     Collections.emptyList(), SplitWayCommand.Strategy.keepFirstChunk());
 
@@ -1159,6 +1159,6 @@
                 if (!way.isNew() && result.size() > 1) {
                     for (Way part : result) {
-                        final var n = part.firstNode();
-                        final var old = oldestWayMap.get(n);
+                        Node n = part.firstNode();
+                        Way old = oldestWayMap.get(n);
                         if (old == null || old.getUniqueId() > way.getUniqueId()) {
                             oldestWayMap.put(n, way);
@@ -1231,10 +1231,10 @@
 
         //TODO: bad performance for deep nestings...
-        final var result = new ArrayList<PolygonLevel>();
+        List<PolygonLevel> result = new ArrayList<>();
 
         for (AssembledPolygon outerWay : boundaryWays) {
 
-            var outerGood = true;
-            final var innerCandidates = new ArrayList<AssembledPolygon>();
+            boolean outerGood = true;
+            List<AssembledPolygon> innerCandidates = new ArrayList<>();
 
             for (AssembledPolygon innerWay : boundaryWays) {
@@ -1256,6 +1256,6 @@
 
             //add new outer polygon
-            final var pol = new AssembledMultipolygon(outerWay);
-            final var polLev = new PolygonLevel(pol, level);
+            AssembledMultipolygon pol = new AssembledMultipolygon(outerWay);
+            PolygonLevel polLev = new PolygonLevel(pol, level);
 
             //process inner ways
@@ -1288,16 +1288,16 @@
         // This seems to appear when is apply over invalid way like #9911 test-case
         // Remove all of these way to make the next work.
-        final var cleanMultigonWays = new ArrayList<WayInPolygon>();
+        List<WayInPolygon> cleanMultigonWays = new ArrayList<>();
         for (WayInPolygon way: multigonWays) {
             if (way.way.getNodesCount() != 2 || !way.way.isClosed())
                 cleanMultigonWays.add(way);
         }
-        final var traverser = new WayTraverser(cleanMultigonWays);
-        final var result = new ArrayList<AssembledPolygon>();
+        WayTraverser traverser = new WayTraverser(cleanMultigonWays);
+        List<AssembledPolygon> result = new ArrayList<>();
 
         WayInPolygon startWay;
         while ((startWay = traverser.startNewWay()) != null) {
-            final var path = new ArrayList<WayInPolygon>();
-            final var startWays = new ArrayList<WayInPolygon>();
+            List<WayInPolygon> path = new ArrayList<>();
+            List<WayInPolygon> startWays = new ArrayList<>();
             path.add(startWay);
             while (true) {
@@ -1318,5 +1318,5 @@
                 if (path.get(0) == nextWay) {
                     // path is closed -> stop here
-                    final var ring = new AssembledPolygon(path);
+                    AssembledPolygon ring = new AssembledPolygon(path);
                     if (ring.getNodes().size() <= 2) {
                         // Invalid ring (2 nodes) -> remove
@@ -1357,13 +1357,13 @@
      */
     public static List<AssembledPolygon> fixTouchingPolygons(List<AssembledPolygon> polygons) {
-        final var newPolygons = new ArrayList<AssembledPolygon>();
+        List<AssembledPolygon> newPolygons = new ArrayList<>();
 
         for (AssembledPolygon ring : polygons) {
             ring.reverse();
-            final var traverser = new WayTraverser(ring.ways);
+            WayTraverser traverser = new WayTraverser(ring.ways);
             WayInPolygon startWay;
 
             while ((startWay = traverser.startNewWay()) != null) {
-                final var simpleRingWays = new ArrayList<WayInPolygon>();
+                List<WayInPolygon> simpleRingWays = new ArrayList<>();
                 simpleRingWays.add(startWay);
                 WayInPolygon nextWay;
@@ -1374,5 +1374,5 @@
                 }
                 traverser.removeWays(simpleRingWays);
-                final var simpleRing = new AssembledPolygon(simpleRingWays);
+                AssembledPolygon simpleRing = new AssembledPolygon(simpleRingWays);
                 simpleRing.reverse();
                 newPolygons.add(simpleRing);
@@ -1411,5 +1411,5 @@
      */
     private Multipolygon joinPolygon(AssembledMultipolygon polygon) throws UserCancelException {
-        final var result = new Multipolygon(joinWays(polygon.outerWay.ways));
+        Multipolygon result = new Multipolygon(joinWays(polygon.outerWay.ways));
 
         for (AssembledPolygon pol : polygon.innerWays) {
@@ -1429,5 +1429,5 @@
 
         //leave original orientation, if all paths are reverse.
-        var allReverse = true;
+        boolean allReverse = true;
         for (WayInPolygon way : ways) {
             allReverse &= !way.insideToTheRight;
@@ -1440,5 +1440,5 @@
         }
 
-        final var joinedWay = joinOrientedWays(ways);
+        Way joinedWay = joinOrientedWays(ways);
 
         //should not happen
@@ -1462,6 +1462,6 @@
         // the user about this.
 
-        final var actionWays = new ArrayList<Way>(ways.size());
-        var oldestPos = 0;
+        List<Way> actionWays = new ArrayList<>(ways.size());
+        int oldestPos = 0;
         Way oldest = ways.get(0).way;
         for (WayInPolygon way : ways) {
@@ -1511,5 +1511,5 @@
             }
 
-            var hasKnownOuter = false;
+            boolean hasKnownOuter = false;
             outerWays.clear();
             innerWays.clear();
@@ -1538,5 +1538,5 @@
             }
 
-            final var outerWay = outerWays.get(0);
+            Way outerWay = outerWays.get(0);
 
             //retain only selected inner ways
@@ -1588,5 +1588,5 @@
             processedInnerWays.addAll(innerWays);
 
-            final var pol = new Multipolygon(outerWay);
+            Multipolygon pol = new Multipolygon(outerWay);
             pol.innerWays.addAll(innerWays);
 
@@ -1615,5 +1615,5 @@
         OsmDataLayer layer = getLayerManager().getEditLayer();
         // Create new multipolygon relation and add all inner ways to it
-        final var newRel = new Relation();
+        Relation newRel = new Relation();
         newRel.put("type", "multipolygon");
         for (Way w : inner) {
@@ -1650,5 +1650,5 @@
 
                 cmds.add(new ChangeMembersCommand(r, members));
-                final var saverel = new RelationRole(r, rm.getRole());
+                RelationRole saverel = new RelationRole(r, rm.getRole());
                 if (!result.contains(saverel)) {
                     result.add(saverel);
@@ -1701,5 +1701,5 @@
         default:
             // Create a new relation with all previous members and (Way)outer as outer.
-            final var newRel = new Relation();
+            Relation newRel = new Relation();
             for (RelationRole r : multiouters) {
                 // Add members
Index: trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 19050)
@@ -147,6 +147,6 @@
 
         // Finally, applicableWays contains only one perfect way
-        final var selectedWay = applicableWays.get(0);
-        final var sel = new ArrayList<OsmPrimitive>(ds.getSelectedRelations());
+        final Way selectedWay = applicableWays.get(0);
+        final List<OsmPrimitive> sel = new ArrayList<>(ds.getSelectedRelations());
         sel.addAll(selectedWays);
         doSplitWayShowSegmentSelection(selectedWay, selectedNodes, sel);
@@ -165,5 +165,5 @@
         if (wayChunks != null) {
             final List<Way> newWays = SplitWayCommand.createNewWaysFromChunks(splitWay, wayChunks);
-            final var wayToKeep = SplitWayCommand.Strategy.keepLongestChunk().determineWayToKeep(newWays);
+            final Way wayToKeep = SplitWayCommand.Strategy.keepLongestChunk().determineWayToKeep(newWays);
 
             if (ExpertToggleAction.isExpert() && !splitWay.isNew()) {
@@ -211,5 +211,5 @@
 
             setButtonIcons("ok", "cancel");
-            final var pane = new JPanel(new GridBagLayout());
+            final JPanel pane = new JPanel(new GridBagLayout());
             pane.add(new JLabel(getTitle()), GBC.eol().fill(GridBagConstraints.HORIZONTAL));
             pane.add(list, GBC.eop().fill(GridBagConstraints.HORIZONTAL));
@@ -225,7 +225,7 @@
                     final Collection<WaySegment> segments = new ArrayList<>(selected.getNodesCount() - 1);
                     final Iterator<Node> it = selected.getNodes().iterator();
-                    var previousNode = it.next();
+                    Node previousNode = it.next();
                     while (it.hasNext()) {
-                        final var node = it.next();
+                        final Node node = it.next();
                         segments.add(WaySegment.forNodePair(selectedWay, previousNode, node));
                         previousNode = node;
@@ -238,5 +238,5 @@
 
         protected void setHighlightedWaySegments(Collection<WaySegment> segments) {
-            final var ds = selectedWay.getDataSet();
+            final DataSet ds = selectedWay.getDataSet();
             if (ds != null) {
                 ds.setHighlightedWaySegments(segments);
@@ -248,5 +248,5 @@
         public void setVisible(boolean visible) {
             super.setVisible(visible);
-            final var ds = selectedWay.getDataSet();
+            final DataSet ds = selectedWay.getDataSet();
             if (visible) {
                 DISPLAY_COUNT.incrementAndGet();
@@ -337,5 +337,5 @@
         @Override
         public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
-            final var c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+            final Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
             final String name = DefaultNameFormatter.getInstance().format((Way) value);
             // get rid of id from DefaultNameFormatter.decorateNameWithId()
@@ -360,5 +360,5 @@
         // Special case - one of the selected ways touches (not cross) way that we want to split
         if (selectedNodes.size() == 1) {
-            final var n = selectedNodes.get(0);
+            final Node n = selectedNodes.get(0);
             List<Way> referredWays = n.getParentWays();
             Way inTheMiddle = null;
Index: trunk/src/org/openstreetmap/josm/actions/corrector/ReverseWayNoTagCorrector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/corrector/ReverseWayNoTagCorrector.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/actions/corrector/ReverseWayNoTagCorrector.java	(revision 19050)
@@ -102,5 +102,5 @@
                 null
         );
-        switch(ret) {
+        switch (ret) {
             case ConditionalOptionPaneUtil.DIALOG_DISABLED_OPTION:
             case JOptionPane.YES_OPTION:
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java	(revision 19050)
@@ -172,5 +172,5 @@
                     String msg;
                     String id = Long.toString(p.getUniqueId());
-                    switch(p.getType()) {
+                    switch (p.getType()) {
                     case NODE: msg = tr("({0}/{1}) Loading parents of node {2}", i, children.size(), id); break;
                     case WAY: msg = tr("({0}/{1}) Loading parents of way {2}", i, children.size(), id); break;
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 19050)
@@ -91,5 +91,5 @@
     }
 
-    private static class DeleteParameters {
+    private static final class DeleteParameters {
         private DeleteMode mode;
         private Node nearestNode;
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 19050)
@@ -225,5 +225,7 @@
 
     private boolean updateModifiersState(int modifiers) {
-        boolean oldAlt = alt, oldShift = shift, oldCtrl = ctrl;
+        boolean oldAlt = alt;
+        boolean oldShift = shift;
+        boolean oldCtrl = ctrl;
         updateKeyModifiersEx(modifiers);
         return oldAlt != alt || oldShift != shift || oldCtrl != ctrl;
@@ -616,5 +618,5 @@
     }
 
-    private class ParallelWayLayer extends AbstractMapViewPaintable {
+    private final class ParallelWayLayer extends AbstractMapViewPaintable {
         @Override
         public void paint(Graphics2D g, MapView mv, Bounds bbox) {
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 19050)
@@ -44,5 +44,5 @@
 import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.osm.visitor.AllNodesVisitor;
-import org.openstreetmap.josm.data.osm.visitor.paint.WireframeMapRenderer;
+import org.openstreetmap.josm.data.osm.visitor.paint.AbstractMapRenderer;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.CachingProperty;
@@ -206,5 +206,5 @@
         super(tr("Select mode"), "move/move", tr("Select, move, scale and rotate objects"),
                 Shortcut.registerShortcut("mapmode:select", tr("Mode: {0}", tr("Select mode")), KeyEvent.VK_S, Shortcut.DIRECT),
-                ImageProvider.getCursor("normal", "selection"));
+                ImageProvider.getCursor(NORMAL, "selection"));
         mv = mapFrame.mapView;
         setHelpId(ht("/Action/Select"));
@@ -316,5 +316,5 @@
     private Cursor getCursor(OsmPrimitive nearbyStuff) {
         String c = "rect";
-        switch(mode) {
+        switch (mode) {
         case MOVE:
             if (virtualManager.hasVirtualNode()) {
@@ -438,5 +438,5 @@
         determineMapMode(nearestPrimitive != null);
 
-        switch(mode) {
+        switch (mode) {
         case ROTATE:
         case SCALE:
@@ -519,5 +519,5 @@
             return;
 
-        if (mode != Mode.ROTATE && mode != Mode.SCALE && (e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == 0) {
+        if (mode != Mode.ROTATE && mode != Mode.SCALE && (e.getModifiersEx() & InputEvent.BUTTON1_DOWN_MASK) == 0) {
             // button is pressed in rotate mode
             return;
@@ -1116,5 +1116,5 @@
     private final transient VirtualManager virtualManager = new VirtualManager();
 
-    private class CycleManager {
+    private final class CycleManager {
 
         private Collection<OsmPrimitive> cycleList = Collections.emptyList();
@@ -1255,5 +1255,5 @@
     }
 
-    private class VirtualManager {
+    private final class VirtualManager {
 
         private Node virtualNode;
@@ -1294,5 +1294,5 @@
                     MapViewPoint p1 = mv.getState().getPointFor(wnp.a);
                     MapViewPoint p2 = mv.getState().getPointFor(wnp.b);
-                    if (WireframeMapRenderer.isLargeSegment(p1, p2, virtualSpace)) {
+                    if (AbstractMapRenderer.isLargeSegment(p1, p2, virtualSpace)) {
                         Point2D pc = new Point2D.Double((p1.getInViewX() + p2.getInViewX()) / 2, (p1.getInViewY() + p2.getInViewY()) / 2);
                         if (p.distanceSq(pc) < virtualSnapDistSq2) {
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 19050)
@@ -84,5 +84,5 @@
             @Override
             public Match get(String keyword, boolean caseSensitive, boolean regexSearch, PushbackTokenizer tokenizer) throws SearchParseError {
-                switch(keyword) {
+                switch (keyword) {
                 case "inview":
                     return new InView(false);
@@ -291,5 +291,5 @@
      * Select the search result and display a status text for it.
      */
-    private static class SelectSearchReceiver implements SearchReceiver {
+    private static final class SelectSearchReceiver implements SearchReceiver {
 
         @Override
Index: trunk/src/org/openstreetmap/josm/command/AddCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/AddCommand.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/command/AddCommand.java	(revision 19050)
@@ -72,5 +72,5 @@
     public String getDescriptionText() {
         String msg;
-        switch(OsmPrimitiveType.from(osm)) {
+        switch (OsmPrimitiveType.from(osm)) {
         case NODE: msg = marktr("Add node {0}"); break;
         case WAY: msg = marktr("Add way {0}"); break;
Index: trunk/src/org/openstreetmap/josm/command/ChangeCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/ChangeCommand.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/command/ChangeCommand.java	(revision 19050)
@@ -78,5 +78,5 @@
     public String getDescriptionText() {
         String msg;
-        switch(OsmPrimitiveType.from(osm)) {
+        switch (OsmPrimitiveType.from(osm)) {
         case NODE: msg = marktr("Change node {0}"); break;
         case WAY: msg = marktr("Change way {0}"); break;
Index: trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 19050)
@@ -206,5 +206,5 @@
             Map.Entry<String, String> entry = tags.entrySet().iterator().next();
             if (Utils.isEmpty(entry.getValue())) {
-                switch(OsmPrimitiveType.from(primitive)) {
+                switch (OsmPrimitiveType.from(primitive)) {
                 case NODE: msg = marktr("Remove \"{0}\" for node ''{1}''"); break;
                 case WAY: msg = marktr("Remove \"{0}\" for way ''{1}''"); break;
@@ -214,5 +214,5 @@
                 text = tr(msg, entry.getKey(), primitive.getDisplayName(DefaultNameFormatter.getInstance()));
             } else {
-                switch(OsmPrimitiveType.from(primitive)) {
+                switch (OsmPrimitiveType.from(primitive)) {
                 case NODE: msg = marktr("Set {0}={1} for node ''{2}''"); break;
                 case WAY: msg = marktr("Set {0}={1} for way ''{2}''"); break;
Index: trunk/src/org/openstreetmap/josm/command/DeleteCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/DeleteCommand.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/command/DeleteCommand.java	(revision 19050)
@@ -250,5 +250,5 @@
             OsmPrimitive primitive = toDelete.iterator().next();
             String msg;
-            switch(OsmPrimitiveType.from(primitive)) {
+            switch (OsmPrimitiveType.from(primitive)) {
             case NODE: msg = marktr("Delete node {0}"); break;
             case WAY: msg = marktr("Delete way {0}"); break;
@@ -265,5 +265,5 @@
             } else {
                 OsmPrimitiveType t = typesToDelete.iterator().next();
-                switch(t) {
+                switch (t) {
                 case NODE: msg = trn("Delete {0} node", "Delete {0} nodes", toDelete.size(), toDelete.size()); break;
                 case WAY: msg = trn("Delete {0} way", "Delete {0} ways", toDelete.size(), toDelete.size()); break;
Index: trunk/src/org/openstreetmap/josm/command/PurgeCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/PurgeCommand.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/command/PurgeCommand.java	(revision 19050)
@@ -96,5 +96,5 @@
                     // user clears undo/redo buffer after purge
                     PrimitiveData empty;
-                    switch(osm.getType()) {
+                    switch (osm.getType()) {
                     case NODE: empty = new NodeData(); break;
                     case WAY: empty = new WayData(); break;
Index: trunk/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java	(revision 19050)
@@ -36,5 +36,5 @@
     public String getDescriptionText() {
         String msg;
-        switch(OsmPrimitiveType.from(conflict.getMy())) {
+        switch (OsmPrimitiveType.from(conflict.getMy())) {
         case NODE: msg = marktr("Set the ''modified'' flag for node {0}"); break;
         case WAY: msg = marktr("Set the ''modified'' flag for way {0}"); break;
Index: trunk/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java	(revision 19050)
@@ -36,5 +36,5 @@
     public String getDescriptionText() {
         String msg;
-        switch(OsmPrimitiveType.from(conflict.getMy())) {
+        switch (OsmPrimitiveType.from(conflict.getMy())) {
         case NODE: msg = marktr("Resolve version conflict for node {0}"); break;
         case WAY: msg = marktr("Resolve version conflict for way {0}"); break;
Index: trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 19050)
@@ -40,5 +40,5 @@
     private final LinkedList<CommandQueuePreciseListener> preciseListenerCommands = new LinkedList<>();
 
-    private static class InstanceHolder {
+    private static final class InstanceHolder {
         static final UndoRedoHandler INSTANCE = new UndoRedoHandler();
     }
Index: trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java	(revision 19050)
@@ -77,5 +77,5 @@
             TimeUnit.SECONDS,
             // make queue of LIFO type - so recently requested tiles will be loaded first (assuming that these are which user is waiting to see)
-            new LinkedBlockingDeque<Runnable>(),
+            new LinkedBlockingDeque<>(),
             Utils.newThreadFactory("JCS-downloader-%d", Thread.NORM_PRIORITY)
             );
@@ -323,5 +323,5 @@
         }
         try (InputStream fileInputStream = Files.newInputStream(file.toPath())) {
-            cacheData = createCacheEntry(Utils.readBytesFromStream(fileInputStream));
+            cacheData = createCacheEntry(fileInputStream.readAllBytes());
             cache.put(getCacheKey(), cacheData, attributes);
             return true;
@@ -394,5 +394,5 @@
                 byte[] raw;
                 if (urlConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
-                    raw = Utils.readBytesFromStream(urlConn.getContent());
+                    raw = urlConn.getContent().readAllBytes();
                 } else {
                     raw = new byte[]{};
Index: trunk/src/org/openstreetmap/josm/data/coor/conversion/LatLonParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/coor/conversion/LatLonParser.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/coor/conversion/LatLonParser.java	(revision 19050)
@@ -61,5 +61,5 @@
     private static final Pattern P_DMS = Pattern.compile("^" + DMS + "$");
 
-    private static class LatLonHolder {
+    private static final class LatLonHolder {
         private double lat = Double.NaN;
         private double lon = Double.NaN;
Index: trunk/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java	(revision 19050)
@@ -152,5 +152,5 @@
     private boolean isNotImage(Map<String, List<String>> headers, int statusCode) {
         if (statusCode == 200 && headers.containsKey("Content-Type") && !headers.get("Content-Type").isEmpty()) {
-            String contentType = headers.get("Content-Type").stream().findAny().get();
+            String contentType = headers.get("Content-Type").stream().findAny().orElse(null);
             if (contentType != null && !contentType.startsWith("image") && !MVTFile.MIMETYPE.contains(contentType.toLowerCase(Locale.ROOT))) {
                 Logging.warn("Image not returned for tile: " + url + " content type was: " + contentType);
@@ -198,5 +198,5 @@
             }
 
-            switch(result) {
+            switch (result) {
             case SUCCESS:
                 handleNoTileAtZoom();
Index: trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 19050)
@@ -74,5 +74,4 @@
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Logging;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -113,5 +112,5 @@
     private int cachedTileSize = -1;
 
-    private static class TileMatrix {
+    private static final class TileMatrix {
         private String identifier;
         private double scaleDenominator;
@@ -123,5 +122,5 @@
     }
 
-    private static class TileMatrixSetBuilder {
+    private static final class TileMatrixSetBuilder {
         // sorted by zoom level
         SortedSet<TileMatrix> tileMatrix = new TreeSet<>((o1, o2) -> -1 * Double.compare(o1.scaleDenominator, o2.scaleDenominator));
@@ -194,5 +193,5 @@
     }
 
-    private static class Dimension {
+    private static final class Dimension {
         private String identifier;
         private String defaultValue;
@@ -454,5 +453,5 @@
                 setCachingStrategy(CachedFile.CachingStrategy.IfModifiedSince).
                 getInputStream()) {
-            byte[] data = Utils.readBytesFromStream(in);
+            byte[] data = in.readAllBytes();
             if (data.length == 0) {
                 cf.clear();
Index: trunk/src/org/openstreetmap/josm/data/oauth/OAuth20Exception.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/oauth/OAuth20Exception.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/oauth/OAuth20Exception.java	(revision 19050)
@@ -55,5 +55,5 @@
                 : "Unknown error");
         if (serverMessage != null && serverMessage.containsKey("error")) {
-            switch(serverMessage.getString("error")) {
+            switch (serverMessage.getString("error")) {
                 case "invalid_request":
                 case "invalid_client":
Index: trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java	(revision 19050)
@@ -115,5 +115,5 @@
         //
         OsmPrimitive target;
-        switch(source.getType()) {
+        switch (source.getType()) {
         case NODE: target = source.isNew() ? new Node() : new Node(source.getId()); break;
         case WAY: target = source.isNew() ? new Way() : new Way(source.getId()); break;
Index: trunk/src/org/openstreetmap/josm/data/osm/OsmDataManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmDataManager.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmDataManager.java	(revision 19050)
@@ -21,5 +21,5 @@
     }
 
-    private static class InstanceHolder {
+    private static final class InstanceHolder {
         static final OsmDataManager INSTANCE = new OsmDataManager();
     }
Index: trunk/src/org/openstreetmap/josm/data/osm/PrimitiveComparator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/PrimitiveComparator.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/osm/PrimitiveComparator.java	(revision 19050)
@@ -58,5 +58,5 @@
 
     static <T extends IPrimitive> Comparator<T> doOrderingNodesWaysRelations() {
-        return comparingInt(osm -> osm.getType().ordinal());
+        return comparing(PrimitiveId::getType);
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/search/SearchCompiler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/search/SearchCompiler.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/osm/search/SearchCompiler.java	(revision 19050)
@@ -23,4 +23,5 @@
 import java.util.function.Predicate;
 import java.util.function.Supplier;
+import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
@@ -1139,6 +1140,6 @@
                     value = Normalizer.normalize(value, Normalizer.Form.NFC);
 
-                    final var keyMatcher = searchRegex.matcher(key);
-                    final var valMatcher = searchRegex.matcher(value);
+                    final Matcher keyMatcher = searchRegex.matcher(key);
+                    final Matcher valMatcher = searchRegex.matcher(value);
 
                     boolean keyMatchFound = keyMatcher.find();
@@ -1817,5 +1818,5 @@
             if (!(osm instanceof Way))
                 return null;
-            final var way = (Way) osm;
+            final Way way = (Way) osm;
             return (long) way.getLength();
         }
@@ -1970,5 +1971,5 @@
 
             try {
-                final var groupSuffix = name.substring(0, name.length() - 2); // try to remove '/*'
+                String groupSuffix = name.substring(0, name.length() - 2); // try to remove '/*'
                 TaggingPresetMenu group = preset.group;
 
@@ -2178,9 +2179,9 @@
             } else if (tokenizer.readIfEqual(Token.COLON)) {
                 // see if we have a Match that takes a data parameter
-                final var factory = simpleMatchFactoryMap.get(key);
+                SimpleMatchFactory factory = simpleMatchFactoryMap.get(key);
                 if (factory != null)
                     return factory.get(key, caseSensitive, regexSearch, tokenizer);
 
-                final var unaryFactory = unaryMatchFactoryMap.get(key);
+                UnaryMatchFactory unaryFactory = unaryMatchFactoryMap.get(key);
                 if (unaryFactory != null)
                     return getValidate(unaryFactory, key, tokenizer);
@@ -2195,9 +2196,9 @@
                 return new BooleanMatch(key, false);
             else {
-                final var factory = simpleMatchFactoryMap.get(key);
+                SimpleMatchFactory factory = simpleMatchFactoryMap.get(key);
                 if (factory != null)
                     return factory.get(key, caseSensitive, regexSearch, null).validate();
 
-                final var unaryFactory = unaryMatchFactoryMap.get(key);
+                UnaryMatchFactory unaryFactory = unaryMatchFactoryMap.get(key);
                 if (unaryFactory != null)
                     return getValidate(unaryFactory, key, null);
@@ -2221,5 +2222,5 @@
 
     private static int regexFlags(boolean caseSensitive) {
-        var searchFlags = 0;
+        int searchFlags = 0;
 
         // Enables canonical Unicode equivalence so that e.g. the two
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 19050)
@@ -978,5 +978,5 @@
                     }
 
-                    switch(m.getRole()) {
+                    switch (m.getRole()) {
                     case "from":
                         if (fromWay == null) {
@@ -1248,5 +1248,5 @@
                     MapViewPath path = new MapViewPath(mapState);
                     path.appendFromEastNorth(pd.get());
-                    path.setWindingRule(MapViewPath.WIND_EVEN_ODD);
+                    path.setWindingRule(Path2D.WIND_EVEN_ODD);
                     consumer.accept(path);
                 }
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 19049)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java	(revision 19050)
@@ -68,5 +68,5 @@
      * above.</p>
      */
-    private static class MultipolygonRoleMatcher implements PreferenceChangedListener {
+    private static final class MultipolygonRoleMatcher implements PreferenceChangedListener {
         private final List<String> outerExactRoles = new ArrayList<>();
         private final List<String> outerRolePrefixes = new ArrayList<>();
Index: trunk/src/org/openstreetmap/josm/data/preferences/JosmBaseDirectories.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/preferences/JosmBaseDirectories.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/preferences/JosmBaseDirectories.java	(revision 19050)
@@ -26,5 +26,5 @@
     }
 
-    private static class InstanceHolder {
+    private static final class InstanceHolder {
         static final JosmBaseDirectories INSTANCE = new JosmBaseDirectories();
     }
Index: trunk/src/org/openstreetmap/josm/data/preferences/JosmUrls.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/preferences/JosmUrls.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/preferences/JosmUrls.java	(revision 19050)
@@ -36,5 +36,5 @@
     }
 
-    private static class InstanceHolder {
+    private static final class InstanceHolder {
         static final JosmUrls INSTANCE = new JosmUrls();
     }
Index: trunk/src/org/openstreetmap/josm/data/preferences/PreferencesReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/preferences/PreferencesReader.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/preferences/PreferencesReader.java	(revision 19050)
@@ -168,5 +168,5 @@
             if (event == XMLStreamConstants.START_ELEMENT) {
                 String localName = parser.getLocalName();
-                switch(localName) {
+                switch (localName) {
                 case "tag":
                     StringSetting setting;
@@ -240,5 +240,5 @@
                 if (event == XMLStreamConstants.START_ELEMENT) {
                     String localName = parser.getLocalName();
-                    switch(localName) {
+                    switch (localName) {
                     case "entry":
                         if (entries == null) {
Index: trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2Proj4DirGridShiftFileSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2Proj4DirGridShiftFileSource.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/projection/datum/NTV2Proj4DirGridShiftFileSource.java	(revision 19050)
@@ -29,5 +29,5 @@
 
     // lazy initialization
-    private static class InstanceHolder {
+    private static final class InstanceHolder {
         static final NTV2Proj4DirGridShiftFileSource INSTANCE = new NTV2Proj4DirGridShiftFileSource();
     }
Index: trunk/src/org/openstreetmap/josm/data/validation/ValidatorCLI.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/ValidatorCLI.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/validation/ValidatorCLI.java	(revision 19050)
@@ -11,4 +11,5 @@
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -30,4 +31,5 @@
 import org.openstreetmap.josm.cli.CLIModule;
 import org.openstreetmap.josm.data.Preferences;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.preferences.JosmBaseDirectories;
 import org.openstreetmap.josm.data.preferences.JosmUrls;
@@ -174,5 +176,5 @@
             }
             this.initialize();
-            final var fileMonitor = progressMonitorFactory.get();
+            final ProgressMonitor fileMonitor = progressMonitorFactory.get();
             fileMonitor.beginTask(tr("Processing files..."), this.input.size());
             for (String inputFile : this.input) {
@@ -200,5 +202,5 @@
      */
     private static void processMapcssFile(final String inputFile) throws ParseException {
-        final var styleSource = new MapCSSStyleSource(new File(inputFile).toURI().getPath(), inputFile, inputFile);
+        final MapCSSStyleSource styleSource = new MapCSSStyleSource(new File(inputFile).toURI().getPath(), inputFile, inputFile);
         styleSource.loadStyleSource();
         if (!styleSource.getErrors().isEmpty()) {
@@ -219,6 +221,6 @@
         // Check asserts
         Config.getPref().putBoolean("validator.check_assert_local_rules", true);
-        final var mapCSSTagChecker = new MapCSSTagChecker();
-        final var assertionErrors = new ArrayList<String>();
+        final MapCSSTagChecker mapCSSTagChecker = new MapCSSTagChecker();
+        final Collection<String> assertionErrors = new ArrayList<>();
         final MapCSSTagChecker.ParseResult result = mapCSSTagChecker.addMapCSS(new File(inputFile).toURI().getPath(),
                 assertionErrors::add);
@@ -245,8 +247,8 @@
      */
     private void processFile(final String inputFile) throws IllegalDataException, IOException {
-        final var inputFileFile = new File(inputFile);
+        final File inputFileFile = new File(inputFile);
         final List<FileImporter> inputFileImporters = ExtensionFileFilter.getImporters().stream()
                 .filter(importer -> importer.acceptFile(inputFileFile)).collect(Collectors.toList());
-        final var stopwatch = Stopwatch.createStarted();
+        final Stopwatch stopwatch = Stopwatch.createStarted();
         if (inputFileImporters.stream().noneMatch(fileImporter ->
                 fileImporter.importDataHandleExceptions(inputFileFile, progressMonitorFactory.get()))) {
@@ -261,21 +263,21 @@
                     .stream().filter(layer -> inputFileFile.equals(layer.getAssociatedFile()))
                     .findFirst().orElseThrow(() -> new JosmRuntimeException(tr("Could not find a layer for {0}", inputFile)));
-            final var dataSet = dataLayer.getDataSet();
+            final DataSet dataSet = dataLayer.getDataSet();
             if (this.changeFiles.containsKey(inputFile)) {
-                final var changeFilesMonitor = progressMonitorFactory.get();
+                final ProgressMonitor changeFilesMonitor = progressMonitorFactory.get();
                 for (String changeFile : this.changeFiles.getOrDefault(inputFile, Collections.emptyList())) {
-                    try (var changeStream = Compression.getUncompressedFileInputStream(Paths.get(changeFile))) {
+                    try (InputStream changeStream = Compression.getUncompressedFileInputStream(Paths.get(changeFile))) {
                         dataSet.mergeFrom(OsmChangeReader.parseDataSet(changeStream, changeFilesMonitor));
                     }
                 }
             }
-            final var path = Paths.get(outputFile);
+            final Path path = Paths.get(outputFile);
             if (path.toFile().isFile() && !Files.deleteIfExists(path)) {
                 Logging.error("Could not delete {0}, attempting to append", outputFile);
             }
-            final var geoJSONMapRouletteWriter = new GeoJSONMapRouletteWriter(dataSet);
+            final GeoJSONMapRouletteWriter geoJSONMapRouletteWriter = new GeoJSONMapRouletteWriter(dataSet);
             OsmValidator.initializeTests();
 
-            try (var fileOutputStream = Files.newOutputStream(path)) {
+            try (OutputStream fileOutputStream = Files.newOutputStream(path)) {
                 // The first writeErrors catches anything that was written, for whatever reason. This is probably never
                 // going to be called.
@@ -346,5 +348,5 @@
     /**
      * Initialize everything that might be needed
-     * <p>
+     *
      * Arguments may need to be parsed first.
      */
@@ -367,6 +369,6 @@
         Logging.setLogLevel(Level.INFO);
 
-        final var parser = new OptionParser("JOSM validate");
-        final var currentInput = new AtomicReference<String>(null);
+        OptionParser parser = new OptionParser("JOSM validate");
+        final AtomicReference<String> currentInput = new AtomicReference<>(null);
         for (Option o : Option.values()) {
             if (o.requiresArgument()) {
@@ -423,7 +425,7 @@
             break;
         case LOAD_PREFERENCES:
-            final var tempPreferences = new Preferences();
+            final Preferences tempPreferences = new Preferences();
             tempPreferences.enableSaveOnPut(false);
-            final var config = new CustomConfigurator.XMLCommandProcessor(tempPreferences);
+            CustomConfigurator.XMLCommandProcessor config = new CustomConfigurator.XMLCommandProcessor(tempPreferences);
             try (InputStream is = Utils.openStream(new File(argument).toURI().toURL())) {
                 config.openAndReadXML(is);
@@ -433,5 +435,5 @@
             final IPreferences pref = Config.getPref();
             if (pref instanceof MemoryPreferences) {
-                final var memoryPreferences = (MemoryPreferences) pref;
+                final MemoryPreferences memoryPreferences = (MemoryPreferences) pref;
                 tempPreferences.getAllSettings().forEach(memoryPreferences::putSetting);
             } else {
@@ -452,5 +454,5 @@
 
     private static String getHelp() {
-        final var helpPadding = "\t                          ";
+        final String helpPadding = "\t                          ";
         // CHECKSTYLE.OFF: SingleSpaceSeparator
         return tr("JOSM Validation command line interface") + "\n\n" +
Index: trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java	(revision 19050)
@@ -1853,5 +1853,5 @@
                 .toArray(String[]::new);
         Arrays.sort(copy);
-        switch(table) {
+        switch (table) {
         case COUNTRY_CODE_MINUS:
             countryCodeTLDsMinus = copy;
@@ -1885,5 +1885,5 @@
     public static String[] getTLDEntries(ArrayType table) {
         final String[] array;
-        switch(table) {
+        switch (table) {
         case COUNTRY_CODE_MINUS:
             array = countryCodeTLDsMinus;
@@ -1943,5 +1943,5 @@
             //            (halfwidth ideographic full stop).
             char lastChar = input.charAt(length-1); // fetch original last char
-            switch(lastChar) {
+            switch (lastChar) {
                 case '.':      // "." full stop, AKA U+002E
                 case '\u3002': // ideographic full stop
@@ -1958,5 +1958,5 @@
     }
 
-    private static class IdnBugHolder {
+    private static final class IdnBugHolder {
         private static boolean keepsTrailingDot() {
             final String input = "a."; // must be a valid name
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java	(revision 19050)
@@ -109,5 +109,5 @@
         }
         for (TaggingPreset p : TaggingPresets.getTaggingPresets()) {
-            if (p.data.stream().anyMatch(i -> i instanceof Roles)) {
+            if (p.data.stream().anyMatch(Roles.class::isInstance)) {
                 relationpresets.add(p);
             }
@@ -115,5 +115,5 @@
     }
 
-    private static class RoleInfo {
+    private static final class RoleInfo {
         private int total;
     }
Index: trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 19050)
@@ -1047,9 +1047,9 @@
         SwingUtilities.invokeLater(new GuiFinalizationWorker(args, proxySelector));
 
-        if (RemoteControl.PROP_REMOTECONTROL_ENABLED.get()) {
+        if (Boolean.TRUE.equals(RemoteControl.PROP_REMOTECONTROL_ENABLED.get())) {
             RemoteControl.start();
         }
 
-        if (MessageNotifier.PROP_NOTIFIER_ENABLED.get()) {
+        if (Boolean.TRUE.equals(MessageNotifier.PROP_NOTIFIER_ENABLED.get())) {
             MessageNotifier.start();
         }
@@ -1478,5 +1478,5 @@
 
         private static void handleAutosave() {
-            if (AutosaveTask.PROP_AUTOSAVE_ENABLED.get()) {
+            if (Boolean.TRUE.equals(AutosaveTask.PROP_AUTOSAVE_ENABLED.get())) {
                 AutosaveTask autosaveTask = new AutosaveTask();
                 List<File> unsavedLayerFiles = autosaveTask.getUnsavedLayersFiles();
@@ -1559,5 +1559,5 @@
     }
 
-    private static class DefaultNativeOsCallback implements NativeOsCallback {
+    private static final class DefaultNativeOsCallback implements NativeOsCallback {
         @Override
         public void openFiles(List<File> files) {
Index: trunk/src/org/openstreetmap/josm/gui/MainFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainFrame.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/MainFrame.java	(revision 19050)
@@ -7,4 +7,5 @@
 import java.awt.Component;
 import java.awt.ComponentOrientation;
+import java.awt.Frame;
 import java.awt.Image;
 import java.awt.Rectangle;
@@ -24,4 +25,5 @@
 import javax.swing.JFrame;
 import javax.swing.JPanel;
+import javax.swing.WindowConstants;
 
 import org.openstreetmap.josm.data.UserIdentityManager;
@@ -55,5 +57,5 @@
 
     protected transient WindowGeometry geometry;
-    protected int windowState = JFrame.NORMAL;
+    protected int windowState = Frame.NORMAL;
     private final MainPanel panel;
     private MainMenu menu;
@@ -111,5 +113,5 @@
         setIconImages(l);
         addWindowListener(new ExitWindowAdapter());
-        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
 
         // This listener is never removed, since the main frame exists forever.
@@ -131,5 +133,5 @@
              geometry.remember(WindowGeometry.PREF_KEY_GUI_GEOMETRY);
         }
-        Config.getPref().putBoolean("gui.maximized", (windowState & JFrame.MAXIMIZED_BOTH) != 0);
+        Config.getPref().putBoolean("gui.maximized", (windowState & Frame.MAXIMIZED_BOTH) != 0);
     }
 
@@ -162,6 +164,6 @@
     public void setMaximized(boolean maximized) {
         if (maximized) {
-            if (Toolkit.getDefaultToolkit().isFrameStateSupported(JFrame.MAXIMIZED_BOTH)) {
-                windowState = JFrame.MAXIMIZED_BOTH;
+            if (Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.MAXIMIZED_BOTH)) {
+                windowState = Frame.MAXIMIZED_BOTH;
                 setExtendedState(windowState);
             } else {
@@ -229,5 +231,5 @@
     }
 
-    private class WindowPositionSizeListener extends WindowAdapter implements ComponentListener {
+    private final class WindowPositionSizeListener extends WindowAdapter implements ComponentListener {
         @Override
         public void windowStateChanged(WindowEvent e) {
@@ -258,5 +260,5 @@
             Component c = e.getComponent();
             if (c instanceof JFrame && c.isVisible()) {
-                if (windowState == JFrame.NORMAL) {
+                if (windowState == Frame.NORMAL) {
                     geometry = new WindowGeometry((JFrame) c);
                 } else {
Index: trunk/src/org/openstreetmap/josm/gui/MainInitialization.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainInitialization.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/MainInitialization.java	(revision 19050)
@@ -158,5 +158,5 @@
     }
 
-    private static class JosmSettingsAdapter implements SettingsAdapter {
+    private static final class JosmSettingsAdapter implements SettingsAdapter {
 
         @Override
Index: trunk/src/org/openstreetmap/josm/gui/MapMover.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 19050)
@@ -7,4 +7,5 @@
 import java.awt.Point;
 import java.awt.event.ActionEvent;
+import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
@@ -88,5 +89,5 @@
                 EastNorth center = nc.getCenter();
                 EastNorth newcenter = nc.getEastNorth(nc.getWidth()/2+nc.getWidth()/5, nc.getHeight()/2+nc.getHeight()/5);
-                switch(action) {
+                switch (action) {
                 case "left":
                     nc.zoomTo(new EastNorth(2*center.east()-newcenter.east(), center.north()));
@@ -173,9 +174,9 @@
     @Override
     public void mouseDragged(MouseEvent e) {
-        int offMask = MouseEvent.BUTTON1_DOWN_MASK | MouseEvent.BUTTON2_DOWN_MASK;
-        boolean allowMovement = (e.getModifiersEx() & (MouseEvent.BUTTON3_DOWN_MASK | offMask)) == MouseEvent.BUTTON3_DOWN_MASK;
+        int offMask = InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON2_DOWN_MASK;
+        boolean allowMovement = (e.getModifiersEx() & (InputEvent.BUTTON3_DOWN_MASK | offMask)) == InputEvent.BUTTON3_DOWN_MASK;
         if (PlatformManager.isPlatformOsx()) {
             MapFrame map = MainApplication.getMap();
-            int macMouseMask = MouseEvent.CTRL_DOWN_MASK | MouseEvent.BUTTON1_DOWN_MASK;
+            int macMouseMask = InputEvent.CTRL_DOWN_MASK | InputEvent.BUTTON1_DOWN_MASK;
             boolean macMovement = e.getModifiersEx() == macMouseMask;
             boolean allowedMode = !map.mapModeSelect.equals(map.mapMode)
@@ -204,6 +205,6 @@
     @Override
     public void mousePressed(MouseEvent e) {
-        int offMask = MouseEvent.BUTTON1_DOWN_MASK | MouseEvent.BUTTON2_DOWN_MASK;
-        int macMouseMask = MouseEvent.CTRL_DOWN_MASK | MouseEvent.BUTTON1_DOWN_MASK;
+        int offMask = InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON2_DOWN_MASK;
+        int macMouseMask = InputEvent.CTRL_DOWN_MASK | InputEvent.BUTTON1_DOWN_MASK;
         if ((e.getButton() == MouseEvent.BUTTON3 && (e.getModifiersEx() & offMask) == 0) ||
                 (PlatformManager.isPlatformOsx() && e.getModifiersEx() == macMouseMask)) {
@@ -253,5 +254,5 @@
     @Override
     public void mouseWheelMoved(MouseWheelEvent e) {
-        int rotation = PROP_ZOOM_REVERSE_WHEEL.get() ? -e.getWheelRotation() : e.getWheelRotation();
+        int rotation = Boolean.TRUE.equals(PROP_ZOOM_REVERSE_WHEEL.get()) ? -e.getWheelRotation() : e.getWheelRotation();
         nc.zoomManyTimes(e.getX(), e.getY(), rotation);
     }
@@ -268,5 +269,5 @@
         // Is only the selected mouse button pressed?
         if (PlatformManager.isPlatformOsx()) {
-            if (e.getModifiersEx() == MouseEvent.CTRL_DOWN_MASK) {
+            if (e.getModifiersEx() == InputEvent.CTRL_DOWN_MASK) {
                 doMoveForDrag(e);
             } else {
Index: trunk/src/org/openstreetmap/josm/gui/MenuScroller.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MenuScroller.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/MenuScroller.java	(revision 19050)
@@ -350,5 +350,5 @@
     }
 
-    private class MenuScrollListener implements PopupMenuListener {
+    private final class MenuScrollListener implements PopupMenuListener {
 
         @Override
@@ -453,5 +453,5 @@
     }
 
-    private class MouseScrollListener implements MouseWheelListener {
+    private final class MouseScrollListener implements MouseWheelListener {
         @Override
         public void mouseWheelMoved(MouseWheelEvent mwe) {
Index: trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 19050)
@@ -1061,5 +1061,6 @@
 
         if (ds != null) {
-            double dist, snapDistanceSq = PROP_SNAP_DISTANCE.get();
+            double dist;
+            double snapDistanceSq = PROP_SNAP_DISTANCE.get();
             snapDistanceSq *= snapDistanceSq;
 
@@ -1192,5 +1193,7 @@
 
         if (preferredRefs != null && preferredRefs.isEmpty()) preferredRefs = null;
-        Node ntsel = null, ntnew = null, ntref = null;
+        Node ntsel = null;
+        Node ntnew = null;
+        Node ntref = null;
         boolean useNtsel = useSelected;
         double minDistSq = nlists.keySet().iterator().next();
@@ -1788,5 +1791,5 @@
      * so that registered {@link PrimitiveHoverListener}s can be notified.
      */
-    private class PrimitiveHoverMouseListener extends MouseAdapter {
+    private final class PrimitiveHoverMouseListener extends MouseAdapter {
         @Override
         public void mouseMoved(MouseEvent e) {
Index: trunk/src/org/openstreetmap/josm/gui/NotificationManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NotificationManager.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/NotificationManager.java	(revision 19050)
@@ -183,5 +183,5 @@
     }
 
-    private class PauseFinishedEvent implements ActionListener {
+    private final class PauseFinishedEvent implements ActionListener {
 
         @Override
@@ -194,5 +194,5 @@
     }
 
-    private class UnfreezeEvent implements ActionListener {
+    private final class UnfreezeEvent implements ActionListener {
 
         @Override
Index: trunk/src/org/openstreetmap/josm/gui/SelectionManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 19050)
@@ -79,5 +79,5 @@
      * @author Michael Zangl
      */
-    private class SelectionHintLayer extends AbstractMapViewPaintable {
+    private final class SelectionHintLayer extends AbstractMapViewPaintable {
         @Override
         public void paint(Graphics2D g, MapView mv, Bounds bbox) {
@@ -186,5 +186,5 @@
         if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() > 1 && MainApplication.getLayerManager().getActiveDataSet() != null) {
             SelectByInternalPointAction.performSelection(MainApplication.getMap().mapView.getEastNorth(e.getX(), e.getY()),
-                    (e.getModifiersEx() & MouseEvent.SHIFT_DOWN_MASK) != 0,
+                    (e.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) != 0,
                     (e.getModifiersEx() & PlatformManager.getPlatform().getMenuShortcutKeyMaskEx()) != 0);
         } else if (e.getButton() == MouseEvent.BUTTON1) {
@@ -201,5 +201,5 @@
     @Override
     public void mouseDragged(MouseEvent e) {
-        int buttonPressed = e.getModifiersEx() & (MouseEvent.BUTTON1_DOWN_MASK | MouseEvent.BUTTON3_DOWN_MASK);
+        int buttonPressed = e.getModifiersEx() & (InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON3_DOWN_MASK);
 
         if (buttonPressed != 0) {
@@ -210,9 +210,9 @@
         }
 
-        if (buttonPressed == MouseEvent.BUTTON1_DOWN_MASK) {
+        if (buttonPressed == InputEvent.BUTTON1_DOWN_MASK) {
             mousePos = e.getPoint();
             addLassoPoint(e.getPoint());
             selectionAreaChanged();
-        } else if (buttonPressed == (MouseEvent.BUTTON1_DOWN_MASK | MouseEvent.BUTTON3_DOWN_MASK)) {
+        } else if (buttonPressed == (InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON3_DOWN_MASK)) {
             moveSelection(e.getX()-mousePos.x, e.getY()-mousePos.y);
             mousePos = e.getPoint();
@@ -253,5 +253,5 @@
 
         // Left mouse was released while right is still pressed.
-        boolean rightMouseStillPressed = (e.getModifiersEx() & MouseEvent.BUTTON3_DOWN_MASK) != 0;
+        boolean rightMouseStillPressed = (e.getModifiersEx() & InputEvent.BUTTON3_DOWN_MASK) != 0;
 
         if (!rightMouseStillPressed) {
@@ -317,5 +317,5 @@
     @Override
     public void propertyChange(PropertyChangeEvent evt) {
-        if ("active".equals(evt.getPropertyName()) && !(Boolean) evt.getNewValue()) {
+        if ("active".equals(evt.getPropertyName()) && Boolean.FALSE.equals(evt.getNewValue())) {
             abortSelecting();
         }
Index: trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapController.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapController.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapController.java	(revision 19050)
@@ -45,5 +45,5 @@
     private static final double ACCELERATION = 0.10;
 
-    private static final int MAC_MOUSE_BUTTON3_MASK = MouseEvent.CTRL_DOWN_MASK | MouseEvent.BUTTON1_DOWN_MASK;
+    private static final int MAC_MOUSE_BUTTON3_MASK = InputEvent.CTRL_DOWN_MASK | InputEvent.BUTTON1_DOWN_MASK;
 
     private static final String[] N = {
@@ -73,5 +73,5 @@
             for (int i = 0; i < N.length; ++i) {
                 contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-                        KeyStroke.getKeyStroke(K[i], KeyEvent.CTRL_DOWN_MASK), "MapMover.Zoomer." + N[i]);
+                        KeyStroke.getKeyStroke(K[i], InputEvent.CTRL_DOWN_MASK), "MapMover.Zoomer." + N[i]);
             }
         }
@@ -130,5 +130,5 @@
     @Override
     public void mouseDragged(MouseEvent e) {
-        if (iStartSelectionPoint != null && (e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == MouseEvent.BUTTON1_DOWN_MASK
+        if (iStartSelectionPoint != null && (e.getModifiersEx() & InputEvent.BUTTON1_DOWN_MASK) == InputEvent.BUTTON1_DOWN_MASK
                 && !(PlatformManager.isPlatformOsx() && e.getModifiersEx() == MAC_MOUSE_BUTTON3_MASK)) {
             iEndSelectionPoint = e.getPoint();
@@ -195,5 +195,5 @@
 
     /** Moves the map depending on which cursor keys are pressed (or not) */
-    private class MoveTask extends TimerTask {
+    private final class MoveTask extends TimerTask {
         /** The current x speed (pixels per timer interval) */
         private double speedX = 1;
@@ -212,12 +212,12 @@
          * executed via timer) or disabled
          */
-        protected boolean scheduled;
-
-        protected void setDirectionX(int directionX) {
+        boolean scheduled;
+
+        void setDirectionX(int directionX) {
             this.directionX = directionX;
             updateScheduleStatus();
         }
 
-        protected void setDirectionY(int directionY) {
+        void setDirectionY(int directionY) {
             this.directionY = directionY;
             updateScheduleStatus();
@@ -301,5 +301,5 @@
     }
 
-    private class ZoomInAction extends AbstractAction {
+    private final class ZoomInAction extends AbstractAction {
 
         @Override
@@ -309,5 +309,5 @@
     }
 
-    private class ZoomOutAction extends AbstractAction {
+    private final class ZoomOutAction extends AbstractAction {
 
         @Override
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java	(revision 19050)
@@ -111,5 +111,5 @@
             renderEmptyRow();
         } else {
-            switch(column) {
+            switch (column) {
             case 0:
                 renderRowId(getModel(table), row);
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java	(revision 19050)
@@ -180,5 +180,5 @@
      */
     public LatLon getMergedCoords() {
-        switch(coordMergeDecision) {
+        switch (coordMergeDecision) {
         case KEEP_MINE: return myCoords;
         case KEEP_THEIR: return theirCoords;
@@ -221,5 +221,5 @@
      */
     public Boolean getMergedDeletedState() {
-        switch(deletedMergeDecision) {
+        switch (deletedMergeDecision) {
         case KEEP_MINE: return myDeletedState;
         case KEEP_THEIR: return theirDeletedState;
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java	(revision 19050)
@@ -125,5 +125,5 @@
             renderBackground(getModel(table), member, row, column, isSelected);
             renderForeground(getModel(table), member, row, column, isSelected);
-            switch(column) {
+            switch (column) {
             case 0:
                 renderRowId(row);
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeTableCellRenderer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeTableCellRenderer.java	(revision 19050)
@@ -35,5 +35,5 @@
 
         TagMergeItem item = (TagMergeItem) value;
-        switch(col) {
+        switch (col) {
         case 0:
             renderKey(item, isSelected);
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java	(revision 19050)
@@ -150,5 +150,5 @@
             editorModel.addElement(MultiValueDecisionType.KEEP_ALL);
         }
-        switch(decision.getDecisionType()) {
+        switch (decision.getDecisionType()) {
         case UNDECIDED:
             editor.setSelectedItem(MultiValueDecisionType.UNDECIDED);
@@ -220,5 +220,5 @@
                 setText((String) value);
             } else if (value instanceof MultiValueDecisionType) {
-                switch((MultiValueDecisionType) value) {
+                switch ((MultiValueDecisionType) value) {
                 case UNDECIDED:
                     setText(tr("Choose a value"));
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java	(revision 19050)
@@ -155,5 +155,5 @@
         renderColors(decision, isSelected, conflict);
         renderToolTipText(decision);
-        switch(column) {
+        switch (column) {
         case 0:
             if (decision.isDecided()) {
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueResolutionDecision.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueResolutionDecision.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueResolutionDecision.java	(revision 19050)
@@ -143,5 +143,5 @@
      */
     public String getChosenValue() {
-        switch(type) {
+        switch (type) {
         case UNDECIDED: throw new IllegalStateException(tr("Not decided yet"));
         case KEEP_ONE: return value;
@@ -294,5 +294,5 @@
      */
     public Tag getResolution() {
-        switch(type) {
+        switch (type) {
         case SUM_ALL_NUMERIC: return new Tag(getKey(), tags.getSummedValues(getKey()));
         case KEEP_ALL: return new Tag(getKey(), tags.getJoinedValues(getKey()));
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java	(revision 19050)
@@ -429,5 +429,5 @@
                 }
                 String msg;
-                switch(type) {
+                switch (type) {
                 case NODE: msg = trn("{0} node", "{0} nodes", numPrimitives, numPrimitives); break;
                 case WAY: msg = trn("{0} way", "{0} ways", numPrimitives, numPrimitives); break;
@@ -461,5 +461,5 @@
                 StatisticsInfo info = (StatisticsInfo) value;
 
-                switch(column) {
+                switch (column) {
                 case 0: renderNumTags(info); break;
                 case 1: renderFrom(info); break;
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(revision 19050)
@@ -106,11 +106,11 @@
 
         RelationMemberConflictDecision d = decisions.get(row);
-        switch(column) {
+        switch (column) {
         case 0: /* relation */ return d.getRelation();
         case 1: /* pos */ return Integer.toString(d.getPos() + 1); // position in "user space" starting at 1
         case 2: /* role */ return d.getRole();
         case 3: /* original */ return d.getOriginalPrimitive();
-        case 4: /* decision keep */ return RelationMemberConflictDecisionType.KEEP.equals(d.getDecision());
-        case 5: /* decision remove */ return RelationMemberConflictDecisionType.REMOVE.equals(d.getDecision());
+        case 4: /* decision keep */ return RelationMemberConflictDecisionType.KEEP == d.getDecision();
+        case 5: /* decision remove */ return RelationMemberConflictDecisionType.REMOVE == d.getDecision();
         }
         return null;
@@ -120,5 +120,5 @@
     public void setValueAt(Object value, int row, int column) {
         RelationMemberConflictDecision d = decisions.get(row);
-        switch(column) {
+        switch (column) {
         case 2: /* role */
             d.setRole((String) value);
@@ -200,11 +200,11 @@
         decisions.clear();
         this.relations = new HashSet<>(references.size());
-        final Collection<OsmPrimitive> primitives = new HashSet<>();
+        final Collection<OsmPrimitive> newPrimitives = new HashSet<>();
         for (RelationToChildReference reference: references) {
             decisions.add(new RelationMemberConflictDecision(reference.getParent(), reference.getPosition()));
             relations.add(reference.getParent());
-            primitives.add(reference.getChild());
-        }
-        this.primitives = primitives;
+            newPrimitives.add(reference.getChild());
+        }
+        this.primitives = newPrimitives;
         refresh();
     }
@@ -249,5 +249,5 @@
                     final OsmPrimitive primitive = decision.getOriginalPrimitive();
                     if (!decisionsByPrimitive.containsKey(primitive)) {
-                        decisionsByPrimitive.put(primitive, new ArrayList<RelationMemberConflictDecision>());
+                        decisionsByPrimitive.put(primitive, new ArrayList<>());
                     }
                     decisionsByPrimitive.get(primitive).add(decision);
@@ -263,10 +263,10 @@
                         .collect(Collectors.toList());
                 while (iterators.stream().allMatch(Iterator::hasNext)) {
-                    final List<RelationMemberConflictDecision> decisions = new ArrayList<>();
+                    final List<RelationMemberConflictDecision> conflictDecisions = new ArrayList<>();
                     final Collection<String> roles = new HashSet<>();
                     final Collection<Integer> indices = new TreeSet<>();
                     for (Iterator<RelationMemberConflictDecision> it : iterators) {
                         final RelationMemberConflictDecision decision = it.next();
-                        decisions.add(decision);
+                        conflictDecisions.add(decision);
                         roles.add(decision.getRole());
                         indices.add(decision.getPos());
@@ -276,6 +276,6 @@
                         continue;
                     }
-                    decisions.get(0).decide(RelationMemberConflictDecisionType.KEEP);
-                    for (RelationMemberConflictDecision decision : decisions.subList(1, decisions.size())) {
+                    conflictDecisions.get(0).decide(RelationMemberConflictDecisionType.KEEP);
+                    for (RelationMemberConflictDecision decision : conflictDecisions.subList(1, conflictDecisions.size())) {
                         decision.decide(RelationMemberConflictDecisionType.REMOVE);
                     }
@@ -372,5 +372,5 @@
                 modifiedMemberList.add(member);
             } else {
-                switch(decision.getDecision()) {
+                switch (decision.getDecision()) {
                 case KEEP:
                     final RelationMember newMember = new RelationMember(decision.getRole(), newPrimitive);
@@ -410,5 +410,5 @@
                 continue;
             }
-            switch(decision.getDecision()) {
+            switch (decision.getDecision()) {
             case REMOVE: return true;
             case KEEP:
Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java	(revision 19050)
@@ -176,5 +176,5 @@
         } else if (value instanceof MultiValueDecisionType) {
             MultiValueDecisionType type = (MultiValueDecisionType) value;
-            switch(type) {
+            switch (type) {
             case KEEP_NONE:
                 decision.keepNone();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 19050)
@@ -6,4 +6,5 @@
 import java.awt.Component;
 import java.awt.Dimension;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
@@ -120,8 +121,8 @@
         treesPanel.add(spacer, GBC.eol());
         spacer.setVisible(false);
-        treesPanel.add(undoTree, GBC.eol().fill(GBC.HORIZONTAL));
+        treesPanel.add(undoTree, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
         separator.setVisible(false);
-        treesPanel.add(separator, GBC.eol().fill(GBC.HORIZONTAL));
-        treesPanel.add(redoTree, GBC.eol().fill(GBC.HORIZONTAL));
+        treesPanel.add(separator, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
+        treesPanel.add(redoTree, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
         treesPanel.add(Box.createRigidArea(new Dimension(0, 0)), GBC.std().weight(0, 1));
         treesPanel.setBackground(redoTree.getBackground());
@@ -146,5 +147,5 @@
     }
 
-    private static class CommandCellRenderer extends DefaultTreeCellRenderer {
+    private static final class CommandCellRenderer extends DefaultTreeCellRenderer {
         @Override
         public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row,
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java	(revision 19050)
@@ -16,4 +16,5 @@
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
+import javax.swing.SwingConstants;
 
 import org.openstreetmap.josm.data.UndoRedoHandler;
@@ -34,5 +35,5 @@
     /** the conflict resolver component */
     private final ConflictResolver resolver = new ConflictResolver();
-    private final JLabel titleLabel = new JLabel("", null, JLabel.CENTER);
+    private final JLabel titleLabel = new JLabel("", null, SwingConstants.CENTER);
 
     private final ApplyResolutionAction applyResolutionAction = new ApplyResolutionAction();
@@ -196,5 +197,5 @@
                         options[1]
                 );
-                switch(ret) {
+                switch (ret) {
                 case JOptionPane.YES_OPTION:
                     buttonAction(1, evt);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java	(revision 19050)
@@ -215,5 +215,5 @@
      */
     public static class RelationMemberTableModel extends DefaultTableModel {
-        private static class RelationToChildReferenceComparator implements Comparator<RelationToChildReference>, Serializable {
+        private static final class RelationToChildReferenceComparator implements Comparator<RelationToChildReference>, Serializable {
             private static final long serialVersionUID = 1L;
             @Override
@@ -292,5 +292,5 @@
             if (data == null) return null;
             RelationToChildReference ref = data.get(rowIndex);
-            switch(columnIndex) {
+            switch (columnIndex) {
             case 0: return ref.getChild();
             case 1: return ref.getParent();
@@ -423,5 +423,5 @@
             }
             Pair<Relation, Boolean> ref = this.data.get(rowIndex);
-            switch(columnIndex) {
+            switch (columnIndex) {
             case 0: return ref.a;
             case 1: return ref.b;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 19050)
@@ -695,7 +695,7 @@
     }
 
-    private class LayerNameCellRenderer extends DefaultTableCellRenderer {
-
-        protected boolean isActiveLayer(Layer layer) {
+    private final class LayerNameCellRenderer extends DefaultTableCellRenderer {
+
+        boolean isActiveLayer(Layer layer) {
             return getLayerManager().getActiveLayer() == layer;
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 19050)
@@ -8,4 +8,5 @@
 import java.awt.Dimension;
 import java.awt.Font;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
@@ -122,5 +123,5 @@
 
         cbWireframe = new JCheckBox();
-        JLabel wfLabel = new JLabel(tr("Wireframe View"), ImageProvider.get("dialogs/mappaint", "wireframe_small"), JLabel.HORIZONTAL);
+        JLabel wfLabel = new JLabel(tr("Wireframe View"), ImageProvider.get("dialogs/mappaint", "wireframe_small"), SwingConstants.HORIZONTAL);
         wfLabel.setFont(wfLabel.getFont().deriveFont(Font.PLAIN));
         wfLabel.setLabelFor(cbWireframe);
@@ -296,5 +297,5 @@
     }
 
-    private class StyleSourceRenderer extends DefaultTableCellRenderer {
+    private final class StyleSourceRenderer extends DefaultTableCellRenderer {
         @Override
         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
@@ -575,5 +576,5 @@
                 tabs.setEnabledAt(pos, false);
             } else {
-                JLabel lblErrors = new JLabel(tr(title), icon, JLabel.HORIZONTAL);
+                JLabel lblErrors = new JLabel(tr(title), icon, SwingConstants.HORIZONTAL);
                 lblErrors.setLabelFor(pErrors);
                 tabs.setTabComponentAt(pos, lblErrors);
@@ -601,5 +602,5 @@
             text.append(tableRow(tr("Style is currently active?"), s.active ? tr("Yes") : tr("No")))
                 .append("</table>");
-            p.add(new JScrollPane(new HtmlPanel(text.toString())), GBC.eol().fill(GBC.BOTH));
+            p.add(new JScrollPane(new HtmlPanel(text.toString())), GBC.eol().fill(GridBagConstraints.BOTH));
             return p;
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java	(revision 19050)
@@ -93,5 +93,5 @@
     }
 
-    private static class CellRenderer implements ListCellRenderer<JMenuItem> {
+    private static final class CellRenderer implements ListCellRenderer<JMenuItem> {
 
         @Override
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 19050)
@@ -498,5 +498,5 @@
             int numRelations = 0;
             for (OsmPrimitive p: selection) {
-                switch(p.getType()) {
+                switch (p.getType()) {
                 case NODE: numNodes++; break;
                 case WAY: numWays++; break;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 19050)
@@ -351,5 +351,5 @@
         public Object getValueAt(int row, int column) {
             UserInfo info = data.get(row);
-            switch(column) {
+            switch (column) {
             case 0: /* author */ return info.getName() == null ? "" : info.getName();
             case 1: /* count */ return info.count;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheTableCellRenderer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheTableCellRenderer.java	(revision 19050)
@@ -57,5 +57,5 @@
         renderColors(isSelected);
         Changeset cs = (Changeset) value;
-        switch(column) {
+        switch (column) {
         case 0: /* id */ renderId(cs.getId()); break;
         case 1: /* upload comment */ renderUploadComment(cs); break;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableCellRenderer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableCellRenderer.java	(revision 19050)
@@ -22,5 +22,5 @@
      */
     protected void renderModificationType(ChangesetModificationType type) {
-        switch(type) {
+        switch (type) {
         case CREATED: setText(tr("Created")); break;
         case UPDATED: setText(tr("Updated")); break;
@@ -37,5 +37,5 @@
         reset();
         renderColors(isSelected);
-        switch(column) {
+        switch (column) {
         case 0:
             if (value instanceof ChangesetModificationType) {
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java	(revision 19050)
@@ -114,5 +114,5 @@
     @Override
     public Object getValueAt(int row, int col) {
-        switch(col) {
+        switch (col) {
         case 0: return data.get(row).getModificationType();
         default: return data.get(row).getPrimitive();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionTableCellRenderer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionTableCellRenderer.java	(revision 19050)
@@ -25,5 +25,5 @@
         reset(comp, true);
         renderColors(comp, isSelected);
-        switch(column) {
+        switch (column) {
         case 0:
             renderInstant((Instant) value);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java	(revision 19050)
@@ -165,5 +165,5 @@
         } else {
             try {
-                q = BasicQuery.valueOf(BasicQuery.class, value);
+                q = BasicQuery.valueOf(value);
             } catch (IllegalArgumentException e) {
                 Logging.log(Logging.LEVEL_WARN, tr("Unexpected value for preference ''{0}'', got ''{1}''. Resetting to default query.",
@@ -194,5 +194,5 @@
         if (q == null)
             return query;
-        switch(q) {
+        switch (q) {
         case MOST_RECENT_CHANGESETS:
             break;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java	(revision 19050)
@@ -126,5 +126,5 @@
         if (isCanceled())
             return null;
-        switch(tpQueryPanels.getSelectedIndex()) {
+        switch (tpQueryPanels.getSelectedIndex()) {
         case 0:
             return pnlBasicChangesetQueries.buildChangesetQuery();
@@ -186,5 +186,5 @@
         public void actionPerformed(ActionEvent arg0) {
             try {
-                switch(tpQueryPanels.getSelectedIndex()) {
+                switch (tpQueryPanels.getSelectedIndex()) {
                 case 0:
                     // currently, query specifications can't be invalid in the basic query panel.
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MergeGpxLayerDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MergeGpxLayerDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MergeGpxLayerDialog.java	(revision 19050)
@@ -5,4 +5,5 @@
 
 import java.awt.Component;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
@@ -58,9 +59,9 @@
         p.add(new JLabel("<html>" +
                 tr("Please select the order of the selected layers:<br>Tracks will be cut, when timestamps of higher layers are overlapping.") +
-                "</html>"), GBC.std(0, 0).fill(GBC.HORIZONTAL).span(2));
+                "</html>"), GBC.std(0, 0).fill(GridBagConstraints.HORIZONTAL).span(2));
 
         c = new JCheckBox(tr("Connect overlapping tracks on cuts"));
         c.setSelected(Config.getPref().getBoolean("mergelayer.gpx.connect", true));
-        p.add(c, GBC.std(0, 1).fill(GBC.HORIZONTAL).span(2));
+        p.add(c, GBC.std(0, 1).fill(GridBagConstraints.HORIZONTAL).span(2));
 
         model = new GpxLayersTableModel(layers);
@@ -85,6 +86,6 @@
         btnDown.setIcon(ImageProvider.get("dialogs", "down", ImageSizes.SMALLICON));
 
-        p.add(btnUp, GBC.std(0, 3).fill(GBC.HORIZONTAL));
-        p.add(btnDown, GBC.std(1, 3).fill(GBC.HORIZONTAL));
+        p.add(btnUp, GBC.std(0, 3).fill(GridBagConstraints.HORIZONTAL));
+        p.add(btnDown, GBC.std(1, 3).fill(GridBagConstraints.HORIZONTAL));
 
         btnUp.addActionListener(new MoveLayersActionListener(true));
@@ -152,5 +153,5 @@
     }
 
-    private class RowSelectionChangedListener implements ListSelectionListener {
+    private final class RowSelectionChangedListener implements ListSelectionListener {
 
         @Override
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 19050)
@@ -8,4 +8,5 @@
 import java.awt.Container;
 import java.awt.Font;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Point;
@@ -101,7 +102,7 @@
 import org.openstreetmap.josm.gui.dialogs.relation.RelationPopupMenus;
 import org.openstreetmap.josm.gui.help.HelpUtil;
+import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
-import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
@@ -293,16 +294,16 @@
         boolean presetsVisible = Config.getPref().getBoolean("properties.presets.visible", true);
         if (presetsVisible && top) {
-            bothTables.add(presets, GBC.std().fill(GBC.HORIZONTAL).insets(5, 2, 5, 2).anchor(GBC.NORTHWEST));
+            bothTables.add(presets, GBC.std().fill(GridBagConstraints.HORIZONTAL).insets(5, 2, 5, 2).anchor(GridBagConstraints.NORTHWEST));
             double epsilon = Double.MIN_VALUE; // need to set a weight or else anchor value is ignored
-            bothTables.add(pluginHook, GBC.eol().insets(0, 1, 1, 1).anchor(GBC.NORTHEAST).weight(epsilon, epsilon));
+            bothTables.add(pluginHook, GBC.eol().insets(0, 1, 1, 1).anchor(GridBagConstraints.NORTHEAST).weight(epsilon, epsilon));
         }
         bothTables.add(selectSth, GBC.eol().fill().insets(10, 10, 10, 10));
-        bothTables.add(tagTableFilter, GBC.eol().fill(GBC.HORIZONTAL));
-        bothTables.add(tagTable.getTableHeader(), GBC.eol().fill(GBC.HORIZONTAL));
-        bothTables.add(tagTable, GBC.eol().fill(GBC.BOTH));
-        bothTables.add(membershipTable.getTableHeader(), GBC.eol().fill(GBC.HORIZONTAL));
-        bothTables.add(membershipTable, GBC.eol().fill(GBC.BOTH));
+        bothTables.add(tagTableFilter, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
+        bothTables.add(tagTable.getTableHeader(), GBC.eol().fill(GridBagConstraints.HORIZONTAL));
+        bothTables.add(tagTable, GBC.eol().fill(GridBagConstraints.BOTH));
+        bothTables.add(membershipTable.getTableHeader(), GBC.eol().fill(GridBagConstraints.HORIZONTAL));
+        bothTables.add(membershipTable, GBC.eol().fill(GridBagConstraints.BOTH));
         if (presetsVisible && !top) {
-            bothTables.add(presets, GBC.eol().fill(GBC.HORIZONTAL).insets(5, 2, 5, 2));
+            bothTables.add(presets, GBC.eol().fill(GridBagConstraints.HORIZONTAL).insets(5, 2, 5, 2));
         }
 
@@ -1504,5 +1505,5 @@
      * Clears the row selection when it is filtered away by the row sorter.
      */
-    private class RemoveHiddenSelection implements ListSelectionListener, RowSorterListener {
+    private final class RemoveHiddenSelection implements ListSelectionListener, RowSorterListener {
 
         void removeHiddenSelection() {
@@ -1527,5 +1528,5 @@
     }
 
-    private class HoverPreviewPropListener implements ValueChangeListener<Boolean> {
+    private final class HoverPreviewPropListener implements ValueChangeListener<Boolean> {
         @Override
         public void valueChanged(ValueChangeEvent<? extends Boolean> e) {
@@ -1542,5 +1543,5 @@
      * Otherwise user would need to change selection to see the preference change take effect.
      */
-    private class HoverPreviewPreferSelectionPropListener implements ValueChangeListener<Boolean> {
+    private final class HoverPreviewPreferSelectionPropListener implements ValueChangeListener<Boolean> {
         @Override
         public void valueChanged(ValueChangeEvent<? extends Boolean> e) {
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 19050)
@@ -33,4 +33,5 @@
 
 import javax.swing.AbstractAction;
+import javax.swing.Action;
 import javax.swing.BorderFactory;
 import javax.swing.InputMap;
@@ -48,4 +49,5 @@
 import javax.swing.JToolBar;
 import javax.swing.KeyStroke;
+import javax.swing.SwingConstants;
 import javax.swing.event.TableModelListener;
 
@@ -670,5 +672,5 @@
          */
         LeftButtonToolbar(IRelationEditorActionAccess editorAccess) {
-            setOrientation(JToolBar.VERTICAL);
+            setOrientation(SwingConstants.VERTICAL);
             setFloatable(false);
 
@@ -703,13 +705,13 @@
 
 
-            InputMap inputMap = editorAccess.getMemberTable().getInputMap(MemberTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+            InputMap inputMap = editorAccess.getMemberTable().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
             inputMap.put((KeyStroke) new RemoveAction(editorAccess, "removeSelected")
-                    .getValue(AbstractAction.ACCELERATOR_KEY), "removeSelected");
+                    .getValue(Action.ACCELERATOR_KEY), "removeSelected");
             inputMap.put((KeyStroke) new MoveUpAction(editorAccess, "moveUp")
-                    .getValue(AbstractAction.ACCELERATOR_KEY), "moveUp");
+                    .getValue(Action.ACCELERATOR_KEY), "moveUp");
             inputMap.put((KeyStroke) new MoveDownAction(editorAccess, "moveDown")
-                    .getValue(AbstractAction.ACCELERATOR_KEY), "moveDown");
+                    .getValue(Action.ACCELERATOR_KEY), "moveDown");
             inputMap.put((KeyStroke) new DownloadIncompleteMembersAction(
-                    editorAccess, "downloadIncomplete").getValue(AbstractAction.ACCELERATOR_KEY), "downloadIncomplete");
+                    editorAccess, "downloadIncomplete").getValue(Action.ACCELERATOR_KEY), "downloadIncomplete");
         }
     }
@@ -722,5 +724,5 @@
      */
     protected static JToolBar buildSelectionControlButtonToolbar(IRelationEditorActionAccess editorAccess) {
-        JToolBar tb = new JToolBar(JToolBar.VERTICAL);
+        JToolBar tb = new JToolBar(SwingConstants.VERTICAL);
         tb.setFloatable(false);
 
@@ -849,5 +851,5 @@
                             tr("Remove them, clean up relation")
             );
-            switch(ret) {
+            switch (ret) {
             case ConditionalOptionPaneUtil.DIALOG_DISABLED_OPTION:
             case JOptionPane.CLOSED_OPTION:
@@ -928,5 +930,5 @@
                 null
         );
-        switch(ret) {
+        switch (ret) {
         case ConditionalOptionPaneUtil.DIALOG_DISABLED_OPTION:
         case JOptionPane.YES_OPTION:
@@ -1036,5 +1038,5 @@
     }
 
-    private class RelationEditorActionAccess implements IRelationEditorActionAccess {
+    private final class RelationEditorActionAccess implements IRelationEditorActionAccess {
 
         @Override
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SetRoleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SetRoleAction.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SetRoleAction.java	(revision 19050)
@@ -70,5 +70,5 @@
                 options[0]
         );
-        switch(ret) {
+        switch (ret) {
         case JOptionPane.YES_OPTION:
         case ConditionalOptionPaneUtil.DIALOG_DISABLED_OPTION:
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java	(revision 19050)
@@ -173,5 +173,5 @@
         // Dispatch members to the first adequate sorter
         for (RelationMember m : relationMembers) {
-            var wasAdded = false;
+            boolean wasAdded = false;
             for (AdditionalSorter sorter : ADDITIONAL_SORTERS) {
                 if (sorter.acceptsMember(relationMembers, m)) {
Index: trunk/src/org/openstreetmap/josm/gui/download/OSMDownloadSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/OSMDownloadSource.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/download/OSMDownloadSource.java	(revision 19050)
@@ -9,4 +9,5 @@
 import java.awt.FlowLayout;
 import java.awt.Font;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.lang.reflect.InvocationTargetException;
@@ -218,5 +219,5 @@
 
             downloadSourcesPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
-            add(downloadSourcesPanel, GBC.eol().fill(GBC.HORIZONTAL));
+            add(downloadSourcesPanel, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
             updateSources();
 
@@ -224,5 +225,5 @@
             JPanel sizeCheckPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
             sizeCheckPanel.add(sizeCheck);
-            add(sizeCheckPanel, GBC.eol().fill(GBC.HORIZONTAL));
+            add(sizeCheckPanel, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
 
             setMinimumSize(new Dimension(450, 115));
@@ -354,5 +355,5 @@
     }
 
-    private static class OsmDataDownloadType implements IDownloadSourceType {
+    private static final class OsmDataDownloadType implements IDownloadSourceType {
         static final BooleanProperty IS_ENABLED = new BooleanProperty("download.osm.data", true);
         JCheckBox cbDownloadOsmData;
@@ -394,5 +395,5 @@
     }
 
-    private static class GpsDataDownloadType implements IDownloadSourceType {
+    private static final class GpsDataDownloadType implements IDownloadSourceType {
         static final BooleanProperty IS_ENABLED = new BooleanProperty("download.osm.gps", false);
         private JCheckBox cbDownloadGpxData;
@@ -432,5 +433,5 @@
     }
 
-    private static class NotesDataDownloadType implements IDownloadSourceType {
+    private static final class NotesDataDownloadType implements IDownloadSourceType {
         static final BooleanProperty IS_ENABLED = new BooleanProperty("download.osm.notes", false);
         private JCheckBox cbDownloadNotes;
Index: trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(revision 19050)
@@ -7,4 +7,5 @@
 import java.awt.Component;
 import java.awt.Dimension;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
@@ -106,5 +107,5 @@
 
         lpanel.add(new JLabel(tr("Choose the server for searching:")), GBC.std(0, 0).weight(0, 0).insets(0, 0, 5, 0));
-        lpanel.add(serverComboBox, GBC.std(1, 0).fill(GBC.HORIZONTAL));
+        lpanel.add(serverComboBox, GBC.std(1, 0).fill(GridBagConstraints.HORIZONTAL));
         String s = Config.getPref().get("namefinder.server", SERVERS[0].name);
         for (int i = 0; i < SERVERS.length; ++i) {
@@ -118,7 +119,7 @@
         cbSearchExpression.setToolTipText(tr("Enter a place name to search for"));
         cbSearchExpression.getModel().prefs().load(HISTORY_KEY);
-        lpanel.add(cbSearchExpression, GBC.std(1, 1).fill(GBC.HORIZONTAL));
-
-        panel.add(lpanel, GBC.std().fill(GBC.HORIZONTAL).insets(5, 5, 0, 5));
+        lpanel.add(cbSearchExpression, GBC.std(1, 1).fill(GridBagConstraints.HORIZONTAL));
+
+        panel.add(lpanel, GBC.std().fill(GridBagConstraints.HORIZONTAL).insets(5, 5, 0, 5));
         SearchAction searchAction = new SearchAction();
         JButton btnSearch = new JButton(searchAction);
@@ -495,5 +496,5 @@
                 return this;
             SearchResult sr = (SearchResult) value;
-            switch(column) {
+            switch (column) {
             case 0:
                 setText(sr.getName());
Index: trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListTableCellRenderer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListTableCellRenderer.java	(revision 19050)
@@ -57,5 +57,5 @@
         RelationMemberData member = (RelationMemberData) diffItem.value;
         if (member != null) {
-            switch(member.getMemberType()) {
+            switch (member.getMemberType()) {
             case NODE: text = tr("Node {0}", member.getMemberId()); break;
             case WAY: text = tr("Way {0}", member.getMemberId()); break;
@@ -78,5 +78,5 @@
         Item member = (TwoColumnDiff.Item) value;
         Item.DiffItemType type = member.state;
-        switch(column) {
+        switch (column) {
         case RelationMemberTableColumnModel.INDEX_COLUMN:
             type = Item.DiffItemType.EMPTY;
Index: trunk/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java	(revision 19050)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.history;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Color;
@@ -13,6 +15,4 @@
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.gui.util.GuiHelper;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
 
 /**
@@ -51,5 +51,5 @@
         setBorder(null);
         if (model.hasTag(key)) {
-            switch(column) {
+            switch (column) {
             case TagTableColumnModel.COLUMN_KEY:
                 // the name column
Index: trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java	(revision 19050)
@@ -41,5 +41,5 @@
 /**
  * Abstract base class for the task of uploading primitives via OSM API.
- *
+ * <p>
  * Mainly handles conflicts and certain error situations.
  */
@@ -98,5 +98,5 @@
     /**
      * Synchronizes the local state of the dataset with the state on the server.
-     *
+     * <p>
      * Reuses the functionality of {@link UpdateDataAction}.
      *
@@ -121,5 +121,5 @@
             String myVersion) {
         String lbl;
-        switch(primitiveType) {
+        switch (primitiveType) {
         // CHECKSTYLE.OFF: SingleSpaceSeparator
         case NODE:     lbl = tr("Synchronize node {0} only", id); break;
@@ -164,5 +164,5 @@
                 "/Concepts/Conflict"
         );
-        switch(ret) {
+        switch (ret) {
         case 0: synchronizePrimitive(primitiveType, id); break;
         case 1: synchronizeDataSet(); break;
Index: trunk/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java	(revision 19050)
@@ -195,5 +195,5 @@
             if (e.getItemSelectable() != cbCloseAfterUpload)
                 return;
-            switch(e.getStateChange()) {
+            switch (e.getStateChange()) {
             case ItemEvent.SELECTED:
                 firePropertyChange(CLOSE_CHANGESET_AFTER_UPLOAD, false, true);
Index: trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/io/CredentialDialog.java	(revision 19050)
@@ -49,5 +49,5 @@
 /**
  * Dialog box to request username and password from the user.
- *
+ * <p>
  * The credentials can be for the OSM API (basic authentication), a different
  * host or an HTTP proxy.
@@ -370,5 +370,5 @@
     }
 
-    private static class SelectAllOnFocusHandler extends FocusAdapter {
+    private static final class SelectAllOnFocusHandler extends FocusAdapter {
         @Override
         public void focusGained(FocusEvent e) {
Index: trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java	(revision 19050)
@@ -467,5 +467,5 @@
                 Element elem = (Element) item;
 
-                switch(elementName) {
+                switch (elementName) {
                 case "var":
                     setVar(elem.getAttribute("name"), evalVars(elem.getAttribute("value")));
Index: trunk/src/org/openstreetmap/josm/gui/io/OnlineResourceMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/OnlineResourceMenu.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/io/OnlineResourceMenu.java	(revision 19050)
@@ -77,5 +77,5 @@
     }
 
-    private class ToggleMenuListener implements MenuListener {
+    private final class ToggleMenuListener implements MenuListener {
         @Override
         public void menuSelected(MenuEvent e) {
Index: trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 19050)
@@ -37,4 +37,5 @@
 import javax.swing.JScrollPane;
 import javax.swing.ListCellRenderer;
+import javax.swing.SwingConstants;
 import javax.swing.WindowConstants;
 import javax.swing.event.TableModelEvent;
@@ -132,5 +133,5 @@
                 dialog.getModel().populate(layersWithUnsavedChanges);
                 dialog.setVisible(true);
-                switch(dialog.getUserAction()) {
+                switch (dialog.getUserAction()) {
                     case PROCEED: return true;
                     case CANCEL:
@@ -182,12 +183,12 @@
 
         model.addPropertyChangeListener(saveAndProceedAction);
-        pnl.add(saveAndProceedActionButton, GBC.std(0, 0).insets(5, 5, 0, 0).fill(GBC.HORIZONTAL));
-
-        pnl.add(new JButton(saveSessionAction), GBC.std(1, 0).insets(5, 5, 5, 0).fill(GBC.HORIZONTAL));
+        pnl.add(saveAndProceedActionButton, GBC.std(0, 0).insets(5, 5, 0, 0).fill(GridBagConstraints.HORIZONTAL));
+
+        pnl.add(new JButton(saveSessionAction), GBC.std(1, 0).insets(5, 5, 5, 0).fill(GridBagConstraints.HORIZONTAL));
 
         model.addPropertyChangeListener(discardAndProceedAction);
-        pnl.add(new JButton(discardAndProceedAction), GBC.std(0, 1).insets(5, 5, 0, 5).fill(GBC.HORIZONTAL));
-
-        pnl.add(new JButton(cancelAction), GBC.std(1, 1).insets(5, 5, 5, 5).fill(GBC.HORIZONTAL));
+        pnl.add(new JButton(discardAndProceedAction), GBC.std(0, 1).insets(5, 5, 0, 5).fill(GridBagConstraints.HORIZONTAL));
+
+        pnl.add(new JButton(cancelAction), GBC.std(1, 1).insets(5, 5, 5, 5).fill(GridBagConstraints.HORIZONTAL));
 
         JPanel pnl2 = new JPanel(new BorderLayout());
@@ -267,5 +268,5 @@
             gc.weighty = 0.0;
             add(lblMessage, gc);
-            lblMessage.setHorizontalAlignment(JLabel.LEADING);
+            lblMessage.setHorizontalAlignment(SwingConstants.LEADING);
             lstLayers.setCellRenderer(new LayerCellRenderer());
             gc.gridx = 0;
@@ -377,5 +378,5 @@
 
         public void cancel() {
-            switch(model.getMode()) {
+            switch (model.getMode()) {
             case EDITING_DATA: cancelWhenInEditingModel();
                 break;
@@ -426,5 +427,5 @@
             if (evt.getPropertyName().equals(SaveLayersModel.MODE_PROP)) {
                 Mode mode = (Mode) evt.getNewValue();
-                switch(mode) {
+                switch (mode) {
                 case EDITING_DATA: setEnabled(true);
                     break;
@@ -523,5 +524,5 @@
             if (evt.getPropertyName().equals(SaveLayersModel.MODE_PROP)) {
                 SaveLayersModel.Mode mode = (SaveLayersModel.Mode) evt.getNewValue();
-                switch(mode) {
+                switch (mode) {
                 case EDITING_DATA: setEnabled(true);
                     break;
Index: trunk/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java	(revision 19050)
@@ -103,5 +103,5 @@
     public void setValueAt(Object value, int row, int column) {
         final SaveLayerInfo info = this.layerInfo.get(row);
-        switch(column) {
+        switch (column) {
         case columnFilename:
             info.setFile((File) value);
Index: trunk/src/org/openstreetmap/josm/gui/io/SaveLayersTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/SaveLayersTable.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/io/SaveLayersTable.java	(revision 19050)
@@ -26,5 +26,5 @@
         if (evt.getPropertyName().equals(SaveLayersModel.MODE_PROP)) {
             Mode mode = (Mode) evt.getNewValue();
-            switch(mode) {
+            switch (mode) {
             case EDITING_DATA: setEnabled(true);
             break;
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java	(revision 19050)
@@ -170,5 +170,5 @@
         switch (strategy.getPolicy()) {
         case AUTOMATICALLY_OPEN_NEW_CHANGESETS:
-            final var newChangeSet = new Changeset();
+            final Changeset newChangeSet = new Changeset();
             newChangeSet.setKeys(changeset.getKeys());
             closeChangeset();
@@ -372,5 +372,5 @@
             if (uploadCanceled) return;
             if (lastException == null) {
-                final var panel = new HtmlPanel(
+                final HtmlPanel panel = new HtmlPanel(
                         "<h3><a href=\"" + Config.getUrls().getBaseBrowseUrl() + "/changeset/" + changeset.getId() + "\">"
                                 + tr("Upload successful!") + "</a></h3>");
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java	(revision 19050)
@@ -212,5 +212,5 @@
         UploadStrategySpecification spec = new UploadStrategySpecification();
         if (strategy != null) {
-            switch(strategy) {
+            switch (strategy) {
             case CHUNKED_DATASET_STRATEGY:
                 spec.setStrategy(strategy).setChunkSize(getChunkSize());
@@ -389,5 +389,5 @@
             if (strategy == null)
                 return;
-            switch(strategy) {
+            switch (strategy) {
             case CHUNKED_DATASET_STRATEGY:
                 tfChunkSize.setEnabled(true);
Index: trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 19050)
@@ -1481,5 +1481,5 @@
      * Data container to hold information about a {@code TileSet} class.
      */
-    private static class TileSetInfo {
+    private static final class TileSetInfo {
         boolean hasVisibleTiles;
         boolean hasOverzoomedTiles;
@@ -2026,5 +2026,5 @@
     }
 
-    private class TileSourcePainter extends CompatibilityModeLayerPainter {
+    private final class TileSourcePainter extends CompatibilityModeLayerPainter {
         /** The memory handle that will hold our tile source. */
         private MemoryHandle<?> memory;
@@ -2072,5 +2072,5 @@
         }
 
-        protected long getEstimatedCacheSize() {
+        private long getEstimatedCacheSize() {
             return 4L * tileSource.getTileSize() * tileSource.getTileSize() * estimateTileCacheSize();
         }
Index: trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 19050)
@@ -161,5 +161,5 @@
      */
     public static ImageryLayer create(ImageryInfo info) {
-        switch(info.getImageryType()) {
+        switch (info.getImageryType()) {
         case WMS:
         case WMS_ENDPOINT:
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 19050)
@@ -67,4 +67,5 @@
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
 import org.openstreetmap.josm.gui.layer.geoimage.AdjustTimezoneAndOffsetDialog.AdjustListener;
+import org.openstreetmap.josm.gui.layer.geoimage.SynchronizeTimeFromPhotoDialog.TimeZoneItem;
 import org.openstreetmap.josm.gui.layer.gpx.GpxDataHelper;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
@@ -172,8 +173,8 @@
                 // Search whether an other layer has yet defined some bounding box.
                 // If none, we'll zoom to the bounding box of the layer with the photos.
-                var boundingBoxedLayerFound = false;
+                boolean boundingBoxedLayerFound = false;
                 for (Layer l: MainApplication.getLayerManager().getLayers()) {
                     if (l != yLayer) {
-                        final var bbox = new BoundingXYVisitor();
+                        BoundingXYVisitor bbox = new BoundingXYVisitor();
                         l.visitBoundingBox(bbox);
                         if (bbox.getBounds() != null) {
@@ -184,5 +185,5 @@
                 }
                 if (!boundingBoxedLayerFound) {
-                    final var bbox = new BoundingXYVisitor();
+                    BoundingXYVisitor bbox = new BoundingXYVisitor();
                     yLayer.visitBoundingBox(bbox);
                     MainApplication.getMap().mapView.zoomTo(bbox);
@@ -264,12 +265,12 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            final var sel = GpxDataHelper.chooseGpxDataFile();
+            File sel = GpxDataHelper.chooseGpxDataFile();
             if (sel != null) {
                 try {
                     outerPanel.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                     removeDuplicates(sel);
-                    final var data = GpxDataHelper.loadGpxData(sel);
+                    GpxData data = GpxDataHelper.loadGpxData(sel);
                     if (data != null) {
-                        final var elem = new GpxDataWrapper(sel.getName(), data, sel);
+                        GpxDataWrapper elem = new GpxDataWrapper(sel.getName(), data, sel);
                         gpxModel.addElement(elem);
                         gpxModel.setSelectedItem(elem);
@@ -299,5 +300,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            final var ed = new AdvancedCorrelationSettingsDialog(MainApplication.getMainFrame(), forceTags);
+            AdvancedCorrelationSettingsDialog ed = new AdvancedCorrelationSettingsDialog(MainApplication.getMainFrame(), forceTags);
             if (ed.showDialog().getValue() == 1) {
                 forceTags = ed.isForceTaggingSelected(); // This setting is not supposed to be saved permanently
@@ -320,7 +321,8 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            var isOk = false;
+            boolean isOk = false;
             while (!isOk) {
-                final var ed = new SynchronizeTimeFromPhotoDialog(MainApplication.getMainFrame(), yLayer.getImageData().getImages());
+                SynchronizeTimeFromPhotoDialog ed = new SynchronizeTimeFromPhotoDialog(
+                        MainApplication.getMainFrame(), yLayer.getImageData().getImages());
                 int answer = ed.showDialog().getValue();
                 if (answer != 1)
@@ -338,5 +340,5 @@
                 }
 
-                final var selectedTz = ed.getTimeZoneItem();
+                TimeZoneItem selectedTz = ed.getTimeZoneItem();
 
                 Config.getPref().put("geoimage.timezoneid", selectedTz.getID());
@@ -355,10 +357,10 @@
         @Override
         public void layerAdded(LayerAddEvent e) {
-            final var layer = e.getAddedLayer();
+            Layer layer = e.getAddedLayer();
             if (layer instanceof GpxDataContainer) {
-                final var gpx = ((GpxDataContainer) layer).getGpxData();
-                final var file = gpx.storageFile;
+                GpxData gpx = ((GpxDataContainer) layer).getGpxData();
+                File file = gpx.storageFile;
                 removeDuplicates(file);
-                final var gdw = new GpxDataWrapper(layer.getName(), gpx, file);
+                GpxDataWrapper gdw = new GpxDataWrapper(layer.getName(), gpx, file);
                 layer.addPropertyChangeListener(new GpxLayerRenamedListener(gdw));
                 gpxModel.addElement(gdw);
@@ -374,7 +376,7 @@
         @Override
         public void layerRemoving(LayerRemoveEvent e) {
-            final var layer = e.getRemovedLayer();
+            Layer layer = e.getRemovedLayer();
             if (layer instanceof GpxDataContainer) {
-                final var removedGpxData = ((GpxDataContainer) layer).getGpxData();
+                GpxData removedGpxData = ((GpxDataContainer) layer).getGpxData();
                 for (int i = gpxModel.getSize() - 1; i >= 0; i--) {
                     GpxData data = gpxModel.getElementAt(i).data;
@@ -426,6 +428,6 @@
         for (AbstractModifiableLayer cur : MainApplication.getLayerManager().getLayersOfType(AbstractModifiableLayer.class)) {
             if (cur instanceof GpxDataContainer) {
-                final var data = ((GpxDataContainer) cur).getGpxData();
-                final var gdw = new GpxDataWrapper(cur.getName(), data, data.storageFile);
+                GpxData data = ((GpxDataContainer) cur).getGpxData();
+                GpxDataWrapper gdw = new GpxDataWrapper(cur.getName(), data, data.storageFile);
                 cur.addPropertyChangeListener(new GpxLayerRenamedListener(gdw));
                 gpxModel.addElement(gdw);
@@ -469,10 +471,10 @@
     @Override
     public void actionPerformed(ActionEvent ae) {
-        final var nogdw = new NoGpxDataWrapper();
+        NoGpxDataWrapper nogdw = new NoGpxDataWrapper();
         if (gpxModel == null) {
             constructGpxModel(nogdw);
         }
 
-        final var panelCb = new JPanel();
+        JPanel panelCb = new JPanel();
 
         panelCb.add(new JLabel(tr("GPX track: ")));
@@ -483,5 +485,5 @@
         panelCb.add(cbGpx);
 
-        final var buttonOpen = new JButton(tr("Open another GPX trace"));
+        JButton buttonOpen = new JButton(tr("Open another GPX trace"));
         buttonOpen.addActionListener(new LoadGpxDataActionListener());
         panelCb.add(buttonOpen);
@@ -491,5 +493,5 @@
         panelCb.add(buttonSupport);
 
-        final var panelTf = new JPanel(new GridBagLayout());
+        JPanel panelTf = new JPanel(new GridBagLayout());
 
         timezone = loadTimezone();
@@ -503,19 +505,19 @@
         tfOffset.setText(delta.formatOffset());
 
-        final var buttonViewGpsPhoto = new JButton(tr("<html>Use photo of an accurate clock,<br>e.g. GPS receiver display</html>"));
+        JButton buttonViewGpsPhoto = new JButton(tr("<html>Use photo of an accurate clock,<br>e.g. GPS receiver display</html>"));
         buttonViewGpsPhoto.setIcon(ImageProvider.get("clock"));
         buttonViewGpsPhoto.addActionListener(new SetOffsetActionListener());
 
-        final var buttonAutoGuess = new JButton(tr("Auto-Guess"));
+        JButton buttonAutoGuess = new JButton(tr("Auto-Guess"));
         buttonAutoGuess.setToolTipText(tr("Matches first photo with first gpx point"));
         buttonAutoGuess.addActionListener(new AutoGuessActionListener());
 
-        final var buttonAdjust = new JButton(tr("Manual adjust"));
+        JButton buttonAdjust = new JButton(tr("Manual adjust"));
         buttonAdjust.addActionListener(new AdjustActionListener());
 
-        final var buttonAdvanced = new JButton(tr("Advanced settings..."));
+        JButton buttonAdvanced = new JButton(tr("Advanced settings..."));
         buttonAdvanced.addActionListener(new AdvancedSettingsActionListener());
 
-        final var labelPosition = new JLabel(tr("Override position for: "));
+        JLabel labelPosition = new JLabel(tr("Override position for: "));
 
         int numAll = yLayer.getSortedImgList(true, true).size();
@@ -535,6 +537,6 @@
         cbShowThumbs.setEnabled(!yLayer.thumbsLoaded);
 
-        var y = 0;
-        var gbc = GBC.eol();
+        int y = 0;
+        GBC gbc = GBC.eol();
         gbc.gridx = 0;
         gbc.gridy = y++;
@@ -625,5 +627,5 @@
         expertChanged(ExpertToggleAction.isExpert());
 
-        final var statusBar = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
+        final JPanel statusBar = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
         statusBar.setBorder(BorderFactory.createLoweredBevelBorder());
         statusBarText = new JLabel(" ");
@@ -631,5 +633,5 @@
         statusBar.add(statusBarText);
 
-        final var repaintTheMap = new RepaintTheMapListener(yLayer);
+        RepaintTheMapListener repaintTheMap = new RepaintTheMapListener(yLayer);
         pDirectionPosition.addFocusListenerOnComponent(repaintTheMap);
         tfTimezone.addFocusListener(repaintTheMap);
@@ -811,5 +813,5 @@
         public void actionPerformed(ActionEvent e) {
 
-            final var offset = GpxTimeOffset.milliseconds(
+            final GpxTimeOffset offset = GpxTimeOffset.milliseconds(
                     delta.getMilliseconds() + Math.round(timezone.getHours() * TimeUnit.HOURS.toMillis(1)));
             final int dayOffset = offset.getDayOffset();
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java	(revision 19050)
@@ -119,5 +119,5 @@
     private boolean destroyed;
 
-    private class UpdateImageThread extends Thread {
+    private final class UpdateImageThread extends Thread {
         private boolean restart;
 
@@ -146,5 +146,5 @@
         if (e == null ||
             e.getKey().equals(AGPIFO_STYLE.getKey())) {
-            dragButton = AGPIFO_STYLE.get() ? 1 : 3;
+            dragButton = Boolean.TRUE.equals(AGPIFO_STYLE.get()) ? 1 : 3;
             zoomButton = dragButton == 1 ? 3 : 1;
         }
@@ -320,5 +320,5 @@
     }
 
-    private class ImgDisplayMouseListener extends MouseAdapter {
+    private final class ImgDisplayMouseListener extends MouseAdapter {
 
         private MouseEvent lastMouseEvent;
@@ -434,5 +434,5 @@
                 return;
 
-            if (ZOOM_ON_CLICK.get()) {
+            if (Boolean.TRUE.equals(ZOOM_ON_CLICK.get())) {
                 // click notions are less coherent than wheel, refresh mousePointInImg on each click
                 lastMouseEvent = null;
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/RemoteEntry.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/RemoteEntry.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/RemoteEntry.java	(revision 19050)
@@ -296,9 +296,9 @@
     @Override
     public InputStream getInputStream() throws IOException {
-        final var u = getImageURI();
+        final URI u = getImageURI();
         if (u.getScheme().contains("file")) {
             return Files.newInputStream(Paths.get(u));
         }
-        final var client = HttpClient.create(u.toURL());
+        final HttpClient client = HttpClient.create(u.toURL());
         InputStream actual = client.connect().getContent();
         return new BufferedInputStream(actual) {
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 19050)
@@ -60,5 +60,5 @@
     }
 
-    private static class Markers {
+    private static final class Markers {
         public boolean timedMarkersOmitted;
         public boolean untimedMarkersOmitted;
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 19050)
@@ -715,5 +715,5 @@
         @Override
         public String toString() {
-            return "LinkSelector{conditions=" + getConditions() + '}';
+            return "LinkSelector{conditions=" + super.getConditions() + '}';
         }
     }
@@ -761,5 +761,5 @@
          */
         private static String checkBase(String base) {
-            switch(base) {
+            switch (base) {
             case "*": return BASE_ANY;
             case "node": return BASE_NODE;
@@ -844,5 +844,5 @@
             return base
                     + (Range.ZERO_TO_INFINITY.equals(range) ? "" : range)
-                    + getConditions().stream().map(String::valueOf).collect(Collectors.joining(""))
+                    + super.getConditions().stream().map(String::valueOf).collect(Collectors.joining(""))
                     + (subpart != null && subpart != Subpart.DEFAULT_SUBPART ? ("::" + subpart) : "");
         }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/LabelCompositionStrategy.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/LabelCompositionStrategy.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/LabelCompositionStrategy.java	(revision 19050)
@@ -167,5 +167,5 @@
         /* Is joining an array really that complicated in Java? */
         private static String[] getDefaultNameTags() {
-            final var tags = new ArrayList<String>(Arrays.asList(LanguageInfo.getOSMLocaleCodes("name:")));
+            final var tags = new ArrayList<>(Arrays.asList(LanguageInfo.getOSMLocaleCodes("name:")));
             tags.addAll(Arrays.asList("name",
                     "int_name",
@@ -249,5 +249,5 @@
 
         private String getPrimitiveName(IPrimitive n) {
-            final var name = new StringBuilder();
+            StringBuilder name = new StringBuilder();
             if (!n.hasKeys()) return null;
             nameTags.stream().map(n::get).filter(Objects::nonNull).findFirst()
Index: trunk/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedure.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedure.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedure.java	(revision 19050)
@@ -36,5 +36,5 @@
      */
     public String getText() {
-        switch(this) {
+        switch (this) {
         case FULLY_AUTOMATIC:
             return tr("Fully automatic");
@@ -52,5 +52,5 @@
      */
     public String getDescription() {
-        switch(this) {
+        switch (this) {
         case FULLY_AUTOMATIC:
             return tr(
Index: trunk/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java	(revision 19050)
@@ -9,4 +9,5 @@
 import java.awt.FlowLayout;
 import java.awt.Font;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
@@ -170,5 +171,5 @@
         );
         pnlMessage.enableClickableHyperlinks();
-        pnl.add(pnlMessage, GBC.eol().fill(GBC.HORIZONTAL));
+        pnl.add(pnlMessage, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
 
         // the authorisation procedure
@@ -201,5 +202,5 @@
      */
     protected void refreshAuthorisationProcedurePanel() {
-        switch(procedure) {
+        switch (procedure) {
         case FULLY_AUTOMATIC:
             spAuthorisationProcedureUI.getViewport().setView(pnlFullyAutomaticAuthorisationUI);
@@ -290,5 +291,5 @@
 
     protected AbstractAuthorizationUI getCurrentAuthorisationUI() {
-        switch(procedure) {
+        switch (procedure) {
         case FULLY_AUTOMATIC: return pnlFullyAutomaticAuthorisationUI;
         case MANUALLY: return pnlManualAuthorisationUI;
Index: trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 19050)
@@ -409,5 +409,5 @@
     }
 
-    private static class ActionParametersTableModel extends AbstractTableModel {
+    private static final class ActionParametersTableModel extends AbstractTableModel {
 
         private transient ActionDefinition currentAction = ActionDefinition.getSeparator();
@@ -494,5 +494,5 @@
     }
 
-    private class ToolbarPopupMenu extends JPopupMenu {
+    private final class ToolbarPopupMenu extends JPopupMenu {
         private transient ActionDefinition act;
 
@@ -750,5 +750,5 @@
         }
 
-        private class ActionDefinitionModel extends DefaultListModel<ActionDefinition> implements ReorderableTableModel<ActionDefinition> {
+        private final class ActionDefinitionModel extends DefaultListModel<ActionDefinition> implements ReorderableTableModel<ActionDefinition> {
             @Override
             public ListSelectionModel getSelectionModel() {
Index: trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java	(revision 19050)
@@ -18,4 +18,5 @@
 import javax.swing.JTable;
 import javax.swing.JToolBar;
+import javax.swing.SwingConstants;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
@@ -103,5 +104,5 @@
     }
 
-    private class EntryListener implements ListSelectionListener {
+    private final class EntryListener implements ListSelectionListener {
         @Override
         public void valueChanged(ListSelectionEvent e) {
@@ -132,5 +133,5 @@
         left.add(scroll, GBC.eol().fill());
 
-        JToolBar sideButtonTB = new JToolBar(JToolBar.HORIZONTAL);
+        JToolBar sideButtonTB = new JToolBar(SwingConstants.HORIZONTAL);
         sideButtonTB.setBorderPainted(false);
         sideButtonTB.setOpaque(false);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java	(revision 19050)
@@ -50,5 +50,5 @@
     }
 
-    private class EntryListModel extends AbstractEntryListModel {
+    private final class EntryListModel extends AbstractEntryListModel {
 
         @Override
@@ -64,5 +64,5 @@
         @Override
         public void add() {
-            data.add(new ArrayList<String>());
+            data.add(new ArrayList<>());
             fireIntervalAdded(this, getSize() - 1, getSize() - 1);
         }
@@ -75,5 +75,5 @@
     }
 
-    private class ListTableModel extends AbstractTableModel {
+    private final class ListTableModel extends AbstractTableModel {
 
         private List<String> data() {
Index: trunk/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java	(revision 19050)
@@ -78,5 +78,5 @@
     }
 
-    private class EntryListModel extends AbstractEntryListModel {
+    private final class EntryListModel extends AbstractEntryListModel {
 
         @Override
@@ -92,6 +92,6 @@
         @Override
         public void add() {
-            dataKeys.add(new ArrayList<String>());
-            dataValues.add(new ArrayList<String>());
+            dataKeys.add(new ArrayList<>());
+            dataValues.add(new ArrayList<>());
             dataLabels.add("");
             fireIntervalAdded(this, getSize() - 1, getSize() - 1);
@@ -107,8 +107,8 @@
     }
 
-    private class MapTableModel extends AbstractTableModel {
+    private final class MapTableModel extends AbstractTableModel {
 
         private List<List<String>> data() {
-            return entryIdx == null ? Collections.<List<String>>emptyList() : Arrays.asList(dataKeys.get(entryIdx), dataValues.get(entryIdx));
+            return entryIdx == null ? Collections.emptyList() : Arrays.asList(dataKeys.get(entryIdx), dataValues.get(entryIdx));
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/WMSLayerTree.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/WMSLayerTree.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/WMSLayerTree.java	(revision 19050)
@@ -107,5 +107,5 @@
     }
 
-    private static class LayerTreeCellRenderer extends DefaultTreeCellRenderer {
+    private static final class LayerTreeCellRenderer extends DefaultTreeCellRenderer {
         @Override
         public Component getTreeCellRendererComponent(JTree tree, Object value,
@@ -124,5 +124,5 @@
     }
 
-    private class WMSTreeSelectionListener implements TreeSelectionListener {
+    private final class WMSTreeSelectionListener implements TreeSelectionListener {
 
         @Override
Index: trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeSelectionPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeSelectionPanel.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeSelectionPanel.java	(revision 19050)
@@ -5,4 +5,5 @@
 
 import java.awt.Dimension;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionListener;
@@ -60,5 +61,5 @@
      * List model for the filtered view on the list of all codes.
      */
-    private class ProjectionCodeModel extends AbstractTableModel {
+    private final class ProjectionCodeModel extends AbstractTableModel {
         @Override
         public int getRowCount() {
@@ -105,6 +106,6 @@
 
         this.setLayout(new GridBagLayout());
-        this.add(filter, GBC.eol().fill(GBC.HORIZONTAL).weight(1.0, 0.0));
-        this.add(scroll, GBC.eol().fill(GBC.HORIZONTAL));
+        this.add(filter, GBC.eol().fill(GridBagConstraints.HORIZONTAL).weight(1.0, 0.0));
+        this.add(scroll, GBC.eol().fill(GridBagConstraints.HORIZONTAL));
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java	(revision 19050)
@@ -5,4 +5,5 @@
 
 import java.awt.Font;
+import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
@@ -83,9 +84,9 @@
 
         // the checkbox for the default UL
-        add(buildDefaultServerUrlPanel(), GBC.eop().fill(GBC.HORIZONTAL));
+        add(buildDefaultServerUrlPanel(), GBC.eop().fill(GridBagConstraints.HORIZONTAL));
 
         // the input field for the URL
         add(lblApiUrl, GBC.std().insets(0, 0, 3, 0));
-        add(tfOsmServerUrl, GBC.std().fill(GBC.HORIZONTAL).insets(0, 0, 3, 0));
+        add(tfOsmServerUrl, GBC.std().fill(GridBagConstraints.HORIZONTAL).insets(0, 0, 3, 0));
         lblApiUrl.setLabelFor(tfOsmServerUrl);
         SelectAllOnFocusGainedDecorator.decorate(tfOsmServerUrl.getEditorComponent());
@@ -257,5 +258,5 @@
         @Override
         public void itemStateChanged(ItemEvent e) {
-            switch(e.getStateChange()) {
+            switch (e.getStateChange()) {
             case ItemEvent.SELECTED:
                 setApiUrlInputEnabled(false);
Index: trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java	(revision 19050)
@@ -12,5 +12,5 @@
 public abstract class AbstractProgressMonitor implements ProgressMonitor {
 
-    private static class Request {
+    private static final class Request {
         private AbstractProgressMonitor originator;
         private int childTicks;
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TagCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TagCellRenderer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TagCellRenderer.java	(revision 19050)
@@ -98,5 +98,5 @@
         }
 
-        switch(vColIndex) {
+        switch (vColIndex) {
             case 0: renderTagName((TagModel) value); break;
             case 1: renderTagValue((TagModel) value); break;
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java	(revision 19050)
@@ -60,5 +60,5 @@
      * Creates a new tag editor model. Internally allocates two selection models
      * for row selection and column selection.
-     *
+     * <p>
      * To create a {@link javax.swing.JTable} with this model:
      * <pre>
@@ -157,5 +157,5 @@
         TagModel tag = get(row);
         if (tag != null) {
-            switch(col) {
+            switch (col) {
             case 0:
                 updateTagName(tag, (String) value);
@@ -219,8 +219,8 @@
     /**
      * adds a tag given by a name/value pair to the tag editor model.
-     *
+     * <p>
      * If there is no tag with name <code>name</code> yet, a new {@link TagModel} is created
      * and append to this model.
-     *
+     * <p>
      * If there is a tag with name <code>name</code>, <code>value</code> is merged to the list
      * of values for this tag.
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TagTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TagTable.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TagTable.java	(revision 19050)
@@ -9,4 +9,5 @@
 import java.awt.Window;
 import java.awt.event.ActionEvent;
+import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.beans.PropertyChangeEvent;
@@ -134,21 +135,19 @@
      * Action to be run when the user invokes a delete action on the table, for
      * instance by pressing DEL.
-     *
+     * <p>
      * Depending on the shape on the current selection the action deletes individual
      * values or entire tags from the model.
-     *
+     * <p>
      * If the current selection consists of cells in the second column only, the keys of
      * the selected tags are set to the empty string.
-     *
+     * <p>
      * If the current selection consists of cell in the third column only, the values of the
      * selected tags are set to the empty string.
-     *
+     * <p>
      *  If the current selection consists of cells in the second and the third column,
      *  the selected tags are removed from the model.
-     *
+     * <p>
      *  This action listens to the table selection. It becomes enabled when the selection
      *  is non-empty, otherwise it is disabled.
-     *
-     *
      */
     class DeleteAction extends AbstractAction implements ListSelectionListener {
@@ -190,5 +189,5 @@
             if (!isEnabled())
                 return;
-            switch(getSelectedColumnCount()) {
+            switch (getSelectedColumnCount()) {
             case 1:
                 if (getSelectedColumn() == 0) {
@@ -351,5 +350,5 @@
         addAction = new AddAction();
         getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
-        .put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, KeyEvent.CTRL_DOWN_MASK), "addTag");
+            .put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, InputEvent.CTRL_DOWN_MASK), "addTag");
         getActionMap().put("addTag", addAction);
 
@@ -566,5 +565,5 @@
      * This is a custom implementation of the CellEditorRemover used in JTable
      * to handle the client property <code>terminateEditOnFocusLost</code>.
-     *
+     * <p>
      * This implementation also checks whether focus is transferred to one of a list
      * of dedicated components, see {@link TagTable#doNotStopCellEditingWhenFocused}.
Index: trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompEvent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompEvent.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompEvent.java	(revision 19050)
@@ -80,5 +80,5 @@
     public String paramString() {
         String typeStr;
-        switch(id) {
+        switch (id) {
             case AUTOCOMP_BEFORE:
                 typeStr = "AUTOCOMP_BEFORE";
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java	(revision 19050)
@@ -38,5 +38,5 @@
     public JMenu menu; // set by TaggingPresets
 
-    private static class PresetTextComparator implements Comparator<JMenuItem>, Serializable {
+    private static final class PresetTextComparator implements Comparator<JMenuItem>, Serializable {
         private static final long serialVersionUID = 1L;
         @Override
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 19050)
@@ -75,5 +75,5 @@
     private final transient PresetClassifications classifications = new PresetClassifications();
 
-    private static class ResultListCellRenderer implements ListCellRenderer<TaggingPreset> {
+    private static final class ResultListCellRenderer implements ListCellRenderer<TaggingPreset> {
         private final DefaultListCellRenderer def = new DefaultListCellRenderer();
         @Override
Index: trunk/src/org/openstreetmap/josm/gui/util/AdjustmentSynchronizer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/util/AdjustmentSynchronizer.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/util/AdjustmentSynchronizer.java	(revision 19050)
@@ -59,5 +59,5 @@
     @Override
     public void adjustmentValueChanged(AdjustmentEvent e) {
-        if (!enabledMap.get(e.getAdjustable()))
+        if (Boolean.FALSE.equals(enabledMap.get(e.getAdjustable())))
             return;
         for (Adjustable a : synchronizedAdjustables) {
@@ -123,5 +123,5 @@
         //
         view.addItemListener(e -> {
-            switch(e.getStateChange()) {
+            switch (e.getStateChange()) {
             case ItemEvent.SELECTED:
                 if (!isParticipatingInSynchronizedScrolling(adjustable)) {
Index: trunk/src/org/openstreetmap/josm/gui/util/MultikeyActionsHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/util/MultikeyActionsHandler.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/util/MultikeyActionsHandler.java	(revision 19050)
@@ -111,5 +111,5 @@
     }
 
-    private class MyKeyEventDispatcher implements KeyEventDispatcher {
+    private final class MyKeyEventDispatcher implements KeyEventDispatcher {
         @Override
         public boolean dispatchKeyEvent(KeyEvent e) {
Index: trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java	(revision 19050)
@@ -5,4 +5,5 @@
 import java.awt.ComponentOrientation;
 import java.awt.Font;
+import java.awt.FontMetrics;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
@@ -18,8 +19,8 @@
 
 import javax.swing.Icon;
+import javax.swing.JTextField;
+import javax.swing.RepaintManager;
 import javax.swing.JMenuItem;
 import javax.swing.JPopupMenu;
-import javax.swing.JTextField;
-import javax.swing.RepaintManager;
 import javax.swing.UIManager;
 import javax.swing.text.BadLocationException;
@@ -254,5 +255,5 @@
      */
     public static Color getHintTextColor() {
-        var color = UIManager.getColor("TextField[Disabled].textForeground"); // Nimbus?
+        Color color = UIManager.getColor("TextField[Disabled].textForeground"); // Nimbus?
         if (color == null)
             color = UIManager.getColor("TextField.inactiveForeground");
@@ -305,5 +306,5 @@
             g.drawString(getHint(), x, getBaseline(getWidth(), getHeight()));
         } else {
-            final var metrics = g.getFontMetrics(g.getFont());
+            FontMetrics metrics = g.getFontMetrics(g.getFont());
             int dx = metrics.stringWidth(getHint());
             g.drawString(getHint(), x - dx, getBaseline(getWidth(), getHeight()));
Index: trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java	(revision 19050)
@@ -154,5 +154,5 @@
     }
 
-    private class DefaultDividerPainter implements DividerPainter {
+    private final class DefaultDividerPainter implements DividerPainter {
         @Override
         public void paint(Graphics g, Divider divider) {
@@ -344,5 +344,5 @@
     }
 
-    private class InputHandler extends MouseInputAdapter implements KeyListener {
+    private final class InputHandler extends MouseInputAdapter implements KeyListener {
 
         @Override
Index: trunk/src/org/openstreetmap/josm/io/CachedFile.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/CachedFile.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/CachedFile.java	(revision 19050)
@@ -243,5 +243,5 @@
      */
     public byte[] getByteContent() throws IOException {
-        return Utils.readBytesFromStream(getInputStream());
+        return getInputStream().readAllBytes();
     }
 
Index: trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 19050)
@@ -500,5 +500,5 @@
             for (Entry<String, String> entry: queryParams.entrySet()) {
                 String k = entry.getKey();
-                switch(k) {
+                switch (k) {
                 case "uid":
                     if (queryParams.containsKey("display_name"))
@@ -521,5 +521,5 @@
                 case "time":
                     Instant[] dates = parseTime(entry.getValue());
-                    switch(dates.length) {
+                    switch (dates.length) {
                     case 1:
                         csQuery.closedAfter(dates[0]);
Index: trunk/src/org/openstreetmap/josm/io/ChangesetUpdater.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/ChangesetUpdater.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/ChangesetUpdater.java	(revision 19050)
@@ -35,5 +35,5 @@
     private static volatile ScheduledFuture<?> task;
 
-    private static class Worker implements Runnable {
+    private static final class Worker implements Runnable {
 
         private long lastTimeInMillis;
Index: trunk/src/org/openstreetmap/josm/io/DiffResultProcessor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/DiffResultProcessor.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/DiffResultProcessor.java	(revision 19050)
@@ -167,5 +167,5 @@
     }
 
-    private class Parser extends DefaultHandler {
+    private final class Parser extends DefaultHandler {
         private Locator locator;
 
@@ -175,5 +175,5 @@
         }
 
-        protected void throwException(String msg) throws XmlParsingException {
+        void throwException(String msg) throws XmlParsingException {
             throw new XmlParsingException(msg).rememberLocation(locator);
         }
Index: trunk/src/org/openstreetmap/josm/io/FileWatcher.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/FileWatcher.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/FileWatcher.java	(revision 19050)
@@ -35,5 +35,5 @@
     private final Map<Path, SourceEntry> sourceMap = new HashMap<>();
 
-    private static class InstanceHolder {
+    private static final class InstanceHolder {
         static final FileWatcher INSTANCE = new FileWatcher();
     }
Index: trunk/src/org/openstreetmap/josm/io/GpxParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxParser.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/GpxParser.java	(revision 19050)
@@ -142,5 +142,5 @@
     public void startElement(String namespaceURI, String localName, String qName, Attributes attributes) throws SAXException {
         elements.push(new String[] {namespaceURI, localName, qName});
-        switch(currentState) {
+        switch (currentState) {
             case INIT:
                 startElementInit(attributes);
Index: trunk/src/org/openstreetmap/josm/io/GpxWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxWriter.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/GpxWriter.java	(revision 19050)
@@ -388,5 +388,5 @@
     private void wayPoint(WayPoint pnt, int mode) {
         String type;
-        switch(mode) {
+        switch (mode) {
         case WAY_POINT:
             type = "wpt";
Index: trunk/src/org/openstreetmap/josm/io/MessageNotifier.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 19050)
@@ -70,5 +70,5 @@
     private static volatile ScheduledFuture<?> task;
 
-    private static class Worker implements Runnable {
+    private static final class Worker implements Runnable {
 
         private int lastUnreadCount;
Index: trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 19050)
@@ -135,5 +135,5 @@
     public void append(PrimitiveId id) {
         if (id.isNew()) return;
-        switch(id.getType()) {
+        switch (id.getType()) {
         case NODE: nodes.add(id.getUniqueId()); break;
         case WAY: ways.add(id.getUniqueId()); break;
Index: trunk/src/org/openstreetmap/josm/io/NameFinder.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/NameFinder.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/NameFinder.java	(revision 19050)
@@ -238,5 +238,5 @@
      * Structure of xml described here:  http://wiki.openstreetmap.org/index.php/Name_finder
      */
-    private static class NameFinderResultParser extends DefaultHandler {
+    private static final class NameFinderResultParser extends DefaultHandler {
         private SearchResult currentResult;
         private StringBuilder description;
Index: trunk/src/org/openstreetmap/josm/io/NoteReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/NoteReader.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/NoteReader.java	(revision 19050)
@@ -82,4 +82,5 @@
                 notes = new ArrayList<>(10_000);
                 return;
+            default: // Keep going
             }
 
@@ -169,4 +170,5 @@
             case "comment":
                 break;
+            default: // Keep going (return)
             }
         }
@@ -179,6 +181,6 @@
 
     static LatLon parseLatLon(UnaryOperator<String> attrs) {
-        final var lat = Double.parseDouble(attrs.apply("lat"));
-        final var lon = Double.parseDouble(attrs.apply("lon"));
+        final double lat = Double.parseDouble(attrs.apply("lat"));
+        final double lon = Double.parseDouble(attrs.apply("lon"));
         return new LatLon(lat, lon);
     }
@@ -197,5 +199,5 @@
 
     static Note parseNoteFull(UnaryOperator<String> attrs) {
-        final var note = parseNoteBasic(attrs);
+        final Note note = parseNoteBasic(attrs);
         String id = attrs.apply("id");
         if (id != null) {
Index: trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 19050)
@@ -809,5 +809,5 @@
                 errorHeader = errorHeader == null ? null : errorHeader.trim();
                 String errorBody = responseBody.isEmpty() ? null : responseBody.trim();
-                switch(retCode) {
+                switch (retCode) {
                 case HttpURLConnection.HTTP_OK:
                     return responseBody;
Index: trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java	(revision 19050)
@@ -59,5 +59,5 @@
     }
 
-    private class Parser extends DefaultHandler {
+    private final class Parser extends DefaultHandler {
         private Locator locator;
 
@@ -67,5 +67,5 @@
         }
 
-        protected void throwException(String msg) throws XmlParsingException {
+        void throwException(String msg) throws XmlParsingException {
             throw new XmlParsingException(msg).rememberLocation(locator);
         }
@@ -80,5 +80,5 @@
         private StringBuilder text;
 
-        protected void parseChangesetAttributes(Attributes atts) throws XmlParsingException {
+        void parseChangesetAttributes(Attributes atts) throws XmlParsingException {
             // -- id
             String value = atts.getValue("id");
@@ -248,5 +248,5 @@
         }
 
-        protected User createUser(Attributes atts) throws XmlParsingException {
+        User createUser(Attributes atts) throws XmlParsingException {
             String name = atts.getValue("user");
             String uid = atts.getValue("uid");
Index: trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java	(revision 19050)
@@ -35,7 +35,7 @@
     private final HistoryDataSet data;
 
-    private class Parser extends AbstractParser {
+    private final class Parser extends AbstractParser {
 
-        protected String getCurrentPosition() {
+        String getCurrentPosition() {
             if (locator == null)
                 return "";
Index: trunk/src/org/openstreetmap/josm/io/OsmPbfReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmPbfReader.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/OsmPbfReader.java	(revision 19050)
@@ -94,6 +94,6 @@
             inputStream = new BoundedInputStream(new BufferedInputStream(source));
         }
-        try (var parser = new ProtobufParser(inputStream)) {
-            final var baos = new ByteArrayOutputStream();
+        try (ProtobufParser parser = new ProtobufParser(inputStream)) {
+            final ByteArrayOutputStream baos = new ByteArrayOutputStream();
             HeaderBlock headerBlock = null;
             BlobHeader blobHeader = null;
@@ -106,5 +106,5 @@
                     }
                     // OSM PBF is fun -- it has *nested* pbf data
-                    final var blob = parseBlob(blobHeader, inputStream, parser, baos);
+                    final Blob blob = parseBlob(blobHeader, inputStream, parser, baos);
                     headerBlock = parseHeaderBlock(blob, baos);
                     checkRequiredFeatures(headerBlock);
@@ -114,5 +114,5 @@
                         throw new IllegalStateException("A header block must occur before the first data block");
                     }
-                    final var blob = parseBlob(blobHeader, inputStream, parser, baos);
+                    final Blob blob = parseBlob(blobHeader, inputStream, parser, baos);
                     parseDataBlock(baos, headerBlock, blob);
                     blobHeader = null;
@@ -138,8 +138,8 @@
         byte[] indexData = null;
         int datasize = Integer.MIN_VALUE;
-        var length = 0;
+        int length = 0;
         long start = cis.getCount();
         while (parser.hasNext() && (length == 0 || cis.getCount() - start < length)) {
-            final var current = new ProtobufRecord(baos, parser);
+            final ProtobufRecord current = new ProtobufRecord(baos, parser);
             switch (current.getField()) {
                 case 1:
@@ -239,9 +239,9 @@
     @Nonnull
     private static HeaderBlock parseHeaderBlock(Blob blob, ByteArrayOutputStream baos) throws IOException {
-        try (var blobInput = blob.inputStream();
-             var parser = new ProtobufParser(blobInput)) {
+        try (InputStream blobInput = blob.inputStream();
+             ProtobufParser parser = new ProtobufParser(blobInput)) {
             BBox bbox = null;
-            final var required = new ArrayList<String>();
-            final var optional = new ArrayList<String>();
+            List<String> required = new ArrayList<>();
+            List<String> optional = new ArrayList<>();
             String program = null;
             String source = null;
@@ -250,5 +250,5 @@
             String osmosisReplicationBaseUrl = null;
             while (parser.hasNext()) {
-                final var current = new ProtobufRecord(baos, parser);
+                final ProtobufRecord current = new ProtobufRecord(baos, parser);
                 switch (current.getField()) {
                     case 1: // bbox
@@ -311,13 +311,13 @@
         String[] stringTable = null; // field 1, note that stringTable[0] is a delimiter, so it is always blank and unused
         // field 2 -- we cannot parse these live just in case the following fields come later
-        final var primitiveGroups = new ArrayList<ProtobufRecord>();
-        var granularity = 100; // field 17
+        final List<ProtobufRecord> primitiveGroups = new ArrayList<>();
+        int granularity = 100; // field 17
         long latOffset = 0; // field 19
         long lonOffset = 0; // field 20
-        var dateGranularity = 1000; // field 18, default is milliseconds since the 1970 epoch
-        try (var inputStream = blob.inputStream();
-             var parser = new ProtobufParser(inputStream)) {
+        int dateGranularity = 1000; // field 18, default is milliseconds since the 1970 epoch
+        try (InputStream inputStream = blob.inputStream();
+             ProtobufParser parser = new ProtobufParser(inputStream)) {
             while (parser.hasNext()) {
-                final var protobufRecord = new ProtobufRecord(baos, parser);
+                final ProtobufRecord protobufRecord = new ProtobufRecord(baos, parser);
                 switch (protobufRecord.getField()) {
                     case 1:
@@ -343,7 +343,7 @@
             }
         }
-        final var primitiveBlockRecord = new PrimitiveBlockRecord(stringTable, granularity, latOffset, lonOffset,
+        final PrimitiveBlockRecord primitiveBlockRecord = new PrimitiveBlockRecord(stringTable, granularity, latOffset, lonOffset,
                 dateGranularity);
-        final var ds = getDataSet();
+        final DataSet ds = getDataSet();
         if (!primitiveGroups.isEmpty() && headerBlock.bbox() != null) {
             try {
@@ -375,6 +375,6 @@
     @Nullable
     private static BBox parseBBox(ByteArrayOutputStream baos, ProtobufRecord current) throws IOException {
-        try (var bboxInputStream = new ByteArrayInputStream(current.getBytes());
-             var bboxParser = new ProtobufParser(bboxInputStream)) {
+        try (ByteArrayInputStream bboxInputStream = new ByteArrayInputStream(current.getBytes());
+             ProtobufParser bboxParser = new ProtobufParser(bboxInputStream)) {
             double left = Double.NaN;
             double right = Double.NaN;
@@ -382,5 +382,5 @@
             double bottom = Double.NaN;
             while (bboxParser.hasNext()) {
-                final var protobufRecord = new ProtobufRecord(baos, bboxParser);
+                final ProtobufRecord protobufRecord = new ProtobufRecord(baos, bboxParser);
                 if (protobufRecord.getType() == WireType.VARINT) {
                     double value = protobufRecord.asSignedVarInt().longValue() * NANO_DEGREES;
@@ -419,9 +419,9 @@
     @Nonnull
     private static String[] parseStringTable(ByteArrayOutputStream baos, byte[] bytes) throws IOException {
-        try (var is = new ByteArrayInputStream(bytes);
-             var parser = new ProtobufParser(is)) {
-            final var list = new ArrayList<String>();
+        try (ByteArrayInputStream is = new ByteArrayInputStream(bytes);
+             ProtobufParser parser = new ProtobufParser(is)) {
+            final List<String> list = new ArrayList<>();
             while (parser.hasNext()) {
-                final var protobufRecord = new ProtobufRecord(baos, parser);
+                final ProtobufRecord protobufRecord = new ProtobufRecord(baos, parser);
                 if (protobufRecord.getField() == 1) {
                     list.add(protobufRecord.asString().intern()); // field is technically repeated bytes
@@ -444,8 +444,8 @@
     private void parsePrimitiveGroup(ByteArrayOutputStream baos, byte[] bytes, PrimitiveBlockRecord primitiveBlockRecord)
             throws IllegalDataException, IOException {
-        try (var bais = new ByteArrayInputStream(bytes);
-             var parser = new ProtobufParser(bais)) {
+        try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+             ProtobufParser parser = new ProtobufParser(bais)) {
             while (parser.hasNext()) {
-                final var protobufRecord = new ProtobufRecord(baos, parser);
+                final ProtobufRecord protobufRecord = new ProtobufRecord(baos, parser);
                 switch (protobufRecord.getField()) {
                     case 1: // Nodes, repeated
@@ -480,14 +480,14 @@
     private void parseNode(ByteArrayOutputStream baos, byte[] bytes, PrimitiveBlockRecord primitiveBlockRecord)
             throws IllegalDataException, IOException {
-        try (var bais = new ByteArrayInputStream(bytes);
-             var parser = new ProtobufParser(bais)) {
+        try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+             ProtobufParser parser = new ProtobufParser(bais)) {
             long id = Long.MIN_VALUE;
-            final var keys = new ArrayList<String>();
-            final var values = new ArrayList<String>();
+            final List<String> keys = new ArrayList<>();
+            final List<String> values = new ArrayList<>();
             Info info = null;
             long lat = Long.MIN_VALUE;
             long lon = Long.MIN_VALUE;
             while (parser.hasNext()) {
-                final var protobufRecord = new ProtobufRecord(baos, parser);
+                final ProtobufRecord protobufRecord = new ProtobufRecord(baos, parser);
                 switch (protobufRecord.getField()) {
                     case 1:
@@ -519,5 +519,5 @@
                 throw new IllegalDataException("OSM PBF did not provide all the required node information");
             }
-            final var node = new NodeData(id);
+            final NodeData node = new NodeData(id);
             node.setCoor(calculateLatLon(primitiveBlockRecord, lat, lon));
             addTags(node, keys, values);
@@ -547,8 +547,8 @@
         long[] keyVals = EMPTY_LONG; // technically can be int
         Info[] denseInfo = null;
-        try (var bais = new ByteArrayInputStream(bytes);
-             var parser = new ProtobufParser(bais)) {
+        try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+             ProtobufParser parser = new ProtobufParser(bais)) {
             while (parser.hasNext()) {
-                final var protobufRecord = new ProtobufRecord(baos, parser);
+                final ProtobufRecord protobufRecord = new ProtobufRecord(baos, parser);
                 switch (protobufRecord.getField()) {
                     case 1: // packed node ids, DELTA encoded
@@ -576,15 +576,15 @@
         }
 
-        var keyValIndex = 0; // This index must not reset between nodes, and must always increment
+        int keyValIndex = 0; // This index must not reset between nodes, and must always increment
         if (ids.length == lats.length && lats.length == lons.length && (denseInfo == null || denseInfo.length == lons.length)) {
             long id = 0;
             long lat = 0;
             long lon = 0;
-            for (var i = 0; i < ids.length; i++) {
+            for (int i = 0; i < ids.length; i++) {
                 final NodeData node;
                 id += ids[i];
                 node = new NodeData(id);
                 if (denseInfo != null) {
-                    final var info = denseInfo[i];
+                    final Info info = denseInfo[i];
                     setOsmPrimitiveData(primitiveBlockRecord, node, info);
                 } else {
@@ -638,8 +638,8 @@
         // We don't do live drawing, so we don't care about lats and lons (we essentially throw them away with the current parser)
         // This is for the optional feature "LocationsOnWays"
-        try (var bais = new ByteArrayInputStream(bytes);
-             var parser = new ProtobufParser(bais)) {
+        try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+             ProtobufParser parser = new ProtobufParser(bais)) {
             while (parser.hasNext()) {
-                final var protobufRecord = new ProtobufRecord(baos, parser);
+                final ProtobufRecord protobufRecord = new ProtobufRecord(baos, parser);
                 switch (protobufRecord.getField()) {
                     case 1:
@@ -672,6 +672,6 @@
             throw new IllegalDataException("A way with either no id or no nodes was found");
         }
-        final var wayData = new WayData(id);
-        final var nodeIds = new ArrayList<Long>(refs.length);
+        final WayData wayData = new WayData(id);
+        final List<Long> nodeIds = new ArrayList<>(refs.length);
         long ref = 0;
         for (long tRef : refs) {
@@ -701,14 +701,14 @@
             throws IllegalDataException, IOException {
         long id = Long.MIN_VALUE;
-        final var keys = new ArrayList<String>();
-        final var values = new ArrayList<String>();
+        final List<String> keys = new ArrayList<>();
+        final List<String> values = new ArrayList<>();
         Info info = null;
         long[] rolesStringId = EMPTY_LONG; // Technically int
         long[] memids = EMPTY_LONG;
         long[] types = EMPTY_LONG; // Technically an enum
-        try (var bais = new ByteArrayInputStream(bytes);
-             var parser = new ProtobufParser(bais)) {
+        try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+             ProtobufParser parser = new ProtobufParser(bais)) {
             while (parser.hasNext()) {
-                final var protobufRecord = new ProtobufRecord(baos, parser);
+                final ProtobufRecord protobufRecord = new ProtobufRecord(baos, parser);
                 switch (protobufRecord.getField()) {
                     case 1:
@@ -747,5 +747,5 @@
             throw new IllegalDataException("OSM PBF contains a bad relation definition");
         }
-        final var data = new RelationData(id);
+        final RelationData data = new RelationData(id);
         if (info != null) {
             setOsmPrimitiveData(primitiveBlockRecord, data, info);
@@ -757,5 +757,5 @@
         List<RelationMemberData> members = new ArrayList<>(rolesStringId.length);
         long memberId = 0;
-        for (var i = 0; i < rolesStringId.length; i++) {
+        for (int i = 0; i < rolesStringId.length; i++) {
             String role = primitiveBlockRecord.stringTable[(int) rolesStringId[i]];
             memberId += memids[i];
@@ -777,6 +777,6 @@
     @Nonnull
     private static Info parseInfo(ByteArrayOutputStream baos, byte[] bytes) throws IOException {
-        try (var bais = new ByteArrayInputStream(bytes);
-             var parser = new ProtobufParser(bais)) {
+        try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+             ProtobufParser parser = new ProtobufParser(bais)) {
             int version = -1;
             Long timestamp = null;
@@ -784,7 +784,7 @@
             Integer uid = null;
             Integer userSid = null;
-            var visible = true;
+            boolean visible = true;
             while (parser.hasNext()) {
-                final var protobufRecord = new ProtobufRecord(baos, parser);
+                final ProtobufRecord protobufRecord = new ProtobufRecord(baos, parser);
                 switch (protobufRecord.getField()) {
                     case 1:
@@ -839,5 +839,5 @@
         }
         Map<String, String> tagMap = new HashMap<>(keys.size());
-        for (var i = 0; i < keys.size(); i++) {
+        for (int i = 0; i < keys.size(); i++) {
             tagMap.put(keys.get(i), values.get(i));
         }
@@ -879,5 +879,5 @@
     @Nonnull
     private static long[] decodePackedSInt64(long[] numbers) {
-        for (var i = 0; i < numbers.length; i++) {
+        for (int i = 0; i < numbers.length; i++) {
             numbers[i] = ProtobufParser.decodeZigZag(numbers[i]);
         }
@@ -922,8 +922,8 @@
         long[] userSid = EMPTY_LONG; // technically int
         long[] visible = EMPTY_LONG; // optional, true if not set, technically booleans
-        try (var bais = new ByteArrayInputStream(bytes);
-             var parser = new ProtobufParser(bais)) {
+        try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+             ProtobufParser parser = new ProtobufParser(bais)) {
             while (parser.hasNext()) {
-                final var protobufRecord = new ProtobufRecord(baos, parser);
+                final ProtobufRecord protobufRecord = new ProtobufRecord(baos, parser);
                 switch (protobufRecord.getField()) {
                     case 1:
@@ -956,10 +956,10 @@
         }
         if (version.length > 0) {
-            final var infos = new Info[version.length];
+            final Info[] infos = new Info[version.length];
             long lastTimestamp = 0; // delta encoded
             long lastChangeset = 0; // delta encoded
             long lastUid = 0; // delta encoded,
             long lastUserSid = 0; // delta encoded, string id for username
-            for (var i = 0; i < version.length; i++) {
+            for (int i = 0; i < version.length; i++) {
                 if (timestamp.length > i)
                     lastTimestamp += timestamp[i];
Index: trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 19050)
@@ -99,5 +99,5 @@
             for (OsmPrimitive osm : primitives) {
                 String msg;
-                switch(OsmPrimitiveType.from(osm)) {
+                switch (OsmPrimitiveType.from(osm)) {
                 case NODE: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading node ''{4}'' (id: {5})"); break;
                 case WAY: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading way ''{4}'' (id: {5})"); break;
@@ -207,5 +207,5 @@
             }
             api.setChangeset(changeset);
-            switch(strategy.getStrategy()) {
+            switch (strategy.getStrategy()) {
             case SINGLE_REQUEST_STRATEGY:
                 uploadChangesAsDiffUpload(primitives, monitor.createSubTaskMonitor(0, false));
Index: trunk/src/org/openstreetmap/josm/io/UploadStrategySpecification.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/UploadStrategySpecification.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/UploadStrategySpecification.java	(revision 19050)
@@ -137,5 +137,5 @@
         if (numObjects <= 0)
             return 0;
-        switch(strategy) {
+        switch (strategy) {
         case INDIVIDUAL_OBJECTS_STRATEGY: return numObjects;
         case SINGLE_REQUEST_STRATEGY: return 1;
Index: trunk/src/org/openstreetmap/josm/io/auth/JosmPreferencesCredentialAgent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/auth/JosmPreferencesCredentialAgent.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/auth/JosmPreferencesCredentialAgent.java	(revision 19050)
@@ -11,5 +11,4 @@
 import java.util.Set;
 
-import jakarta.json.JsonException;
 import javax.swing.text.html.HTMLEditorKit;
 
@@ -24,4 +23,6 @@
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.Utils;
+
+import jakarta.json.JsonException;
 
 /**
@@ -41,5 +42,5 @@
         String user;
         String password;
-        switch(requestorType) {
+        switch (requestorType) {
         case SERVER:
             if (Objects.equals(OsmApi.getOsmApi().getHost(), host)) {
@@ -73,5 +74,5 @@
         if (requestorType == null)
             return;
-        switch(requestorType) {
+        switch (requestorType) {
         case SERVER:
             if (Objects.equals(OsmApi.getOsmApi().getHost(), host)) {
Index: trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java	(revision 19050)
@@ -112,5 +112,5 @@
     }
 
-    private static class Parser extends DefaultHandler {
+    private static final class Parser extends DefaultHandler {
         private static final String MAX_ZOOM = "max-zoom";
         private static final String MIN_ZOOM = "min-zoom";
@@ -366,5 +366,5 @@
             case MIRROR_ATTRIBUTE:
                 if (mirrorEntry != null) {
-                    switch(qName) {
+                    switch (qName) {
                     case "type":
                         Optional<ImageryType> type = Arrays.stream(ImageryType.values())
@@ -412,5 +412,5 @@
                 break;
             case ENTRY_ATTRIBUTE:
-                switch(qName) {
+                switch (qName) {
                 case "name":
                     entry.setName(lang == null ? LanguageInfo.getJOSMLocaleCode(null) : lang, accumulator.toString());
Index: trunk/src/org/openstreetmap/josm/io/nmea/NmeaParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/nmea/NmeaParser.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/nmea/NmeaParser.java	(revision 19050)
@@ -387,5 +387,5 @@
                 if (!accu.isEmpty()) {
                     int fixtype = Integer.parseInt(accu);
-                    switch(fixtype) {
+                    switch (fixtype) {
                     case 0:
                         currentwp.put(GpxConstants.PT_FIX, "none");
Index: trunk/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java	(revision 19050)
@@ -74,5 +74,5 @@
     private static void handleElement(GpxImageEntry entry, Element attrElem) {
         try {
-            switch(attrElem.getTagName()) {
+            switch (attrElem.getTagName()) {
             case "file":
                 entry.setFile(new File(attrElem.getTextContent()));
Index: trunk/src/org/openstreetmap/josm/io/session/SessionReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 19050)
@@ -574,7 +574,6 @@
                         tr("Unable to load layer"),
                         tr("Cannot load layer of type ''{0}'' because no suitable importer was found.", type),
-                        JOptionPane.WARNING_MESSAGE,
-                        progressMonitor
-                        );
+                        JOptionPane.WARNING_MESSAGE
+                );
                 if (dialog.isCancel()) {
                     progressMonitor.cancel();
@@ -593,7 +592,6 @@
                                 tr("Unable to load layer"),
                                 tr("Cannot load layer {0} because it depends on layer {1} which has been skipped.", idx, d),
-                                JOptionPane.WARNING_MESSAGE,
-                                progressMonitor
-                                );
+                                JOptionPane.WARNING_MESSAGE
+                        );
                         if (dialog.isCancel()) {
                             progressMonitor.cancel();
@@ -625,7 +623,6 @@
                                         Utils.escapeReservedCharactersHTML(name),
                                         Utils.escapeReservedCharactersHTML(exception.getMessage())),
-                                JOptionPane.ERROR_MESSAGE,
-                                progressMonitor
-                                );
+                                JOptionPane.ERROR_MESSAGE
+                        );
                         if (dialog.isCancel()) {
                             progressMonitor.cancel();
@@ -735,9 +732,9 @@
      * needed to block the current thread and wait for the result of the modal dialog from EDT.
      */
-    private static class CancelOrContinueDialog {
+    private static final class CancelOrContinueDialog {
 
         private boolean cancel;
 
-        public void show(final String title, final String message, final int icon, final ProgressMonitor progressMonitor) {
+        void show(final String title, final String message, final int icon) {
             try {
                 SwingUtilities.invokeAndWait(() -> {
Index: trunk/src/org/openstreetmap/josm/plugins/Plugin.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/Plugin.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/plugins/Plugin.java	(revision 19050)
@@ -24,7 +24,7 @@
  * For all purposes of loading dynamic resources, the Plugin's class loader should be used
  * (or else, the plugin jar will not be within the class path).
- *
+ * <p>
  * A plugin may subclass this abstract base class (but it is optional).
- *
+ * <p>
  * The actual implementation of this class is optional, as all functions will be called
  * via reflection. This is to be able to change this interface without the need of
@@ -32,9 +32,9 @@
  * function here (or does provide a function with a mismatching signature), it will not
  * be called. That simple.
- *
+ * <p>
  * Or in other words: See this base class as an documentation of what automatic callbacks
  * are provided (you can register yourself to more callbacks in your plugin class
  * constructor).
- *
+ * <p>
  * Subclassing Plugin and overriding some functions makes it easy for you to keep sync
  * with the correct actual plugin architecture of JOSM.
@@ -47,5 +47,5 @@
      * This is the info available for this plugin. You can access this from your
      * constructor.
-     *
+     * <p>
      * (The actual implementation to request the info from a static variable
      * is a bit hacky, but it works).
@@ -55,5 +55,5 @@
     private final IBaseDirectories pluginBaseDirectories = new PluginBaseDirectories();
 
-    private class PluginBaseDirectories implements IBaseDirectories {
+    private final class PluginBaseDirectories implements IBaseDirectories {
         private File preferencesDir;
         private File cacheDir;
Index: trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 19050)
@@ -501,5 +501,5 @@
         //
         String policy = Config.getPref().get(togglePreferenceKey, "ask").trim().toLowerCase(Locale.ENGLISH);
-        switch(policy) {
+        switch (policy) {
         case "never":
             if ("pluginmanager.version-based-update.policy".equals(togglePreferenceKey)) {
@@ -552,5 +552,5 @@
 
         if (pnlMessage.isRememberDecision()) {
-            switch(ret) {
+            switch (ret) {
             case 0:
                 Config.getPref().put(togglePreferenceKey, "always");
@@ -1644,5 +1644,5 @@
             + (!Utils.isEmpty(info.localversion) ? " Version: " + info.localversion : "");
             pluginTab.add(new JLabel(name), GBC.std());
-            pluginTab.add(Box.createHorizontalGlue(), GBC.std().fill(GBC.HORIZONTAL));
+            pluginTab.add(Box.createHorizontalGlue(), GBC.std().fill(GridBagConstraints.HORIZONTAL));
             pluginTab.add(new JButton(new PluginInformationAction(info)), GBC.eol());
 
@@ -1657,5 +1657,5 @@
             description.setCaretPosition(0);
 
-            pluginTab.add(description, GBC.eop().fill(GBC.HORIZONTAL));
+            pluginTab.add(description, GBC.eop().fill(GridBagConstraints.HORIZONTAL));
         }
         return pluginTab;
Index: trunk/src/org/openstreetmap/josm/tools/CopyList.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/CopyList.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/tools/CopyList.java	(revision 19050)
@@ -139,5 +139,5 @@
     }
 
-    private class Itr implements Iterator<E> {
+    private final class Itr implements Iterator<E> {
         /**
          * Index of element to be returned by subsequent call to next.
@@ -198,5 +198,5 @@
         }
 
-        final void checkForComodification() {
+        void checkForComodification() {
             if (modCount != expectedModCount)
                 throw new ConcurrentModificationException();
Index: trunk/src/org/openstreetmap/josm/tools/I18n.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 19050)
@@ -646,5 +646,5 @@
 
     private static int pluralEval(long n) {
-        switch(pluralMode) {
+        switch (pluralMode) {
         case MODE_NOTONE: /* bg, da, de, el, en, en_AU, en_CA, en_GB, es, et, eu, fi, gl, is, it, iw_IL, mr, nb, nl, sv */
             return (n != 1) ? 1 : 0;
Index: trunk/src/org/openstreetmap/josm/tools/ImageResizeMode.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageResizeMode.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/tools/ImageResizeMode.java	(revision 19050)
@@ -87,6 +87,6 @@
      */
     BufferedImage createBufferedImage(Dimension dim, Dimension icon, Consumer<Graphics2D> renderer, Image sourceIcon) {
-        final var real = computeDimension(dim, icon);
-        final var bufferedImage = new BufferedImage(real.width, real.height, BufferedImage.TYPE_INT_ARGB);
+        final Dimension real = computeDimension(dim, icon);
+        final BufferedImage bufferedImage = new BufferedImage(real.width, real.height, BufferedImage.TYPE_INT_ARGB);
         final Graphics2D g = bufferedImage.createGraphics();
         g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
Index: trunk/src/org/openstreetmap/josm/tools/ListenerList.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ListenerList.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/tools/ListenerList.java	(revision 19050)
@@ -224,5 +224,5 @@
     }
 
-    private static class UncheckedListenerList<T> extends ListenerList<T> {
+    private static final class UncheckedListenerList<T> extends ListenerList<T> {
         @Override
         protected void failAdd(T listener) {
Index: trunk/src/org/openstreetmap/josm/tools/Logging.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Logging.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/tools/Logging.java	(revision 19050)
@@ -130,7 +130,7 @@
 
         @Override
-        public synchronized void publish(LogRecord record) {
-            if (this.prioritizedHandler == null || !this.prioritizedHandler.isLoggable(record)) {
-                super.publish(record);
+        public synchronized void publish(LogRecord logRecord) {
+            if (this.prioritizedHandler == null || !this.prioritizedHandler.isLoggable(logRecord)) {
+                super.publish(logRecord);
             }
         }
@@ -481,5 +481,5 @@
     }
 
-    private static class RememberWarningHandler extends Handler {
+    private static final class RememberWarningHandler extends Handler {
         private final String[] log = new String[10];
         private int messagesLogged;
@@ -491,11 +491,11 @@
 
         @Override
-        public synchronized void publish(LogRecord record) {
+        public synchronized void publish(LogRecord logRecord) {
             // We don't use setLevel + isLoggable to work in WebStart Sandbox mode
-            if (record.getLevel().intValue() < LEVEL_WARN.intValue()) {
+            if (logRecord.getLevel().intValue() < LEVEL_WARN.intValue()) {
                 return;
             }
 
-            String msg = String.format(Locale.ROOT, "%09.3f %s%s", startup.elapsed() / 1000., getPrefix(record), record.getMessage());
+            String msg = String.format(Locale.ROOT, "%09.3f %s%s", startup.elapsed() / 1000., getPrefix(logRecord), logRecord.getMessage());
 
             // Only remember first line of message
@@ -508,6 +508,6 @@
         }
 
-        private static String getPrefix(LogRecord record) {
-            if (record.getLevel().equals(LEVEL_WARN)) {
+        private static String getPrefix(LogRecord logRecord) {
+            if (logRecord.getLevel().equals(LEVEL_WARN)) {
                 return "W: ";
             } else {
Index: trunk/src/org/openstreetmap/josm/tools/Shortcut.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 19050)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.util.ArrayList;
@@ -246,5 +247,5 @@
     public void setAccelerator(AbstractAction action) {
         if (getKeyStroke() != null) {
-            action.putValue(AbstractAction.ACCELERATOR_KEY, getKeyStroke());
+            action.putValue(Action.ACCELERATOR_KEY, getKeyStroke());
         }
     }
@@ -266,5 +267,5 @@
     public static String getKeyText(KeyStroke keyStroke) {
         if (keyStroke == null) return "";
-        String modifText = KeyEvent.getModifiersExText(keyStroke.getModifiers());
+        String modifText = InputEvent.getModifiersExText(keyStroke.getModifiers());
         if (modifText.isEmpty()) return KeyEvent.getKeyText(keyStroke.getKeyCode());
         return modifText + '+' + KeyEvent.getKeyText(keyStroke.getKeyCode());
@@ -307,5 +308,5 @@
     private static final ShortcutCollection shortcuts = new ShortcutCollection();
 
-    private static class ShortcutCollection extends CopyOnWriteArrayList<Shortcut> {
+    private static final class ShortcutCollection extends CopyOnWriteArrayList<Shortcut> {
         private static final long serialVersionUID = 1L;
         @Override
@@ -398,13 +399,13 @@
         int commandDownMask = PlatformManager.getPlatform().getMenuShortcutKeyMaskEx();
         groups.put(NONE, -1);
-        groups.put(MNEMONIC, KeyEvent.ALT_DOWN_MASK);
+        groups.put(MNEMONIC, InputEvent.ALT_DOWN_MASK);
         groups.put(DIRECT, 0);
-        groups.put(ALT, KeyEvent.ALT_DOWN_MASK);
-        groups.put(SHIFT, KeyEvent.SHIFT_DOWN_MASK);
+        groups.put(ALT, InputEvent.ALT_DOWN_MASK);
+        groups.put(SHIFT, InputEvent.SHIFT_DOWN_MASK);
         groups.put(CTRL, commandDownMask);
-        groups.put(ALT_SHIFT, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);
-        groups.put(ALT_CTRL, KeyEvent.ALT_DOWN_MASK | commandDownMask);
-        groups.put(CTRL_SHIFT, commandDownMask | KeyEvent.SHIFT_DOWN_MASK);
-        groups.put(ALT_CTRL_SHIFT, KeyEvent.ALT_DOWN_MASK | commandDownMask | KeyEvent.SHIFT_DOWN_MASK);
+        groups.put(ALT_SHIFT, InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK);
+        groups.put(ALT_CTRL, InputEvent.ALT_DOWN_MASK | commandDownMask);
+        groups.put(CTRL_SHIFT, commandDownMask | InputEvent.SHIFT_DOWN_MASK);
+        groups.put(ALT_CTRL_SHIFT, InputEvent.ALT_DOWN_MASK | commandDownMask | InputEvent.SHIFT_DOWN_MASK);
 
         // (1) System reserved shortcuts
@@ -567,8 +568,8 @@
     private static int findNewOsxModifier(int requestedGroup) {
         switch (requestedGroup) {
-            case CTRL: return KeyEvent.CTRL_DOWN_MASK;
-            case ALT_CTRL: return KeyEvent.ALT_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK;
-            case CTRL_SHIFT: return KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK;
-            case ALT_CTRL_SHIFT: return KeyEvent.ALT_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK;
+            case CTRL: return InputEvent.CTRL_DOWN_MASK;
+            case ALT_CTRL: return InputEvent.ALT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK;
+            case CTRL_SHIFT: return InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK;
+            case ALT_CTRL_SHIFT: return InputEvent.ALT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK;
             default: return 0;
         }
Index: trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 19050)
@@ -9,5 +9,4 @@
 import java.awt.font.FontRenderContext;
 import java.awt.font.GlyphVector;
-import java.io.ByteArrayOutputStream;
 import java.io.Closeable;
 import java.io.File;
@@ -30,4 +29,5 @@
 import java.nio.file.StandardCopyOption;
 import java.nio.file.attribute.BasicFileAttributes;
+import java.nio.file.attribute.FileTime;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
@@ -152,6 +152,6 @@
      */
     public static <T> int indexOf(Iterable<? extends T> collection, Predicate<? super T> predicate) {
-        var i = 0;
-        for (var item : collection) {
+        int i = 0;
+        for (T item : collection) {
             if (predicate.test(item))
                 return i;
@@ -168,5 +168,5 @@
      * @throws AssertionError if the condition is not met
      */
-    public static void ensure(boolean condition, String message, Object...data) {
+    public static void ensure(boolean condition, String message, Object... data) {
         if (!condition)
             throw new AssertionError(
@@ -185,5 +185,5 @@
         if (n <= 0)
             throw new IllegalArgumentException("n must be <= 0 but is " + n);
-        var res = a % n;
+        int res = a % n;
         if (res < 0) {
             res += n;
@@ -303,8 +303,8 @@
             Logging.warn("Unable to create directory "+out.getPath());
         }
-        var files = in.listFiles();
+        File[] files = in.listFiles();
         if (files != null) {
-            for (var f : files) {
-                var target = new File(out, f.getName());
+            for (File f : files) {
+                File target = new File(out, f.getName());
                 if (f.isDirectory()) {
                     copyDirectory(f, target);
@@ -324,7 +324,7 @@
     public static boolean deleteDirectory(File path) {
         if (path.exists()) {
-            var files = path.listFiles();
+            File[] files = path.listFiles();
             if (files != null) {
-                for (var file : files) {
+                for (File file : files) {
                     if (file.isDirectory()) {
                         deleteDirectory(file);
@@ -371,5 +371,5 @@
      */
     public static boolean deleteFile(File file, String warnMsg) {
-        var result = file.delete();
+        boolean result = file.delete();
         if (!result) {
             Logging.warn(tr(warnMsg, file.getPath()));
@@ -397,5 +397,5 @@
      */
     public static boolean mkDirs(File dir, String warnMsg) {
-        var result = dir.mkdirs();
+        boolean result = dir.mkdirs();
         if (!result) {
             Logging.warn(tr(warnMsg, dir.getPath()));
@@ -497,6 +497,6 @@
             throw new JosmRuntimeException(e);
         }
-        var byteData = data.getBytes(StandardCharsets.UTF_8);
-        var byteDigest = md.digest(byteData);
+        byte[] byteData = data.getBytes(StandardCharsets.UTF_8);
+        byte[] byteDigest = md.digest(byteData);
         return toHexString(byteDigest);
     }
@@ -517,11 +517,11 @@
         }
 
-        final var len = bytes.length;
+        final int len = bytes.length;
         if (len == 0) {
             return "";
         }
 
-        var hexChars = new char[len * 2];
-        var j = 0;
+        char[] hexChars = new char[len * 2];
+        int j = 0;
         for (final int v : bytes) {
             hexChars[j++] = HEX_ARRAY[(v & 0xf0) >> 4];
@@ -541,8 +541,8 @@
      */
     public static <T> List<T> topologicalSort(final MultiMap<T, T> dependencies) {
-        var deps = new MultiMap<T, T>();
-        for (var key : dependencies.keySet()) {
+        MultiMap<T, T> deps = new MultiMap<>();
+        for (T key : dependencies.keySet()) {
             deps.putVoid(key);
-            for (var val : dependencies.get(key)) {
+            for (T val : dependencies.get(key)) {
                 deps.putVoid(val);
                 deps.put(key, val);
@@ -550,8 +550,8 @@
         }
 
-        var size = deps.size();
+        int size = deps.size();
         List<T> sorted = new ArrayList<>();
-        for (var i = 0; i < size; ++i) {
-            var parentless = deps.keySet().stream()
+        for (int i = 0; i < size; ++i) {
+            T parentless = deps.keySet().stream()
                     .filter(key -> deps.get(key).isEmpty())
                     .findFirst().orElse(null);
@@ -559,5 +559,5 @@
             sorted.add(parentless);
             deps.remove(parentless);
-            for (var key : deps.keySet()) {
+            for (T key : deps.keySet()) {
                 deps.remove(key, parentless);
             }
@@ -679,5 +679,5 @@
             return Collections.emptyMap();
         } else if (map.size() == 1) {
-            final var entry = map.entrySet().iterator().next();
+            final Map.Entry<K, V> entry = map.entrySet().iterator().next();
             return Collections.singletonMap(entry.getKey(), entry.getValue());
         } else if (mapOfEntries != null) {
@@ -795,7 +795,7 @@
         }
 
-        var start = 0;
-        var end = str.length();
-        var leadingSkipChar = true;
+        int start = 0;
+        int end = str.length();
+        boolean leadingSkipChar = true;
         while (leadingSkipChar && start < end) {
             leadingSkipChar = isStrippedChar(str.charAt(start), skipChars);
@@ -804,5 +804,5 @@
             }
         }
-        var trailingSkipChar = true;
+        boolean trailingSkipChar = true;
         while (trailingSkipChar && end > start) {
             trailingSkipChar = isStrippedChar(str.charAt(end - 1), skipChars);
@@ -866,7 +866,7 @@
             Logging.debug(String.join(" ", command));
         }
-        var out = Files.createTempFile("josm_exec_" + command.get(0) + "_", ".txt");
+        Path out = Files.createTempFile("josm_exec_" + command.get(0) + "_", ".txt");
         try {
-            var p = new ProcessBuilder(command).redirectErrorStream(true).redirectOutput(out.toFile()).start();
+            Process p = new ProcessBuilder(command).redirectErrorStream(true).redirectOutput(out.toFile()).start();
             if (!p.waitFor(timeout, unit) || p.exitValue() != 0) {
                 throw new ExecutionException(command.toString(), null);
@@ -888,9 +888,9 @@
      */
     public static File getJosmTempDir() {
-        var tmpDir = getSystemProperty("java.io.tmpdir");
+        String tmpDir = getSystemProperty("java.io.tmpdir");
         if (tmpDir == null) {
             return null;
         }
-        final var josmTmpDir = new File(tmpDir, "JOSM");
+        final File josmTmpDir = new File(tmpDir, "JOSM");
         if (!josmTmpDir.exists() && !josmTmpDir.mkdirs()) {
             Logging.warn("Unable to create temp directory " + josmTmpDir);
@@ -920,13 +920,13 @@
         // Is it less than 1 hour ?
         if (elapsedTime < MILLIS_OF_HOUR) {
-            final var min = elapsedTime / MILLIS_OF_MINUTE;
+            final long min = elapsedTime / MILLIS_OF_MINUTE;
             return String.format("%d %s %d %s", min, tr("min"), (elapsedTime - min * MILLIS_OF_MINUTE) / MILLIS_OF_SECOND, tr("s"));
         }
         // Is it less than 1 day ?
         if (elapsedTime < MILLIS_OF_DAY) {
-            final var hour = elapsedTime / MILLIS_OF_HOUR;
+            final long hour = elapsedTime / MILLIS_OF_HOUR;
             return String.format("%d %s %d %s", hour, tr("h"), (elapsedTime - hour * MILLIS_OF_HOUR) / MILLIS_OF_MINUTE, tr("min"));
         }
-        var days = elapsedTime / MILLIS_OF_DAY;
+        long days = elapsedTime / MILLIS_OF_DAY;
         return String.format("%d %s %d %s", days, trn("day", "days", days), (elapsedTime - days * MILLIS_OF_DAY) / MILLIS_OF_HOUR, tr("h"));
     }
@@ -943,5 +943,5 @@
             throw new IllegalArgumentException("bytes must be >= 0");
         }
-        var unitIndex = 0;
+        int unitIndex = 0;
         double value = bytes;
         while (value >= 1024 && unitIndex < SIZE_UNITS.length) {
@@ -967,9 +967,9 @@
     public static String getPositionListString(List<Integer> positionList) {
         Collections.sort(positionList);
-        final var sb = new StringBuilder(32);
+        final StringBuilder sb = new StringBuilder(32);
         sb.append(positionList.get(0));
-        var cnt = 0;
+        int cnt = 0;
         int last = positionList.get(0);
-        for (var i = 1; i < positionList.size(); ++i) {
+        for (int i = 1; i < positionList.size(); ++i) {
             int cur = positionList.get(i);
             if (cur == last + 1) {
@@ -1030,7 +1030,7 @@
      */
     public static Throwable getRootCause(Throwable t) {
-        var result = t;
+        Throwable result = t;
         if (result != null) {
-            var cause = result.getCause();
+            Throwable cause = result.getCause();
             while (cause != null && !cause.equals(result)) {
                 result = cause;
@@ -1050,5 +1050,5 @@
      */
     public static <T> T[] addInArrayCopy(T[] array, T item) {
-        var biggerCopy = Arrays.copyOf(array, array.length + 1);
+        T[] biggerCopy = Arrays.copyOf(array, array.length + 1);
         biggerCopy[array.length] = item;
         return biggerCopy;
@@ -1063,5 +1063,5 @@
      */
     public static String shortenString(String s, int maxLength) {
-        final var ellipses = "...";
+        final String ellipses = "...";
         CheckParameterUtil.ensureThat(maxLength >= ellipses.length(), "maxLength is shorter than " + ellipses.length());
         if (s != null && s.length() > maxLength) {
@@ -1101,5 +1101,5 @@
             if (elements.size() > maxElements) {
                 final Collection<T> r = new ArrayList<>(maxElements);
-                final var it = elements.iterator();
+                final Iterator<T> it = elements.iterator();
                 while (r.size() < maxElements - 1) {
                     r.add(it.next());
@@ -1126,10 +1126,10 @@
             return url;
 
-        final var query = url.substring(url.indexOf('?') + 1);
-
-        final var sb = new StringBuilder(url.substring(0, url.indexOf('?') + 1));
-
-        for (var i = 0; i < query.length(); i++) {
-            final var c = query.substring(i, i + 1);
+        final String query = url.substring(url.indexOf('?') + 1);
+
+        final StringBuilder sb = new StringBuilder(url.substring(0, url.indexOf('?') + 1));
+
+        for (int i = 0; i < query.length(); i++) {
+            final String c = query.substring(i, i + 1);
             if (URL_CHARS.contains(c)) {
                 sb.append(c);
@@ -1152,5 +1152,5 @@
      */
     public static String encodeUrl(String s) {
-        final var enc = StandardCharsets.UTF_8.name();
+        final String enc = StandardCharsets.UTF_8.name();
         try {
             return URLEncoder.encode(s, enc);
@@ -1172,5 +1172,5 @@
      */
     public static String decodeUrl(String s) {
-        final var enc = StandardCharsets.UTF_8.name();
+        final String enc = StandardCharsets.UTF_8.name();
         try {
             return URLDecoder.decode(s, enc);
@@ -1220,5 +1220,5 @@
             @Override
             public Thread newThread(final Runnable runnable) {
-                final var thread = new Thread(runnable, String.format(Locale.ENGLISH, nameFormat, count.getAndIncrement()));
+                final Thread thread = new Thread(runnable, String.format(Locale.ENGLISH, nameFormat, count.getAndIncrement()));
                 thread.setPriority(threadPriority);
                 return thread;
@@ -1298,5 +1298,5 @@
     public static boolean isSimilar(String string1, String string2) {
         // check plain strings
-        var distance = getLevenshteinDistance(string1, string2);
+        int distance = getLevenshteinDistance(string1, string2);
 
         // check if only the case differs, so we don't consider large distance as different strings
@@ -1339,5 +1339,5 @@
         }
 
-        for (var length : values) {
+        for (double length : values) {
             standardDeviation += Math.pow(length - mean, 2);
         }
@@ -1360,7 +1360,7 @@
         }
         List<int[]> groups = new ArrayList<>();
-        var current = new int[]{Integer.MIN_VALUE, Integer.MIN_VALUE};
+        int[] current = {Integer.MIN_VALUE, Integer.MIN_VALUE};
         groups.add(current);
-        for (var row : integers) {
+        for (int row : integers) {
             if (current[0] == Integer.MIN_VALUE) {
                 current[0] = row;
@@ -1397,5 +1397,5 @@
     @SuppressWarnings("ThreadPriorityCheck")
     public static ForkJoinPool newForkJoinPool(String pref, final String nameFormat, final int threadPriority) {
-        final var noThreads = Config.getPref().getInt(pref, Runtime.getRuntime().availableProcessors());
+        final int noThreads = Config.getPref().getInt(pref, Runtime.getRuntime().availableProcessors());
         return new ForkJoinPool(noThreads, new ForkJoinPool.ForkJoinWorkerThreadFactory() {
             final AtomicLong count = new AtomicLong(0);
@@ -1467,5 +1467,5 @@
         if (value != null) {
             try {
-                var old = System.setProperty(key, value);
+                String old = System.setProperty(key, value);
                 if (Logging.isDebugEnabled() && !value.equals(old)) {
                     if (!key.toLowerCase(Locale.ENGLISH).contains("password")) {
@@ -1493,5 +1493,5 @@
      */
     public static boolean hasExtension(String filename, String... extensions) {
-        var name = filename.toLowerCase(Locale.ENGLISH).replace("?format=raw", "");
+        String name = filename.toLowerCase(Locale.ENGLISH).replace("?format=raw", "");
         return Arrays.stream(extensions)
                 .anyMatch(ext -> name.endsWith('.' + ext.toLowerCase(Locale.ENGLISH)));
@@ -1516,25 +1516,12 @@
      * @return byte array of data in input stream (empty if stream is null)
      * @throws IOException if any I/O error occurs
-     */
+     * @deprecated since xxx -- use {@link InputStream#readAllBytes()} instead
+     */
+    @Deprecated
     public static byte[] readBytesFromStream(InputStream stream) throws IOException {
-        // TODO: remove this method when switching to Java 11 and use InputStream.readAllBytes
         if (stream == null) {
             return new byte[0];
         }
-        try (stream; var bout = new ByteArrayOutputStream(stream.available())) {
-            final var buffer = new byte[8192];
-            var finished = false;
-            do {
-                var read = stream.read(buffer);
-                if (read >= 0) {
-                    bout.write(buffer, 0, read);
-                } else {
-                    finished = true;
-                }
-            } while (!finished);
-            if (bout.size() == 0)
-                return new byte[0];
-            return bout.toByteArray();
-        }
+        return stream.readAllBytes();
     }
 
@@ -1600,17 +1587,17 @@
      */
     public static List<GlyphVector> getGlyphVectorsBidi(String string, Font font, FontRenderContext frc) {
-        final var gvs = new ArrayList<GlyphVector>();
-        final var bidi = new Bidi(string, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
-        final var levels = new byte[bidi.getRunCount()];
-        final var dirStrings = new DirectionString[levels.length];
-        for (var i = 0; i < levels.length; ++i) {
+        final List<GlyphVector> gvs = new ArrayList<>();
+        final Bidi bidi = new Bidi(string, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+        final byte[] levels = new byte[bidi.getRunCount()];
+        final DirectionString[] dirStrings = new DirectionString[levels.length];
+        for (int i = 0; i < levels.length; ++i) {
             levels[i] = (byte) bidi.getRunLevel(i);
-            final var substr = string.substring(bidi.getRunStart(i), bidi.getRunLimit(i));
-            final var dir = levels[i] % 2 == 0 ? Bidi.DIRECTION_LEFT_TO_RIGHT : Bidi.DIRECTION_RIGHT_TO_LEFT;
+            final String substr = string.substring(bidi.getRunStart(i), bidi.getRunLimit(i));
+            final int dir = levels[i] % 2 == 0 ? Bidi.DIRECTION_LEFT_TO_RIGHT : Bidi.DIRECTION_RIGHT_TO_LEFT;
             dirStrings[i] = new DirectionString(dir, substr);
         }
         Bidi.reorderVisually(levels, 0, dirStrings, 0, levels.length);
-        for (var dirString : dirStrings) {
-            var chars = dirString.str.toCharArray();
+        for (DirectionString dirString : dirStrings) {
+            final char[] chars = dirString.str.toCharArray();
             gvs.add(font.layoutGlyphVector(frc, chars, 0, chars.length, dirString.direction));
         }
@@ -1709,5 +1696,5 @@
     public static int getJavaVersion() {
         // Switch to Runtime.version() once we move past Java 8
-        var version = Objects.requireNonNull(getSystemProperty("java.version"));
+        String version = Objects.requireNonNull(getSystemProperty("java.version"));
         if (version.startsWith("1.")) {
             version = version.substring(2);
@@ -1718,6 +1705,6 @@
         // 9
         // 9.0.1
-        var dotPos = version.indexOf('.');
-        var dashPos = version.indexOf('-');
+        int dotPos = version.indexOf('.');
+        int dashPos = version.indexOf('-');
         return Integer.parseInt(version.substring(0,
                 dotPos > -1 ? dotPos : dashPos > -1 ? dashPos : version.length()));
@@ -1731,5 +1718,5 @@
     public static int getJavaUpdate() {
         // Switch to Runtime.version() once we move past Java 8
-        var version = Objects.requireNonNull(getSystemProperty("java.version"));
+        String version = Objects.requireNonNull(getSystemProperty("java.version"));
         if (version.startsWith("1.")) {
             version = version.substring(2);
@@ -1742,12 +1729,12 @@
         // 17.0.4.1+1-LTS
         // $MAJOR.$MINOR.$SECURITY.$PATCH
-        var undePos = version.indexOf('_');
-        var dashPos = version.indexOf('-');
+        int undePos = version.indexOf('_');
+        int dashPos = version.indexOf('-');
         if (undePos > -1) {
             return Integer.parseInt(version.substring(undePos + 1,
                     dashPos > -1 ? dashPos : version.length()));
         }
-        var firstDotPos = version.indexOf('.');
-        var secondDotPos = version.indexOf('.', firstDotPos + 1);
+        int firstDotPos = version.indexOf('.');
+        int secondDotPos = version.indexOf('.', firstDotPos + 1);
         if (firstDotPos == secondDotPos) {
             return 0;
@@ -1764,7 +1751,7 @@
     public static int getJavaBuild() {
         // Switch to Runtime.version() once we move past Java 8
-        var version = Objects.requireNonNull(getSystemProperty("java.runtime.version"));
-        var bPos = version.indexOf('b');
-        var pPos = version.indexOf('+');
+        String version = Objects.requireNonNull(getSystemProperty("java.runtime.version"));
+        int bPos = version.indexOf('b');
+        int pPos = version.indexOf('+');
         try {
             return Integer.parseInt(version.substring(bPos > -1 ? bPos + 1 : pPos + 1));
@@ -1783,5 +1770,5 @@
         try {
             Object value;
-            var c = Class.forName("com.sun.deploy.config.BuiltInProperties");
+            Class<?> c = Class.forName("com.sun.deploy.config.BuiltInProperties");
             try {
                 value = c.getDeclaredField("JRE_EXPIRATION_DATE").get(null);
@@ -1807,5 +1794,5 @@
     public static String getJavaLatestVersion() {
         try {
-            var versions = HttpClient.create(
+            String[] versions = HttpClient.create(
                     new URL(Config.getPref().get(
                             "java.baseline.version.url",
@@ -1813,5 +1800,5 @@
                     .connect().fetchContent().split("\n", -1);
             if (getJavaVersion() <= 11 && isRunningWebStart()) { // OpenWebStart currently only has Java 11
-                for (var version : versions) {
+                for (String version : versions) {
                     if (version.startsWith("11")) {
                         return version;
@@ -1819,5 +1806,5 @@
                 }
             } else if (getJavaVersion() <= 17) {
-                for (var version : versions) {
+                for (String version : versions) {
                     if (version.startsWith("17")) { // Use current Java LTS
                         return version;
@@ -1942,5 +1929,5 @@
                     return url.openStream();
                 } catch (FileNotFoundException | InvalidPathException e) {
-                    final var betterUrl = betterJarUrl(url);
+                    final URL betterUrl = betterJarUrl(url);
                     if (betterUrl != null) {
                         try {
@@ -1979,13 +1966,13 @@
     public static URL betterJarUrl(URL jarUrl, URL defaultUrl) throws IOException {
         // Workaround to https://bugs.openjdk.java.net/browse/JDK-4523159
-        var urlPath = jarUrl.getPath().replace("%20", " ");
+        String urlPath = jarUrl.getPath().replace("%20", " ");
         if (urlPath.startsWith("file:/") && urlPath.split("!", -1).length > 2) {
             // Locate jar file
-            var index = urlPath.lastIndexOf("!/");
-            final var jarFile = Paths.get(urlPath.substring("file:/".length(), index));
-            var filename = jarFile.getFileName();
-            var jarTime = Files.readAttributes(jarFile, BasicFileAttributes.class).lastModifiedTime();
+            int index = urlPath.lastIndexOf("!/");
+            final Path jarFile = Paths.get(urlPath.substring("file:/".length(), index));
+            Path filename = jarFile.getFileName();
+            FileTime jarTime = Files.readAttributes(jarFile, BasicFileAttributes.class).lastModifiedTime();
             // Copy it to temp directory (hopefully free of exclamation mark) if needed (missing or older jar)
-            final var jarCopy = Paths.get(getSystemProperty("java.io.tmpdir")).resolve(filename);
+            final Path jarCopy = Paths.get(getSystemProperty("java.io.tmpdir")).resolve(filename);
             if (!jarCopy.toFile().exists() ||
                     Files.readAttributes(jarCopy, BasicFileAttributes.class).lastModifiedTime().compareTo(jarTime) < 0) {
@@ -2026,5 +2013,5 @@
             Logging.trace(e);
             try {
-                final var betterUrl = betterJarUrl(cl.getResource(path));
+                final URL betterUrl = betterJarUrl(cl.getResource(path));
                 if (betterUrl != null) {
                     return betterUrl.openStream();
Index: trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 19050)
@@ -65,5 +65,5 @@
     }
 
-    private class Parser extends DefaultHandler {
+    private final class Parser extends DefaultHandler {
         private final Stack<Object> current = new Stack<>();
         private StringBuilder characters = new StringBuilder(64);
@@ -78,5 +78,5 @@
         }
 
-        protected void throwException(Exception e) throws XmlParsingException {
+        void throwException(Exception e) throws XmlParsingException {
             throw new XmlParsingException(e).rememberLocation(locator);
         }
Index: trunk/src/org/openstreetmap/josm/tools/bugreport/BugReportQueue.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/bugreport/BugReportQueue.java	(revision 19049)
+++ trunk/src/org/openstreetmap/josm/tools/bugreport/BugReportQueue.java	(revision 19050)
@@ -89,5 +89,5 @@
     }
 
-    private class BugReportDisplayRunnable implements Runnable {
+    private final class BugReportDisplayRunnable implements Runnable {
 
         private volatile boolean running = true;
