Index: trunk/src/org/openstreetmap/josm/actions/relation/ExportRelationToGpxAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/ExportRelationToGpxAction.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/actions/relation/ExportRelationToGpxAction.java	(revision 15121)
@@ -152,30 +152,29 @@
             final HashMap<String, Integer> names = new HashMap<>();
             for (int i = 0; i < flat.size(); i++) {
-                if (!wct.get(i).isOnewayLoopBackwardPart) {
-                    if (!wct.get(i).direction.isRoundabout()) {
-                        if (!wct.get(i).linkPrev && !trkseg.isEmpty()) {
-                            gpxData.addTrack(new ImmutableGpxTrack(trk, trkAttr));
-                            trkAttr.clear();
-                            trk.clear();
-                            trkseg.clear();
-                            trk.add(trkseg);
-                        }
-                        if (trkAttr.isEmpty()) {
-                            flat.get(i).getWay().referrers(Relation.class)
-                                    .filter(relsFound::contains)
-                                    .findFirst()
-                                    .ifPresent(r -> {
-                                        trkAttr.put("name", r.getName() != null ? r.getName() : r.getId());
-                                        trkAttr.put("desc", tr("based on osm route relation data, timestamps are synthetic"));
-                                    });
-                            GpxData.ensureUniqueName(trkAttr, names);
-                        }
-                        List<Node> ln = flat.get(i).getWay().getNodes();
-                        if (wct.get(i).direction == WayConnectionType.Direction.BACKWARD)
-                            Collections.reverse(ln);
-                        for (Node n: ln) {
-                            trkseg.add(OsmDataLayer.nodeToWayPoint(n, TimeUnit.SECONDS.toMillis(time)));
-                            time += 1;
-                        }
+                WayConnectionType wayConnectionType = wct.get(i);
+                if (!wayConnectionType.isOnewayLoopBackwardPart && !wayConnectionType.direction.isRoundabout()) {
+                    if (!wayConnectionType.linkPrev && !trkseg.isEmpty()) {
+                        gpxData.addTrack(new ImmutableGpxTrack(trk, trkAttr));
+                        trkAttr.clear();
+                        trk.clear();
+                        trkseg.clear();
+                        trk.add(trkseg);
+                    }
+                    if (trkAttr.isEmpty()) {
+                        flat.get(i).getWay().referrers(Relation.class)
+                                .filter(relsFound::contains)
+                                .findFirst()
+                                .ifPresent(r -> {
+                                    trkAttr.put("name", r.getName() != null ? r.getName() : r.getId());
+                                    trkAttr.put("desc", tr("based on osm route relation data, timestamps are synthetic"));
+                                });
+                        GpxData.ensureUniqueName(trkAttr, names);
+                    }
+                    List<Node> ln = flat.get(i).getWay().getNodes();
+                    if (wayConnectionType.direction == WayConnectionType.Direction.BACKWARD)
+                        Collections.reverse(ln);
+                    for (Node n: ln) {
+                        trkseg.add(OsmDataLayer.nodeToWayPoint(n, TimeUnit.SECONDS.toMillis(time)));
+                        time += 1;
                     }
                 }
Index: trunk/src/org/openstreetmap/josm/data/StructUtils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/StructUtils.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/data/StructUtils.java	(revision 15121)
@@ -147,5 +147,5 @@
      * @return the resulting map (same data content as <code>struct</code>)
      */
-    public static <T> Map<String, String> serializeStruct(T struct, Class<T> klass) {
+    public static <T> HashMap<String, String> serializeStruct(T struct, Class<T> klass) {
         T structPrototype;
         try {
@@ -155,5 +155,5 @@
         }
 
-        Map<String, String> hash = new LinkedHashMap<>();
+        HashMap<String, String> hash = new LinkedHashMap<>();
         for (Field f : klass.getDeclaredFields()) {
             if (f.getAnnotation(StructEntry.class) == null) {
Index: trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java	(revision 15121)
@@ -461,11 +461,9 @@
 
         List<GpxTrack> trks = getTracks().stream()
-            .flatMap(trk -> {
-                return trk.getSegments().stream().map(seg -> {
+            .flatMap(trk -> trk.getSegments().stream().map(seg -> {
                     HashMap<String, Object> attrs = new HashMap<>(trk.getAttributes());
                     ensureUniqueName(attrs, counts);
                     return new ImmutableGpxTrack(Arrays.asList(seg), attrs);
-                });
-            })
+                }))
             .collect(Collectors.toCollection(ArrayList<GpxTrack>::new));
 
Index: trunk/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java	(revision 15121)
@@ -8,4 +8,5 @@
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -137,5 +138,5 @@
      */
     public boolean isClosed() {
-        return getNumNodes() >= 3 && nodeIds.get(0) == nodeIds.get(nodeIds.size()-1);
+        return getNumNodes() >= 3 && Objects.equals(nodeIds.get(0), nodeIds.get(nodeIds.size()-1));
     }
 
Index: trunk/src/org/openstreetmap/josm/data/validation/Test.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/Test.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/data/validation/Test.java	(revision 15121)
@@ -324,5 +324,5 @@
      */
     public boolean isCanceled() {
-        return progressMonitor != null ? progressMonitor.isCanceled() : false;
+        return progressMonitor != null && progressMonitor.isCanceled();
     }
 
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/PublicTransportRouteTest.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/PublicTransportRouteTest.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/PublicTransportRouteTest.java	(revision 15121)
@@ -52,5 +52,5 @@
                         .build());
                 return;
-            } else if (member.hasRole("") && OsmPrimitiveType.WAY.equals(member.getType())) {
+            } else if (member.hasRole("") && OsmPrimitiveType.WAY == member.getType()) {
                 membersToCheck.add(member);
                 routeNodes.addAll(member.getWay().getNodes());
@@ -67,5 +67,5 @@
                     || !(i == links.size() - 1 || link.linkNext)
                     || link.direction == null
-                    || WayConnectionType.Direction.NONE.equals(link.direction);
+                    || WayConnectionType.Direction.NONE == link.direction;
             if (hasError) {
                 errors.add(TestError.builder(this, Severity.WARNING, 3602)
@@ -79,5 +79,5 @@
         for (RelationMember member : r.getMembers()) {
             if (member.hasRole("stop", "stop_exit_only", "stop_entry_only")
-                    && OsmPrimitiveType.NODE.equals(member.getType())
+                    && OsmPrimitiveType.NODE == member.getType()
                     && !routeNodes.contains(member.getNode())) {
                 errors.add(TestError.builder(this, Severity.WARNING, 3603)
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 15121)
@@ -102,11 +102,11 @@
             @Override
             public void mapPaintStylesUpdated() {
-                SwingUtilities.invokeLater(() -> {
+                SwingUtilities.invokeLater(() ->
                     // Trigger a repaint of all data layers
                     MainApplication.getLayerManager().getLayers()
                         .stream()
                         .filter(layer -> layer instanceof OsmDataLayer)
-                        .forEach(Layer::invalidate);
-                });
+                        .forEach(Layer::invalidate)
+                );
             }
 
Index: trunk/src/org/openstreetmap/josm/gui/io/SaveLayerInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/SaveLayerInfo.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/gui/io/SaveLayerInfo.java	(revision 15121)
@@ -99,5 +99,5 @@
      */
     public void setDoSaveToFile(boolean doSaveToFile) {
-        this.doSaveToFile = isSavable() ? doSaveToFile : false;
+        this.doSaveToFile = isSavable() && doSaveToFile;
     }
 
@@ -117,5 +117,5 @@
      */
     public void setDoUploadToServer(boolean doUploadToServer) {
-        this.doUploadToServer = isUploadable() ? doUploadToServer : false;
+        this.doUploadToServer = isUploadable() && doUploadToServer;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 15121)
@@ -604,5 +604,5 @@
             List<String> forbiddenTerms = Config.getPref().getList(preferencePrefix+".forbidden-terms", defForbidden)
                     .stream().map(UploadAction::lower)
-                    .filter(x -> uploadValueLc.contains(x) && !exceptions.stream().anyMatch(uploadValueLc::contains))
+                    .filter(x -> uploadValueLc.contains(x) && exceptions.stream().noneMatch(uploadValueLc::contains))
                     .collect(Collectors.toList());
             if (!forbiddenTerms.isEmpty()) {
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 15121)
@@ -1132,6 +1132,6 @@
     @Override
     public boolean checkSaveConditions() {
-        if (isDataSetEmpty() && 1 != GuiHelper.runInEDTAndWaitAndReturn(() -> {
-            return new ExtendedDialog(
+        if (isDataSetEmpty() && 1 != GuiHelper.runInEDTAndWaitAndReturn(() ->
+            new ExtendedDialog(
                     MainApplication.getMainFrame(),
                     tr("Empty document"),
@@ -1139,6 +1139,6 @@
                 .setContent(tr("The document contains no data."))
                 .setButtonIcons("save", "cancel")
-                .showDialog().getValue();
-        })) {
+                .showDialog().getValue()
+        )) {
             return false;
         }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java	(revision 15121)
@@ -406,9 +406,7 @@
         }
         for (ColorEntry e : tableModel.getData()) {
-            if (e.info.getValue() != null) {
-                if (e.toProperty().put(e.info.getValue())
-                        && NamedColorProperty.COLOR_CATEGORY_MAPPAINT.equals(e.info.getCategory())) {
-                    ret = true;
-                }
+            if (e.info.getValue() != null && e.toProperty().put(e.info.getValue())
+                    && NamedColorProperty.COLOR_CATEGORY_MAPPAINT.equals(e.info.getCategory())) {
+                ret = true;
             }
         }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryProvidersPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryProvidersPanel.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryProvidersPanel.java	(revision 15121)
@@ -319,5 +319,4 @@
         activeToolbar.add(new NewEntryAction(ImageryInfo.ImageryType.TMS));
         activeToolbar.add(new NewEntryAction(ImageryInfo.ImageryType.WMTS));
-        //activeToolbar.add(edit); TODO
         activeToolbar.add(remove);
         add(activeToolbar, GBC.eol().anchor(GBC.NORTH).insets(0, 0, 5, 5));
@@ -698,6 +697,7 @@
             case 3:
                 return info.getExtendedUrl();
-            }
-            return null;
+            default:
+                return null;
+            }
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 15121)
@@ -55,5 +55,4 @@
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.FilterField;
-import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.plugins.PluginDownloadTask;
 import org.openstreetmap.josm.plugins.PluginInformation;
@@ -82,5 +81,4 @@
     }
 
-    private JosmTextField tfFilter;
     private PluginListPanel pnlPluginPreferences;
     private PluginPreferencesModel model;
@@ -190,9 +188,8 @@
         gc.gridx = 1;
         gc.weightx = 1.0;
-        tfFilter = new FilterField().filter(expr -> {
+        pnl.add(new FilterField().filter(expr -> {
             model.filterDisplayedPlugins(expr);
             pnlPluginPreferences.refreshView();
-        });
-        pnl.add(tfFilter, gc);
+        }), gc);
         return pnl;
     }
Index: trunk/src/org/openstreetmap/josm/io/CertificateAmendment.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/CertificateAmendment.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/io/CertificateAmendment.java	(revision 15121)
@@ -160,25 +160,25 @@
                 "0687260331a72403d909f105e69bcf0d32e1bd2493ffc6d9206d11bcd6770739",
                 "https://acme-v02.api.letsencrypt.org"),
-        // Government of Netherlands
+        // #14649 - Government of Netherlands - for PDOK aerial imagery at ​https://geodata.nationaalgeoregister.nl
         new NativeCertAmend(Collections.singleton("Staat der Nederlanden Root CA - G2"),
                 "Staat_der_Nederlanden_Root_CA_-_G2.crt",
                 "668c83947da63b724bece1743c31a0e6aed0db8ec5b31be377bb784f91b6716f",
                 "https://roottest-g2.pkioverheid.nl"),
-        // Government of Netherlands
+        // #14649 - Government of Netherlands - for PDOK aerial imagery at ​https://geodata.nationaalgeoregister.nl
         new NativeCertAmend(Arrays.asList("Government of Netherlands G3", "Staat der Nederlanden Root CA - G3"),
                 "Staat_der_Nederlanden_Root_CA_-_G3.crt",
                 "3c4fb0b95ab8b30032f432b86f535fe172c185d0fd39865837cf36187fa6f428",
                 "https://roottest-g3.pkioverheid.nl"),
-        // Trusted and used by French Government - https://www.certigna.fr/autorites/index.xhtml?ac=Racine#lracine
+        // #15178 - Trusted and used by French Government - for cadastre - https://www.certigna.fr/autorites/index.xhtml?ac=Racine#lracine
         new NativeCertAmend(Collections.singleton("Certigna"),
                 "Certigna.crt",
                 "e3b6a2db2ed7ce48842f7ac53241c7b71d54144bfb40c11f3f1d0b42f5eea12d",
                 "https://www.certigna.fr"),
-        // Trusted and used by Slovakian Government - https://eidas.disig.sk/en/cacert/
+        // #16307 - Trusted and used by Slovakian Government - https://eidas.disig.sk/en/cacert/
         new NativeCertAmend(Collections.singleton("CA Disig Root R2"),
                 "CA_Disig_Root_R2.pem",
                 "e23d4a036d7b70e9f595b1422079d2b91edfbb1fb651a0633eaa8a9dc5f80703",
                 "https://eidas.disig.sk"),
-        // Government of Taiwan - https://grca.nat.gov.tw/GRCAeng/index.html
+        // #17062 - Government of Taiwan - for https://data.gov.tw/license - https://grca.nat.gov.tw/GRCAeng/index.html
         new NativeCertAmend(Arrays.asList("TW Government Root Certification Authority", "Government Root Certification Authority"),
                 "Taiwan_GRCA.pem",
Index: trunk/src/org/openstreetmap/josm/spi/preferences/DefaultPreferenceChangeEvent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/spi/preferences/DefaultPreferenceChangeEvent.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/spi/preferences/DefaultPreferenceChangeEvent.java	(revision 15121)
@@ -9,4 +9,6 @@
  */
 public class DefaultPreferenceChangeEvent extends EventObject implements PreferenceChangeEvent {
+
+    private static final long serialVersionUID = 1L;
 
     private final String key;
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 15120)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 15121)
@@ -33,5 +33,5 @@
 
 /**
- * {@code PlatformHook} implementation for Apple Mac OS X systems.
+ * {@code PlatformHook} implementation for Apple macOS (formerly Mac OS X) systems.
  * @since 1023
  */
