Index: /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectWayNodesAction.java
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectWayNodesAction.java	(revision 35172)
+++ /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectWayNodesAction.java	(revision 35173)
@@ -7,6 +7,7 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
-import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.openstreetmap.josm.actions.JosmAction;
@@ -20,6 +21,4 @@
  */
 public class SelectWayNodesAction extends JosmAction {
-
-    private ArrayList<Node> selectedNodes;
 
     /**
@@ -36,38 +35,26 @@
      * Called when the action is executed.
      *
-     * This method does some checking on the selection and calls the matching selectWayNodes method.
+     * This method does some checking on the selection.
      */
     @Override
     public void actionPerformed(ActionEvent e) {
-        Collection<OsmPrimitive> selection = getLayerManager().getEditDataSet().getSelected();
+        Set<Node> selectedNodes = new HashSet<>();
 
-        for (OsmPrimitive p : selection) {
+        for (OsmPrimitive p : getLayerManager().getEditDataSet().getSelected()) {
             if (p instanceof Way) {
                 Way w = (Way) p;
-                if (!w.isUsable() || w.getNodesCount() < 1) {
-                    continue;
+                if (w.isUsable() && w.getNodesCount() > 1) {
+                    for (Node n : w.getNodes()) {
+                        if (!n.isDisabled()) {
+                            selectedNodes.add(n);
+                        }
+                    }
                 }
-                selectWayNodes(w);
             } else if (p instanceof Node) {
-                Node n = (Node) p;
-                if (selectedNodes == null) {
-                    selectedNodes = new ArrayList<>();
-                }
-                selectedNodes.add(n);
+                selectedNodes.add((Node) p);
             }
         }
 
         getLayerManager().getEditDataSet().setSelected(selectedNodes);
-        selectedNodes = null;
-    }
-
-    private void selectWayNodes(Way w) {
-
-        for (Node n : w.getNodes()) {
-            if (selectedNodes == null) {
-                selectedNodes = new ArrayList<>();
-            }
-            if (!n.isDisabled()) selectedNodes.add(n);
-        }
     }
 
@@ -82,3 +69,2 @@
     }
 }
-
