Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 10677)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 10678)
@@ -692,7 +692,7 @@
             int posn0 = selectedWay.getNodes().indexOf(currentNode);
             // CHECKSTYLE.OFF: SingleSpaceSeparator
-            if (posn0 != -1 && // n0 is part of way
-               (posn0 >= 1                             && targetNode.equals(selectedWay.getNode(posn0-1))) || // previous node
-               (posn0 < selectedWay.getNodesCount()-1) && targetNode.equals(selectedWay.getNode(posn0+1))) {  // next node
+            if ((posn0 != -1 && // n0 is part of way
+                (posn0 >= 1                            && targetNode.equals(selectedWay.getNode(posn0-1)))) || // previous node
+                (posn0 < selectedWay.getNodesCount()-1 && targetNode.equals(selectedWay.getNode(posn0+1)))) {  // next node
                 getLayerManager().getEditDataSet().setSelected(targetNode);
                 lastUsedNode = targetNode;
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java	(revision 10677)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java	(revision 10678)
@@ -76,9 +76,18 @@
         }
         final String[] parts = key.replaceAll(":conditional", "").split(":");
-        return parts.length == 3 && isRestrictionType(parts[0]) && isTransportationMode(parts[1]) && isDirection(parts[2])
-                || parts.length == 1 && (isRestrictionType(parts[0]) || isTransportationMode(parts[0]))
-                || parts.length == 2 && (
-                isRestrictionType(parts[0]) && (isTransportationMode(parts[1]) || isDirection(parts[1]))
-                        || isTransportationMode(parts[0]) && isDirection(parts[1]));
+        return isKeyValid3Parts(parts) || isKeyValid1Part(parts) || isKeyValid2Parts(parts);
+    }
+
+    private static boolean isKeyValid3Parts(String[] parts) {
+        return parts.length == 3 && isRestrictionType(parts[0]) && isTransportationMode(parts[1]) && isDirection(parts[2]);
+    }
+
+    private static boolean isKeyValid2Parts(String[] parts) {
+        return parts.length == 2 && ((isRestrictionType(parts[0]) && (isTransportationMode(parts[1]) || isDirection(parts[1])))
+                                  || (isTransportationMode(parts[0]) && isDirection(parts[1])));
+    }
+
+    private static boolean isKeyValid1Part(String[] parts) {
+        return parts.length == 1 && (isRestrictionType(parts[0]) || isTransportationMode(parts[0]));
     }
 
