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 d244da876a5a39d58e8996be9fdf50ad7eeb2ada..f5710f0c5060e0b433b8ebe8f6b5e8434289a976 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
@@ -724,9 +724,8 @@ class RRuntimeASTAccessImpl implements RRuntimeASTAccess {
         RInstrumentation.checkDebugRequested(func);
     }
 
-    @SuppressWarnings("rawtypes")
     @Override
-    public Class<? extends TruffleLanguage> getTruffleRLanguage() {
+    public Class<? extends TruffleLanguage<?>> getTruffleRLanguage() {
         return TruffleRLanguage.class;
     }
 }
diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/BinDist.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/BinDist.java
index 93fb0bd2f5829e9e47e8a6656ca1e9bf3c9326ea..a5b037c3844d5de7a3bd08403d207286ba008bb7 100644
--- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/BinDist.java
+++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/stats/BinDist.java
@@ -22,7 +22,6 @@ import static com.oracle.truffle.r.runtime.RError.NO_CALLER;
 import java.util.Arrays;
 
 import com.oracle.truffle.api.dsl.Specialization;
-import com.oracle.truffle.r.nodes.builtin.CastBuilder;
 import com.oracle.truffle.r.nodes.builtin.RExternalBuiltinNode;
 import com.oracle.truffle.r.runtime.RError.Message;
 import com.oracle.truffle.r.runtime.RRuntime;
diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/ObjectSize.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/ObjectSize.java
index 46b2c62146024cecb24ae79e2fd6c4269a0fd4a0..8c17ea3fb61df57b4757e4bd49e01f024da0e3e3 100644
--- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/ObjectSize.java
+++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/ObjectSize.java
@@ -35,7 +35,6 @@ import com.oracle.truffle.r.runtime.data.RTypedValue;
  * {@link RObjectSize#getObjectSize}. As per GNU R the AST size for a closure is included. TODO AST
  * size not included owing to problems sizing it automatically.
  */
-@SuppressWarnings("unused")
 public abstract class ObjectSize extends RExternalBuiltinNode.Arg1 {
 
     private static class MyIgnoreObjectHandler implements RObjectSize.IgnoreObjectHandler {
@@ -52,17 +51,17 @@ public abstract class ObjectSize extends RExternalBuiltinNode.Arg1 {
     private static final MyIgnoreObjectHandler ignoreObjectHandler = new MyIgnoreObjectHandler();
 
     @Specialization
-    protected int objectSize(int o) {
+    protected int objectSize(@SuppressWarnings("unused") int o) {
         return RObjectSize.INT_SIZE;
     }
 
     @Specialization
-    protected int objectSize(double o) {
+    protected int objectSize(@SuppressWarnings("unused") double o) {
         return RObjectSize.DOUBLE_SIZE;
     }
 
     @Specialization
-    protected int objectSize(byte o) {
+    protected int objectSize(@SuppressWarnings("unused") byte o) {
         return RObjectSize.BYTE_SIZE;
     }
 
diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/Rprof.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/Rprof.java
index ac4688363f6c03f7dfced3ce68c6b2889815a200..e91e16f85ac3d9346efccf14ad73c3d4497806aa 100644
--- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/Rprof.java
+++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/Rprof.java
@@ -92,11 +92,10 @@ public abstract class Rprof extends RExternalBuiltinNode.Arg8 implements RDataFa
         casts.arg(7, "bufsize").asIntegerVector().findFirst().mustBe(gte(0));
     }
 
-    @SuppressWarnings("unused")
     @Specialization
     @TruffleBoundary
-    public Object doRprof(String filename, boolean append, double intervalD, boolean memProfiling,
-                    boolean gcProfiling, boolean lineProfiling, int numFiles, int bufSize) {
+    public Object doRprof(String filename, boolean append, double intervalD, boolean memProfiling, boolean gcProfiling, boolean lineProfiling, @SuppressWarnings("unused") int numFiles,
+                    @SuppressWarnings("unused") int bufSize) {
         RprofState profState = RprofState.get();
         if (filename.length() == 0) {
             // disable
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConditionFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConditionFunctions.java
index 00bae3fd40b5fedb794b844b998d534756cfb087..b56352f79199d784967ff6027ba18aa6da154b96 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConditionFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ConditionFunctions.java
@@ -26,10 +26,7 @@ import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.frame.FrameSlot;
 import com.oracle.truffle.api.frame.FrameSlotTypeException;
 import com.oracle.truffle.api.frame.VirtualFrame;
-import com.oracle.truffle.r.nodes.builtin.CastBuilder;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
-import com.oracle.truffle.r.nodes.builtin.NodeWithArgumentCasts.Casts;
-import com.oracle.truffle.r.nodes.builtin.base.foreign.CallAndExternalFunctions.DotExternal2;
 import com.oracle.truffle.r.nodes.function.FunctionDefinitionNode;
 import com.oracle.truffle.r.nodes.function.PromiseHelperNode;
 import com.oracle.truffle.r.runtime.RError;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DuplicatedFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DuplicatedFunctions.java
index 88cf01b06e6e32aa2d74fafed15d5860792b897f..79f201063c8527f804895e203f09c65f5b8c32c7 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DuplicatedFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DuplicatedFunctions.java
@@ -22,7 +22,6 @@ import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.profiles.ConditionProfile;
 import com.oracle.truffle.r.nodes.binary.CastTypeNode;
 import com.oracle.truffle.r.nodes.binary.CastTypeNodeGen;
-import com.oracle.truffle.r.nodes.builtin.CastBuilder;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.nodes.unary.TypeofNode;
 import com.oracle.truffle.r.nodes.unary.TypeofNodeGen;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
index 2153136a4d169c73bda489beca4a308d2514588a..4e0ca4c615d072a2535c7bdf0f508edcdde18e5b 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
@@ -23,13 +23,11 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
-import com.oracle.truffle.r.nodes.builtin.NodeWithArgumentCasts.Casts;
 import com.oracle.truffle.api.CompilerDirectives;
 import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.api.dsl.Fallback;
 import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.r.nodes.attributes.SetFixedAttributeNode;
-import com.oracle.truffle.r.nodes.builtin.CastBuilder;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.RError;
 import com.oracle.truffle.r.runtime.RInternalError;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ListBuiltin.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ListBuiltin.java
index 4ef832ba3320401ac571091b7b156ba78f50344b..e7ffa8d42c2de6915c99b212b0c5fb163ef5556a 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ListBuiltin.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/ListBuiltin.java
@@ -32,7 +32,6 @@ import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.nodes.ExplodeLoop;
 import com.oracle.truffle.api.profiles.ConditionProfile;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
-import com.oracle.truffle.r.nodes.builtin.NodeWithArgumentCasts.Casts;
 import com.oracle.truffle.r.nodes.function.opt.ShareObjectNode;
 import com.oracle.truffle.r.runtime.ArgumentsSignature;
 import com.oracle.truffle.r.runtime.RRuntime;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Mapply.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Mapply.java
index 0eaf07b3d53e4ee843792d63ce03448234d71d16..4fd7a02227ede680e2b79f60338690e831e27a27 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Mapply.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Mapply.java
@@ -102,9 +102,8 @@ public abstract class Mapply extends RBuiltinNode {
         return RDataFactory.createList(result);
     }
 
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object mApply(VirtualFrame frame, RFunction fun, RAbstractListVector dots, RNull moreArgs) {
+    protected Object mApply(VirtualFrame frame, RFunction fun, RAbstractListVector dots, @SuppressWarnings("unused") RNull moreArgs) {
         return mApply(frame, fun, dots, RDataFactory.createList());
     }
 
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Merge.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Merge.java
index 955e3d4b9f9ad3ef906e5495565cd5daa2596788..45dd58eeec87d84b64950d746ac2e13c585c7000 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Merge.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Merge.java
@@ -21,7 +21,6 @@ import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.INTERNAL;
 
 import com.oracle.truffle.api.dsl.Specialization;
-import com.oracle.truffle.r.nodes.builtin.CastBuilder;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.RError;
 import com.oracle.truffle.r.runtime.RRuntime;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/NGetText.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/NGetText.java
index 147a3938761cdcf7a9bdf4a79d91fd8db788d5f8..d72cda8937c3980ac6688c9fa9fa908234c52a48 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/NGetText.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/NGetText.java
@@ -29,27 +29,22 @@ import static com.oracle.truffle.r.runtime.builtins.RBehavior.COMPLEX;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.INTERNAL;
 
 import com.oracle.truffle.api.dsl.Specialization;
-import com.oracle.truffle.r.nodes.builtin.CastBuilder;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.RError;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
-@SuppressWarnings("unused")
 @RBuiltin(name = "ngettext", kind = INTERNAL, parameterNames = {"n", "msg1", "msg2", "domain"}, behavior = COMPLEX)
 public abstract class NGetText extends RBuiltinNode {
 
     static {
         Casts casts = new Casts(NGetText.class);
         casts.arg("n").asIntegerVector().findFirst().mustBe(gte0());
-
         casts.arg("msg1").defaultError(RError.Message.MUST_BE_STRING, "msg1").mustBe(stringValue()).asStringVector().mustBe(singleElement()).findFirst();
-
         casts.arg("msg2").defaultError(RError.Message.MUST_BE_STRING, "msg2").mustBe(stringValue()).asStringVector().mustBe(singleElement()).findFirst();
-
     }
 
     @Specialization()
-    protected String getText(int n, String msg1, String msg2, Object domain) {
+    protected String getText(int n, String msg1, String msg2, @SuppressWarnings("unused") Object domain) {
         return n == 1 ? msg1 : msg2;
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Names.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Names.java
index fa425d7e20852ac5a9966b3d2d9082a045706ad2..bb8b0830c7506c448902790900a4480c8fdd82de 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Names.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Names.java
@@ -32,8 +32,6 @@ import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.profiles.ConditionProfile;
 import com.oracle.truffle.r.nodes.attributes.SpecialAttributesFunctions.GetNamesAttributeNode;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
-import com.oracle.truffle.r.nodes.builtin.NodeWithArgumentCasts.Casts;
-import com.oracle.truffle.r.nodes.unary.UnaryNotNode;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.data.RStringVector;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/NamespaceFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/NamespaceFunctions.java
index 919e2805fb1763cb8d3b26e25d2d7f5b5ec6502f..276bb1ad32e42b9d1d989880e9a91e1623b1d664 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/NamespaceFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/NamespaceFunctions.java
@@ -32,7 +32,6 @@ import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.INTERNAL;
 import com.oracle.truffle.r.nodes.builtin.NodeWithArgumentCasts.Casts;
 import com.oracle.truffle.api.dsl.Fallback;
 import com.oracle.truffle.api.dsl.Specialization;
-import com.oracle.truffle.r.nodes.builtin.CastBuilder;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.RError;
 import com.oracle.truffle.r.runtime.RRuntime;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Paste.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Paste.java
index edd0e1c7367f98d55dfd3eb3be33206fa38e9f95..9b682fe956c9924aa7e155f2cbf9a2cbda9e30a2 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Paste.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Paste.java
@@ -39,7 +39,6 @@ import com.oracle.truffle.api.profiles.ConditionProfile;
 import com.oracle.truffle.api.profiles.PrimitiveValueProfile;
 import com.oracle.truffle.api.profiles.ValueProfile;
 import com.oracle.truffle.r.nodes.binary.BoxPrimitiveNode;
-import com.oracle.truffle.r.nodes.builtin.CastBuilder;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.nodes.function.ClassHierarchyNode;
 import com.oracle.truffle.r.nodes.function.call.RExplicitBaseEnvCallDispatcher;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Paste0.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Paste0.java
index 4b85eb3b4f54384139fd1ba2e4443d50432e2872..c00334447c68e3f0ddf4fd9a95687a6fa26a7c91 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Paste0.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Paste0.java
@@ -28,7 +28,6 @@ import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.INTERNAL;
 
 import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.frame.VirtualFrame;
-import com.oracle.truffle.r.nodes.builtin.CastBuilder;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 import com.oracle.truffle.r.runtime.data.RList;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Return.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Return.java
index 4acc844bfcec491fbe1a02061c703f4b2a2eeec6..e990562976c17c4c4e23cf86f72bdc64776dde0d 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Return.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Return.java
@@ -72,8 +72,6 @@ public abstract class Return extends RBuiltinNode {
         return arguments.length == 1 ? new ReturnSpecial(arguments[0]) : null;
     }
 
-    private final BranchProfile isPromiseEvalProfile = BranchProfile.create();
-
     static {
         Casts.noCasts(Return.class);
     }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SeqFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SeqFunctions.java
index 01d918d11731e52295a205252a4f5a8b24c145a7..27ec4be7937f911e99d9d12c24f4df2a544bf731 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SeqFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SeqFunctions.java
@@ -29,11 +29,8 @@ import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.nodes.Node;
 import com.oracle.truffle.api.profiles.BranchProfile;
 import com.oracle.truffle.api.profiles.ConditionProfile;
-import com.oracle.truffle.r.library.utils.TypeConvert;
-import com.oracle.truffle.r.nodes.access.variables.LocalReadVariableNode;
 import com.oracle.truffle.r.nodes.attributes.SpecialAttributesFunctions.GetClassAttributeNode;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
-import com.oracle.truffle.r.nodes.builtin.NodeWithArgumentCasts.Casts;
 import com.oracle.truffle.r.nodes.builtin.base.SeqFunctions.SeqInt.IsIntegralNumericNode;
 import com.oracle.truffle.r.nodes.builtin.base.SeqFunctionsFactory.GetIntegralNumericNodeGen;
 import com.oracle.truffle.r.nodes.builtin.base.SeqFunctionsFactory.IsMissingOrNumericNodeGen;
@@ -103,42 +100,40 @@ public final class SeqFunctions {
     }
 
     @TypeSystemReference(RTypesFlatLayout.class)
-    @SuppressWarnings("unused")
     public abstract static class IsNumericNode extends Node {
         public abstract boolean execute(Object obj);
 
         @Specialization
-        protected boolean isNumericNode(Integer obj) {
+        protected boolean isNumericNode(@SuppressWarnings("unused") Integer obj) {
             return true;
         }
 
         @Specialization
-        protected boolean isNumericNode(Double obj) {
+        protected boolean isNumericNode(@SuppressWarnings("unused") Double obj) {
             return true;
         }
 
         @Specialization
-        protected boolean isNumericNode(RAbstractIntVector obj) {
+        protected boolean isNumericNode(@SuppressWarnings("unused") RAbstractIntVector obj) {
             return true;
         }
 
         @Specialization
-        protected boolean isNumericNode(RAbstractDoubleVector obj) {
+        protected boolean isNumericNode(@SuppressWarnings("unused") RAbstractDoubleVector obj) {
             return true;
         }
 
         @Fallback
-        protected boolean isNumericNode(Object obj) {
+        protected boolean isNumericNode(@SuppressWarnings("unused") Object obj) {
             return false;
         }
     }
 
     @TypeSystemReference(RTypesFlatLayout.class)
-    @SuppressWarnings("unused")
     public abstract static class IsMissingOrNumericNode extends IsNumericNode {
 
         @Specialization
-        protected boolean isMissingOrNumericNode(RMissing obj) {
+        protected boolean isMissingOrNumericNode(@SuppressWarnings("unused") RMissing obj) {
             return true;
         }
     }
@@ -210,15 +205,14 @@ public final class SeqFunctions {
         }
 
         @Specialization(guards = {"!hasClass(args, getClassAttributeNode)"})
-        @SuppressWarnings("unused")
         protected Object seqNoClassAndNumeric(VirtualFrame frame, RArgsValuesAndNames args,
                         @Cached("createSeqIntForFastPath()") SeqInt seqInt,
                         @Cached("lookupSeqInt()") RFunction seqIntFunction,
                         @Cached("createBinaryProfile()") ConditionProfile isNumericProfile,
-                        @Cached("createGetClassAttributeNode()") GetClassAttributeNode getClassAttributeNode,
+                        @Cached("createGetClassAttributeNode()") @SuppressWarnings("unused") GetClassAttributeNode getClassAttributeNode,
                         @Cached("createIsMissingOrNumericNode()") IsMissingOrNumericNode fromCheck,
                         @Cached("createIsMissingOrNumericNode()") IsMissingOrNumericNode toCheck,
-                        @Cached("createIsMissingOrNumericNode()") IsMissingOrNumericNode byCheck) {
+                        @Cached("createIsMissingOrNumericNode()") @SuppressWarnings("unused") IsMissingOrNumericNode byCheck) {
             Object[] rargs = reorderedArguments(args, seqIntFunction);
             if (isNumericProfile.profile(fromCheck.execute(rargs[0]) && toCheck.execute(rargs[1]) && toCheck.execute(rargs[2]))) {
                 return seqInt.execute(frame, rargs[0], rargs[1], rargs[2], rargs[3], rargs[4]);
@@ -227,9 +221,8 @@ public final class SeqFunctions {
             }
         }
 
-        @SuppressWarnings("unused")
         @Fallback
-        protected Object seqFallback(VirtualFrame frame, Object args) {
+        protected Object seqFallback(@SuppressWarnings("unused") Object args) {
             return null;
         }
 
@@ -349,8 +342,7 @@ public final class SeqFunctions {
         @Specialization(guards = "hasClass(value)")
         protected RIntSequence seq(VirtualFrame frame, Object value,
                         @Cached("createLengthResultCast()") CastNode resultCast,
-                        @Cached("createLengthDispatcher()") RExplicitBaseEnvCallDispatcher dispatcher,
-                        @Cached("create()") BranchProfile errorProfile) {
+                        @Cached("createLengthDispatcher()") RExplicitBaseEnvCallDispatcher dispatcher) {
             int result = (Integer) resultCast.execute(dispatcher.call(frame, value));
             return RDataFactory.createIntSequence(1, 1, result);
         }
@@ -568,8 +560,8 @@ public final class SeqFunctions {
         /**
          * The performance of this specialization, we assert, is not important. It captures a
          * mixture of coercions from improbable types and error cases. N.B. However, mixing doubles
-         * and ints <b<will</b> hit this specialization; is that likely and a concern? If
-         * "from ==missing", it defaults to 1.0. "to" cannot be missing as that would overlap with
+         * and ints <b<will</b> hit this specialization; is that likely and a concern? If "from
+         * ==missing", it defaults to 1.0. "to" cannot be missing as that would overlap with
          * previous specializations.
          */
         @Specialization(guards = {"!isMissing(toObj)"})
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SerializeFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SerializeFunctions.java
index 94ba8ac89eba68fb1539384bd1804c72014fa797..82f063958e5b04d6b10fd0637d0f6dc5f43146cc 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SerializeFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SerializeFunctions.java
@@ -35,7 +35,6 @@ import java.io.IOException;
 
 import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.api.dsl.Specialization;
-import com.oracle.truffle.r.nodes.builtin.CastBuilder;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.RError;
 import com.oracle.truffle.r.runtime.RError.Message;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SortFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SortFunctions.java
index 14ab57ffcff53764f729f1cc8e3717b09a768600..7ae1a1ce6eca3d86d4648f695d9b339797771d41 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SortFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SortFunctions.java
@@ -36,7 +36,6 @@ import java.util.Collections;
 
 import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.api.dsl.Specialization;
-import com.oracle.truffle.r.nodes.builtin.CastBuilder;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
 import com.oracle.truffle.r.runtime.RError;
 import com.oracle.truffle.r.runtime.RRuntime;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/CallAndExternalFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/CallAndExternalFunctions.java
index 40b188aed727ee7cd36735edc3f1510c02b97442..1eae28232995f9b72a0ec43819f80db65a246506 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/CallAndExternalFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/CallAndExternalFunctions.java
@@ -633,7 +633,7 @@ public class CallAndExternalFunctions {
             }
         }
 
-        private RExternalBuiltinNode lookupGraphicsBuiltin(String name) {
+        private static RExternalBuiltinNode lookupGraphicsBuiltin(String name) {
             switch (name) {
                 // grDevices
                 case "cairoProps":
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignBuiltin.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignBuiltin.java
index 0af31a87568f97662b715ea3ea2cc3bd3984b762..48c2028bde2df0d1f58841ded91aece5ecb2a9b8 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignBuiltin.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignBuiltin.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,9 +33,8 @@ import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
 @RBuiltin(name = "<-", visibility = RVisibility.OFF, kind = PRIMITIVE, parameterNames = {"x", "i"}, behavior = RBehavior.MODIFIES_FRAME)
 public abstract class AssignBuiltin extends RBuiltinNode {
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doIt(Object x, Object i) {
+    protected Object doIt(@SuppressWarnings("unused") Object x, @SuppressWarnings("unused") Object i) {
         throw RInternalError.unimplemented();
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignBuiltinEq.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignBuiltinEq.java
index 95885e8a30e140035c60acd02d82af57ec80a8a7..26185da3e6973e1a2e97548cfe9a8d98b59b2982 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignBuiltinEq.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignBuiltinEq.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,9 +33,8 @@ import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
 @RBuiltin(name = "=", visibility = RVisibility.OFF, kind = PRIMITIVE, parameterNames = {"x", "i"}, behavior = RBehavior.MODIFIES_FRAME)
 public abstract class AssignBuiltinEq extends RBuiltinNode {
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doIt(Object x, Object i) {
+    protected Object doIt(@SuppressWarnings("unused") Object x, @SuppressWarnings("unused") Object i) {
         throw RInternalError.unimplemented();
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignOuterBuiltin.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignOuterBuiltin.java
index 3e77803457c58a3b68035474e52d27c0054f6e49..fd990f8ec409867259267a6d9ac4d2a7163a0c7a 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignOuterBuiltin.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AssignOuterBuiltin.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,9 +33,8 @@ import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
 @RBuiltin(name = "<<-", visibility = RVisibility.OFF, kind = PRIMITIVE, parameterNames = {"x", "i"}, behavior = COMPLEX)
 public abstract class AssignOuterBuiltin extends RBuiltinNode {
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doIt(Object x, Object i) {
+    protected Object doIt(@SuppressWarnings("unused") Object x, @SuppressWarnings("unused") Object i) {
         throw RInternalError.unimplemented();
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BraceBuiltin.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BraceBuiltin.java
index 8f16de33a5ca16e9e182d07f0d22825ae99cfc06..80ff6820346e2e7cf5ccc26d36f2b78fec70d676 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BraceBuiltin.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BraceBuiltin.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,9 +33,8 @@ import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
 @RBuiltin(name = "{", visibility = CUSTOM, kind = PRIMITIVE, parameterNames = {"x"}, behavior = PURE)
 public abstract class BraceBuiltin extends RBuiltinNode {
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doIt(Object x) {
+    protected Object doIt(@SuppressWarnings("unused") Object x) {
         throw RInternalError.unimplemented();
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BreakBuiltin.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BreakBuiltin.java
index 01f7da077754737f1d0db909b9d2c5868026fe5a..b4dea21f7484e6fae3bc9130ff148ae5fd745b07 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BreakBuiltin.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/BreakBuiltin.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,9 +32,8 @@ import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
 @RBuiltin(name = "break", kind = PRIMITIVE, parameterNames = {"x"}, behavior = COMPLEX)
 public abstract class BreakBuiltin extends RBuiltinNode {
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doIt(Object x) {
+    protected Object doIt(@SuppressWarnings("unused") Object x) {
         throw RInternalError.unimplemented();
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/ForBuiltin.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/ForBuiltin.java
index 3f73a57513005f5fba456f7c5cb8bd7c86c65b4e..562c7be2c0d3904260739861cba1ce073d19f457 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/ForBuiltin.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/ForBuiltin.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,9 +33,8 @@ import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
 @RBuiltin(name = "for", visibility = OFF, kind = PRIMITIVE, parameterNames = {"x"}, behavior = PURE)
 public abstract class ForBuiltin extends RBuiltinNode {
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doIt(Object x) {
+    protected Object doIt(@SuppressWarnings("unused") Object x) {
         throw RInternalError.unimplemented();
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/FunctionBuiltin.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/FunctionBuiltin.java
index 8cff9b6229b75dfb53bc83565fa8ac1c8a4762ad..b1ebcae60c1da66b990b936a3fddde3bd9011961 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/FunctionBuiltin.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/FunctionBuiltin.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,9 +32,8 @@ import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
 @RBuiltin(name = "function", kind = PRIMITIVE, parameterNames = {"x"}, behavior = READS_FRAME)
 public abstract class FunctionBuiltin extends RBuiltinNode {
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doIt(Object x) {
+    protected Object doIt(@SuppressWarnings("unused") Object x) {
         throw RInternalError.unimplemented();
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/IfBuiltin.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/IfBuiltin.java
index fa86a26fed9099b43264b70447ccf4a05b2e9b8a..9c6ebc6058fd1b7a062eeb3146afb6e7194e5c05 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/IfBuiltin.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/IfBuiltin.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,9 +33,8 @@ import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
 @RBuiltin(name = "if", visibility = CUSTOM, kind = PRIMITIVE, parameterNames = {"x"}, behavior = PURE)
 public abstract class IfBuiltin extends RBuiltinNode {
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doIt(Object x) {
+    protected Object doIt(@SuppressWarnings("unused") Object x) {
         throw RInternalError.unimplemented();
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/NextBuiltin.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/NextBuiltin.java
index b26ceb62690aa9016ec6dde9c9380820d2a511ab..d83ea3512951829db7d2f948c5f530244cf43a32 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/NextBuiltin.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/NextBuiltin.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,9 +32,8 @@ import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
 @RBuiltin(name = "next", kind = PRIMITIVE, parameterNames = {"x"}, behavior = COMPLEX)
 public abstract class NextBuiltin extends RBuiltinNode {
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doIt(Object x) {
+    protected Object doIt(@SuppressWarnings("unused") Object x) {
         throw RInternalError.unimplemented();
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/RepeatBuiltin.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/RepeatBuiltin.java
index 457a84b43eaad8023f769941eeeb642fec26fe59..5b612ffdcf8b3c09076f245bda69d7fb4d393ef7 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/RepeatBuiltin.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/RepeatBuiltin.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,9 +33,8 @@ import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 
 @RBuiltin(name = "repeat", visibility = OFF, kind = PRIMITIVE, parameterNames = {"x"}, behavior = PURE)
 public abstract class RepeatBuiltin extends RBuiltinNode {
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doIt(Object x) {
+    protected Object doIt(@SuppressWarnings("unused") Object x) {
         throw RInternalError.unimplemented();
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRContext.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRContext.java
index 808039cbf19a215750a9f9f3fe47a5b5ce13d40f..2b3370bbb83ffad321c38ec351176d4413261ab8 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRContext.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRContext.java
@@ -60,8 +60,6 @@ import com.oracle.truffle.r.runtime.data.model.RAbstractStringVector;
  */
 public class FastRContext {
 
-    private static final String[] EMPTY = new String[0];
-
     private static final class CastsHelper {
         private static void exprs(Casts casts) {
             casts.arg("exprs").asStringVector().mustBe(notEmpty());
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/AccessSlotNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/AccessSlotNode.java
index c35d7aca70bccc7def2befa438c888a00bb5b24e..2a5d3799e858c13015f210bfb9ee92d2277f93db 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/AccessSlotNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/AccessSlotNode.java
@@ -125,9 +125,8 @@ public abstract class AccessSlotNode extends RBaseNode {
         return (RFunction) RContext.getRRuntimeASTAccess().forcePromise(name, f);
     }
 
-    @SuppressWarnings("unused")
     @Specialization(guards = {"!slotAccessAllowed(object)", "isDotData(name)"})
-    protected Object getSlotNonS4(RAttributable object, String name) {
+    protected Object getSlotNonS4(RAttributable object, @SuppressWarnings("unused") String name) {
         // TODO: any way to cache it or use a mechanism similar to overrides?
         REnvironment methodsNamespace = REnvironment.getRegisteredNamespace("methods");
         RFunction dataPart = getDataPartFunction(methodsNamespace);
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/BaseWriteVariableNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/BaseWriteVariableNode.java
index 52fa750d0304b0ce0fe55c97cf23214a8cde5e7f..62d0f967d398196c10f3b9af42dccd8289344232 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/BaseWriteVariableNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/BaseWriteVariableNode.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -120,18 +120,19 @@ abstract class BaseWriteVariableNode extends WriteVariableNode {
         }
     }
 
-    @SuppressWarnings("unused")
-    protected boolean isLogicalKind(Frame frame, FrameSlot frameSlot) {
+    /*
+     * The frame parameters are needed to keep the guards from being considered static.
+     */
+
+    protected boolean isLogicalKind(@SuppressWarnings("unused") Frame frame, FrameSlot frameSlot) {
         return isKind(frameSlot, FrameSlotKind.Boolean);
     }
 
-    @SuppressWarnings("unused")
-    protected boolean isIntegerKind(Frame frame, FrameSlot frameSlot) {
+    protected boolean isIntegerKind(@SuppressWarnings("unused") Frame frame, FrameSlot frameSlot) {
         return isKind(frameSlot, FrameSlotKind.Int);
     }
 
-    @SuppressWarnings("unused")
-    protected boolean isDoubleKind(Frame frame, FrameSlot frameSlot) {
+    protected boolean isDoubleKind(@SuppressWarnings("unused") Frame frame, FrameSlot frameSlot) {
         return isKind(frameSlot, FrameSlotKind.Double);
     }
 
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCastNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCastNode.java
index 78414fda334db4da6b530f787dfa15cfba76eb4b..06410a6a105a41dbe1d641bb9c4922a162873e9d 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCastNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCastNode.java
@@ -52,7 +52,6 @@ import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
 import com.oracle.truffle.r.runtime.env.REnvironment;
 import com.oracle.truffle.r.runtime.ops.na.NACheck;
 
-@SuppressWarnings("unused")
 abstract class PositionCastNode extends Node {
 
     private final ElementAccessMode mode;
@@ -143,7 +142,7 @@ abstract class PositionCastNode extends Node {
     }
 
     @Specialization
-    protected RMissing doMissing(RMissing position) {
+    protected RMissing doMissing(@SuppressWarnings("unused") RMissing position) {
         if (mode.isSubscript()) {
             if (replace) {
                 throw RError.error(this, RError.Message.MISSING_SUBSCRIPT);
@@ -156,12 +155,12 @@ abstract class PositionCastNode extends Node {
     }
 
     @Specialization
-    protected RMissing doEmpty(REmpty position) {
+    protected RMissing doEmpty(@SuppressWarnings("unused") REmpty position) {
         return doMissing(null);
     }
 
     @Specialization
-    protected RAbstractVector doNull(RNull position) {
+    protected RAbstractVector doNull(@SuppressWarnings("unused") RNull position) {
         // NULL expands to integer(0).
         return RDataFactory.createEmptyIntVector();
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCheckSubscriptNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCheckSubscriptNode.java
index 597de75756e45caae79fdefdaa6a4d933ac3f1e1..2514a0825a9618297348320a72c91db76eef80ef 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCheckSubscriptNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCheckSubscriptNode.java
@@ -52,9 +52,8 @@ abstract class PositionCheckSubscriptNode extends PositionCheckNode {
         this.recursive = recursive;
     }
 
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doMissing(PositionProfile statistics, int dimSize, RMissing position, int positionLength) {
+    protected Object doMissing(PositionProfile statistics, int dimSize, RMissing position, @SuppressWarnings("unused") int positionLength) {
         statistics.selectedPositionsCount = dimSize;
         return position;
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCheckSubsetNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCheckSubsetNode.java
index caa31c70be787046ee1a14b499c2007acb4e64e4..e7c74e62eb3dd186919f77d1424cf2e04e41f081 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCheckSubsetNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/PositionCheckSubsetNode.java
@@ -56,9 +56,8 @@ abstract class PositionCheckSubsetNode extends PositionCheckNode {
         super(mode, containerType, positionValue, dimensionIndex, numDimensions, exact, assignment);
     }
 
-    @SuppressWarnings("unused")
     @Specialization
-    protected Object doMissing(PositionProfile statistics, int dimSize, RMissing position, int positionLength) {
+    protected Object doMissing(PositionProfile statistics, int dimSize, RMissing position, @SuppressWarnings("unused") int positionLength) {
         statistics.selectedPositionsCount = dimSize;
         return position;
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/RecursiveExtractSubscriptNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/RecursiveExtractSubscriptNode.java
index e05312f7a704828a8c07d4dfe254932a9ed075ca..6448ae873996615b53c11222277c52639a21e228 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/RecursiveExtractSubscriptNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/RecursiveExtractSubscriptNode.java
@@ -54,8 +54,8 @@ abstract class RecursiveExtractSubscriptNode extends RecursiveSubscriptNode {
     protected abstract Object execute(VirtualFrame frame, Object vector, Object[] positions, Object firstPosition, int positionLength, Object exact, Object dropDimensions);
 
     @Specialization(guards = "positionLength <= 1")
-    @SuppressWarnings("unused")
-    protected Object doDefault(VirtualFrame frame, Object vector, Object[] positions, Object firstPosition, int positionLength, Object exact, Object dropDimensions) {
+    protected Object doDefault(VirtualFrame frame, Object vector, Object[] positions, Object firstPosition, @SuppressWarnings({"unused", "unused"}) int positionLength, Object exact,
+                    Object dropDimensions) {
         try {
             return subscriptExtract.apply(frame, vector, positions, exact, dropDimensions);
         } catch (RecursiveIndexNotFoundError e) {
@@ -65,8 +65,8 @@ abstract class RecursiveExtractSubscriptNode extends RecursiveSubscriptNode {
     }
 
     @Specialization(replaces = "doDefault")
-    @SuppressWarnings("unused")
-    protected Object doRecursive(VirtualFrame frame, Object vector, Object[] positions, Object originalFirstPosition, int positionLength, Object exact, Object dropDimensions,
+    protected Object doRecursive(VirtualFrame frame, Object vector, @SuppressWarnings("unused") Object[] positions, Object originalFirstPosition, int positionLength, Object exact,
+                    Object dropDimensions,
                     @Cached("createPositionCast()") PositionCastNode positionCast) {
         Object firstPosition = positionCast.execute(originalFirstPosition);
         Object currentVector = vector;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/RecursiveReplaceSubscriptNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/RecursiveReplaceSubscriptNode.java
index ca10ed8071bda6fc9e4b8a35e897426db23579ed..f24cc637446d06438573bbd9ad2c2bc09e485c40 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/RecursiveReplaceSubscriptNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/RecursiveReplaceSubscriptNode.java
@@ -55,8 +55,7 @@ abstract class RecursiveReplaceSubscriptNode extends RecursiveSubscriptNode {
     protected abstract Object execute(VirtualFrame frame, Object vector, Object[] positions, Object firstPosition, int positionLength, Object value);
 
     @Specialization(guards = "positionLength <= 1")
-    @SuppressWarnings("unused")
-    protected Object doDefault(VirtualFrame frame, Object vector, Object[] positions, Object firstPosition, int positionLength, Object value) {
+    protected Object doDefault(VirtualFrame frame, Object vector, Object[] positions, @SuppressWarnings("unused") Object firstPosition, @SuppressWarnings("unused") int positionLength, Object value) {
         return subscriptReplace.apply(frame, vector, positions, value);
     }
 
@@ -83,8 +82,7 @@ abstract class RecursiveReplaceSubscriptNode extends RecursiveSubscriptNode {
      * </code>
      */
     @Specialization(replaces = "doDefault")
-    @SuppressWarnings("unused")
-    protected Object doRecursive(VirtualFrame frame, Object vector, Object[] positions, Object originalFirstPosition, int positionLength, Object value,
+    protected Object doRecursive(VirtualFrame frame, Object vector, @SuppressWarnings("unused") Object[] positions, Object originalFirstPosition, int positionLength, Object value,
                     @Cached("createPositionCast()") PositionCastNode positionCast) {
         Object firstPosition = positionCast.execute(originalFirstPosition);
         Object[] positionStack = new Object[positionLength];
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/WriteIndexedVectorNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/WriteIndexedVectorNode.java
index 640c0d13265f224d51cbd86ebb0b250f62ac1457..8f9270d9ccd8e45a5b8f76099ba5f391ac604cd8 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/WriteIndexedVectorNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/WriteIndexedVectorNode.java
@@ -190,10 +190,9 @@ abstract class WriteIndexedVectorNode extends Node {
                     Object[] positions, Object position, int positionOffset, int positionLength,
                     RTypedValue right, Object rightStore, int valueBase, int valueLength, boolean parentNA);
 
-    @SuppressWarnings("unused")
     @Specialization
     protected int doMissing(RAbstractVector left, Object leftStore, int leftBase, int leftLength, Object targetDimensions, int targetDimension,
-                    Object[] positions, RMissing position, int positionOffset, int positionLength,
+                    Object[] positions, @SuppressWarnings("unused") RMissing position, int positionOffset, @SuppressWarnings("unused") int positionLength,
                     RAbstractContainer right, Object rightStore, int rightBase, int rightLength, boolean parentNA,
                     @Cached("createCountingProfile()") LoopConditionProfile profile) {
         int rightIndex = rightBase;
@@ -316,7 +315,6 @@ abstract class WriteIndexedVectorNode extends Node {
         return rightIndex;
     }
 
-    @SuppressWarnings("all")
     private int applyInner(//
                     RAbstractVector left, Object leftStore, int leftBase, int leftLength, Object targetDimensions,
                     Object[] positions, int positionOffset, int positionValue,
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/CopyOfRegAttributesNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/CopyOfRegAttributesNode.java
index e60b7823486cfdfc325f6baa06793c8e2322e3c8..7118f008d8b60b50368ebf25865099e9680f6e10 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/CopyOfRegAttributesNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/CopyOfRegAttributesNode.java
@@ -58,9 +58,8 @@ public abstract class CopyOfRegAttributesNode extends RBaseNode {
         return CopyOfRegAttributesNodeGen.create();
     }
 
-    @SuppressWarnings("unused")
     @Specialization(guards = "source.getAttributes() == null")
-    protected void copyNoAttributes(RAbstractVector source, RVector<?> target) {
+    protected void copyNoAttributes(@SuppressWarnings("unused") RAbstractVector source, @SuppressWarnings("unused") RVector<?> target) {
         // nothing to do
     }
 
@@ -69,9 +68,8 @@ public abstract class CopyOfRegAttributesNode extends RBaseNode {
         return attributes == null || attributes.isEmpty();
     }
 
-    @SuppressWarnings("unused")
     @Specialization(guards = "emptyAttributes(source)", replaces = "copyNoAttributes")
-    protected void copyEmptyAttributes(RAbstractVector source, RVector<?> target) {
+    protected void copyEmptyAttributes(@SuppressWarnings("unused") RAbstractVector source, @SuppressWarnings("unused") RVector<?> target) {
         // nothing to do
     }
 
@@ -80,9 +78,8 @@ public abstract class CopyOfRegAttributesNode extends RBaseNode {
         return attributes != null && sizeOneProfile.profile(attributes.size() == 1) && dimAttrGetter.execute(attributes) != null;
     }
 
-    @SuppressWarnings("unused")
     @Specialization(guards = "onlyDimAttribute(source)")
-    protected void copyDimOnly(RAbstractVector source, RVector<?> target) {
+    protected void copyDimOnly(@SuppressWarnings("unused") RAbstractVector source, @SuppressWarnings("unused") RVector<?> target) {
         // nothing to do
     }
 
@@ -91,9 +88,8 @@ public abstract class CopyOfRegAttributesNode extends RBaseNode {
         return attributes != null && sizeOneProfile.profile(attributes.size() == 1) && namesAttrGetter.execute(attributes) != null;
     }
 
-    @SuppressWarnings("unused")
     @Specialization(guards = "onlyNamesAttribute(source)")
-    protected void copyNamesOnly(RAbstractVector source, RVector<?> target) {
+    protected void copyNamesOnly(@SuppressWarnings("unused") RAbstractVector source, @SuppressWarnings("unused") RVector<?> target) {
         // nothing to do
     }
 
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/HasFixedAttributeNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/HasFixedAttributeNode.java
index 0de42b9a3906395676b140db2f868e523b25d4d3..24f02dcac6b1ed3568df47b8fefbbad712464425 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/HasFixedAttributeNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/HasFixedAttributeNode.java
@@ -67,9 +67,8 @@ public abstract class HasFixedAttributeNode extends FixedAttributeAccessNode {
     @Specialization(limit = "3", //
                     guards = {"shapeCheck(shape, attrs)"}, //
                     assumptions = {"shape.getValidAssumption()"})
-    @SuppressWarnings("unused")
-    protected boolean hasAttrCached(DynamicObject attrs,
-                    @Cached("lookupShape(attrs)") Shape shape,
+    protected boolean hasAttrCached(@SuppressWarnings("unused") DynamicObject attrs,
+                    @Cached("lookupShape(attrs)") @SuppressWarnings("unused") Shape shape,
                     @Cached("lookupLocation(shape, name)") Location location) {
         return location != null;
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/SetAttributeNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/SetAttributeNode.java
index ba5d803b0cc35f7699d4bad3a1564e07af935db5..dd75f36d56315792716213f518e170a0cddd916b 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/SetAttributeNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/SetAttributeNode.java
@@ -72,9 +72,8 @@ public abstract class SetAttributeNode extends AttributeAccessNode {
                     assumptions = {
                                     "shape.getValidAssumption()"
                     })
-    @SuppressWarnings("unused")
-    protected static void setExistingAttrCached(DynamicObject attrs, String name, Object value,
-                    @Cached("name") String cachedName,
+    protected static void setExistingAttrCached(DynamicObject attrs, @SuppressWarnings("unused") String name, Object value,
+                    @Cached("name") @SuppressWarnings("unused") String cachedName,
                     @Cached("lookupShape(attrs)") Shape shape,
                     @Cached("lookupLocation(shape, name, value)") Location location) {
         try {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/TypeFromModeNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/TypeFromModeNode.java
index f44b724a1de132f9d5fa001283a452ed6e831f30..6e4fbbc901d66dd099ad35ce3496643f2ddde4a3 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/TypeFromModeNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/TypeFromModeNode.java
@@ -40,10 +40,9 @@ public abstract class TypeFromModeNode extends Node {
 
     public abstract RType execute(Object mode);
 
-    @SuppressWarnings("unused")
     @Specialization(limit = "CACHE_LIMIT", guards = "mode == cachedMode")
-    protected RType getTypeCAched(String mode,
-                    @Cached("mode") String cachedMode,
+    protected RType getTypeCAched(@SuppressWarnings("unused") String mode,
+                    @Cached("mode") @SuppressWarnings("unused") String cachedMode,
                     @Cached("fromMode(mode)") RType type) {
         return type;
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/casts/ValueForwardingNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/casts/ValueForwardingNode.java
index 623afa39a4d8d3f928565fd47c4edb3a7416b615..f3baa1bb85619beb3f27fda1a4854efa424047f8 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/casts/ValueForwardingNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/casts/ValueForwardingNode.java
@@ -35,7 +35,7 @@ import com.oracle.truffle.r.runtime.data.RNull;
 
 public abstract class ValueForwardingNode extends CastNode {
 
-    @SuppressWarnings("unused") protected final ForwardingAnalysisResult forwardingResult;
+    protected final ForwardingAnalysisResult forwardingResult;
     private final Supplier<CastNode> pipelineFactory;
 
     protected ValueForwardingNode(ForwardingAnalysisResult forwardingResult, Supplier<CastNode> pipelineFactory) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RLengthNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RLengthNode.java
index b16e8e51ce1e0219f429755fc5e647bda01546e6..a7a57f523a4f14412abb09f5440eb82abaf47a1a 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RLengthNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RLengthNode.java
@@ -59,38 +59,32 @@ public abstract class RLengthNode extends RNode {
     }
 
     @Specialization
-    @SuppressWarnings("unused")
-    protected int doNull(RNull operand) {
+    protected int doNull(@SuppressWarnings("unused") RNull operand) {
         return 0;
     }
 
     @Specialization
-    @SuppressWarnings("unused")
-    protected int doLogical(byte operand) {
+    protected int doLogical(@SuppressWarnings("unused") byte operand) {
         return 1;
     }
 
     @Specialization
-    @SuppressWarnings("unused")
-    protected int doInteger(int operand) {
+    protected int doInteger(@SuppressWarnings("unused") int operand) {
         return 1;
     }
 
     @Specialization
-    @SuppressWarnings("unused")
-    protected int doDouble(double operand) {
+    protected int doDouble(@SuppressWarnings("unused") double operand) {
         return 1;
     }
 
     @Specialization
-    @SuppressWarnings("unused")
-    protected int doString(String operand) {
+    protected int doString(@SuppressWarnings("unused") String operand) {
         return 1;
     }
 
     @Specialization
-    @SuppressWarnings("unused")
-    protected int doSymbol(RSymbol operand) {
+    protected int doSymbol(@SuppressWarnings("unused") RSymbol operand) {
         return 1;
     }
 
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/call/RExplicitBaseEnvCallDispatcher.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/call/RExplicitBaseEnvCallDispatcher.java
index 3987f7dfb10cb529491f73d8ab36f57e53b585a2..61d2917f3e49cea47cc8482e0d800aae2c874f41 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/call/RExplicitBaseEnvCallDispatcher.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/call/RExplicitBaseEnvCallDispatcher.java
@@ -26,7 +26,6 @@ import com.oracle.truffle.api.dsl.Cached;
 import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.nodes.Node;
-import com.oracle.truffle.api.profiles.BranchProfile;
 import com.oracle.truffle.r.nodes.access.variables.LocalReadVariableNode;
 import com.oracle.truffle.r.nodes.function.GetBaseEnvFrameNode;
 import com.oracle.truffle.r.runtime.ArgumentsSignature;
@@ -38,7 +37,7 @@ import com.oracle.truffle.r.runtime.data.RFunction;
  * assumption that a function in base environment is not going to change and can be cached.
  */
 public abstract class RExplicitBaseEnvCallDispatcher extends Node {
-    private final BranchProfile errorProfile = BranchProfile.create();
+
     @Child private LocalReadVariableNode readFunc;
     @Child RExplicitCallNode callNode = RExplicitCallNode.create();
     @Child GetBaseEnvFrameNode getBaseEnvFrameNode = GetBaseEnvFrameNode.create();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/CollectArgumentsNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/CollectArgumentsNode.java
index 8cae02ab03e08793add687916a8f821fb1e42617..0be21e8e3d00446e09e77aa542f44d923380e5a2 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/CollectArgumentsNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/CollectArgumentsNode.java
@@ -61,11 +61,10 @@ public abstract class CollectArgumentsNode extends RBaseNode {
         return reads;
     }
 
-    @SuppressWarnings("unused")
     @ExplodeLoop
     @Specialization(limit = "CACHE_LIMIT", guards = {"cachedSignature == signature"})
-    protected Object[] combineCached(VirtualFrame frame, ArgumentsSignature signature,
-                    @Cached("signature") ArgumentsSignature cachedSignature,
+    protected Object[] combineCached(VirtualFrame frame, @SuppressWarnings("unused") ArgumentsSignature signature,
+                    @Cached("signature") @SuppressWarnings("unused") ArgumentsSignature cachedSignature,
                     @Cached("createArgs(signature, frame)") Node[] reads) {
         Object[] result = new Object[reads.length];
         for (int i = 0; i < reads.length; i++) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/CombineSignaturesNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/CombineSignaturesNode.java
index b360a6e5aa9cee0c359b52901ed7dae3ab61e7c9..35e5972874d5c1619d1237938ffc2f489560f5d4 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/CombineSignaturesNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/CombineSignaturesNode.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -64,12 +64,10 @@ public abstract class CombineSignaturesNode extends RBaseNode {
         return new RArgsValuesAndNames(leftValues, left);
     }
 
-    @SuppressWarnings("unused")
-    @Specialization(limit = "CACHE_LIMIT", guards = {"left == leftCached", "right == rightCached", "leftValues == leftValuesCached", "!right.isEmpty()", "!left.isEmpty()"})
-    protected RArgsValuesAndNames combineCached(ArgumentsSignature left, Object[] leftValues, ArgumentsSignature right, Object[] rightValues,
-                    @Cached("left") ArgumentsSignature leftCached,
-                    @Cached("leftValues") Object[] leftValuesCached,
-                    @Cached("right") ArgumentsSignature rightCached,
+    @Specialization(limit = "CACHE_LIMIT", guards = {"left == leftCached", "right == rightCached", "!right.isEmpty()", "!left.isEmpty()"})
+    protected RArgsValuesAndNames combineCached(ArgumentsSignature left, Object[] leftValues, @SuppressWarnings("unused") ArgumentsSignature right, Object[] rightValues,
+                    @Cached("left") @SuppressWarnings("unused") ArgumentsSignature leftCached,
+                    @Cached("right") @SuppressWarnings("unused") ArgumentsSignature rightCached,
                     @Cached("combine(left, leftValues, right)") CombineResult resultCached,
                     @Cached("createBinaryProfile()") ConditionProfile shufflingProfile,
                     @Cached("createBinaryProfile()") ConditionProfile noVarArgsProfile) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/TypeofNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/TypeofNode.java
index 580995b0cb3698cc0e7519ace7080c2f5b54b98a..358b1b3ce467b0eea5a5d1087d1f007dfc0fbdad 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/TypeofNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/TypeofNode.java
@@ -29,7 +29,6 @@ import com.oracle.truffle.r.runtime.RType;
 import com.oracle.truffle.r.runtime.data.RMissing;
 import com.oracle.truffle.r.runtime.data.RTypedValue;
 
-@SuppressWarnings("unused")
 public abstract class TypeofNode extends UnaryNode {
 
     protected static final int NUMBER_OF_CACHED_CLASSES = 5;
@@ -38,27 +37,27 @@ public abstract class TypeofNode extends UnaryNode {
     public abstract RType execute(Object x);
 
     @Specialization
-    protected static RType doLogical(byte x) {
+    protected static RType doLogical(@SuppressWarnings("unused") byte x) {
         return RType.Logical;
     }
 
     @Specialization
-    protected static RType doInt(int s) {
+    protected static RType doInt(@SuppressWarnings("unused") int s) {
         return RType.Integer;
     }
 
     @Specialization
-    protected static RType doDouble(double x) {
+    protected static RType doDouble(@SuppressWarnings("unused") double x) {
         return RType.Double;
     }
 
     @Specialization
-    protected static RType doString(String x) {
+    protected static RType doString(@SuppressWarnings("unused") String x) {
         return RType.Character;
     }
 
     @Specialization
-    protected static RType doMissing(RMissing x) {
+    protected static RType doMissing(@SuppressWarnings("unused") RMissing x) {
         return RType.Missing;
     }
 
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java
index 881043c13445bfb06edc555db3a27ceef48b433c..2d3092d235814b373c0e89b9d5e45d89692e778a 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java
@@ -116,7 +116,7 @@ public abstract class UnaryArithmeticReduceNode extends RBaseNode {
     }
 
     @Specialization
-    protected int doInt(int operand, boolean naRm, boolean finite) {
+    protected int doInt(int operand, boolean naRm, @SuppressWarnings("unused") boolean finite) {
         na.enable(operand);
         if (naRmProfile.profile(naRm)) {
             if (na.check(operand)) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryNotNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryNotNode.java
index 88d39a7818618db7cf039dd9f83d23c5fab0ee62..1d28787a2641fea4c12d0c5b7e20bda88bb6698a 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryNotNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryNotNode.java
@@ -31,7 +31,6 @@ import com.oracle.truffle.api.dsl.Fallback;
 import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.profiles.ConditionProfile;
 import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
-import com.oracle.truffle.r.nodes.builtin.NodeWithArgumentCasts.Casts;
 import com.oracle.truffle.r.runtime.RError;
 import com.oracle.truffle.r.runtime.RRuntime;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RSrcref.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RSrcref.java
index c2b9e89aa77c9d472386e78a541739af19bd1a22..d2a27b63774482b121dc835c85c905c982377e17 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RSrcref.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RSrcref.java
@@ -28,7 +28,6 @@ import com.oracle.truffle.r.runtime.data.RStringVector;
 import com.oracle.truffle.r.runtime.env.REnvironment;
 import com.oracle.truffle.r.runtime.env.REnvironment.PutException;
 import com.oracle.truffle.r.runtime.ffi.BaseRFFI;
-import com.oracle.truffle.r.runtime.ffi.RFFIFactory;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
 
 /**
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java
index fa4d7c9ccef80a2ffdba55d38684e665857e2266..bee6607ab3cf968740191301de0ff56c2facb8a3 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java
@@ -13,7 +13,6 @@ package com.oracle.truffle.r.test.builtins;
 import org.junit.Test;
 
 import com.oracle.truffle.r.test.TestBase;
-import java.io.IOException;
 
 // Checkstyle: stop line length check
 
@@ -60,8 +59,7 @@ public class TestBuiltin_parse extends TestBase {
     }
 
     @Test
-    public void testSrcfile() throws IOException {
+    public void testSrcfile() {
         assertEval("parse(text='', srcfile=srcfile(system.file('testfile')))");
     }
-
 }