Index: trunk/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java	(revision 11356)
+++ trunk/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java	(revision 11357)
@@ -20,7 +20,34 @@
 /**
  * Command that replaces the key of one or several objects
- *
+ * @since 3669
  */
 public class ChangePropertyKeyCommand extends Command {
+    final class SinglePrimitivePseudoCommand implements PseudoCommand {
+        private final String name;
+        private final OsmPrimitive osm;
+        private final Icon icon;
+
+        SinglePrimitivePseudoCommand(String name, OsmPrimitive osm, Icon icon) {
+            this.name = name;
+            this.osm = osm;
+            this.icon = icon;
+        }
+
+        @Override
+        public String getDescriptionText() {
+            return name;
+        }
+
+        @Override
+        public Icon getDescriptionIcon() {
+            return icon;
+        }
+
+        @Override
+        public Collection<? extends OsmPrimitive> getParticipatingPrimitives() {
+            return Collections.singleton(osm);
+        }
+    }
+
     /**
      * All primitives, that are affected with this command.
@@ -108,22 +135,5 @@
         for (final OsmPrimitive osm : objects) {
             osm.accept(v);
-            final String name = v.name;
-            final Icon icon = v.icon;
-            children.add(new PseudoCommand() {
-                @Override
-                public String getDescriptionText() {
-                    return name;
-                }
-
-                @Override
-                public Icon getDescriptionIcon() {
-                    return icon;
-                }
-
-                @Override
-                public Collection<? extends OsmPrimitive> getParticipatingPrimitives() {
-                    return Collections.singleton(osm);
-                }
-            });
+            children.add(new SinglePrimitivePseudoCommand(v.name, osm, v.icon));
         }
         return children;
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRenderer.java	(revision 11356)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRenderer.java	(revision 11357)
@@ -23,12 +23,12 @@
 /**
  * <p>Abstract common superclass for {@link Rendering} implementations.</p>
- *
+ * @since 4087
  */
 public abstract class AbstractMapRenderer implements Rendering {
 
     /** the graphics context to which the visitor renders OSM objects */
-    protected Graphics2D g;
+    protected final Graphics2D g;
     /** the map viewport - provides projection and hit detection functionality */
-    protected NavigatableComponent nc;
+    protected final NavigatableComponent nc;
 
     /**
Index: trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 11356)
+++ trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 11357)
@@ -524,12 +524,18 @@
 
     static final class NoBorderSplitPaneUI extends BasicSplitPaneUI {
+        static final class NoBorderBasicSplitPaneDivider extends BasicSplitPaneDivider {
+            private NoBorderBasicSplitPaneDivider(BasicSplitPaneUI ui) {
+                super(ui);
+            }
+
+            @Override
+            public void setBorder(Border b) {
+                // Do nothing
+            }
+        }
+
         @Override
         public BasicSplitPaneDivider createDefaultDivider() {
-            return new BasicSplitPaneDivider(this) {
-                @Override
-                public void setBorder(Border b) {
-                    // Do nothing
-                }
-            };
+            return new NoBorderBasicSplitPaneDivider(this);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/OsmLinkPaster.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/OsmLinkPaster.java	(revision 11356)
+++ trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/OsmLinkPaster.java	(revision 11357)
@@ -28,4 +28,11 @@
 public class OsmLinkPaster extends AbstractOsmDataPaster {
 
+    static final class NoWarnOpenLocationAction extends OpenLocationAction {
+        @Override
+        protected void warnNoSuitableTasks(String url) {
+            // ignore this.
+        }
+    }
+
     private static final BooleanProperty PASTE_REFERRERS = new BooleanProperty("paste.url.download-referrers", true);
     private static final String OSM_SERVER = "^https?\\://(\\w+\\.)?(osm|openstreetmap)\\.org/";
@@ -46,11 +53,5 @@
 
         String transferData = (String) support.getTransferable().getTransferData(df);
-        OpenLocationAction action = new OpenLocationAction() {
-            @Override
-            protected void warnNoSuitableTasks(String url) {
-                // ignore this.
-            }
-        };
-        if (action.openUrl(transferData)) {
+        if (new NoWarnOpenLocationAction().openUrl(transferData)) {
             return true;
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 11356)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 11357)
@@ -141,28 +141,12 @@
         popupMenuHandler.addAction(Main.main.menu.autoScaleActions.get("conflict"));
 
-        final ResolveToMyVersionAction resolveToMyVersionAction = new ResolveToMyVersionAction();
-        final ResolveToTheirVersionAction resolveToTheirVersionAction = new ResolveToTheirVersionAction();
+        ResolveToMyVersionAction resolveToMyVersionAction = new ResolveToMyVersionAction();
+        ResolveToTheirVersionAction resolveToTheirVersionAction = new ResolveToTheirVersionAction();
         addListSelectionListener(resolveToMyVersionAction);
         addListSelectionListener(resolveToTheirVersionAction);
-        final JMenuItem btnResolveMy = popupMenuHandler.addAction(resolveToMyVersionAction);
-        final JMenuItem btnResolveTheir = popupMenuHandler.addAction(resolveToTheirVersionAction);
-
-        popupMenuHandler.addListener(new PopupMenuListener() {
-            @Override
-            public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
-                btnResolveMy.setVisible(ExpertToggleAction.isExpert());
-                btnResolveTheir.setVisible(ExpertToggleAction.isExpert());
-            }
-
-            @Override
-            public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
-                // Do nothing
-            }
-
-            @Override
-            public void popupMenuCanceled(PopupMenuEvent e) {
-                // Do nothing
-            }
-        });
+        JMenuItem btnResolveMy = popupMenuHandler.addAction(resolveToMyVersionAction);
+        JMenuItem btnResolveTheir = popupMenuHandler.addAction(resolveToTheirVersionAction);
+
+        popupMenuHandler.addListener(new ResolveButtonsPopupMenuListener(btnResolveTheir, btnResolveMy));
     }
 
@@ -343,4 +327,30 @@
     public String helpTopic() {
         return ht("/Dialog/ConflictList");
+    }
+
+    static final class ResolveButtonsPopupMenuListener implements PopupMenuListener {
+        private final JMenuItem btnResolveTheir;
+        private final JMenuItem btnResolveMy;
+
+        private ResolveButtonsPopupMenuListener(JMenuItem btnResolveTheir, JMenuItem btnResolveMy) {
+            this.btnResolveTheir = btnResolveTheir;
+            this.btnResolveMy = btnResolveMy;
+        }
+
+        @Override
+        public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
+            btnResolveMy.setVisible(ExpertToggleAction.isExpert());
+            btnResolveTheir.setVisible(ExpertToggleAction.isExpert());
+        }
+
+        @Override
+        public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
+            // Do nothing
+        }
+
+        @Override
+        public void popupMenuCanceled(PopupMenuEvent e) {
+            // Do nothing
+        }
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java	(revision 11356)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java	(revision 11357)
@@ -185,4 +185,17 @@
      */
     public static class RelationMemberTableModel extends DefaultTableModel {
+        private static class RelationToChildReferenceComparator implements Comparator<RelationToChildReference> {
+            private NameFormatter nf = DefaultNameFormatter.getInstance();
+
+            @Override
+            public int compare(RelationToChildReference o1, RelationToChildReference o2) {
+                int cmp = o1.getChild().getDisplayName(nf).compareTo(o2.getChild().getDisplayName(nf));
+                if (cmp != 0) return cmp;
+                cmp = o1.getParent().getDisplayName(nf).compareTo(o2.getParent().getDisplayName(nf));
+                if (cmp != 0) return cmp;
+                return Integer.compare(o1.getPosition(), o2.getPosition());
+            }
+        }
+
         private final transient List<RelationToChildReference> data;
 
@@ -200,19 +213,4 @@
         }
 
-        protected void sort() {
-            data.sort(new Comparator<RelationToChildReference>() {
-                    private NameFormatter nf = DefaultNameFormatter.getInstance();
-                    @Override
-                    public int compare(RelationToChildReference o1, RelationToChildReference o2) {
-                        int cmp = o1.getChild().getDisplayName(nf).compareTo(o2.getChild().getDisplayName(nf));
-                        if (cmp != 0) return cmp;
-                        cmp = o1.getParent().getDisplayName(nf).compareTo(o2.getParent().getDisplayName(nf));
-                        if (cmp != 0) return cmp;
-                        return Integer.compare(o1.getPosition(), o2.getPosition());
-                    }
-                }
-            );
-        }
-
         public void populate(Collection<RelationToChildReference> references) {
             data.clear();
@@ -220,5 +218,5 @@
                 data.addAll(references);
             }
-            sort();
+            data.sort(new RelationToChildReferenceComparator());
             fireTableDataChanged();
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java	(revision 11356)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java	(revision 11357)
@@ -83,14 +83,5 @@
         dlg.setDialogsPanel(this);
         dlg.setVisible(false);
-        final JPanel p = new JPanel() {
-            /**
-             * Honoured by the MultiSplitPaneLayout when the
-             * entire Window is resized.
-             */
-            @Override
-            public Dimension getMinimumSize() {
-                return new Dimension(0, 40);
-            }
-        };
+        final JPanel p = new MinSizePanel();
         p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
         p.setVisible(false);
@@ -112,4 +103,12 @@
         } else {
             dlg.hideDialog();
+        }
+    }
+
+    static final class MinSizePanel extends JPanel {
+        @Override
+        public Dimension getMinimumSize() {
+            // Honoured by the MultiSplitPaneLayout when the entire Window is resized
+            return new Dimension(0, 40);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 11356)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 11357)
@@ -25,4 +25,5 @@
 import javax.swing.table.JTableHeader;
 import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableModel;
 
 import org.openstreetmap.josm.Main;
@@ -107,18 +108,5 @@
 
     protected void build() {
-        userTable = new JTable(filterModel) {
-            @Override
-            protected JTableHeader createDefaultTableHeader() {
-                return new JTableHeader(columnModel) {
-                    @Override
-                    public String getToolTipText(MouseEvent e) {
-                        java.awt.Point p = e.getPoint();
-                        int index = columnModel.getColumnIndexAtX(p.x);
-                        int realIndex = columnModel.getColumn(index).getModelIndex();
-                        return COLUMN_TOOLTIPS[realIndex];
-                    }
-                };
-            }
-        };
+        userTable = new UserTable(filterModel);
 
         userTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
@@ -252,4 +240,22 @@
         MultikeyActionsHandler.getInstance().removeAction(hidingFilterAction);
         super.destroy();
+    }
+
+    static final class UserTable extends JTable {
+        UserTable(TableModel dm) {
+            super(dm);
+        }
+
+        @Override
+        protected JTableHeader createDefaultTableHeader() {
+            return new JTableHeader(columnModel) {
+                @Override
+                public String getToolTipText(MouseEvent e) {
+                    int index = columnModel.getColumnIndexAtX(e.getPoint().x);
+                    int realIndex = columnModel.getColumn(index).getModelIndex();
+                    return COLUMN_TOOLTIPS[realIndex];
+                }
+            };
+        }
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 11356)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 11357)
@@ -139,13 +139,5 @@
         displaylist = new JList<>(model);
         displaylist.setSelectionModel(selectionModel);
-        displaylist.setCellRenderer(new OsmPrimitivRenderer() {
-            /**
-             * Don't show the default tooltip in the relation list.
-             */
-            @Override
-            protected String getComponentToolTipText(OsmPrimitive value) {
-                return null;
-            }
-        });
+        displaylist.setCellRenderer(new NoTooltipOsmRenderer());
         displaylist.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         displaylist.addMouseListener(new MouseEventHandler());
@@ -307,4 +299,12 @@
         f.addPropertyChangeListener("filter", evt -> model.setFilter(decorator.getMatch()));
         return f;
+    }
+
+    static final class NoTooltipOsmRenderer extends OsmPrimitivRenderer {
+        @Override
+        protected String getComponentToolTipText(OsmPrimitive value) {
+            // Don't show the default tooltip in the relation list
+            return null;
+        }
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java	(revision 11356)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java	(revision 11357)
@@ -25,4 +25,26 @@
 public class PresetListPanel extends JPanel {
 
+    static final class LabelMouseAdapter extends MouseAdapter {
+        private final TaggingPreset t;
+        private final TaggingPresetHandler presetHandler;
+
+        LabelMouseAdapter(TaggingPreset t, TaggingPresetHandler presetHandler) {
+            this.t = t;
+            this.presetHandler = presetHandler;
+        }
+
+        @Override
+        public void mouseClicked(MouseEvent e) {
+            Collection<OsmPrimitive> selection = t.createSelection(presetHandler.getSelection());
+            if (selection == null || selection.isEmpty())
+                return;
+            int answer = t.showDialog(selection, false);
+
+            if (answer == TaggingPreset.DIALOG_ANSWER_APPLY) {
+                presetHandler.updateTags(t.getChangedTags());
+            }
+        }
+    }
+
     /**
      * Constructs a new {@code PresetListPanel}.
@@ -50,17 +72,5 @@
         for (final TaggingPreset t : TaggingPresets.getMatchingPresets(types, tags, true)) {
             final JLabel lbl = new TaggingPresetLabel(t);
-            lbl.addMouseListener(new MouseAdapter() {
-                @Override
-                public void mouseClicked(MouseEvent e) {
-                    Collection<OsmPrimitive> selection = t.createSelection(presetHandler.getSelection());
-                    if (selection == null || selection.isEmpty())
-                        return;
-                    int answer = t.showDialog(selection, false);
-
-                    if (answer == TaggingPreset.DIALOG_ANSWER_APPLY) {
-                        presetHandler.updateTags(t.getChangedTags());
-                    }
-                }
-            });
+            lbl.addMouseListener(new LabelMouseAdapter(t, presetHandler));
             add(lbl, GBC.eol().fill(GBC.HORIZONTAL));
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 11356)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 11357)
@@ -233,18 +233,5 @@
             };
 
-    private final transient TaggingPresetHandler presetHandler = new TaggingPresetHandler() {
-        @Override
-        public void updateTags(List<Tag> tags) {
-            Command command = TaggingPreset.createCommand(getSelection(), tags);
-            if (command != null) {
-                Main.main.undoRedo.add(command);
-            }
-        }
-
-        @Override
-        public Collection<OsmPrimitive> getSelection() {
-            return Main.main == null ? Collections.<OsmPrimitive>emptyList() : Main.main.getInProgressSelection();
-        }
-    };
+    private final transient TaggingPresetHandler presetHandler = new TaggingPresetCommandHandler();
 
     /**
@@ -831,4 +818,19 @@
     }
 
+    static final class TaggingPresetCommandHandler implements TaggingPresetHandler {
+        @Override
+        public void updateTags(List<Tag> tags) {
+            Command command = TaggingPreset.createCommand(getSelection(), tags);
+            if (command != null) {
+                Main.main.undoRedo.add(command);
+            }
+        }
+
+        @Override
+        public Collection<OsmPrimitive> getSelection() {
+            return Main.main == null ? Collections.<OsmPrimitive>emptyList() : Main.main.getInProgressSelection();
+        }
+    }
+
     /**
      * Class that watches for mouse clicks
