Index: trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 12809)
@@ -18,5 +18,4 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
-import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
@@ -25,5 +24,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.osm.visitor.Visitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
@@ -183,5 +182,5 @@
      *
      */
-    static class UploadHullBuilder implements Visitor {
+    static class UploadHullBuilder implements OsmPrimitiveVisitor {
         private Set<OsmPrimitive> hull;
 
@@ -225,9 +224,4 @@
                 }
             }
-        }
-
-        @Override
-        public void visit(Changeset cs) {
-            // do nothing
         }
 
Index: trunk/src/org/openstreetmap/josm/command/Command.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/Command.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/command/Command.java	(revision 12809)
@@ -19,5 +19,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -44,5 +44,5 @@
     public static final int IS_INCOMPLETE = 2;
 
-    private static final class CloneVisitor extends AbstractVisitor {
+    private static final class CloneVisitor implements OsmPrimitiveVisitor {
         public final Map<OsmPrimitive, PrimitiveData> orig = new LinkedHashMap<>();
 
Index: trunk/src/org/openstreetmap/josm/data/osm/Changeset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Changeset.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/Changeset.java	(revision 12809)
@@ -14,5 +14,4 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.date.DateUtils;
@@ -108,6 +107,8 @@
      * Visitor pattern.
      * @param v visitor
-     */
-    public void visit(Visitor v) {
+     * @deprecated no longer supported
+     */
+    @Deprecated
+    public void visit(org.openstreetmap.josm.data.osm.visitor.Visitor v) {
         v.visit(this);
     }
Index: trunk/src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 12809)
@@ -13,6 +13,6 @@
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
-import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.data.projection.Projecting;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -235,5 +235,11 @@
 
     @Override
-    public void accept(Visitor visitor) {
+    @Deprecated
+    public void accept(org.openstreetmap.josm.data.osm.visitor.Visitor visitor) {
+        visitor.visit(this);
+    }
+
+    @Override
+    public void accept(OsmPrimitiveVisitor visitor) {
         visitor.visit(this);
     }
Index: trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 12809)
@@ -24,5 +24,5 @@
 import org.openstreetmap.josm.data.osm.search.SearchCompiler;
 import org.openstreetmap.josm.data.osm.search.SearchCompiler.Match;
-import org.openstreetmap.josm.data.osm.visitor.Visitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.gui.mappaint.StyleCache;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -1027,6 +1027,18 @@
      *
      * @param visitor the visitor. Ignored, if null.
-     */
-    public void visitReferrers(Visitor visitor) {
+     * @deprecated use {@link #visitReferrers(OsmPrimitiveVisitor)}
+     */
+    @Deprecated
+    public void visitReferrers(org.openstreetmap.josm.data.osm.visitor.Visitor visitor) {
+        visitReferrers((OsmPrimitiveVisitor) visitor);
+    }
+
+    /**
+     * <p>Visits {@code visitor} for all referrers.</p>
+     *
+     * @param visitor the visitor. Ignored, if null.
+     * @since 12809
+     */
+    public void visitReferrers(OsmPrimitiveVisitor visitor) {
         if (visitor == null) return;
         if (this.referrers == null)
@@ -1078,6 +1090,16 @@
      * visitor function.
      * @param visitor The visitor from which the visit() function must be called.
-     */
-    public abstract void accept(Visitor visitor);
+     * @deprecated will be removed along with {@link Visitor}
+     */
+    @Deprecated
+    public abstract void accept(org.openstreetmap.josm.data.osm.visitor.Visitor visitor);
+
+    /**
+     * Implementation of the visitor scheme. Subclasses have to call the correct
+     * visitor function.
+     * @param visitor The visitor from which the visit() function must be called.
+     * @since 12809
+     */
+    public abstract void accept(OsmPrimitiveVisitor visitor);
 
     /**
Index: trunk/src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 12809)
@@ -14,6 +14,6 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
-import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.tools.CopyList;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
@@ -177,5 +177,11 @@
 
     @Override
-    public void accept(Visitor visitor) {
+    @Deprecated
+    public void accept(org.openstreetmap.josm.data.osm.visitor.Visitor visitor) {
+        visitor.visit(this);
+    }
+
+    @Override
+    public void accept(OsmPrimitiveVisitor visitor) {
         visitor.visit(this);
     }
Index: trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 12809)
@@ -13,6 +13,6 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
-import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.tools.CopyList;
 import org.openstreetmap.josm.tools.Pair;
@@ -207,5 +207,10 @@
     }
 
-    @Override public void accept(Visitor visitor) {
+    @Deprecated
+    @Override public void accept(org.openstreetmap.josm.data.osm.visitor.Visitor visitor) {
+        visitor.visit(this);
+    }
+
+    @Override public void accept(OsmPrimitiveVisitor visitor) {
         visitor.visit(this);
     }
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/AbstractVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/AbstractVisitor.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/AbstractVisitor.java	(revision 12809)
@@ -10,5 +10,7 @@
  *
  * @author fred
+ * @deprecated use {@link OsmPrimitiveVisitor}
  */
+@Deprecated
 public abstract class AbstractVisitor implements Visitor {
 
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/AllNodesVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/AllNodesVisitor.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/AllNodesVisitor.java	(revision 12809)
@@ -16,5 +16,5 @@
  * @author imi
  */
-public class AllNodesVisitor extends AbstractVisitor {
+public class AllNodesVisitor implements OsmPrimitiveVisitor {
 
     /**
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 12809)
@@ -23,5 +23,5 @@
  * @author imi
  */
-public class BoundingXYVisitor extends AbstractVisitor {
+public class BoundingXYVisitor implements OsmPrimitiveVisitor {
 
     private ProjectionBounds bounds;
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitor.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitor.java	(revision 12809)
@@ -30,5 +30,5 @@
  * @since 1891
  */
-public class MergeSourceBuildingVisitor extends AbstractVisitor {
+public class MergeSourceBuildingVisitor implements OsmPrimitiveVisitor {
     private final DataSet selectionBase;
     private final DataSet hull;
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/Visitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/Visitor.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/Visitor.java	(revision 12809)
@@ -3,7 +3,4 @@
 
 import org.openstreetmap.josm.data.osm.Changeset;
-import org.openstreetmap.josm.data.osm.Node;
-import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.data.osm.Way;
 
 /**
@@ -11,26 +8,8 @@
  * can be visited by several different visitors.
  * @since 8
+ * @deprecated class will be removed (use {@link OsmPrimitiveVisitor} if suitable)
  */
-public interface Visitor {
-    /**
-     * Visiting call for points.
-     * @param n The node to inspect.
-     */
-    void visit(Node n);
-
-    /**
-     * Visiting call for lines.
-     * @param w The way to inspect.
-     * @since 64
-     */
-    void visit(Way w);
-
-    /**
-     * Visiting call for relations.
-     * @param r The relation to inspect.
-     * @since 343
-     */
-    void visit(Relation r);
-
+@Deprecated
+public interface Visitor extends OsmPrimitiveVisitor {
     /**
      * Visiting call for changesets.
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/ComputeStyleListWorker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/ComputeStyleListWorker.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/ComputeStyleListWorker.java	(revision 12809)
@@ -14,5 +14,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.osm.visitor.Visitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer.StyleRecord;
 import org.openstreetmap.josm.gui.NavigatableComponent;
@@ -33,5 +33,5 @@
  * @since 11914 (extracted from StyledMapRenderer)
  */
-public class ComputeStyleListWorker extends RecursiveTask<List<StyleRecord>> implements Visitor {
+public class ComputeStyleListWorker extends RecursiveTask<List<StyleRecord>> implements OsmPrimitiveVisitor {
     private final transient List<? extends OsmPrimitive> input;
     private final transient List<StyleRecord> output;
@@ -128,9 +128,4 @@
     }
 
-    @Override
-    public void visit(Changeset cs) {
-        throw new UnsupportedOperationException();
-    }
-
     /**
      * Add new style records for the given node.
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java	(revision 12809)
@@ -19,5 +19,4 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.osm.BBox;
-import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -27,5 +26,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
-import org.openstreetmap.josm.data.osm.visitor.Visitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
 import org.openstreetmap.josm.gui.MapViewState.MapViewRectangle;
@@ -39,5 +38,5 @@
  * @since 23
  */
-public class WireframeMapRenderer extends AbstractMapRenderer implements Visitor {
+public class WireframeMapRenderer extends AbstractMapRenderer implements OsmPrimitiveVisitor {
 
     /** Color Preference for ways not matching any other group */
@@ -388,11 +387,4 @@
     }
 
-    /**
-     * Visitor for changesets not used in this class
-     * @param cs The changeset for inspection.
-     */
-    @Override
-    public void visit(Changeset cs) {/* ignore */}
-
     @Override
     public void drawNode(Node n, Color color, int size, boolean fill) {
Index: trunk/src/org/openstreetmap/josm/data/validation/PaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/PaintVisitor.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/validation/PaintVisitor.java	(revision 12809)
@@ -16,5 +16,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
-import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.draw.MapViewPath;
@@ -27,5 +27,5 @@
  * @since 5671
  */
-public class PaintVisitor extends AbstractVisitor implements ValidatorVisitor {
+public class PaintVisitor implements OsmPrimitiveVisitor, ValidatorVisitor {
     /** The graphics */
     private final Graphics2D g;
Index: trunk/src/org/openstreetmap/josm/data/validation/Test.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/Test.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/validation/Test.java	(revision 12809)
@@ -22,5 +22,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.search.SearchCompiler.NotOutsideDataSourceArea;
-import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -38,5 +38,5 @@
  * @author frsantos
  */
-public class Test extends AbstractVisitor implements Comparable<Test> {
+public class Test implements OsmPrimitiveVisitor, Comparable<Test> {
 
     protected static final Predicate<OsmPrimitive> IN_DOWNLOADED_AREA = new NotOutsideDataSourceArea();
Index: trunk/src/org/openstreetmap/josm/data/validation/util/AggregatePrimitivesVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/util/AggregatePrimitivesVisitor.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/validation/util/AggregatePrimitivesVisitor.java	(revision 12809)
@@ -10,5 +10,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 
 /**
@@ -19,5 +19,5 @@
  * @author frsantos
  */
-public class AggregatePrimitivesVisitor extends AbstractVisitor {
+public class AggregatePrimitivesVisitor implements OsmPrimitiveVisitor {
     /** Aggregated data */
     private final Collection<OsmPrimitive> aggregatedData = new HashSet<>();
Index: trunk/src/org/openstreetmap/josm/data/validation/util/NameVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/util/NameVisitor.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/data/validation/util/NameVisitor.java	(revision 12809)
@@ -11,5 +11,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -19,5 +19,5 @@
  * @author imi
  */
-public class NameVisitor extends AbstractVisitor {
+public class NameVisitor implements OsmPrimitiveVisitor {
 
     /**
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 12809)
@@ -51,6 +51,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
-import org.openstreetmap.josm.data.osm.visitor.Visitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
@@ -253,5 +252,5 @@
             return;
         g.setColor(preferencesColor);
-        Visitor conflictPainter = new ConflictPainter(nc, g);
+        OsmPrimitiveVisitor conflictPainter = new ConflictPainter(nc, g);
         synchronized (this) {
             for (OsmPrimitive o : lstConflicts.getSelectedValuesList()) {
@@ -542,5 +541,5 @@
      * Paints conflicts.
      */
-    public static class ConflictPainter extends AbstractVisitor {
+    public static class ConflictPainter implements OsmPrimitiveVisitor {
         // Manage a stack of visited relations to avoid infinite recursion with cyclic relations (fix #7938)
         private final Set<Relation> visited = new HashSet<>();
Index: trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 12809)
@@ -35,5 +35,5 @@
 import org.openstreetmap.josm.data.osm.history.HistoryRelation;
 import org.openstreetmap.josm.data.osm.history.HistoryWay;
-import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -645,5 +645,5 @@
      *
      */
-    static class HistoryPrimitiveBuilder extends AbstractVisitor {
+    static class HistoryPrimitiveBuilder implements OsmPrimitiveVisitor {
         private HistoryOsmPrimitive clone;
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 12809)
@@ -76,6 +76,6 @@
 import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter;
 import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter.Listener;
-import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.data.osm.visitor.paint.MapRendererFactory;
 import org.openstreetmap.josm.data.osm.visitor.paint.Rendering;
@@ -243,5 +243,5 @@
      * A listener that counts the number of primitives it encounters
      */
-    public static final class DataCountVisitor extends AbstractVisitor {
+    public static final class DataCountVisitor implements OsmPrimitiveVisitor {
         /**
          * Nodes that have been visited
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 12809)
@@ -19,5 +19,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache;
 import org.openstreetmap.josm.gui.mappaint.Environment;
@@ -143,5 +143,5 @@
          *
          */
-        private class MatchingReferrerFinder extends AbstractVisitor {
+        private class MatchingReferrerFinder implements OsmPrimitiveVisitor {
             private final Environment e;
 
@@ -195,5 +195,5 @@
         }
 
-        private abstract static class AbstractFinder extends AbstractVisitor {
+        private abstract static class AbstractFinder implements OsmPrimitiveVisitor {
             protected final Environment e;
 
@@ -241,5 +241,5 @@
             }
 
-            private final AbstractVisitor innerVisitor = new AbstractFinder(e) {
+            private final OsmPrimitiveVisitor innerVisitor = new AbstractFinder(e) {
                 @Override
                 public void visit(Relation r) {
Index: trunk/src/org/openstreetmap/josm/io/GeoJSONWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GeoJSONWriter.java	(revision 12808)
+++ trunk/src/org/openstreetmap/josm/io/GeoJSONWriter.java	(revision 12809)
@@ -28,5 +28,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
+import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -97,5 +97,5 @@
     }
 
-    private class GeometryPrimitiveVisitor extends AbstractVisitor {
+    private class GeometryPrimitiveVisitor implements OsmPrimitiveVisitor {
 
         private final JsonObjectBuilder geomObj;
