diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
index a92e04a36206ee75190e302a09df2b545a3621e7..c4ad3c6e49109191dceeecf83e6f87ea95e458e4 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
@@ -251,13 +251,13 @@ class RRuntimeASTAccessImpl implements RRuntimeASTAccess {
             }
             return addAttributes(result, list);
         } else if (repType == RLanguage.RepType.FUNCTION) {
-            RList argsList = (RList) list.getDataAt(1);
+            RAbstractContainer argsList = (RAbstractContainer) list.getDataAt(1);
             RSyntaxNode body = (RSyntaxNode) unwrapToRNode(list.getDataAt(2), false);
             List<Argument<RSyntaxNode>> resArgs = new LinkedList<>();
             RStringVector argsNames = argsList.getNames();
             for (int i = 0; i < argsList.getLength(); i++) {
                 String argName = argsNames == null ? null : argsNames.getDataAt(i);
-                Object argVal = argsList.getDataAt(i);
+                Object argVal = argsList.getDataAtAsObject(i);
                 Argument<RSyntaxNode> arg = RCodeBuilder.argument(RSyntaxNode.LAZY_DEPARSE, argName, argVal == RSymbol.MISSING ? null : (RSyntaxNode) unwrapToRNode(argVal, false));
                 resArgs.add(arg);
             }