diff --git a/user/super/com/google/gwt/emul/java/lang/Enum.java b/user/super/com/google/gwt/emul/java/lang/Enum.java
index 715ec69..0d9fef0 100644
--- a/user/super/com/google/gwt/emul/java/lang/Enum.java
+++ b/user/super/com/google/gwt/emul/java/lang/Enum.java
@@ -22,6 +22,8 @@
 
 import java.io.Serializable;
 
+import javax.annotation.Nonnull;
+
 import jsinterop.annotations.JsIgnore;
 import jsinterop.annotations.JsType;
 
@@ -115,6 +117,7 @@
     return super.hashCode();
   }
 
+  @Nonnull
   public final String name() {
     return name != null ? name : "" + ordinal;
   }
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 5032d65..856776e 100644
--- a/user/super/com/google/gwt/emul/java/lang/Throwable.java
+++ b/user/super/com/google/gwt/emul/java/lang/Throwable.java
@@ -22,8 +22,11 @@
 import java.io.PrintStream;
 import java.io.Serializable;
 
+import javax.annotation.Nonnull;
+
 import javaemul.internal.JsUtils;
 import javaemul.internal.annotations.DoNotInline;
+
 import jsinterop.annotations.JsMethod;
 import jsinterop.annotations.JsProperty;
 import jsinterop.annotations.JsType;
@@ -286,6 +289,7 @@
   }
 
   @JsMethod
+  @Nonnull
   public static Throwable of(Object e) {
     // If the JS error is already mapped to a Java Exception, use it.
     if (e != null) {
diff --git a/user/super/com/google/gwt/emul/java/util/List.java b/user/super/com/google/gwt/emul/java/util/List.java
index 6107482..8cb824f 100644
--- a/user/super/com/google/gwt/emul/java/util/List.java
+++ b/user/super/com/google/gwt/emul/java/util/List.java
@@ -19,6 +19,8 @@
 
 import java.util.function.UnaryOperator;
 
+import javax.annotation.Nonnull;
+
 import jsinterop.annotations.JsIgnore;
 import jsinterop.annotations.JsMethod;
 import jsinterop.annotations.JsType;
@@ -82,5 +84,6 @@
     return Spliterators.spliterator(this, Spliterator.ORDERED);
   }
 
+  @Nonnull
   List<E> subList(int fromIndex, int toIndex);
 }
diff --git a/user/super/com/google/gwt/emul/java/util/Map.java b/user/super/com/google/gwt/emul/java/util/Map.java
index 86f0f94..06106eb 100644
--- a/user/super/com/google/gwt/emul/java/util/Map.java
+++ b/user/super/com/google/gwt/emul/java/util/Map.java
@@ -22,6 +22,8 @@
 import java.util.function.BiFunction;
 import java.util.function.Function;
 
+import javax.annotation.Nonnull;
+
 import jsinterop.annotations.JsIgnore;
 import jsinterop.annotations.JsType;
 
@@ -141,6 +143,7 @@
 
   boolean isEmpty();
 
+  @Nonnull
   Set<K> keySet();
 
   @JsIgnore
@@ -203,5 +206,6 @@
 
   int size();
 
+  @Nonnull
   Collection<V> values();
 }
diff --git a/user/test/com/google/gwt/core/client/impl/StackTraceEmulTest.java b/user/test/com/google/gwt/core/client/impl/StackTraceEmulTest.java
index 6a3822a..97e8978 100644
--- a/user/test/com/google/gwt/core/client/impl/StackTraceEmulTest.java
+++ b/user/test/com/google/gwt/core/client/impl/StackTraceEmulTest.java
@@ -67,7 +67,7 @@
     String[] methodNames = getTraceJava();
 
     StackTraceElement[] expectedTrace = new StackTraceElement[] {
-        createSTE(methodNames[0], "Throwable.java", 66),
+        createSTE(methodNames[0], "Throwable.java", 69),
         createSTE(methodNames[1], "Exception.java", 29),
         createSTE(methodNames[2], "StackTraceExamples.java", 57),
         createSTE(methodNames[3], "StackTraceExamples.java", 52),
