Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedNode.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedNode.java	(revision 20578)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedNode.java	(revision 20579)
@@ -3,7 +3,7 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.List;
 
 import org.openstreetmap.josm.Main;
@@ -12,5 +12,4 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.Severity;
@@ -28,5 +27,5 @@
 
     /** Bag of all nodes */
-    Set<Node> emptyNodes;
+    List<Node> emptyNodes;
 
     /**
@@ -36,5 +35,5 @@
     {
         super(tr("Untagged and unconnected nodes")+".",
-              tr("This test checks for untagged nodes that are not part of any way."));
+                tr("This test checks for untagged nodes that are not part of any way."));
     }
 
@@ -42,6 +41,6 @@
     public void startTest(ProgressMonitor monitor)
     {
-    	super.startTest(monitor);
-        emptyNodes = new HashSet<Node>(100);
+        super.startTest(monitor);
+        emptyNodes = new ArrayList<Node>();
     }
 
@@ -49,21 +48,7 @@
     public void visit(Collection<OsmPrimitive> selection)
     {
-        // If there is a partial selection, it may be false positives if a
-        // node is selected, but not the container way. So, in this
-        // case, we must visit all ways, selected or not.
-        if (partialSelection) {
-            for (OsmPrimitive p : selection) {
-                if (p.isUsable() && p instanceof Node) {
-                    p.visit(this);
-                }
-            }
-            for (Way w : Main.main.getCurrentDataSet().getWays()) {
-                visit(w);
-            }
-        } else {
-            for (OsmPrimitive p : selection) {
-                if (p.isUsable()) {
-                    p.visit(this);
-                }
+        for (OsmPrimitive p : selection) {
+            if (p.isUsable() && p instanceof Node) {
+                p.visit(this);
             }
         }
@@ -73,14 +58,6 @@
     public void visit(Node n)
     {
-        if(n.isUsable() && !n.isTagged())
+        if(n.isUsable() && !n.isTagged() && n.getReferrers().isEmpty())
             emptyNodes.add(n);
-    }
-
-    @Override
-    public void visit(Way w)
-    {
-        for (Node n : w.getNodes()) {
-            emptyNodes.remove(n);
-        }
     }
 
