Index: trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 10615)
@@ -21,4 +21,5 @@
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.Utils.Function;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -406,10 +407,5 @@
             return value == null || value.isEmpty()
                     ? Collections.<Long>emptySet() :
-                    new HashSet<>(Utils.transform(Arrays.asList(value.split(",")), new Utils.Function<String, Long>() {
-                        @Override
-                        public Long apply(String x) {
-                            return Long.valueOf(x);
-                        }
-                    }));
+                    new HashSet<>(Utils.transform(Arrays.asList(value.split(",")), (Function<String, Long>) x -> Long.valueOf(x)));
         }
 
Index: trunk/src/org/openstreetmap/josm/io/FileImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/FileImporter.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/FileImporter.java	(revision 10615)
@@ -115,12 +115,9 @@
 
     private static void displayCancel(final Throwable t) {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override
-            public void run() {
-                Notification note = new Notification(t.getMessage());
-                note.setIcon(JOptionPane.INFORMATION_MESSAGE);
-                note.setDuration(Notification.TIME_SHORT);
-                note.show();
-            }
+        GuiHelper.runInEDTAndWait(() -> {
+            Notification note = new Notification(t.getMessage());
+            note.setIcon(JOptionPane.INFORMATION_MESSAGE);
+            note.setDuration(Notification.TIME_SHORT);
+            note.show();
         });
     }
Index: trunk/src/org/openstreetmap/josm/io/FileWatcher.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/FileWatcher.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/FileWatcher.java	(revision 10615)
@@ -42,10 +42,5 @@
         try {
             watcher = FileSystems.getDefault().newWatchService();
-            thread = new Thread(new Runnable() {
-                @Override
-                public void run() {
-                    processEvents();
-                }
-            }, "File Watcher");
+            thread = new Thread((Runnable) this::processEvents, "File Watcher");
         } catch (IOException e) {
             Main.error(e);
Index: trunk/src/org/openstreetmap/josm/io/GpxExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 10615)
@@ -5,5 +5,4 @@
 
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.KeyAdapter;
@@ -276,31 +275,28 @@
 
         // CHECKSTYLE.ON: ParameterNumber
-        ActionListener authorActionListener = new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                boolean b = author.isSelected();
-                authorName.setEnabled(b);
-                email.setEnabled(b);
-                nameLabel.setEnabled(b);
-                emailLabel.setEnabled(b);
-                if (b) {
-                    String sAuthorName = data.getString(META_AUTHOR_NAME);
-                    if (sAuthorName == null) {
-                        sAuthorName = Main.pref.get("lastAuthorName");
-                    }
-                    authorName.setText(sAuthorName);
-                    String sEmail = data.getString(META_AUTHOR_EMAIL);
-                    if (sEmail == null) {
-                        sEmail = Main.pref.get("lastAuthorEmail");
-                    }
-                    email.setText(sEmail);
-                } else {
-                    authorName.setText("");
-                    email.setText("");
-                }
-                boolean isAuthorSet = !authorName.getText().isEmpty();
-                GpxExporter.enableCopyright(data, copyright, predefined, copyrightYear, copyrightLabel, copyrightYearLabel, warning,
-                        b && isAuthorSet);
-            }
+        ActionListener authorActionListener = e -> {
+            boolean b = author.isSelected();
+            authorName.setEnabled(b);
+            email.setEnabled(b);
+            nameLabel.setEnabled(b);
+            emailLabel.setEnabled(b);
+            if (b) {
+                String sAuthorName = data.getString(META_AUTHOR_NAME);
+                if (sAuthorName == null) {
+                    sAuthorName = Main.pref.get("lastAuthorName");
+                }
+                authorName.setText(sAuthorName);
+                String sEmail = data.getString(META_AUTHOR_EMAIL);
+                if (sEmail == null) {
+                    sEmail = Main.pref.get("lastAuthorEmail");
+                }
+                email.setText(sEmail);
+            } else {
+                authorName.setText("");
+                email.setText("");
+            }
+            boolean isAuthorSet = !authorName.getText().isEmpty();
+            GpxExporter.enableCopyright(data, copyright, predefined, copyrightYear, copyrightLabel, copyrightYearLabel, warning,
+                    b && isAuthorSet);
         };
         author.addActionListener(authorActionListener);
@@ -314,33 +310,30 @@
         authorName.addKeyListener(authorNameListener);
 
-        predefined.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                JList<String> l = new JList<>(LICENSES);
-                l.setVisibleRowCount(LICENSES.length);
-                l.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
-                int answer = JOptionPane.showConfirmDialog(
-                        Main.parent,
-                        new JScrollPane(l),
-                        tr("Choose a predefined license"),
-                        JOptionPane.OK_CANCEL_OPTION,
-                        JOptionPane.QUESTION_MESSAGE
-                );
-                if (answer != JOptionPane.OK_OPTION || l.getSelectedIndex() == -1)
-                    return;
-                StringBuilder license = new StringBuilder();
-                for (int i : l.getSelectedIndices()) {
-                    if (i == 2) {
-                        license = new StringBuilder("public domain");
-                        break;
-                    }
-                    if (license.length() > 0) {
-                        license.append(", ");
-                    }
-                    license.append(URLS[i]);
-                }
-                copyright.setText(license.toString());
-                copyright.setCaretPosition(0);
-            }
+        predefined.addActionListener(e -> {
+            JList<String> l = new JList<>(LICENSES);
+            l.setVisibleRowCount(LICENSES.length);
+            l.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+            int answer = JOptionPane.showConfirmDialog(
+                    Main.parent,
+                    new JScrollPane(l),
+                    tr("Choose a predefined license"),
+                    JOptionPane.OK_CANCEL_OPTION,
+                    JOptionPane.QUESTION_MESSAGE
+            );
+            if (answer != JOptionPane.OK_OPTION || l.getSelectedIndex() == -1)
+                return;
+            StringBuilder license = new StringBuilder();
+            for (int i : l.getSelectedIndices()) {
+                if (i == 2) {
+                    license = new StringBuilder("public domain");
+                    break;
+                }
+                if (license.length() > 0) {
+                    license.append(", ");
+                }
+                license.append(URLS[i]);
+            }
+            copyright.setText(license.toString());
+            copyright.setCaretPosition(0);
         });
 
Index: trunk/src/org/openstreetmap/josm/io/GpxImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxImporter.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/GpxImporter.java	(revision 10615)
@@ -117,15 +117,12 @@
     public static void addLayers(final GpxImporterData data) {
         // FIXME: remove UI stuff from the IO subsystem
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                if (data.markerLayer != null) {
-                    Main.getLayerManager().addLayer(data.markerLayer);
-                }
-                if (data.gpxLayer != null) {
-                    Main.getLayerManager().addLayer(data.gpxLayer);
-                }
-                data.postLayerTask.run();
+        GuiHelper.runInEDT(() -> {
+            if (data.markerLayer != null) {
+                Main.getLayerManager().addLayer(data.markerLayer);
             }
+            if (data.gpxLayer != null) {
+                Main.getLayerManager().addLayer(data.gpxLayer);
+            }
+            data.postLayerTask.run();
         });
     }
@@ -153,18 +150,15 @@
             }
         }
-        Runnable postLayerTask = new Runnable() {
-            @Override
-            public void run() {
-                if (!parsedProperly) {
-                    String msg;
-                    if (data.storageFile == null) {
-                        msg = tr("Error occurred while parsing gpx data for layer ''{0}''. Only a part of the file will be available.",
-                                gpxLayerName);
-                    } else {
-                        msg = tr("Error occurred while parsing gpx file ''{0}''. Only a part of the file will be available.",
-                                data.storageFile.getPath());
-                    }
-                    JOptionPane.showMessageDialog(null, msg);
+        Runnable postLayerTask = () -> {
+            if (!parsedProperly) {
+                String msg;
+                if (data.storageFile == null) {
+                    msg = tr("Error occurred while parsing gpx data for layer ''{0}''. Only a part of the file will be available.",
+                            gpxLayerName);
+                } else {
+                    msg = tr("Error occurred while parsing gpx file ''{0}''. Only a part of the file will be available.",
+                            data.storageFile.getPath());
                 }
+                JOptionPane.showMessageDialog(null, msg);
             }
         };
Index: trunk/src/org/openstreetmap/josm/io/MessageNotifier.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 10615)
@@ -65,18 +65,15 @@
                 final int unread = userInfo.getUnreadMessages();
                 if (unread > 0 && unread != lastUnreadCount) {
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override
-                        public void run() {
-                            JPanel panel = new JPanel(new GridBagLayout());
-                            panel.add(new JLabel(trn("You have {0} unread message.", "You have {0} unread messages.", unread, unread)),
-                                    GBC.eol());
-                            panel.add(new UrlLabel(Main.getBaseUserUrl() + '/' + userInfo.getDisplayName() + "/inbox",
-                                    tr("Click here to see your inbox.")), GBC.eol());
-                            panel.setOpaque(false);
-                            new Notification().setContent(panel)
-                                .setIcon(JOptionPane.INFORMATION_MESSAGE)
-                                .setDuration(Notification.TIME_LONG)
-                                .show();
-                        }
+                    GuiHelper.runInEDT(() -> {
+                        JPanel panel = new JPanel(new GridBagLayout());
+                        panel.add(new JLabel(trn("You have {0} unread message.", "You have {0} unread messages.", unread, unread)),
+                                GBC.eol());
+                        panel.add(new UrlLabel(Main.getBaseUserUrl() + '/' + userInfo.getDisplayName() + "/inbox",
+                                tr("Click here to see your inbox.")), GBC.eol());
+                        panel.setOpaque(false);
+                        new Notification().setContent(panel)
+                            .setIcon(JOptionPane.INFORMATION_MESSAGE)
+                            .setDuration(Notification.TIME_LONG)
+                            .show();
                     });
                     lastUnreadCount = unread;
Index: trunk/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java	(revision 10615)
@@ -17,10 +17,5 @@
     @Override
     protected String buildRequestString(final OsmPrimitiveType type, Set<Long> idPackage) {
-        final Utils.Function<Long, Object> toOverpassExpression = new Utils.Function<Long, Object>() {
-            @Override
-            public Object apply(Long x) {
-                return type.getAPIName() + '(' + x + ");>;";
-            }
-        };
+        final Utils.Function<Long, Object> toOverpassExpression = x -> type.getAPIName() + '(' + x + ");>;";
         final String query = '(' + Utils.join("", Utils.transform(idPackage, toOverpassExpression)) + ");out meta;";
         return "interpreter?data=" + Utils.encodeUrl(query);
Index: trunk/src/org/openstreetmap/josm/io/NMEAImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/NMEAImporter.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/NMEAImporter.java	(revision 10615)
@@ -50,13 +50,10 @@
                 final File fileFinal = file;
 
-                GuiHelper.runInEDT(new Runnable() {
-                    @Override
-                    public void run() {
-                        Main.getLayerManager().addLayer(gpxLayer);
-                        if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
-                            MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), fileFinal, gpxLayer);
-                            if (!ml.data.isEmpty()) {
-                                Main.getLayerManager().addLayer(ml);
-                            }
+                GuiHelper.runInEDT(() -> {
+                    Main.getLayerManager().addLayer(gpxLayer);
+                    if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
+                        MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), fileFinal, gpxLayer);
+                        if (!ml.data.isEmpty()) {
+                            Main.getLayerManager().addLayer(ml);
                         }
                     }
@@ -78,13 +75,8 @@
            .append("</html>");
         if (success) {
-            SwingUtilities.invokeLater(new Runnable() {
-                @Override
-                public void run() {
-                    new Notification(
-                            "<h3>" + tr("NMEA import success:") + "</h3>" + msg.toString())
-                            .setIcon(JOptionPane.INFORMATION_MESSAGE)
-                            .show();
-                }
-            });
+            SwingUtilities.invokeLater(() -> new Notification(
+                    "<h3>" + tr("NMEA import success:") + "</h3>" + msg.toString())
+                    .setIcon(JOptionPane.INFORMATION_MESSAGE)
+                    .show());
         } else {
             HelpAwareOptionPane.showMessageDialogInEDT(
Index: trunk/src/org/openstreetmap/josm/io/OsmChangeImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmChangeImporter.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/OsmChangeImporter.java	(revision 10615)
@@ -53,17 +53,14 @@
         // FIXME: remove UI stuff from IO subsystem
         //
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                if (dataSet.allPrimitives().isEmpty()) {
-                    JOptionPane.showMessageDialog(
-                            Main.parent,
-                            tr("No data found in file {0}.", filePath),
-                            tr("Open OsmChange file"),
-                            JOptionPane.INFORMATION_MESSAGE);
-                }
-                Main.getLayerManager().addLayer(layer);
-                layer.onPostLoadFromFile();
+        GuiHelper.runInEDT(() -> {
+            if (dataSet.allPrimitives().isEmpty()) {
+                JOptionPane.showMessageDialog(
+                        Main.parent,
+                        tr("No data found in file {0}.", filePath),
+                        tr("Open OsmChange file"),
+                        JOptionPane.INFORMATION_MESSAGE);
             }
+            Main.getLayerManager().addLayer(layer);
+            layer.onPostLoadFromFile();
         });
     }
Index: trunk/src/org/openstreetmap/josm/io/OsmConnection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmConnection.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/OsmConnection.java	(revision 10615)
@@ -13,5 +13,4 @@
 import java.nio.charset.StandardCharsets;
 import java.util.Objects;
-import java.util.concurrent.Callable;
 import java.util.concurrent.FutureTask;
 
@@ -129,16 +128,13 @@
                 throw new MissingOAuthAccessTokenException();
             }
-            final Runnable authTask = new FutureTask<>(new Callable<OAuthAuthorizationWizard>() {
-                @Override
-                public OAuthAuthorizationWizard call() throws Exception {
-                    // Concerning Utils.newDirectExecutor: Main.worker cannot be used since this connection is already
-                    // executed via Main.worker. The OAuth connections would block otherwise.
-                    final OAuthAuthorizationWizard wizard = new OAuthAuthorizationWizard(
-                            Main.parent, apiUrl.toExternalForm(), Utils.newDirectExecutor());
-                    wizard.showDialog();
-                    OAuthAccessTokenHolder.getInstance().setSaveToPreferences(true);
-                    OAuthAccessTokenHolder.getInstance().save(Main.pref, CredentialsManager.getInstance());
-                    return wizard;
-                }
+            final Runnable authTask = new FutureTask<>(() -> {
+                // Concerning Utils.newDirectExecutor: Main.worker cannot be used since this connection is already
+                // executed via Main.worker. The OAuth connections would block otherwise.
+                final OAuthAuthorizationWizard wizard = new OAuthAuthorizationWizard(
+                        Main.parent, apiUrl.toExternalForm(), Utils.newDirectExecutor());
+                wizard.showDialog();
+                OAuthAccessTokenHolder.getInstance().setSaveToPreferences(true);
+                OAuthAccessTokenHolder.getInstance().save(Main.pref, CredentialsManager.getInstance());
+                return wizard;
             });
             // exception handling differs from implementation at GuiHelper.runInEDTAndWait()
Index: trunk/src/org/openstreetmap/josm/io/OsmImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 10615)
@@ -92,12 +92,9 @@
 
         // FIXME: remove UI stuff from IO subsystem
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                OsmDataLayer layer = data.getLayer();
-                Main.getLayerManager().addLayer(layer);
-                data.getPostLayerTask().run();
-                data.getLayer().onPostLoadFromFile();
-            }
+        GuiHelper.runInEDT(() -> {
+            OsmDataLayer layer = data.getLayer();
+            Main.getLayerManager().addLayer(layer);
+            data.getPostLayerTask().run();
+            data.getLayer().onPostLoadFromFile();
         });
     }
@@ -132,22 +129,19 @@
 
     protected Runnable createPostLayerTask(final DataSet dataSet, final File associatedFile, final String layerName, final OsmDataLayer layer) {
-        return new Runnable() {
-            @Override
-            public void run() {
-                if (dataSet.allPrimitives().isEmpty()) {
-                    String msg;
-                    if (associatedFile == null) {
-                        msg = tr("No data found for layer ''{0}''.", layerName);
-                    } else {
-                        msg = tr("No data found in file ''{0}''.", associatedFile.getPath());
-                    }
-                    JOptionPane.showMessageDialog(
-                            Main.parent,
-                            msg,
-                            tr("Open OSM file"),
-                            JOptionPane.INFORMATION_MESSAGE);
+        return () -> {
+            if (dataSet.allPrimitives().isEmpty()) {
+                String msg;
+                if (associatedFile == null) {
+                    msg = tr("No data found for layer ''{0}''.", layerName);
+                } else {
+                    msg = tr("No data found in file ''{0}''.", associatedFile.getPath());
                 }
-                layer.onPostLoadFromFile();
+                JOptionPane.showMessageDialog(
+                        Main.parent,
+                        msg,
+                        tr("Open OSM file"),
+                        JOptionPane.INFORMATION_MESSAGE);
             }
+            layer.onPostLoadFromFile();
         };
     }
Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 10615)
@@ -576,9 +576,5 @@
             progressMonitor = NullProgressMonitor.INSTANCE;
         }
-        ProgressMonitor.CancelListener cancelListener = new ProgressMonitor.CancelListener() {
-            @Override public void operationCanceled() {
-                cancel = true;
-            }
-        };
+        ProgressMonitor.CancelListener cancelListener = () -> cancel = true;
         progressMonitor.addCancelListener(cancelListener);
         CheckParameterUtil.ensureParameterNotNull(source, "source");
Index: trunk/src/org/openstreetmap/josm/io/OsmWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmWriter.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/OsmWriter.java	(revision 10615)
@@ -97,13 +97,11 @@
      * Sorts {@code -1} &rarr; {@code -infinity}, then {@code +1} &rarr; {@code +infinity}
      */
-    protected static final Comparator<AbstractPrimitive> byIdComparator = new Comparator<AbstractPrimitive>() {
-        @Override public int compare(AbstractPrimitive o1, AbstractPrimitive o2) {
-            final long i1 = o1.getUniqueId();
-            final long i2 = o2.getUniqueId();
-            if (i1 < 0 && i2 < 0) {
-                return Long.compare(i2, i1);
-            } else {
-                return Long.compare(i1, i2);
-            }
+    protected static final Comparator<AbstractPrimitive> byIdComparator = (o1, o2) -> {
+        final long i1 = o1.getUniqueId();
+        final long i2 = o2.getUniqueId();
+        if (i1 < 0 && i2 < 0) {
+            return Long.compare(i2, i1);
+        } else {
+            return Long.compare(i1, i2);
         }
     };
@@ -263,10 +261,5 @@
     }
 
-    protected static final Comparator<Entry<String, String>> byKeyComparator = new Comparator<Entry<String, String>>() {
-        @Override
-        public int compare(Entry<String, String> o1, Entry<String, String> o2) {
-            return o1.getKey().compareTo(o2.getKey());
-        }
-    };
+    protected static final Comparator<Entry<String, String>> byKeyComparator = (o1, o2) -> o1.getKey().compareTo(o2.getKey());
 
     protected void addTags(Tagged osm, String tagname, boolean tagOpen) {
Index: trunk/src/org/openstreetmap/josm/io/WMSLayerImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/WMSLayerImporter.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/WMSLayerImporter.java	(revision 10615)
@@ -85,11 +85,8 @@
 
         // FIXME: remove UI stuff from IO subsystem
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                Main.getLayerManager().addLayer(layer);
-                if (zoomTo != null) {
-                    Main.map.mapView.zoomTo(zoomTo);
-                }
+        GuiHelper.runInEDT(() -> {
+            Main.getLayerManager().addLayer(layer);
+            if (zoomTo != null) {
+                Main.map.mapView.zoomTo(zoomTo);
             }
         });
Index: trunk/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java	(revision 10615)
@@ -46,22 +46,19 @@
         } else if (noSuccessWithLastResponse || username.isEmpty() || password.isEmpty()) {
             if (!GraphicsEnvironment.isHeadless()) {
-                GuiHelper.runInEDTAndWait(new Runnable() {
-                    @Override
-                    public void run() {
-                        CredentialDialog dialog;
-                        if (requestorType.equals(RequestorType.PROXY))
-                            dialog = CredentialDialog.getHttpProxyCredentialDialog(
-                                    username, password, host, getSaveUsernameAndPasswordCheckboxText());
-                        else
-                            dialog = CredentialDialog.getOsmApiCredentialDialog(
-                                    username, password, host, getSaveUsernameAndPasswordCheckboxText());
-                        dialog.setVisible(true);
-                        response.setCanceled(dialog.isCanceled());
-                        if (dialog.isCanceled())
-                            return;
-                        response.setUsername(dialog.getUsername());
-                        response.setPassword(dialog.getPassword());
-                        response.setSaveCredentials(dialog.isSaveCredentials());
-                    }
+                GuiHelper.runInEDTAndWait(() -> {
+                    CredentialDialog dialog;
+                    if (requestorType.equals(RequestorType.PROXY))
+                        dialog = CredentialDialog.getHttpProxyCredentialDialog(
+                                username, password, host, getSaveUsernameAndPasswordCheckboxText());
+                    else
+                        dialog = CredentialDialog.getOsmApiCredentialDialog(
+                                username, password, host, getSaveUsernameAndPasswordCheckboxText());
+                    dialog.setVisible(true);
+                    response.setCanceled(dialog.isCanceled());
+                    if (dialog.isCanceled())
+                        return;
+                    response.setUsername(dialog.getUsername());
+                    response.setPassword(dialog.getPassword());
+                    response.setSaveCredentials(dialog.isSaveCredentials());
                 });
             }
Index: trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 10615)
@@ -35,5 +35,4 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -217,10 +216,7 @@
         try {
             DocumentBuilder builder = Utils.newSafeDOMBuilder();
-            builder.setEntityResolver(new EntityResolver() {
-                @Override
-                public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
-                    Main.info("Ignoring DTD " + publicId + ", " + systemId);
-                    return new InputSource(new StringReader(""));
-                }
+            builder.setEntityResolver((publicId, systemId) -> {
+                Main.info("Ignoring DTD " + publicId + ", " + systemId);
+                return new InputSource(new StringReader(""));
             });
             Document document = builder.parse(new InputSource(new StringReader(incomingData)));
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 10615)
@@ -268,26 +268,22 @@
     public static void addTags(final Map<String, String> args, final String sender, final Collection<? extends OsmPrimitive> primitives) {
         if (args.containsKey("addtags")) {
-            GuiHelper.executeByMainWorkerInEDT(new Runnable() {
-
-                @Override
-                public void run() {
-                    Set<String> tagSet = new HashSet<>();
-                    for (String tag : Utils.decodeUrl(args.get("addtags")).split("\\|")) {
-                        if (!tag.trim().isEmpty() && tag.contains("=")) {
-                            tagSet.add(tag.trim());
-                        }
+            GuiHelper.executeByMainWorkerInEDT(() -> {
+                Set<String> tagSet = new HashSet<>();
+                for (String tag1 : Utils.decodeUrl(args.get("addtags")).split("\\|")) {
+                    if (!tag1.trim().isEmpty() && tag1.contains("=")) {
+                        tagSet.add(tag1.trim());
                     }
-                    if (!tagSet.isEmpty()) {
-                        String[][] keyValue = new String[tagSet.size()][2];
-                        int i = 0;
-                        for (String tag : tagSet) {
-                            // support a  =   b===c as "a"="b===c"
-                            String[] pair = tag.split("\\s*=\\s*", 2);
-                            keyValue[i][0] = pair[0];
-                            keyValue[i][1] = pair.length < 2 ? "" : pair[1];
-                            i++;
-                        }
-                        addTags(keyValue, sender, primitives);
+                }
+                if (!tagSet.isEmpty()) {
+                    String[][] keyValue = new String[tagSet.size()][2];
+                    int i = 0;
+                    for (String tag2 : tagSet) {
+                        // support a  =   b===c as "a"="b===c"
+                        String[] pair = tag2.split("\\s*=\\s*", 2);
+                        keyValue[i][0] = pair[0];
+                        keyValue[i][1] = pair.length < 2 ? "" : pair[1];
+                        i++;
                     }
+                    addTags(keyValue, sender, primitives);
                 }
             });
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 10615)
@@ -33,9 +33,5 @@
     @Override
     protected void handleRequest() {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                 addNode(args);
-            }
-        });
+        GuiHelper.runInEDTAndWait(() -> addNode(args));
     }
 
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 10615)
@@ -73,9 +73,5 @@
     @Override
     protected void handleRequest() throws RequestHandlerErrorException, RequestHandlerBadRequestException {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                way = addWay();
-            }
-        });
+        GuiHelper.runInEDTAndWait(() -> way = addWay());
         // parse parameter addtags=tag1=value1|tag2=value2
         AddTagsDialog.addTags(args, sender, Collections.singleton(way));
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java	(revision 10615)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.Utils.Function;
 
 /**
@@ -102,12 +103,9 @@
             }
         }
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    Main.getLayerManager().addLayer(ImageryLayer.create(imgInfo));
-                } catch (IllegalArgumentException e) {
-                    Main.error(e, false);
-                }
+        GuiHelper.runInEDT(() -> {
+            try {
+                Main.getLayerManager().addLayer(ImageryLayer.create(imgInfo));
+            } catch (IllegalArgumentException e) {
+                Main.error(e, false);
             }
         });
@@ -134,10 +132,5 @@
     public String[] getUsageExamples() {
         final String types = Utils.join("|", Utils.transform(Arrays.asList(ImageryInfo.ImageryType.values()),
-                new Utils.Function<ImageryInfo.ImageryType, String>() {
-            @Override
-            public String apply(ImageryInfo.ImageryType x) {
-                return x.getTypeString();
-            }
-        }));
+                (Function<ImageryType, String>) x -> x.getTypeString()));
         return new String[] {
             "/imagery?title=osm&type=tms&url=https://a.tile.openstreetmap.org/%7Bzoom%7D/%7Bx%7D/%7By%7D.png",
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 10615)
@@ -155,12 +155,9 @@
          */
         if (args.containsKey("addtags")) {
-            GuiHelper.executeByMainWorkerInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    DataSet ds = Main.getLayerManager().getEditDataSet();
-                    if (ds == null) // e.g. download failed
-                        return;
-                    ds.clearSelection();
-                }
+            GuiHelper.executeByMainWorkerInEDT(() -> {
+                DataSet ds = Main.getLayerManager().getEditDataSet();
+                if (ds == null) // e.g. download failed
+                    return;
+                ds.clearSelection();
             });
         }
@@ -170,26 +167,23 @@
         if (args.containsKey("select") && PermissionPrefWithDefault.CHANGE_SELECTION.isAllowed()) {
             // select objects after downloading, zoom to selection.
-            GuiHelper.executeByMainWorkerInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    Set<OsmPrimitive> newSel = new HashSet<>();
-                    DataSet ds = Main.getLayerManager().getEditDataSet();
-                    if (ds == null) // e.g. download failed
-                        return;
-                    for (SimplePrimitiveId id : toSelect) {
-                        final OsmPrimitive p = ds.getPrimitiveById(id);
-                        if (p != null) {
-                            newSel.add(p);
-                            forTagAdd.add(p);
-                        }
-                    }
-                    toSelect.clear();
-                    ds.setSelected(newSel);
-                    zoom(newSel, bbox);
-                    if (Main.isDisplayingMapView() && Main.map.relationListDialog != null) {
-                        Main.map.relationListDialog.selectRelations(null); // unselect all relations to fix #7342
-                        Main.map.relationListDialog.dataChanged(null);
-                        Main.map.relationListDialog.selectRelations(Utils.filteredCollection(newSel, Relation.class));
-                    }
+            GuiHelper.executeByMainWorkerInEDT(() -> {
+                Set<OsmPrimitive> newSel = new HashSet<>();
+                DataSet ds = Main.getLayerManager().getEditDataSet();
+                if (ds == null) // e.g. download failed
+                    return;
+                for (SimplePrimitiveId id : toSelect) {
+                    final OsmPrimitive p = ds.getPrimitiveById(id);
+                    if (p != null) {
+                        newSel.add(p);
+                        forTagAdd.add(p);
+                    }
+                }
+                toSelect.clear();
+                ds.setSelected(newSel);
+                zoom(newSel, bbox);
+                if (Main.isDisplayingMapView() && Main.map.relationListDialog != null) {
+                    Main.map.relationListDialog.selectRelations(null); // unselect all relations to fix #7342
+                    Main.map.relationListDialog.dataChanged(null);
+                    Main.map.relationListDialog.selectRelations(Utils.filteredCollection(newSel, Relation.class));
                 }
             });
@@ -197,13 +191,10 @@
             try {
                 final SearchCompiler.Match search = SearchCompiler.compile(args.get("search"));
-                Main.worker.submit(new Runnable() {
-                    @Override
-                    public void run() {
-                        final DataSet ds = Main.getLayerManager().getEditDataSet();
-                        final Collection<OsmPrimitive> filteredPrimitives = Utils.filter(ds.allPrimitives(), search);
-                        ds.setSelected(filteredPrimitives);
-                        forTagAdd.addAll(filteredPrimitives);
-                        zoom(filteredPrimitives, bbox);
-                    }
+                Main.worker.submit(() -> {
+                    final DataSet ds = Main.getLayerManager().getEditDataSet();
+                    final Collection<OsmPrimitive> filteredPrimitives = Utils.filter(ds.allPrimitives(), search);
+                    ds.setSelected(filteredPrimitives);
+                    forTagAdd.addAll(filteredPrimitives);
+                    zoom(filteredPrimitives, bbox);
                 });
             } catch (SearchCompiler.ParseError ex) {
@@ -218,14 +209,11 @@
         // add changeset tags after download if necessary
         if (args.containsKey("changeset_comment") || args.containsKey("changeset_source")) {
-            Main.worker.submit(new Runnable() {
-                @Override
-                public void run() {
-                    if (Main.getLayerManager().getEditDataSet() != null) {
-                        if (args.containsKey("changeset_comment")) {
-                            Main.getLayerManager().getEditDataSet().addChangeSetTag("comment", args.get("changeset_comment"));
-                        }
-                        if (args.containsKey("changeset_source")) {
-                            Main.getLayerManager().getEditDataSet().addChangeSetTag("source", args.get("changeset_source"));
-                        }
+            Main.worker.submit(() -> {
+                if (Main.getLayerManager().getEditDataSet() != null) {
+                    if (args.containsKey("changeset_comment")) {
+                        Main.getLayerManager().getEditDataSet().addChangeSetTag("comment", args.get("changeset_comment"));
+                    }
+                    if (args.containsKey("changeset_source")) {
+                        Main.getLayerManager().getEditDataSet().addChangeSetTag("source", args.get("changeset_source"));
                     }
                 }
@@ -245,11 +233,8 @@
         } else if (Main.isDisplayingMapView()) {
             // make sure this isn't called unless there *is* a MapView
-            GuiHelper.executeByMainWorkerInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    BoundingXYVisitor bbox1 = new BoundingXYVisitor();
-                    bbox1.visit(bbox);
-                    Main.map.mapView.zoomTo(bbox1);
-                }
+            GuiHelper.executeByMainWorkerInEDT(() -> {
+                BoundingXYVisitor bbox1 = new BoundingXYVisitor();
+                bbox1.visit(bbox);
+                Main.map.mapView.zoomTo(bbox1);
             });
         }
@@ -297,5 +282,5 @@
                     toSelect.add(SimplePrimitiveId.fromString(item));
                 } catch (IllegalArgumentException ex) {
-                    Main.warn("RemoteControl: invalid selection '" + item + "' ignored");
+                    Main.warn(ex, "RemoteControl: invalid selection '" + item + "' ignored");
                 }
             }
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 10615)
@@ -68,24 +68,16 @@
                     newLayer, ps, referrers, relationMembers, args.get("layer_name"), null);
             Main.worker.submit(task);
-            Main.worker.submit(new Runnable() {
-                @Override
-                public void run() {
-                    final List<PrimitiveId> downloaded = task.getDownloadedId();
-                    final DataSet ds = Main.getLayerManager().getEditDataSet();
-                    if (downloaded != null) {
-                        GuiHelper.runInEDT(new Runnable() {
-                            @Override
-                            public void run() {
-                                ds.setSelected(downloaded);
-                            }
-                        });
-                        Collection<OsmPrimitive> downlPrim = new HashSet<>();
-                        for (PrimitiveId id : downloaded) {
-                            downlPrim.add(ds.getPrimitiveById(id));
-                        }
-                        AddTagsDialog.addTags(args, sender, downlPrim);
+            Main.worker.submit(() -> {
+                final List<PrimitiveId> downloaded = task.getDownloadedId();
+                final DataSet ds = Main.getLayerManager().getEditDataSet();
+                if (downloaded != null) {
+                    GuiHelper.runInEDT(() -> ds.setSelected(downloaded));
+                    Collection<OsmPrimitive> downlPrim = new HashSet<>();
+                    for (PrimitiveId id : downloaded) {
+                        downlPrim.add(ds.getPrimitiveById(id));
                     }
-                    ps.clear();
+                    AddTagsDialog.addTags(args, sender, downlPrim);
                 }
+                ps.clear();
             });
         }
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/OpenFileHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/OpenFileHandler.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/OpenFileHandler.java	(revision 10615)
@@ -43,9 +43,5 @@
     @Override
     protected void handleRequest() throws RequestHandlerErrorException, RequestHandlerBadRequestException {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                OpenFileAction.openFiles(Arrays.asList(new File(args.get("filename"))));
-            }
-        });
+        GuiHelper.runInEDTAndWait(() -> OpenFileAction.openFiles(Arrays.asList(new File(args.get("filename")))));
     }
 
Index: trunk/src/org/openstreetmap/josm/io/session/GenericSessionExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/GenericSessionExporter.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/session/GenericSessionExporter.java	(revision 10615)
@@ -9,7 +9,5 @@
 import java.awt.Insets;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
 import java.io.File;
 import java.io.IOException;
@@ -153,16 +151,6 @@
         }
 
-        link.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                cl.show(cards, "link");
-            }
-        });
-        include.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                cl.show(cards, "include");
-            }
-        });
+        link.addActionListener(e -> cl.show(cards, "link"));
+        include.addActionListener(e -> cl.show(cards, "include"));
 
         topRow.add(export, GBC.std());
@@ -175,17 +163,14 @@
         p.add(cards, GBC.eol().insets(15, 0, 3, 3));
 
-        export.addItemListener(new ItemListener() {
-            @Override
-            public void itemStateChanged(ItemEvent e) {
-                if (e.getStateChange() == ItemEvent.DESELECTED) {
-                    GuiHelper.setEnabledRec(p, false);
-                    export.setEnabled(true);
-                } else {
-                    GuiHelper.setEnabledRec(p, true);
-                    if (save != null && saveAction != null) {
-                        save.setEnabled(saveAction.isEnabled());
-                    }
-                    link.setEnabled(file != null && file.exists());
+        export.addItemListener(e -> {
+            if (e.getStateChange() == ItemEvent.DESELECTED) {
+                GuiHelper.setEnabledRec(p, false);
+                export.setEnabled(true);
+            } else {
+                GuiHelper.setEnabledRec(p, true);
+                if (save != null && saveAction != null) {
+                    save.setEnabled(saveAction.isEnabled());
                 }
+                link.setEnabled(file != null && file.exists());
             }
         });
Index: trunk/src/org/openstreetmap/josm/io/session/SessionReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 10613)
+++ trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 10615)
@@ -553,17 +553,15 @@
         public void show(final String title, final String message, final int icon, final ProgressMonitor progressMonitor) {
             try {
-                SwingUtilities.invokeAndWait(new Runnable() {
-                    @Override public void run() {
-                        ExtendedDialog dlg = new ExtendedDialog(
-                                Main.parent,
-                                title,
-                                new String[] {tr("Cancel"), tr("Skip layer and continue")}
-                                );
-                        dlg.setButtonIcons(new String[] {"cancel", "dialogs/next"});
-                        dlg.setIcon(icon);
-                        dlg.setContent(message);
-                        dlg.showDialog();
-                        cancel = dlg.getValue() != 2;
-                    }
+                SwingUtilities.invokeAndWait(() -> {
+                    ExtendedDialog dlg = new ExtendedDialog(
+                            Main.parent,
+                            title,
+                            new String[] {tr("Cancel"), tr("Skip layer and continue")}
+                            );
+                    dlg.setButtonIcons(new String[] {"cancel", "dialogs/next"});
+                    dlg.setIcon(icon);
+                    dlg.setContent(message);
+                    dlg.showDialog();
+                    cancel = dlg.getValue() != 2;
                 });
             } catch (InvocationTargetException | InterruptedException ex) {
