Index: trunk/src/org/openstreetmap/josm/actions/ExpertToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ExpertToggleAction.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/actions/ExpertToggleAction.java	(revision 10600)
@@ -19,4 +19,5 @@
 public class ExpertToggleAction extends ToggleAction {
 
+    @FunctionalInterface
     public interface ExpertModeChangeListener {
         void expertChanged(boolean isExpert);
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 10600)
@@ -555,5 +555,7 @@
      * @author Michael Zangl
      * @since 10457
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     interface SearchReceiver {
         /**
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 10600)
@@ -230,5 +230,7 @@
     /**
      * Classes implementing this interface can provide Match operators.
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     private interface MatchFactory {
         Collection<String> getKeywords();
Index: trunk/src/org/openstreetmap/josm/actions/upload/FixDataHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/upload/FixDataHook.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/actions/upload/FixDataHook.java	(revision 10600)
@@ -60,5 +60,7 @@
     /**
      * Common set of commands for data fixing
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface FixData {
         /**
Index: trunk/src/org/openstreetmap/josm/actions/upload/UploadHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/upload/UploadHook.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/actions/upload/UploadHook.java	(revision 10600)
@@ -4,4 +4,5 @@
 import org.openstreetmap.josm.data.APIDataSet;
 
+@FunctionalInterface
 public interface UploadHook {
 
Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 10600)
@@ -181,5 +181,7 @@
     /**
      * Listener to preference change events.
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface PreferenceChangedListener {
         /**
Index: trunk/src/org/openstreetmap/josm/data/SelectionChangedListener.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/SelectionChangedListener.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/SelectionChangedListener.java	(revision 10600)
@@ -16,5 +16,8 @@
  *
  * @author imi
+ * @since     8 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface SelectionChangedListener {
 
Index: trunk/src/org/openstreetmap/josm/data/SystemOfMeasurement.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/SystemOfMeasurement.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/SystemOfMeasurement.java	(revision 10600)
@@ -26,5 +26,7 @@
      * Interface to notify listeners of the change of the system of measurement.
      * @since 8554
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface SoMChangeListener {
         /**
Index: trunk/src/org/openstreetmap/josm/data/cache/ICachedLoaderListener.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/cache/ICachedLoaderListener.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/cache/ICachedLoaderListener.java	(revision 10600)
@@ -5,5 +5,7 @@
  * Cache loader listener.
  * @since 8168
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface ICachedLoaderListener {
 
Index: trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(revision 10600)
@@ -31,5 +31,7 @@
      * @author Michael Zangl
      * @since 8742
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface KeyValueVisitor {
 
Index: trunk/src/org/openstreetmap/josm/data/osm/ChangesetCacheListener.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/ChangesetCacheListener.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/osm/ChangesetCacheListener.java	(revision 10600)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.data.osm;
 
+@FunctionalInterface
 public interface ChangesetCacheListener {
 
Index: trunk/src/org/openstreetmap/josm/data/osm/PrimitiveDeepCopy.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/PrimitiveDeepCopy.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/osm/PrimitiveDeepCopy.java	(revision 10600)
@@ -18,4 +18,5 @@
 public class PrimitiveDeepCopy {
 
+    @FunctionalInterface
     public interface PasteBufferChangedListener {
         void pasteBufferChanged(PrimitiveDeepCopy pasteBuffer);
Index: trunk/src/org/openstreetmap/josm/data/osm/event/DataSetListenerAdapter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/event/DataSetListenerAdapter.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/osm/event/DataSetListenerAdapter.java	(revision 10600)
@@ -10,4 +10,5 @@
 public class DataSetListenerAdapter implements DataSetListener {
 
+    @FunctionalInterface
     public interface Listener {
         void processDatasetEvent(AbstractDatasetChangedEvent event);
Index: trunk/src/org/openstreetmap/josm/data/osm/history/History.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/history/History.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/osm/history/History.java	(revision 10600)
@@ -21,4 +21,5 @@
 public class History {
 
+    @FunctionalInterface
     private interface FilterPredicate {
         boolean matches(HistoryOsmPrimitive primitive);
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/Rendering.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/Rendering.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/Rendering.java	(revision 10600)
@@ -7,5 +7,8 @@
 /**
  * <p>An object which can render data provided by a {@link DataSet}.</p>
+ * @since  4087 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface Rendering {
     /**
Index: trunk/src/org/openstreetmap/josm/data/projection/ProjectionChangeListener.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/ProjectionChangeListener.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/projection/ProjectionChangeListener.java	(revision 10600)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.data.projection;
 
+@FunctionalInterface
 public interface ProjectionChangeListener {
     void projectionChanged(Projection oldValue, Projection newValue);
Index: trunk/src/org/openstreetmap/josm/data/projection/proj/ICentralMeridianProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/proj/ICentralMeridianProvider.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/projection/proj/ICentralMeridianProvider.java	(revision 10600)
@@ -10,5 +10,8 @@
  *
  * @see Proj
+ * @since  9532 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface ICentralMeridianProvider {
     /**
Index: trunk/src/org/openstreetmap/josm/data/projection/proj/IScaleFactorProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/proj/IScaleFactorProvider.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/projection/proj/IScaleFactorProvider.java	(revision 10600)
@@ -10,5 +10,8 @@
  *
  * @see Proj
+ * @since  9565 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface IScaleFactorProvider {
     /**
Index: trunk/src/org/openstreetmap/josm/data/projection/proj/ProjFactory.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/proj/ProjFactory.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/projection/proj/ProjFactory.java	(revision 10600)
@@ -4,6 +4,13 @@
 /**
  * Factory class that provides a Proj instance.
+ * @since  5227 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface ProjFactory {
+    /**
+     * Creates a Proj instance.
+     * @return a Proj instance
+     */
     Proj createInstance();
 }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java	(revision 10600)
@@ -214,4 +214,5 @@
     }
 
+    @FunctionalInterface
     public interface NormalizeRule {
 
Index: trunk/src/org/openstreetmap/josm/gui/FileDrop.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/FileDrop.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/FileDrop.java	(revision 10600)
@@ -437,4 +437,5 @@
      * </code>
      */
+    @FunctionalInterface
     public interface Listener {
 
@@ -651,4 +652,5 @@
          * @author Robert Harder
          */
+        @FunctionalInterface
         public interface Fetcher {
             /**
Index: trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 10600)
@@ -719,5 +719,7 @@
     /**
      * Interface to notify listeners of the change of the mapMode.
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface MapModeChangeListener {
         /**
Index: trunk/src/org/openstreetmap/josm/gui/MapFrameListener.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapFrameListener.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/MapFrameListener.java	(revision 10600)
@@ -5,5 +5,7 @@
  * Listener notified of MapFrame changes.
  * @since 5957
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface MapFrameListener {
 
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10600)
@@ -131,4 +131,5 @@
      */
     @Deprecated
+    @FunctionalInterface
     public interface EditLayerChangeListener {
 
@@ -149,5 +150,5 @@
         private boolean ignoreRepaint;
         @Override
-        public void paintablInvalidated(PaintableInvalidationEvent event) {
+        public void paintableInvalidated(PaintableInvalidationEvent event) {
             ignoreRepaint = true;
             repaint();
@@ -1318,5 +1319,7 @@
      * This is the only safe method to find changes to the map view, since many components call MapView.repaint() directly.
      * @author Michael Zangl
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface RepaintListener {
         /**
Index: trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 10600)
@@ -74,5 +74,7 @@
     /**
      * Interface to notify listeners of the change of the zoom area.
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface ZoomChangeListener {
         /**
Index: trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision 10600)
@@ -45,4 +45,5 @@
 public class SlippyMapBBoxChooser extends JMapViewer implements BBoxChooser {
 
+    @FunctionalInterface
     public interface TileSourceProvider {
         List<TileSource> getTileSources();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 10600)
@@ -190,11 +190,4 @@
 
     /**
-     * Interface to provide a callback for enabled state update.
-     */
-    protected interface IEnabledStateUpdating {
-        void updateEnabledState();
-    }
-
-    /**
      * Wires updater for enabled state to the events. Also updates dialog title if needed.
      * @param updater updater
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/IEnabledStateUpdating.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/IEnabledStateUpdating.java	(revision 10600)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/IEnabledStateUpdating.java	(revision 10600)
@@ -0,0 +1,15 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs;
+
+/**
+ * To be implemented by actions for which their enabled state depends on another model.
+ * @since 10600 (refactoring to new package, functional interface)
+ */
+@FunctionalInterface
+public interface IEnabledStateUpdating {
+
+    /**
+     * Called after the layer model has changed.
+     */
+    void updateEnabledState();
+}
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 10600)
@@ -52,5 +52,4 @@
 import org.openstreetmap.josm.gui.dialogs.layer.DeleteLayerAction;
 import org.openstreetmap.josm.gui.dialogs.layer.DuplicateAction;
-import org.openstreetmap.josm.gui.dialogs.layer.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.layer.LayerVisibilityAction;
 import org.openstreetmap.josm.gui.dialogs.layer.MergeAction;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetAware.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetAware.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetAware.java	(revision 10600)
@@ -7,5 +7,7 @@
  * Super interface of changeset-aware components.
  * @since 9493
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface ChangesetAware {
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/ActivateLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/ActivateLayerAction.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/ActivateLayerAction.java	(revision 10600)
@@ -10,4 +10,5 @@
 import javax.swing.AbstractAction;
 
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerAction.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerAction.java	(revision 10600)
@@ -12,4 +12,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.help.HelpUtil;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java	(revision 10600)
@@ -12,4 +12,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.help.HelpUtil;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/IEnabledStateUpdating.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/IEnabledStateUpdating.java	(revision 10599)
+++ 	(revision )
@@ -1,13 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.dialogs.layer;
-
-/**
- * To be implemented by actions for which their enabled state depends on another model.
- */
-public interface IEnabledStateUpdating {
-
-    /**
-     * Called after the layer model has changed.
-     */
-    void updateEnabledState();
-}
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java	(revision 10600)
@@ -25,4 +25,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.SideButton;
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MergeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MergeAction.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MergeAction.java	(revision 10600)
@@ -12,4 +12,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.help.HelpUtil;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MoveDownAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MoveDownAction.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MoveDownAction.java	(revision 10600)
@@ -8,4 +8,5 @@
 import javax.swing.AbstractAction;
 
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.tools.ImageProvider;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MoveUpAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MoveUpAction.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/MoveUpAction.java	(revision 10600)
@@ -8,4 +8,5 @@
 import javax.swing.AbstractAction;
 
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.tools.ImageProvider;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/ShowHideLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/ShowHideLayerAction.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/ShowHideLayerAction.java	(revision 10600)
@@ -13,4 +13,5 @@
 import javax.swing.JMenuItem;
 
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/IMemberModelListener.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/IMemberModelListener.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/IMemberModelListener.java	(revision 10600)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.gui.dialogs.relation;
 
+@FunctionalInterface
 public interface IMemberModelListener {
     void makeMemberVisible(int index);
Index: trunk/src/org/openstreetmap/josm/gui/help/Helpful.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/help/Helpful.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/help/Helpful.java	(revision 10600)
@@ -5,5 +5,7 @@
  * Anything on which we can provide help.
  * @since 2252
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface Helpful {
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/AbstractMapViewPaintable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/AbstractMapViewPaintable.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/layer/AbstractMapViewPaintable.java	(revision 10600)
@@ -91,5 +91,5 @@
     public void invalidate() {
         for (PaintableInvalidationListener l : invalidationListeners) {
-            l.paintablInvalidated(new PaintableInvalidationEvent(this));
+            l.paintableInvalidated(new PaintableInvalidationEvent(this));
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/layer/ImageProcessor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/ImageProcessor.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/layer/ImageProcessor.java	(revision 10600)
@@ -10,5 +10,8 @@
  *
  * @author Nipel-Crumple
+ * @since  8625 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface ImageProcessor {
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/Layer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 10600)
@@ -70,5 +70,7 @@
     /**
      * Action related to several layers.
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface MultiLayerAction {
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java	(revision 10600)
@@ -24,6 +24,7 @@
      * This listener listens to changes of the active or the edit layer.
      * @author Michael Zangl
-     *
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface ActiveLayerChangeListener {
         /**
Index: trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java	(revision 10600)
@@ -13,5 +13,8 @@
  * <p>
  * That class allows you to listen to paintable change events. Those methods may be moved here some time in the future.
+ * @since   608 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface MapViewPaintable {
 
@@ -51,11 +54,14 @@
      * This is a listener that listens to {@link PaintableInvalidationEvent}s
      * @author Michael Zangl
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     interface PaintableInvalidationListener {
         /**
          * Called whenever a {@link PaintableInvalidationEvent} is fired. This might be called from any thread.
          * @param event The event
+         * @ince 10600 (renamed)
          */
-        void paintablInvalidated(PaintableInvalidationEvent event);
+        void paintableInvalidated(PaintableInvalidationEvent event);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/NativeScaleLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/NativeScaleLayer.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/layer/NativeScaleLayer.java	(revision 10600)
@@ -11,5 +11,8 @@
  * Represents a layer that has native scales.
  * @author András Kolesár
+ * @since  9818 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface NativeScaleLayer {
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 10600)
@@ -239,4 +239,5 @@
     }
 
+    @FunctionalInterface
     public interface CommandQueueListener {
         void commandChanged(int queueSize, int redoSize);
@@ -245,5 +246,7 @@
     /**
      * Listener called when a state of this layer has changed.
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface LayerStateChangeListener {
         /**
Index: trunk/src/org/openstreetmap/josm/gui/layer/imagery/ImageryFilterSettings.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/imagery/ImageryFilterSettings.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/layer/imagery/ImageryFilterSettings.java	(revision 10600)
@@ -110,5 +110,7 @@
      * A listener that listens to filter changes
      * @author Michael Zangl
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface FilterChangeListener {
         /**
Index: trunk/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java	(revision 10600)
@@ -317,5 +317,7 @@
      * A listener that listens to changes to the {@link TileSourceDisplaySettings} object.
      * @author Michael Zangl
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface DisplaySettingsChangeListener {
         /**
Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java	(revision 10600)
@@ -14,5 +14,8 @@
  *
  * @author Frederik Ramm
+ * @since   200 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface MarkerProducers {
     /**
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Expression.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Expression.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Expression.java	(revision 10600)
@@ -9,5 +9,8 @@
  * Can be evaluated in a certain {@link Environment}. Usually takes
  * parameters, that are also Expressions and have to be evaluated first.
+ * @since  3848 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface Expression {
     /**
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java	(revision 10600)
@@ -11,4 +11,5 @@
 import org.openstreetmap.josm.gui.mappaint.StyleKeys;
 
+@FunctionalInterface
 public interface Instruction extends StyleKeys {
 
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Subpart.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Subpart.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Subpart.java	(revision 10600)
@@ -7,5 +7,8 @@
 /**
  * A subpart identifies different rendering layers (<code>::subpart</code> syntax).
+ * @since  8086 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface Subpart {
     String getId(Environment env);
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/BoxTextElement.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/BoxTextElement.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/BoxTextElement.java	(revision 10600)
@@ -34,5 +34,7 @@
     /**
      * Something that provides us with a {@link BoxProviderResult}
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface BoxProvider {
         /**
Index: trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceSettingFactory.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceSettingFactory.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceSettingFactory.java	(revision 10600)
@@ -2,7 +2,7 @@
 package org.openstreetmap.josm.gui.preferences;
 
+@FunctionalInterface
 public interface PreferenceSettingFactory {
 
     PreferenceSetting createPreferenceSetting();
-
 }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 10600)
@@ -182,6 +182,7 @@
      * Allows PreferenceSettings to do validation of entered values when ok was pressed.
      * If data is invalid then event can return false to cancel closing of preferences dialog.
-     *
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface ValidationListener {
         /**
@@ -302,4 +303,5 @@
     }
 
+    @FunctionalInterface
     private interface TabIdentifier {
         boolean identify(TabPreferenceSetting tps, Object param);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/SourceProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/SourceProvider.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/SourceProvider.java	(revision 10600)
@@ -4,4 +4,5 @@
 import java.util.Collection;
 
+@FunctionalInterface
 public interface SourceProvider {
 
Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java	(revision 10600)
@@ -35,5 +35,7 @@
     /**
      * A listener notified when the validation status of this panel change.
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface ContentValidationListener {
         /**
Index: trunk/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferenceListener.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferenceListener.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferenceListener.java	(revision 10600)
@@ -5,5 +5,7 @@
  * Listener called when proxy settings are updated.
  * @since 6525
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface ProxyPreferenceListener {
 
Index: trunk/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java	(revision 10600)
@@ -32,4 +32,5 @@
 public interface ProgressMonitor {
 
+    @FunctionalInterface
     public interface CancelListener {
         void operationCanceled();
Index: trunk/src/org/openstreetmap/josm/gui/util/ModifierListener.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/util/ModifierListener.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/util/ModifierListener.java	(revision 10600)
@@ -5,5 +5,7 @@
  * Listener called when pressed modifier keys change is detected
  * @since 7217
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface ModifierListener {
     void modifiersChanged(int modifiers);
Index: trunk/src/org/openstreetmap/josm/gui/widgets/HistoryChangedListener.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/HistoryChangedListener.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/HistoryChangedListener.java	(revision 10600)
@@ -4,4 +4,5 @@
 import java.util.List;
 
+@FunctionalInterface
 public interface HistoryChangedListener {
     void historyChanged(List<String> history);
Index: trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java	(revision 10600)
@@ -144,4 +144,5 @@
      * @see #setDividerPainter
      */
+    @FunctionalInterface
     public interface DividerPainter {
         /**
Index: trunk/src/org/openstreetmap/josm/io/OsmServerReadPostprocessor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerReadPostprocessor.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerReadPostprocessor.java	(revision 10600)
@@ -5,4 +5,5 @@
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 
+@FunctionalInterface
 public interface OsmServerReadPostprocessor {
 
Index: trunk/src/org/openstreetmap/josm/io/OsmServerWritePostprocessor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerWritePostprocessor.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerWritePostprocessor.java	(revision 10600)
@@ -7,4 +7,5 @@
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 
+@FunctionalInterface
 public interface OsmServerWritePostprocessor {
 
Index: trunk/src/org/openstreetmap/josm/io/auth/CredentialsManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/auth/CredentialsManager.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/io/auth/CredentialsManager.java	(revision 10600)
@@ -42,4 +42,5 @@
     private static CredentialsAgentFactory agentFactory;
 
+    @FunctionalInterface
     public interface CredentialsAgentFactory {
         CredentialsAgent getCredentialsAgent();
Index: trunk/src/org/openstreetmap/josm/io/session/SessionLayerImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/SessionLayerImporter.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/io/session/SessionLayerImporter.java	(revision 10600)
@@ -13,5 +13,7 @@
  * Session layer importer.
  * @since 4668
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface SessionLayerImporter {
 
Index: trunk/src/org/openstreetmap/josm/tools/Destroyable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Destroyable.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/tools/Destroyable.java	(revision 10600)
@@ -8,5 +8,8 @@
  *
  * @author immanuel.scholz
+ * @since   208 (creation)
+ * @since 10600 (functional interface)
  */
+@FunctionalInterface
 public interface Destroyable {
 
Index: trunk/src/org/openstreetmap/josm/tools/Diff.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Diff.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/tools/Diff.java	(revision 10600)
@@ -306,5 +306,7 @@
     /**
      * Script builder.
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface ScriptBuilder {
         /**
@@ -315,6 +317,7 @@
          * @param len1 number of lines in 2nd file
          * @return a linked list of changes - or null
+         * @since 10600 (renamed)
          */
-        Change build_script(
+        Change buildScript(
                 boolean[] changed0, int len0,
                 boolean[] changed1, int len1
@@ -322,10 +325,10 @@
     }
 
-    /** Scan the tables of which lines are inserted and deleted,
-     producing an edit script in reverse order.  */
-
+    /**
+     * Scan the tables of which lines are inserted and deleted, producing an edit script in reverse order.
+     */
     static class ReverseScript implements ScriptBuilder {
         @Override
-        public Change build_script(
+        public Change buildScript(
                 final boolean[] changed0, int len0,
                 final boolean[] changed1, int len1) {
@@ -360,5 +363,5 @@
             producing an edit script in forward order.  */
         @Override
-        public Change build_script(
+        public Change buildScript(
                 final boolean[] changed0, int len0,
                 final boolean[] changed1, int len1) {
@@ -438,5 +441,5 @@
 
         // Get the results of comparison in the form of a chain of `struct change's -- an edit script.
-        return bld.build_script(
+        return bld.buildScript(
                 filevec[0].changedFlag,
                 filevec[0].bufferedLines,
Index: trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 10600)
@@ -311,5 +311,7 @@
     /**
      * Callback interface for asynchronous image loading.
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface ImageCallback {
         /**
@@ -323,5 +325,7 @@
      * Callback interface for asynchronous image loading (with delayed scaling possibility).
      * @since 7693
-     */
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
     public interface ImageResourceCallback {
         /**
Index: trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 10599)
+++ trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 10600)
@@ -809,4 +809,5 @@
      */
     @Deprecated
+    @FunctionalInterface
     public interface Function<A, B> {
 
