diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java
index 9fce47208b8602ff589d3ecbe91f6b149a563ad2..73afa80f8a426445181447680e2e8bc93c66e1e3 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java
@@ -151,6 +151,17 @@ public abstract class Combine extends RBuiltinNode {
         return result;
     }
 
+    @TruffleBoundary
+    @Specialization(limit = "COMBINE_CACHED_LIMIT", contains = "combineCached", guards = {"!recursive", "cachedPrecedence == precedence(args)"})
+    protected Object combine(RArgsValuesAndNames args, @SuppressWarnings("unused") boolean recursive, //
+                    @Cached("precedence(args, args.getLength())") int cachedPrecedence, //
+                    @Cached("createCast(cachedPrecedence)") CastNode cast, //
+                    @Cached("create()") BranchProfile naNameBranch, //
+                    @Cached("create()") NACheck naNameCheck, //
+                    @Cached("createBinaryProfile()") ConditionProfile hasNamesProfile) {
+        return combineCached(args, false, args.getSignature(), cachedPrecedence, cast, naNameBranch, naNameCheck, hasNamesProfile);
+    }
+
     @Specialization(guards = "recursive")
     protected Object combineRecursive(RArgsValuesAndNames args, @SuppressWarnings("unused") boolean recursive,
                     @Cached("create()") Combine recursiveCombine, //
@@ -318,17 +329,6 @@ public abstract class Combine extends RBuiltinNode {
         return signature != null && signature.getNonNullCount() > 0;
     }
 
-    @TruffleBoundary
-    @Specialization(limit = "COMBINE_CACHED_LIMIT", contains = "combineCached", guards = "cachedPrecedence == precedence(args)")
-    protected Object combine(RArgsValuesAndNames args, boolean recursive, //
-                    @Cached("precedence(args, args.getLength())") int cachedPrecedence, //
-                    @Cached("createCast(cachedPrecedence)") CastNode cast, //
-                    @Cached("create()") BranchProfile naNameBranch, //
-                    @Cached("create()") NACheck naNameCheck, //
-                    @Cached("createBinaryProfile()") ConditionProfile hasNamesProfile) {
-        return combineCached(args, false, args.getSignature(), cachedPrecedence, cast, naNameBranch, naNameCheck, hasNamesProfile);
-    }
-
     @Specialization(guards = "!isArguments(args)")
     protected Object nonArguments(Object args, boolean recursive, @Cached("create()") Combine combine) {
         return combine.executeCombine(new RArgsValuesAndNames(new Object[]{args}, EMPTY_SIGNATURE), recursive);