diff --git a/user/super/com/google/gwt/emul/java/lang/Integer.java b/user/super/com/google/gwt/emul/java/lang/Integer.java
index a549b93..93e16dc 100644
--- a/user/super/com/google/gwt/emul/java/lang/Integer.java
+++ b/user/super/com/google/gwt/emul/java/lang/Integer.java
@@ -224,7 +224,9 @@
     return toRadixString(toUnsigned(value), radix);
   }
 
-  private static native int toUnsigned(int value) /*-{
+  @SuppressWarnings("unusable-by-js")
+  private static native double toUnsigned(int value) /*-{
+    // Might return a number that is larger than int32
     return (value >>> 0);
   }-*/;
 
diff --git a/user/super/com/google/gwt/emul/java/lang/Throwable.java b/user/super/com/google/gwt/emul/java/lang/Throwable.java
index 589e7aa..5032d65 100644
--- a/user/super/com/google/gwt/emul/java/lang/Throwable.java
+++ b/user/super/com/google/gwt/emul/java/lang/Throwable.java
@@ -120,6 +120,7 @@
     return new NativeError(msg);
   }
 
+  @SuppressWarnings("unusable-by-js")
   private static native Object fixIE(Object e) /*-{
     // In IE -unlike every other browser-, the stack property is not defined until you throw it.
     if (!("stack" in e)) {
@@ -128,6 +129,7 @@
     return e;
   }-*/;
 
+  @SuppressWarnings("unusable-by-js")
   private native void captureStackTrace() /*-{
     @com.google.gwt.core.client.impl.StackTraceCreator::captureStackTrace(*)(this);
   }-*/;
@@ -212,6 +214,7 @@
     return stackTrace;
   }
 
+  @SuppressWarnings("unusable-by-js")
   private native StackTraceElement[] constructJavaStackTrace() /*-{
     return @com.google.gwt.core.client.impl.StackTraceCreator::constructJavaStackTrace(*)(this);
   }-*/;
diff --git a/user/super/com/google/gwt/emul/java/math/BigInteger.java b/user/super/com/google/gwt/emul/java/math/BigInteger.java
index 840cb3c..11b8f8b 100644
--- a/user/super/com/google/gwt/emul/java/math/BigInteger.java
+++ b/user/super/com/google/gwt/emul/java/math/BigInteger.java
@@ -240,6 +240,7 @@
    * @param val
    * @return val as an unsigned int
    */
+  @SuppressWarnings("unusable-by-js")
   private static native int toUnsignedInt(double val) /*-{
     return val | 0;
   }-*/;
diff --git a/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java b/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
index caed13e..14a8e50 100644
--- a/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
+++ b/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
@@ -22,6 +22,7 @@
 /**
  * Provides an interface for simple JavaScript idioms that can not be expressed in Java.
  */
+@SuppressWarnings("unusable-by-js")
 public class JsUtils {
 
   @JsMethod(namespace = "<window>", name = "Date.now")
