Index: /trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(revision 13560)
+++ /trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(revision 13561)
@@ -26,24 +26,4 @@
 */
 public abstract class AbstractPrimitive implements IPrimitive {
-
-    /**
-     * This is a visitor that can be used to loop over the keys/values of this primitive.
-     *
-     * @author Michael Zangl
-     * @since 8742
-     * @since 10600 (functional interface)
-     */
-    @FunctionalInterface
-    public interface KeyValueVisitor {
-
-        /**
-         * This method gets called for every tag received.
-         *
-         * @param primitive This primitive
-         * @param key   The key
-         * @param value The value
-         */
-        void visitKeyValue(AbstractPrimitive primitive, String key, String value);
-    }
 
     private static final AtomicLong idCounter = new AtomicLong(0);
Index: /trunk/src/org/openstreetmap/josm/data/osm/KeyValueVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/KeyValueVisitor.java	(revision 13561)
+++ /trunk/src/org/openstreetmap/josm/data/osm/KeyValueVisitor.java	(revision 13561)
@@ -0,0 +1,23 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.osm;
+
+/**
+ * This is a visitor that can be used to loop over the keys/values of this primitive.
+ *
+ * @author Michael Zangl
+ * @since 8742
+ * @since 10600 (functional interface)
+ * @since 13561 (extracted from {@link AbstractPrimitive}, supports {@link Tagged} objects)
+ */
+@FunctionalInterface
+public interface KeyValueVisitor {
+
+    /**
+     * This method gets called for every tag received.
+     *
+     * @param primitive This primitive
+     * @param key   The key
+     * @param value The value
+     */
+    void visitKeyValue(Tagged primitive, String key, String value);
+}
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedNode.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedNode.java	(revision 13560)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedNode.java	(revision 13561)
@@ -8,7 +8,8 @@
 
 import org.openstreetmap.josm.command.Command;
-import org.openstreetmap.josm.data.osm.AbstractPrimitive;
+import org.openstreetmap.josm.data.osm.KeyValueVisitor;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Tagged;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
@@ -20,5 +21,5 @@
  * @author frsantos
  */
-public class UntaggedNode extends Test implements AbstractPrimitive.KeyValueVisitor {
+public class UntaggedNode extends Test implements KeyValueVisitor {
 
     protected static final int UNTAGGED_NODE_BLANK = 201;
@@ -54,10 +55,10 @@
     }
 
-    private static OsmPrimitive[] castPrim(AbstractPrimitive n) {
+    private static OsmPrimitive[] castPrim(Tagged n) {
         return n instanceof OsmPrimitive ? (new OsmPrimitive[]{(OsmPrimitive) n}) : (new OsmPrimitive[0]);
     }
 
     @Override
-    public void visitKeyValue(AbstractPrimitive n, String key, String value) {
+    public void visitKeyValue(Tagged n, String key, String value) {
         if (key.toLowerCase(Locale.ENGLISH).contains("fixme") || value.toLowerCase(Locale.ENGLISH).contains("fixme")) {
             /* translation note: don't translate quoted words */
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java	(revision 13560)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java	(revision 13561)
@@ -30,9 +30,9 @@
 
 import org.openstreetmap.josm.data.Version;
-import org.openstreetmap.josm.data.osm.AbstractPrimitive;
-import org.openstreetmap.josm.data.osm.AbstractPrimitive.KeyValueVisitor;
+import org.openstreetmap.josm.data.osm.KeyValueVisitor;
 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.Tagged;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
@@ -197,5 +197,5 @@
 
             @Override
-            public void visitKeyValue(AbstractPrimitive p, String key, String value) {
+            public void visitKeyValue(Tagged p, String key, String value) {
                 MapCSSKeyRules v = index.get(key);
                 if (v != null) {
