Index: /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 13904)
+++ /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 13905)
@@ -28,4 +28,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -308,5 +309,5 @@
         }
         for (OsmPrimitive osm : sel) {
-            osm.accept(v);
+            osm.accept((PrimitiveVisitor) v);
         }
 
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 13904)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 13905)
@@ -10,8 +10,11 @@
 import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.INode;
+import org.openstreetmap.josm.data.osm.IRelation;
+import org.openstreetmap.josm.data.osm.IRelationMember;
+import org.openstreetmap.josm.data.osm.IWay;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -24,5 +27,5 @@
  * @author imi
  */
-public class BoundingXYVisitor implements OsmPrimitiveVisitor {
+public class BoundingXYVisitor implements OsmPrimitiveVisitor, PrimitiveVisitor {
 
     private ProjectionBounds bounds;
@@ -35,6 +38,21 @@
     @Override
     public void visit(Way w) {
+        visit((IWay<?>) w);
+    }
+
+    @Override
+    public void visit(Relation r) {
+        visit((IRelation<?>) r);
+    }
+
+    @Override
+    public void visit(INode n) {
+        visit((ILatLon) n);
+    }
+
+    @Override
+    public void visit(IWay<?> w) {
         if (w.isIncomplete()) return;
-        for (Node n : w.getNodes()) {
+        for (INode n : w.getNodes()) {
             visit(n);
         }
@@ -42,7 +60,7 @@
 
     @Override
-    public void visit(Relation e) {
+    public void visit(IRelation<?> r) {
         // only use direct members
-        for (RelationMember m : e.getMembers()) {
+        for (IRelationMember<?> m : r.getMembers()) {
             if (!m.isRelation()) {
                 m.getMember().accept(this);
@@ -226,5 +244,5 @@
                 continue;
             }
-            p.accept(this);
+            p.accept((PrimitiveVisitor) this);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 13904)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 13905)
@@ -40,4 +40,5 @@
 import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
 import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.validation.OsmValidator;
@@ -543,5 +544,5 @@
         public void visit(OsmPrimitive p) {
             if (p.isUsable()) {
-                p.accept(this);
+                p.accept((PrimitiveVisitor) this);
             }
         }
