refactored
diff --git a/api/src/main/java/javax/faces/application/_NavigationUtils.java b/api/src/main/java/javax/faces/application/_NavigationUtils.java
index 98689c0..73ae152 100644
--- a/api/src/main/java/javax/faces/application/_NavigationUtils.java
+++ b/api/src/main/java/javax/faces/application/_NavigationUtils.java
@@ -88,11 +88,8 @@
         for (int i = 0; i < values.size(); i++)
         {
             String value = values.get(i);
-            if (_isExpression(value))
-            {
-                // evaluate the ValueExpression
-                value = context.getApplication().evaluateExpressionGet(context, value, String.class);
-            }
+            // evaluate the ValueExpression
+            value = context.getApplication().evaluateExpressionGet(context, value, String.class);
             target.add(value);
         }
         return target;
diff --git a/impl/src/main/java/org/apache/myfaces/util/NavigationUtils.java b/impl/src/main/java/org/apache/myfaces/util/NavigationUtils.java
index 928ff41..75b7be1 100644
--- a/impl/src/main/java/org/apache/myfaces/util/NavigationUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/util/NavigationUtils.java
@@ -129,13 +129,11 @@
         // change any value on the given List, it will be changed in the

         // NavigationCase too and the EL expression won't be evaluated again

         List<String> target = new ArrayList<>(values.size());

-        for (String value : values)

+        for (int i = 0; i < values.size(); i++)

         {

-            if (_isExpression(value))

-            {

-                // evaluate the ValueExpression

-                value = context.getApplication().evaluateExpressionGet(context, value, String.class);

-            }

+            String value = values.get(i);

+            // evaluate the ValueExpression

+            value = context.getApplication().evaluateExpressionGet(context, value, String.class);

             target.add(value);

         }

         return target;