Index: trunk/src/org/openstreetmap/josm/actions/MoveAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 12315)
+++ trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 12316)
@@ -133,6 +133,5 @@
         Collection<Node> affectedNodes = AllNodesVisitor.getAllNodes(selection);
 
-        Command c = !Main.main.undoRedo.commands.isEmpty()
-        ? Main.main.undoRedo.commands.getLast() : null;
+        Command c = Main.main.undoRedo.getLastCommand();
 
         ds.beginUpdate();
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 12315)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 12316)
@@ -1323,5 +1323,5 @@
         public void actionPerformed(ActionEvent e) {
             Main.main.undoRedo.undo();
-            Command lastCmd = Main.main.undoRedo.commands.peekLast();
+            Command lastCmd = Main.main.undoRedo.getLastCommand();
             if (lastCmd == null) return;
             Node n = null;
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 12315)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 12316)
@@ -809,15 +809,13 @@
      */
     private static Command getLastCommandInDataset(DataSet ds) {
-        LinkedList<Command> commands = Main.main.undoRedo.commands;
-        if (!commands.isEmpty()) {
-            Command lastCommand = commands.getLast();
-            if (lastCommand instanceof SequenceCommand) {
-                lastCommand = ((SequenceCommand) lastCommand).getLastCommand();
-            }
-            if (ds.equals(lastCommand.getAffectedDataSet())) {
-                return lastCommand;
-            }
-        }
-        return null;
+        Command lastCommand = Main.main.undoRedo.getLastCommand();
+        if (lastCommand instanceof SequenceCommand) {
+            lastCommand = ((SequenceCommand) lastCommand).getLastCommand();
+        }
+        if (lastCommand != null && ds.equals(lastCommand.getAffectedDataSet())) {
+            return lastCommand;
+        } else {
+            return null;
+        }
     }
 
Index: trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 12315)
+++ trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 12316)
@@ -29,4 +29,6 @@
     /**
      * All commands that were made on the dataset. Don't write from outside!
+     *
+     * @see #getLastCommand()
      */
     public final LinkedList<Command> commands = new LinkedList<>();
@@ -43,4 +45,13 @@
     public UndoRedoHandler() {
         Main.getLayerManager().addLayerChangeListener(this);
+    }
+
+    /**
+     * Gets the last command that was executed on the command stack.
+     * @return That command or <code>null</code> if there is no such command.
+     * @since #12316
+     */
+    public Command getLastCommand() {
+        return commands.peekLast();
     }
 
