diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/AbstractLoopNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/AbstractLoopNode.java
index 7ba425b9144d3fc11fd18194eeaafbdbbcdc9790..4303107246f94dd43e347f5172269371957a7fe1 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/AbstractLoopNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/AbstractLoopNode.java
@@ -32,7 +32,7 @@ import com.oracle.truffle.r.runtime.nodes.RSyntaxLookup;
 /** Marker class for loops. */
 public abstract class AbstractLoopNode extends OperatorNode {
 
-    protected AbstractLoopNode(SourceSection sourceSection, RSyntaxElement operator) {
+    protected AbstractLoopNode(SourceSection sourceSection, RSyntaxLookup operator) {
         super(sourceSection, operator);
     }
 
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/BlockNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/BlockNode.java
index fd1930b2e9a7734e3fe0a9a1c63b10552b378483..f9bf11cd915d0d64eceeafaa1769aaca7b138851 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/BlockNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/BlockNode.java
@@ -30,7 +30,7 @@ import com.oracle.truffle.r.nodes.function.visibility.SetVisibilityNode;
 import com.oracle.truffle.r.runtime.ArgumentsSignature;
 import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.nodes.RNode;
-import com.oracle.truffle.r.runtime.nodes.RSyntaxElement;
+import com.oracle.truffle.r.runtime.nodes.RSyntaxLookup;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
 
 /**
@@ -43,7 +43,7 @@ public final class BlockNode extends OperatorNode {
     @Children protected final RNode[] sequence;
     @Child private SetVisibilityNode visibility = SetVisibilityNode.create();
 
-    public BlockNode(SourceSection src, RSyntaxElement operator, RNode[] sequence) {
+    public BlockNode(SourceSection src, RSyntaxLookup operator, RNode[] sequence) {
         super(src, operator);
         this.sequence = sequence;
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/IfNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/IfNode.java
index f8f477a128b0bd2d3d8b861e8e591c0880f6db6b..fd5b395b0c86e0fb1294dc8e1eb97ee1b91fcff6 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/IfNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/IfNode.java
@@ -34,6 +34,7 @@ import com.oracle.truffle.r.runtime.RRuntime;
 import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.nodes.RNode;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxElement;
+import com.oracle.truffle.r.runtime.nodes.RSyntaxLookup;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
 
 public final class IfNode extends OperatorNode {
@@ -45,7 +46,7 @@ public final class IfNode extends OperatorNode {
 
     private final ConditionProfile conditionProfile = ConditionProfile.createCountingProfile();
 
-    public IfNode(SourceSection src, RSyntaxElement operator, RSyntaxNode condition, RSyntaxNode thenPart, RSyntaxNode elsePart) {
+    public IfNode(SourceSection src, RSyntaxLookup operator, RSyntaxNode condition, RSyntaxNode thenPart, RSyntaxNode elsePart) {
         super(src, operator);
         this.condition = ConvertBooleanNode.create(condition);
         this.thenPart = thenPart.asRNode();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/NextNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/NextNode.java
index 3fdced4c239c11cdb1a1313bed4b4910fc43955e..23872a96c246e60327d74176d8ffd06ec7d85b7f 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/NextNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/NextNode.java
@@ -27,12 +27,13 @@ import com.oracle.truffle.api.source.SourceSection;
 import com.oracle.truffle.r.nodes.function.visibility.SetVisibilityNode;
 import com.oracle.truffle.r.runtime.ArgumentsSignature;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxElement;
+import com.oracle.truffle.r.runtime.nodes.RSyntaxLookup;
 
 public final class NextNode extends OperatorNode {
 
     @Child private SetVisibilityNode visibility = SetVisibilityNode.create();
 
-    public NextNode(SourceSection src, RSyntaxElement operator) {
+    public NextNode(SourceSection src, RSyntaxLookup operator) {
         super(src, operator);
     }
 
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/OperatorNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/OperatorNode.java
index 43349b9401732dab2e2343d39380e42ef806afdd..9a85a3d6f4c391e35186e9bc7be639f3f75ea92c 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/OperatorNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/OperatorNode.java
@@ -25,20 +25,20 @@ package com.oracle.truffle.r.nodes.control;
 import com.oracle.truffle.api.source.SourceSection;
 import com.oracle.truffle.r.runtime.nodes.RSourceSectionNode;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxCall;
-import com.oracle.truffle.r.runtime.nodes.RSyntaxElement;
+import com.oracle.truffle.r.runtime.nodes.RSyntaxLookup;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
 
 public abstract class OperatorNode extends RSourceSectionNode implements RSyntaxNode, RSyntaxCall {
 
-    protected final RSyntaxElement operator;
+    protected final RSyntaxLookup operator;
 
-    public OperatorNode(SourceSection src, RSyntaxElement operator) {
+    public OperatorNode(SourceSection src, RSyntaxLookup operator) {
         super(src);
         this.operator = operator;
     }
 
     @Override
-    public final RSyntaxElement getSyntaxLHS() {
+    public final RSyntaxLookup getSyntaxLHS() {
         return operator;
     }
 }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RepeatNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RepeatNode.java
index 4630e52bc33b5ce0a78b3d5ce24a3281c3a9d0c9..92ce06b4c24e3db3584d91b6b47bce1c02d58301 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RepeatNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RepeatNode.java
@@ -35,6 +35,7 @@ import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.nodes.RNode;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxCall;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxElement;
+import com.oracle.truffle.r.runtime.nodes.RSyntaxLookup;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
 
 public final class RepeatNode extends AbstractLoopNode implements RSyntaxNode, RSyntaxCall {
@@ -42,7 +43,7 @@ public final class RepeatNode extends AbstractLoopNode implements RSyntaxNode, R
     @Child private LoopNode loop;
     @Child private SetVisibilityNode visibility = SetVisibilityNode.create();
 
-    public RepeatNode(SourceSection src, RSyntaxElement operator, RSyntaxNode body) {
+    public RepeatNode(SourceSection src, RSyntaxLookup operator, RSyntaxNode body) {
         super(src, operator);
         this.loop = Truffle.getRuntime().createLoopNode(new WhileRepeatingNode(this, body.asRNode()));
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementNode.java
index bcd522c69882a3bf7eca7e7cc35a9e8f3198f7d5..9f24797fc4e58ee00c73784ce243ef388098fcd1 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/ReplacementNode.java
@@ -76,7 +76,7 @@ final class ReplacementNode extends OperatorNode {
     private final String rhsVarName;
     private final RSyntaxElement lhs;
 
-    ReplacementNode(SourceSection source, RSyntaxElement operator, RNode target, RSyntaxElement lhs, RNode rhs, List<RSyntaxCall> calls, String rhsVarName, String targetVarName, boolean isSuper,
+    ReplacementNode(SourceSection source, RSyntaxLookup operator, RNode target, RSyntaxElement lhs, RNode rhs, List<RSyntaxCall> calls, String rhsVarName, String targetVarName, boolean isSuper,
                     int tempNamesStartIndex) {
         super(source, operator);
         this.lhs = lhs;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/WhileNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/WhileNode.java
index 6a3af2ad9013f7750c4386f49812c07d1d1a25c2..81d1ab9c109262aae5a90c71522e23b423586835 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/WhileNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/WhileNode.java
@@ -38,6 +38,7 @@ import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.nodes.RNode;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxCall;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxElement;
+import com.oracle.truffle.r.runtime.nodes.RSyntaxLookup;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
 
 public final class WhileNode extends AbstractLoopNode implements RSyntaxNode, RSyntaxCall {
@@ -45,7 +46,7 @@ public final class WhileNode extends AbstractLoopNode implements RSyntaxNode, RS
     @Child private LoopNode loop;
     @Child private SetVisibilityNode visibility = SetVisibilityNode.create();
 
-    public WhileNode(SourceSection src, RSyntaxElement operator, RSyntaxNode condition, RSyntaxNode body) {
+    public WhileNode(SourceSection src, RSyntaxLookup operator, RSyntaxNode condition, RSyntaxNode body) {
         super(src, operator);
         this.loop = Truffle.getRuntime().createLoopNode(new WhileRepeatingNode(this, ConvertBooleanNode.create(condition), body.asRNode()));
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/MissingNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/MissingNode.java
index ef0f05f0d3f8ed6990d77dbf25a2a5094446d540..750c38d7dd648f1acdf5f45de9d2b76cf0d0bceb 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/MissingNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/MissingNode.java
@@ -178,7 +178,7 @@ public final class MissingNode extends OperatorNode {
     private final ArgumentsSignature signature;
     private final RSyntaxElement[] args;
 
-    public MissingNode(SourceSection source, RSyntaxElement operator, ArgumentsSignature signature, RSyntaxElement[] args) {
+    public MissingNode(SourceSection source, RSyntaxLookup operator, ArgumentsSignature signature, RSyntaxElement[] args) {
         super(source, operator);
         this.signature = signature;
         this.args = args;