diff --git a/android/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTestSuiteBuilder.java
index ef7917b..cabdcb4 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.testers.CollectionAddAllTester;
 import com.google.common.collect.testing.testers.CollectionAddTester;
 import com.google.common.collect.testing.testers.CollectionClearTester;
@@ -42,7 +41,6 @@ import java.util.List;
  *
  * @author George van den Driessche
  */
-@GwtIncompatible
 public abstract class AbstractCollectionTestSuiteBuilder<
         B extends AbstractCollectionTestSuiteBuilder<B, E>, E>
     extends PerCollectionSizeTestSuiteBuilder<B, TestCollectionGenerator<E>, Collection<E>, E> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTester.java b/android/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTester.java
index c5191be..0dd364b 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import org.junit.Ignore;
 
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  * @param <E> the element type of the collection to be tested.
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractCollectionTester<E>
     extends AbstractContainerTester<Collection<E>, E> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/AbstractContainerTester.java b/android/guava-testlib/src/com/google/common/collect/testing/AbstractContainerTester.java
index a5674d3..5d5e20f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/AbstractContainerTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/AbstractContainerTester.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.OverridingMethodsMustInvokeSuper;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -33,7 +31,6 @@ import org.junit.Ignore;
  * @param <E> the type of the container's contents
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractContainerTester<C, E>
     extends AbstractTester<OneSizeTestContainerGenerator<C, E>> {
@@ -41,7 +38,6 @@ public abstract class AbstractContainerTester<C, E>
   protected C container;
 
   @Override
-  @OverridingMethodsMustInvokeSuper
   public void setUp() throws Exception {
     super.setUp();
     samples = this.getSubjectGenerator().samples();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/AbstractIteratorTester.java b/android/guava-testlib/src/com/google/common/collect/testing/AbstractIteratorTester.java
index 5e6a583..8c1846f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/AbstractIteratorTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/AbstractIteratorTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.fail;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -40,7 +39,6 @@ import junit.framework.AssertionFailedError;
  * @author Kevin Bourrillion
  * @author Chris Povirk
  */
-@GwtCompatible
 abstract class AbstractIteratorTester<E, I extends Iterator<E>> {
   private Stimulus<E, ? super I>[] stimuli;
   private final Iterator<E> elementsToInsert;
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/AbstractMapTester.java b/android/guava-testlib/src/com/google/common/collect/testing/AbstractMapTester.java
index 090442e..db966b7 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/AbstractMapTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/AbstractMapTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  * @param <V> the value type of the map to be tested.
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractMapTester<K, V>
     extends AbstractContainerTester<Map<K, V>, Entry<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/AbstractTester.java b/android/guava-testlib/src/com/google/common/collect/testing/AbstractTester.java
index dc1e1a0..b15ec06 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/AbstractTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/AbstractTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -30,7 +29,6 @@ import junit.framework.TestCase;
  *     parameterize the test.
  * @author George van den Driessche
  */
-@GwtCompatible
 public class AbstractTester<G> extends TestCase {
   private G subjectGenerator;
   private String suiteName;
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/AnEnum.java b/android/guava-testlib/src/com/google/common/collect/testing/AnEnum.java
index 1d35795..5200e9e 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/AnEnum.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/AnEnum.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A sample enumerated type we use for testing.
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public enum AnEnum {
   A,
   B,
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/BaseComparable.java b/android/guava-testlib/src/com/google/common/collect/testing/BaseComparable.java
index 3847709..780f909 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/BaseComparable.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/BaseComparable.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 
 /**
@@ -24,7 +23,6 @@ import java.io.Serializable;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class BaseComparable implements Comparable<BaseComparable>, Serializable {
   private final String s;
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/CollectionTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/CollectionTestSuiteBuilder.java
index 5f9aff4..627e8ca 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/CollectionTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/CollectionTestSuiteBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.testing.SerializableTester;
 import java.util.ArrayList;
@@ -37,7 +36,6 @@ import junit.framework.TestSuite;
  * @author Chris Povirk
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class CollectionTestSuiteBuilder<E>
     extends AbstractCollectionTestSuiteBuilder<CollectionTestSuiteBuilder<E>, E> {
   public static <E> CollectionTestSuiteBuilder<E> using(TestCollectionGenerator<E> generator) {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/ConcurrentMapTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/ConcurrentMapTestSuiteBuilder.java
index 47220b0..272e7ea 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/ConcurrentMapTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/ConcurrentMapTestSuiteBuilder.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.testers.ConcurrentMapPutIfAbsentTester;
 import com.google.common.collect.testing.testers.ConcurrentMapRemoveTester;
 import com.google.common.collect.testing.testers.ConcurrentMapReplaceEntryTester;
@@ -28,7 +27,6 @@ import java.util.List;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class ConcurrentMapTestSuiteBuilder<K, V> extends MapTestSuiteBuilder<K, V> {
   public static <K, V> ConcurrentMapTestSuiteBuilder<K, V> using(TestMapGenerator<K, V> generator) {
     ConcurrentMapTestSuiteBuilder<K, V> result = new ConcurrentMapTestSuiteBuilder<>();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/ConcurrentNavigableMapTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/ConcurrentNavigableMapTestSuiteBuilder.java
index cccd06e..a8cbf82 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/ConcurrentNavigableMapTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/ConcurrentNavigableMapTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.List;
 
 /**
@@ -25,7 +24,6 @@ import java.util.List;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class ConcurrentNavigableMapTestSuiteBuilder<K, V>
     extends NavigableMapTestSuiteBuilder<K, V> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/DerivedCollectionGenerators.java b/android/guava-testlib/src/com/google/common/collect/testing/DerivedCollectionGenerators.java
index 3588e85..0d765be 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/DerivedCollectionGenerators.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/DerivedCollectionGenerators.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.Helpers.equal;
 import static com.google.common.collect.testing.Helpers.mapEntry;
 import static java.util.Collections.sort;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -39,7 +38,6 @@ import java.util.SortedSet;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public final class DerivedCollectionGenerators {
   public static class MapEntrySetGenerator<K, V>
       implements TestSetGenerator<Entry<K, V>>, DerivedGenerator {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/DerivedComparable.java b/android/guava-testlib/src/com/google/common/collect/testing/DerivedComparable.java
index 5b0d16f..ec8e072 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/DerivedComparable.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/DerivedComparable.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Simple derived class to verify that we handle generics correctly.
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class DerivedComparable extends BaseComparable {
   public DerivedComparable(String s) {
     super(s);
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/DerivedGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/DerivedGenerator.java
index d80f5a9..54c025d 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/DerivedGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/DerivedGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A generator that relies on a preexisting generator for most of its work. For example, a derived
@@ -29,7 +28,6 @@ import com.google.common.annotations.GwtCompatible;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 public interface DerivedGenerator {
   TestSubjectGenerator<?> getInnerGenerator();
 }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/DerivedTestIteratorGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/DerivedTestIteratorGenerator.java
index ce0b125..246dc3f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/DerivedTestIteratorGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/DerivedTestIteratorGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Iterator;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public final class DerivedTestIteratorGenerator<E>
     implements TestIteratorGenerator<E>, DerivedGenerator {
   private final TestSubjectGenerator<? extends Iterable<E>> collectionGenerator;
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/FeatureSpecificTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/FeatureSpecificTestSuiteBuilder.java
index b629fa9..208b09a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/FeatureSpecificTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/FeatureSpecificTestSuiteBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static java.util.Collections.disjoint;
 import static java.util.logging.Level.FINER;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.ConflictingRequirementsException;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.collect.testing.features.FeatureUtil;
@@ -51,7 +50,6 @@ import junit.framework.TestSuite;
  *     information required to parameterize the test.
  * @author George van den Driessche
  */
-@GwtIncompatible
 public abstract class FeatureSpecificTestSuiteBuilder<
     B extends FeatureSpecificTestSuiteBuilder<B, G>, G> {
   @SuppressWarnings("unchecked")
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/Helpers.java b/android/guava-testlib/src/com/google/common/collect/testing/Helpers.java
index 8efafc3..bbdda08 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/Helpers.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/Helpers.java
@@ -21,8 +21,6 @@ import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
@@ -40,7 +38,6 @@ import java.util.Set;
 import junit.framework.Assert;
 import junit.framework.AssertionFailedError;
 
-@GwtCompatible(emulated = true)
 public class Helpers {
   // Clone of Objects.equal
   static boolean equal(Object a, Object b) {
@@ -514,7 +511,7 @@ public class Helpers {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getMethod(Class<?> clazz, String name) {
     try {
       return clazz.getMethod(name);
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/IteratorFeature.java b/android/guava-testlib/src/com/google/common/collect/testing/IteratorFeature.java
index c447e29..e3dc4f8 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/IteratorFeature.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/IteratorFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.EnumSet;
 import java.util.Iterator;
@@ -30,7 +29,6 @@ import java.util.Set;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 public enum IteratorFeature {
   /** Support for {@link Iterator#remove()}. */
   SUPPORTS_REMOVE,
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/IteratorTester.java b/android/guava-testlib/src/com/google/common/collect/testing/IteratorTester.java
index fdc418a..23c5f99 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/IteratorTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/IteratorTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.Iterator;
 
@@ -83,7 +82,6 @@ import java.util.Iterator;
  * @author Kevin Bourrillion
  * @author Chris Povirk
  */
-@GwtCompatible
 public abstract class IteratorTester<E> extends AbstractIteratorTester<E, Iterator<E>> {
   /**
    * Creates an IteratorTester.
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/ListIteratorTester.java b/android/guava-testlib/src/com/google/common/collect/testing/ListIteratorTester.java
index 126eb86..9f1e7b3 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/ListIteratorTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/ListIteratorTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.ListIterator;
@@ -34,7 +33,6 @@ import java.util.ListIterator;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 public abstract class ListIteratorTester<E> extends AbstractIteratorTester<E, ListIterator<E>> {
   protected ListIteratorTester(
       int steps,
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/ListTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/ListTestSuiteBuilder.java
index 061e310..7e8df80 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/ListTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/ListTestSuiteBuilder.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.KNOWN
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.collect.testing.testers.CollectionSerializationEqualTester;
@@ -56,7 +55,6 @@ import junit.framework.TestSuite;
  *
  * @author George van den Driessche
  */
-@GwtIncompatible
 public final class ListTestSuiteBuilder<E>
     extends AbstractCollectionTestSuiteBuilder<ListTestSuiteBuilder<E>, E> {
   public static <E> ListTestSuiteBuilder<E> using(TestListGenerator<E> generator) {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/MapInterfaceTest.java b/android/guava-testlib/src/com/google/common/collect/testing/MapInterfaceTest.java
index b8b5c28..47b2e6a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/MapInterfaceTest.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/MapInterfaceTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static java.util.Collections.singleton;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -41,7 +40,6 @@ import junit.framework.TestCase;
 // TODO: Add another constructor parameter indicating whether the class under test is ordered, and
 // check the order if so.
 // TODO: Refactor to share code with SetTestBuilder etc.
-@GwtCompatible
 public abstract class MapInterfaceTest<K, V> extends TestCase {
 
   /** A key type that is not assignable to any classes but Object. */
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/MapTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/MapTestSuiteBuilder.java
index 7b8e40a..9bdf468 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/MapTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/MapTestSuiteBuilder.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static com.google.common.collect.testing.DerivedCollectionGenerators.keySetGenerator;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedCollectionGenerators.MapEntrySetGenerator;
 import com.google.common.collect.testing.DerivedCollectionGenerators.MapValueCollectionGenerator;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -54,7 +53,6 @@ import junit.framework.TestSuite;
  *
  * @author George van den Driessche
  */
-@GwtIncompatible
 public class MapTestSuiteBuilder<K, V>
     extends PerCollectionSizeTestSuiteBuilder<
         MapTestSuiteBuilder<K, V>, TestMapGenerator<K, V>, Map<K, V>, Entry<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/MinimalCollection.java b/android/guava-testlib/src/com/google/common/collect/testing/MinimalCollection.java
index a6ec93d..1f92d82 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/MinimalCollection.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/MinimalCollection.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.AbstractCollection;
 import java.util.Arrays;
 import java.util.Collection;
@@ -28,7 +27,6 @@ import java.util.Iterator;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class MinimalCollection<E> extends AbstractCollection<E> {
   // TODO: expose allow nulls parameter?
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/MinimalIterable.java b/android/guava-testlib/src/com/google/common/collect/testing/MinimalIterable.java
index c151c15..61a18b4 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/MinimalIterable.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/MinimalIterable.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
@@ -46,7 +45,6 @@ import java.util.Iterator;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public final class MinimalIterable<E> implements Iterable<E> {
   /** Returns an iterable whose iterator returns the given elements in order. */
   public static <E> MinimalIterable<E> of(E... elements) {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/MinimalSet.java b/android/guava-testlib/src/com/google/common/collect/testing/MinimalSet.java
index 988dd3f..1307170 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/MinimalSet.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/MinimalSet.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -30,7 +29,6 @@ import java.util.Set;
  *
  * @author Regina O'Dell
  */
-@GwtCompatible
 public class MinimalSet<E> extends MinimalCollection<E> implements Set<E> {
 
   @SuppressWarnings("unchecked") // empty Object[] as E[]
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/NavigableMapTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/NavigableMapTestSuiteBuilder.java
index 77a1984..368b0af 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/NavigableMapTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/NavigableMapTestSuiteBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static com.google.common.collect.testing.Helpers.castOrCopyToList;
 import static java.util.Collections.reverse;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedCollectionGenerators.Bound;
 import com.google.common.collect.testing.DerivedCollectionGenerators.ForwardingTestMapGenerator;
 import com.google.common.collect.testing.DerivedCollectionGenerators.SortedMapSubmapTestMapGenerator;
@@ -37,7 +36,6 @@ import junit.framework.TestSuite;
  * Creates, based on your criteria, a JUnit test suite that exhaustively tests a NavigableMap
  * implementation.
  */
-@GwtIncompatible
 public class NavigableMapTestSuiteBuilder<K, V> extends SortedMapTestSuiteBuilder<K, V> {
   public static <K, V> NavigableMapTestSuiteBuilder<K, V> using(
       TestSortedMapGenerator<K, V> generator) {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/NavigableSetTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/NavigableSetTestSuiteBuilder.java
index 38eb56e..962ceae 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/NavigableSetTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/NavigableSetTestSuiteBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static com.google.common.collect.testing.features.CollectionFeature.DESCENDING_VIEW;
 import static com.google.common.collect.testing.features.CollectionFeature.SUBSET_VIEW;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedCollectionGenerators.Bound;
 import com.google.common.collect.testing.DerivedCollectionGenerators.SortedSetSubsetTestSetGenerator;
 import com.google.common.collect.testing.features.Feature;
@@ -37,7 +36,6 @@ import junit.framework.TestSuite;
  * Creates, based on your criteria, a JUnit test suite that exhaustively tests a NavigableSet
  * implementation.
  */
-@GwtIncompatible
 public final class NavigableSetTestSuiteBuilder<E> extends SortedSetTestSuiteBuilder<E> {
   public static <E> NavigableSetTestSuiteBuilder<E> using(TestSortedSetGenerator<E> generator) {
     NavigableSetTestSuiteBuilder<E> builder = new NavigableSetTestSuiteBuilder<E>();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/OneSizeGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/OneSizeGenerator.java
index 1b8924c..62b2af8 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/OneSizeGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/OneSizeGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -28,7 +27,6 @@ import java.util.List;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public final class OneSizeGenerator<T, E> implements OneSizeTestContainerGenerator<T, E> {
   private final TestContainerGenerator<T, E> generator;
   private final CollectionSize collectionSize;
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/OneSizeTestContainerGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/OneSizeTestContainerGenerator.java
index 7e727cd..a74e040 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/OneSizeTestContainerGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/OneSizeTestContainerGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.Collection;
 
@@ -30,7 +29,6 @@ import java.util.Collection;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface OneSizeTestContainerGenerator<T, E>
     extends TestSubjectGenerator<T>, TestContainerGenerator<T, E> {
   TestContainerGenerator<T, E> getInnerGenerator();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/PerCollectionSizeTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/PerCollectionSizeTestSuiteBuilder.java
index c0068b4..2aa0a08 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/PerCollectionSizeTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/PerCollectionSizeTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.collect.testing.features.FeatureUtil;
@@ -41,7 +40,6 @@ import junit.framework.TestSuite;
  * @see FeatureSpecificTestSuiteBuilder
  * @author George van den Driessche
  */
-@GwtIncompatible
 public abstract class PerCollectionSizeTestSuiteBuilder<
         B extends PerCollectionSizeTestSuiteBuilder<B, G, T, E>,
         G extends TestContainerGenerator<T, E>,
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/Platform.java b/android/guava-testlib/src/com/google/common/collect/testing/Platform.java
index a2c020c..614562a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/Platform.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/Platform.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Locale;
 
 /**
@@ -26,7 +25,6 @@ import java.util.Locale;
  *
  * @author Hayward Chan
  */
-@GwtCompatible
 final class Platform {
   static <T> T[] clone(T[] array) {
     return array.clone();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/QueueTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/QueueTestSuiteBuilder.java
index ac62d44..147376c 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/QueueTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/QueueTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.testers.QueueElementTester;
 import com.google.common.collect.testing.testers.QueueOfferTester;
 import com.google.common.collect.testing.testers.QueuePeekTester;
@@ -31,7 +30,6 @@ import java.util.List;
  *
  * @author Jared Levy
  */
-@GwtIncompatible
 public final class QueueTestSuiteBuilder<E>
     extends AbstractCollectionTestSuiteBuilder<QueueTestSuiteBuilder<E>, E> {
   public static <E> QueueTestSuiteBuilder<E> using(TestQueueGenerator<E> generator) {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/ReserializingTestCollectionGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/ReserializingTestCollectionGenerator.java
index 28d6f79..4e72af0 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/ReserializingTestCollectionGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/ReserializingTestCollectionGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -32,7 +31,6 @@ import java.util.List;
  *
  * @author Jesse Wilson
  */
-@GwtIncompatible
 public class ReserializingTestCollectionGenerator<E> implements TestCollectionGenerator<E> {
   private final TestCollectionGenerator<E> delegate;
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/ReserializingTestSetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/ReserializingTestSetGenerator.java
index c92a3ff..38c10f2 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/ReserializingTestSetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/ReserializingTestSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Set;
 
 /**
@@ -26,7 +25,6 @@ import java.util.Set;
  *
  * @author Jesse Wilson
  */
-@GwtIncompatible
 public class ReserializingTestSetGenerator<E> extends ReserializingTestCollectionGenerator<E>
     implements TestSetGenerator<E> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/SafeTreeMap.java b/android/guava-testlib/src/com/google/common/collect/testing/SafeTreeMap.java
index 5856e3b..17da137 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/SafeTreeMap.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/SafeTreeMap.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.AbstractSet;
 import java.util.Collection;
@@ -35,7 +34,6 @@ import java.util.TreeMap;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public final class SafeTreeMap<K, V> implements Serializable, NavigableMap<K, V> {
   @SuppressWarnings("unchecked")
   private static final Comparator<Object> NATURAL_ORDER =
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/SafeTreeSet.java b/android/guava-testlib/src/com/google/common/collect/testing/SafeTreeSet.java
index 8ed4810..715d9af 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/SafeTreeSet.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/SafeTreeSet.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.Comparator;
@@ -31,7 +30,6 @@ import java.util.TreeSet;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public final class SafeTreeSet<E> implements Serializable, NavigableSet<E> {
   @SuppressWarnings("unchecked")
   private static final Comparator<Object> NATURAL_ORDER =
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/SampleElements.java b/android/guava-testlib/src/com/google/common/collect/testing/SampleElements.java
index 400107d..73a6003 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/SampleElements.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/SampleElements.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
@@ -27,7 +26,6 @@ import java.util.Map.Entry;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class SampleElements<E> implements Iterable<E> {
   // TODO: rename e3, e4 => missing1, missing2
   private final E e0;
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/SetTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/SetTestSuiteBuilder.java
index 4ac51a4..9979cff 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/SetTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/SetTestSuiteBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.collect.testing.testers.CollectionSerializationEqualTester;
 import com.google.common.collect.testing.testers.SetAddAllTester;
@@ -41,7 +40,6 @@ import junit.framework.TestSuite;
  *
  * @author George van den Driessche
  */
-@GwtIncompatible
 public class SetTestSuiteBuilder<E>
     extends AbstractCollectionTestSuiteBuilder<SetTestSuiteBuilder<E>, E> {
   public static <E> SetTestSuiteBuilder<E> using(TestSetGenerator<E> generator) {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/SortedMapInterfaceTest.java b/android/guava-testlib/src/com/google/common/collect/testing/SortedMapInterfaceTest.java
index 829c4cc..cec44bf 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/SortedMapInterfaceTest.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/SortedMapInterfaceTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 import java.util.Map.Entry;
 import java.util.SortedMap;
@@ -28,7 +27,6 @@ import java.util.SortedMap;
  * @author Jared Levy
  */
 // TODO: Use this class to test classes besides ImmutableSortedMap.
-@GwtCompatible
 public abstract class SortedMapInterfaceTest<K, V> extends MapInterfaceTest<K, V> {
 
   protected SortedMapInterfaceTest(
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/SortedMapTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/SortedMapTestSuiteBuilder.java
index aa1d6d5..6d564d6 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/SortedMapTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/SortedMapTestSuiteBuilder.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static com.google.common.collect.testing.features.CollectionFeature.KNOWN_ORDER;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedCollectionGenerators.Bound;
 import com.google.common.collect.testing.DerivedCollectionGenerators.SortedMapSubmapTestMapGenerator;
 import com.google.common.collect.testing.features.Feature;
@@ -35,7 +34,6 @@ import junit.framework.TestSuite;
  * Creates, based on your criteria, a JUnit test suite that exhaustively tests a SortedMap
  * implementation.
  */
-@GwtIncompatible
 public class SortedMapTestSuiteBuilder<K, V> extends MapTestSuiteBuilder<K, V> {
   public static <K, V> SortedMapTestSuiteBuilder<K, V> using(
       TestSortedMapGenerator<K, V> generator) {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/SortedSetTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/SortedSetTestSuiteBuilder.java
index 5092661..d8efa1c 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/SortedSetTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/SortedSetTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedCollectionGenerators.Bound;
 import com.google.common.collect.testing.DerivedCollectionGenerators.SortedSetSubsetTestSetGenerator;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -31,7 +30,6 @@ import junit.framework.TestSuite;
  * Creates, based on your criteria, a JUnit test suite that exhaustively tests a SortedSet
  * implementation.
  */
-@GwtIncompatible
 public class SortedSetTestSuiteBuilder<E> extends SetTestSuiteBuilder<E> {
   public static <E> SortedSetTestSuiteBuilder<E> using(TestSortedSetGenerator<E> generator) {
     SortedSetTestSuiteBuilder<E> builder = new SortedSetTestSuiteBuilder<E>();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestCharacterListGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestCharacterListGenerator.java
index b7542b5..2ccb8fe 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestCharacterListGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestCharacterListGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Chars;
 import java.util.List;
 
@@ -26,7 +25,6 @@ import java.util.List;
  * @author Kevin Bourrillion
  * @author Louis Wasserman
  */
-@GwtCompatible
 public abstract class TestCharacterListGenerator implements TestListGenerator<Character> {
   @Override
   public SampleElements<Character> samples() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestCollectionGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestCollectionGenerator.java
index f1df8c9..c91b30f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestCollectionGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestCollectionGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 
 /**
@@ -24,5 +23,4 @@ import java.util.Collection;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public interface TestCollectionGenerator<E> extends TestContainerGenerator<Collection<E>, E> {}
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestCollidingSetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestCollidingSetGenerator.java
index 6aa0c33..8f46c09 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestCollidingSetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestCollidingSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Colliders;
 import java.util.List;
 
@@ -25,7 +24,6 @@ import java.util.List;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public abstract class TestCollidingSetGenerator implements TestSetGenerator<Object> {
   @Override
   public SampleElements<Object> samples() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestContainerGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestContainerGenerator.java
index d08cf90..c3a7e13 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestContainerGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestContainerGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -28,7 +27,6 @@ import java.util.Map;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface TestContainerGenerator<T, E> {
   /** Returns the sample elements that this generate populates its container with. */
   SampleElements<E> samples();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestEnumMapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestEnumMapGenerator.java
index c117fcd..5bd0588 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestEnumMapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestEnumMapGenerator.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static com.google.common.collect.testing.Helpers.orderEntriesByKey;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -28,7 +27,6 @@ import java.util.Map.Entry;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public abstract class TestEnumMapGenerator implements TestMapGenerator<AnEnum, String> {
 
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestEnumSetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestEnumSetGenerator.java
index 88391ef..889a086 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestEnumSetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestEnumSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Enums;
 import java.util.Collections;
 import java.util.List;
@@ -27,7 +26,6 @@ import java.util.Set;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public abstract class TestEnumSetGenerator implements TestSetGenerator<AnEnum> {
   @Override
   public SampleElements<AnEnum> samples() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestIntegerSetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestIntegerSetGenerator.java
index 9cd9ecb..65643f6 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestIntegerSetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestIntegerSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Ints;
 import java.util.List;
 import java.util.Set;
@@ -26,7 +25,6 @@ import java.util.Set;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 public abstract class TestIntegerSetGenerator implements TestSetGenerator<Integer> {
   @Override
   public SampleElements<Integer> samples() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestIntegerSortedSetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestIntegerSortedSetGenerator.java
index babac37..b9d664a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestIntegerSortedSetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestIntegerSortedSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.List;
 import java.util.SortedSet;
@@ -27,7 +26,6 @@ import java.util.SortedSet;
  * @author Chris Povirk
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestIntegerSortedSetGenerator extends TestIntegerSetGenerator {
   @Override
   protected abstract SortedSet<Integer> create(Integer[] elements);
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestIteratorGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestIteratorGenerator.java
index 8e06bbe..1f05c5a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestIteratorGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestIteratorGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 
 /**
@@ -25,7 +24,6 @@ import java.util.Iterator;
  * @param <E> the element type of the iterator.
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface TestIteratorGenerator<E> {
   Iterator<E> get();
 }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestListGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestListGenerator.java
index 99f95d0..53d74e3 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestListGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestListGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.List;
 
 /**
@@ -24,7 +23,6 @@ import java.util.List;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public interface TestListGenerator<E> extends TestCollectionGenerator<E> {
   @Override
   List<E> create(Object... elements);
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestMapEntrySetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestMapEntrySetGenerator.java
index 0c298cc..841130b 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestMapEntrySetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestMapEntrySetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -27,7 +26,6 @@ import java.util.Set;
  *
  * @author Jesse Wilson
  */
-@GwtCompatible
 public abstract class TestMapEntrySetGenerator<K, V> implements TestSetGenerator<Map.Entry<K, V>> {
   private final SampleElements<K> keys;
   private final SampleElements<V> values;
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestMapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestMapGenerator.java
index 2267a04..5ffc4dd 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestMapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestMapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Map;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface TestMapGenerator<K, V> extends TestContainerGenerator<Map<K, V>, Map.Entry<K, V>> {
   K[] createKeyArray(int length);
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestQueueGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestQueueGenerator.java
index 939b485..d5f6c4c 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestQueueGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestQueueGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Queue;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Queue;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public interface TestQueueGenerator<E> extends TestCollectionGenerator<E> {
   @Override
   Queue<E> create(Object... elements);
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestSetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestSetGenerator.java
index 680ff44..12ab4d9 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestSetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Set;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Set;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public interface TestSetGenerator<E> extends TestCollectionGenerator<E> {
   @Override
   Set<E> create(Object... elements);
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestSortedMapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestSortedMapGenerator.java
index 5d90218..ab7515c 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestSortedMapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestSortedMapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map.Entry;
 import java.util.SortedMap;
 
@@ -25,7 +24,6 @@ import java.util.SortedMap;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestSortedMapGenerator<K, V> extends TestMapGenerator<K, V> {
   @Override
   SortedMap<K, V> create(Object... elements);
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestSortedSetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestSortedSetGenerator.java
index 8f7ee5c..19c622b 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestSortedSetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestSortedSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.SortedSet;
 
 /**
@@ -24,7 +23,6 @@ import java.util.SortedSet;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestSortedSetGenerator<E> extends TestSetGenerator<E> {
   @Override
   SortedSet<E> create(Object... elements);
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestStringCollectionGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestStringCollectionGenerator.java
index f9c58cd..f4e7d4f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestStringCollectionGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestStringCollectionGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Strings;
 import java.util.Collection;
 import java.util.List;
@@ -26,7 +25,6 @@ import java.util.List;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestStringCollectionGenerator implements TestCollectionGenerator<String> {
   @Override
   public SampleElements<String> samples() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestStringListGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestStringListGenerator.java
index 7e22ab1..4047c70 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestStringListGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestStringListGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Strings;
 import java.util.List;
 
@@ -25,7 +24,6 @@ import java.util.List;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public abstract class TestStringListGenerator implements TestListGenerator<String> {
   @Override
   public SampleElements<String> samples() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestStringMapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestStringMapGenerator.java
index 3449d3a..aef51bc 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestStringMapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestStringMapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -28,7 +27,6 @@ import java.util.Map.Entry;
  * @author Jared Levy
  * @author George van den Driessche
  */
-@GwtCompatible
 public abstract class TestStringMapGenerator implements TestMapGenerator<String, String> {
 
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestStringQueueGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestStringQueueGenerator.java
index 16cb253..ba7ca2f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestStringQueueGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestStringQueueGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Strings;
 import java.util.List;
 import java.util.Queue;
@@ -26,7 +25,6 @@ import java.util.Queue;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestStringQueueGenerator implements TestQueueGenerator<String> {
   @Override
   public SampleElements<String> samples() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestStringSetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestStringSetGenerator.java
index 1724bb2..5a8cc04 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestStringSetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestStringSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Strings;
 import java.util.List;
 import java.util.Set;
@@ -26,7 +25,6 @@ import java.util.Set;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public abstract class TestStringSetGenerator implements TestSetGenerator<String> {
   @Override
   public SampleElements<String> samples() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestStringSortedMapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestStringSortedMapGenerator.java
index c1878be..fde5f8a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestStringSortedMapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestStringSortedMapGenerator.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static com.google.common.collect.testing.Helpers.orderEntriesByKey;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.SortedMap;
@@ -28,7 +27,6 @@ import java.util.SortedMap;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 public abstract class TestStringSortedMapGenerator extends TestStringMapGenerator
     implements TestSortedMapGenerator<String, String> {
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestStringSortedSetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestStringSortedSetGenerator.java
index 7f5453d..6941741 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestStringSortedSetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestStringSortedSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.List;
 import java.util.SortedSet;
@@ -26,7 +25,6 @@ import java.util.SortedSet;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestStringSortedSetGenerator extends TestStringSetGenerator
     implements TestSortedSetGenerator<String> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestSubjectGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestSubjectGenerator.java
index 4a8ae76..df4e879 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestSubjectGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestSubjectGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * To be implemented by test generators that can produce test subjects without requiring any
@@ -25,7 +24,6 @@ import com.google.common.annotations.GwtCompatible;
  * @param <T> the type created by this generator.
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface TestSubjectGenerator<T> {
   T createTestSubject();
 }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestUnhashableCollectionGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/TestUnhashableCollectionGenerator.java
index 9b4602d..b80b793 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestUnhashableCollectionGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestUnhashableCollectionGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Unhashables;
 import java.util.Collection;
 import java.util.List;
@@ -26,7 +25,6 @@ import java.util.List;
  *
  * @author Regina O'Dell
  */
-@GwtCompatible
 public abstract class TestUnhashableCollectionGenerator<T extends Collection<UnhashableObject>>
     implements TestCollectionGenerator<UnhashableObject> {
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestsForListsInJavaUtil.java b/android/guava-testlib/src/com/google/common/collect/testing/TestsForListsInJavaUtil.java
index ac0d15f..ae8fc49 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestsForListsInJavaUtil.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestsForListsInJavaUtil.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.testers.ListSubListTester.getSub
 import static com.google.common.collect.testing.testers.ListSubListTester.getSubListOriginalListSetAffectsSubListMethod;
 import static com.google.common.collect.testing.testers.ListSubListTester.getSubListSubListRemoveAffectsOriginalLargeListMethod;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.ListFeature;
@@ -46,7 +45,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtIncompatible
 public class TestsForListsInJavaUtil {
   public static Test suite() {
     return new TestsForListsInJavaUtil().allTests();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestsForMapsInJavaUtil.java b/android/guava-testlib/src/com/google/common/collect/testing/TestsForMapsInJavaUtil.java
index e9014fb..df2c52b 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestsForMapsInJavaUtil.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestsForMapsInJavaUtil.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -47,7 +46,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtIncompatible
 public class TestsForMapsInJavaUtil {
 
   public static Test suite() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestsForQueuesInJavaUtil.java b/android/guava-testlib/src/com/google/common/collect/testing/TestsForQueuesInJavaUtil.java
index b10a5d9..0a1d2c6 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestsForQueuesInJavaUtil.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestsForQueuesInJavaUtil.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.lang.reflect.Method;
@@ -40,7 +39,6 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtIncompatible
 public class TestsForQueuesInJavaUtil {
   public static Test suite() {
     return new TestsForQueuesInJavaUtil().allTests();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/TestsForSetsInJavaUtil.java b/android/guava-testlib/src/com/google/common/collect/testing/TestsForSetsInJavaUtil.java
index 3324ace..2708d93 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/TestsForSetsInJavaUtil.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/TestsForSetsInJavaUtil.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.SetFeature;
@@ -44,7 +43,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtIncompatible
 public class TestsForSetsInJavaUtil {
   public static Test suite() {
     return new TestsForSetsInJavaUtil().allTests();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/UnhashableObject.java b/android/guava-testlib/src/com/google/common/collect/testing/UnhashableObject.java
index 69d263b..19ed4da 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/UnhashableObject.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/UnhashableObject.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * An unhashable object to be used in testing as values in our collections.
  *
  * @author Regina O'Dell
  */
-@GwtCompatible
 public class UnhashableObject implements Comparable<UnhashableObject> {
   private final int value;
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/WrongType.java b/android/guava-testlib/src/com/google/common/collect/testing/WrongType.java
index 65a523c..1a0aa72 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/WrongType.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/WrongType.java
@@ -16,13 +16,11 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A type which will never be used as the element type of any collection in our tests, and so can be
  * used to test how a Collection behaves when given input of the wrong type.
  */
-@GwtCompatible
 public enum WrongType {
   VALUE
 }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/features/CollectionFeature.java b/android/guava-testlib/src/com/google/common/collect/testing/features/CollectionFeature.java
index 0f0a123..0c1f7be 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/features/CollectionFeature.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/features/CollectionFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
@@ -33,7 +32,6 @@ import java.util.SortedSet;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum CollectionFeature implements Feature<Collection> {
   /**
    * The collection must not throw {@code NullPointerException} on calls such as {@code
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/features/CollectionSize.java b/android/guava-testlib/src/com/google/common/collect/testing/features/CollectionSize.java
index 6203e51..c80f12e 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/features/CollectionSize.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/features/CollectionSize.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
@@ -43,7 +42,6 @@ import java.util.Set;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum CollectionSize implements Feature<Collection>, Comparable<CollectionSize> {
   /** Test an empty collection. */
   ZERO(0),
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/features/ConflictingRequirementsException.java b/android/guava-testlib/src/com/google/common/collect/testing/features/ConflictingRequirementsException.java
index 9096a11..89a6bf7 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/features/ConflictingRequirementsException.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/features/ConflictingRequirementsException.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Set;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Set;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public class ConflictingRequirementsException extends Exception {
   private Set<Feature<?>> conflicts;
   private Object source;
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/features/Feature.java b/android/guava-testlib/src/com/google/common/collect/testing/features/Feature.java
index 9b15a6b..d661489 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/features/Feature.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/features/Feature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Set;
 
 /**
@@ -25,7 +24,6 @@ import java.util.Set;
  * @param <T> The interface whose features are to be enumerated.
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface Feature<T> {
   /** Returns the set of features that are implied by this feature. */
   Set<Feature<? super T>> getImpliedFeatures();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/features/FeatureUtil.java b/android/guava-testlib/src/com/google/common/collect/testing/features/FeatureUtil.java
index 95cbc0b..bce9421 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/features/FeatureUtil.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/features/FeatureUtil.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.AnnotatedElement;
@@ -37,7 +36,6 @@ import java.util.Set;
  *
  * @author George van den Driessche
  */
-@GwtIncompatible
 public class FeatureUtil {
   /** A cache of annotated objects (typically a Class or Method) to its set of annotations. */
   private static Map<AnnotatedElement, List<Annotation>> annotationCache = new HashMap<>();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/features/ListFeature.java b/android/guava-testlib/src/com/google/common/collect/testing/features/ListFeature.java
index 1427efa..39f9e84 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/features/ListFeature.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/features/ListFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
@@ -31,7 +30,6 @@ import java.util.Set;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum ListFeature implements Feature<List> {
   SUPPORTS_SET,
   SUPPORTS_ADD_WITH_INDEX(CollectionFeature.SUPPORTS_ADD),
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/features/MapFeature.java b/android/guava-testlib/src/com/google/common/collect/testing/features/MapFeature.java
index dff7b12..fc700d2 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/features/MapFeature.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/features/MapFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
@@ -31,7 +30,6 @@ import java.util.Set;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum MapFeature implements Feature<Map> {
   /**
    * The map does not throw {@code NullPointerException} on calls such as {@code containsKey(null)},
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/features/SetFeature.java b/android/guava-testlib/src/com/google/common/collect/testing/features/SetFeature.java
index 7b5dcd9..0f5dfec 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/features/SetFeature.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/features/SetFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
@@ -30,7 +29,6 @@ import java.util.Set;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum SetFeature implements Feature<Set> {
   GENERAL_PURPOSE(CollectionFeature.GENERAL_PURPOSE);
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/features/TesterAnnotation.java b/android/guava-testlib/src/com/google/common/collect/testing/features/TesterAnnotation.java
index 1831e41..fc9d407 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/features/TesterAnnotation.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/features/TesterAnnotation.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -32,5 +31,4 @@ import java.lang.annotation.Target;
 @Target(value = {java.lang.annotation.ElementType.ANNOTATION_TYPE})
 @Retention(value = RetentionPolicy.RUNTIME)
 @Documented
-@GwtCompatible
 public @interface TesterAnnotation {}
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/features/TesterRequirements.java b/android/guava-testlib/src/com/google/common/collect/testing/features/TesterRequirements.java
index 4780b1b..1171e53 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/features/TesterRequirements.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/features/TesterRequirements.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.util.Collections;
 import java.util.Set;
@@ -27,7 +26,6 @@ import java.util.Set;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public final class TesterRequirements {
   private final Set<Feature<?>> presentFeatures;
   private final Set<Feature<?>> absentFeatures;
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractBiMapTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractBiMapTester.java
index 85ddb44..038f584 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractBiMapTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractBiMapTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
@@ -27,7 +26,6 @@ import java.util.Map.Entry;
 import org.junit.Ignore;
 
 /** Skeleton for a tester of a {@code BiMap}. */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractBiMapTester<K, V> extends AbstractMapTester<K, V> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractListMultimapTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractListMultimapTester.java
index 7bce8b0..00f5b57 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractListMultimapTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractListMultimapTester.java
@@ -16,7 +16,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.Helpers.assertEqualInOrder;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import java.util.Arrays;
 import java.util.Collection;
@@ -27,7 +26,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class AbstractListMultimapTester<K, V>
     extends AbstractMultimapTester<K, V, ListMultimap<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultimapTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultimapTester.java
index 7b7801d..10c5454 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultimapTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultimapTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.Helpers.assertEqualIgnoringOrder;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.AbstractContainerTester;
 import com.google.common.collect.testing.Helpers;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractMultimapTester<K, V, M extends Multimap<K, V>>
     extends AbstractContainerTester<M, Entry<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetSetCountTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetSetCountTester.java
index a72fd9f..5ab6392 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetSetCountTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetSetCountTester.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Multiset.Entry;
 import com.google.common.collect.testing.Helpers;
@@ -46,7 +44,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractMultisetSetCountTester<E> extends AbstractMultisetTester<E> {
   /*
@@ -384,7 +381,7 @@ public abstract class AbstractMultisetSetCountTester<E> extends AbstractMultiset
    * Returns {@link Method} instances for the {@code setCount()} tests that assume multisets support
    * duplicates so that the test of {@code Multisets.forSet()} can suppress them.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getSetCountDuplicateInitializingMethods() {
     return Arrays.asList(
         getMethod("testSetCount_threeToThree_removeSupported"),
@@ -392,7 +389,7 @@ public abstract class AbstractMultisetSetCountTester<E> extends AbstractMultiset
         getMethod("testSetCount_threeToOne_supported"));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static Method getMethod(String methodName) {
     return Helpers.getMethod(AbstractMultisetSetCountTester.class, methodName);
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetTester.java
index 18ffcbc..f21673e 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import org.junit.Ignore;
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class AbstractMultisetTester<E> extends AbstractCollectionTester<E> {
   protected final Multiset<E> getMultiset() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapClearTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapClearTester.java
index 4319a85..4d31610 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapClearTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapClearTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.features.MapFeature;
 import org.junit.Ignore;
@@ -28,7 +27,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class BiMapClearTester<K, V> extends AbstractBiMapTester<K, V> {
   @MapFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapEntrySetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapEntrySetTester.java
index 5c9a479..c17399e 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapEntrySetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapEntrySetTester.java
@@ -21,14 +21,12 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.Map.Entry;
 import org.junit.Ignore;
 
 /** Tester for {@code BiMap.entrySet} and methods on the entries in the set. */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class BiMapEntrySetTester<K, V> extends AbstractBiMapTester<K, V> {
   @MapFeature.Require(SUPPORTS_PUT)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java
index 13efdcd..3de220e 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java
@@ -16,9 +16,7 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
-import com.google.common.collect.ImmutableBiMap;
 import com.google.common.collect.Maps;
 import java.util.Arrays;
 import java.util.Map;
@@ -30,7 +28,6 @@ import java.util.Map.Entry;
  * @author Jared Levy
  * @author Hayward Chan
  */
-@GwtCompatible
 public class BiMapGenerators {
   public static class ImmutableBiMapGenerator extends TestStringBiMapGenerator {
     @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapInverseTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapInverseTester.java
index 984558e..bb85b8c 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapInverseTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapInverseTester.java
@@ -18,8 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -38,7 +36,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class BiMapInverseTester<K, V> extends AbstractBiMapTester<K, V> {
 
@@ -72,12 +69,12 @@ public class BiMapInverseTester<K, V> extends AbstractBiMapTester<K, V> {
    * Returns {@link Method} instances for the tests that assume that the inverse will be the same
    * after serialization.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getInverseSameAfterSerializingMethods() {
     return Collections.singletonList(getMethod("testInverseSerialization"));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static Method getMethod(String methodName) {
     return Helpers.getMethod(BiMapInverseTester.class, methodName);
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapPutTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapPutTester.java
index 4bb72a2..50e6951 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapPutTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapPutTester.java
@@ -23,14 +23,12 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
 import org.junit.Ignore;
 
 /** Tester for {@code BiMap.put} and {@code BiMap.forcePut}. */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class BiMapPutTester<K, V> extends AbstractBiMapTester<K, V> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapRemoveTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapRemoveTester.java
index e54256a..640106a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapRemoveTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapRemoveTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class BiMapRemoveTester<K, V> extends AbstractBiMapTester<K, V> {
   @SuppressWarnings("unchecked")
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapTestSuiteBuilder.java
index 0821fb0..27dd547 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/BiMapTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.AbstractTester;
 import com.google.common.collect.testing.FeatureSpecificTestSuiteBuilder;
@@ -45,7 +44,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class BiMapTestSuiteBuilder<K, V>
     extends PerCollectionSizeTestSuiteBuilder<
         BiMapTestSuiteBuilder<K, V>, TestBiMapGenerator<K, V>, BiMap<K, V>, Entry<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/DerivedGoogleCollectionGenerators.java b/android/guava-testlib/src/com/google/common/collect/testing/google/DerivedGoogleCollectionGenerators.java
index bbeefd2..a5dff16 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/DerivedGoogleCollectionGenerators.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/DerivedGoogleCollectionGenerators.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.DerivedGenerator;
 import com.google.common.collect.testing.Helpers;
@@ -38,7 +37,6 @@ import java.util.Set;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public final class DerivedGoogleCollectionGenerators {
   public static class MapGenerator<K, V> implements TestMapGenerator<K, V>, DerivedGenerator {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/GoogleHelpers.java b/android/guava-testlib/src/com/google/common/collect/testing/google/GoogleHelpers.java
index cf856fa..0c381e1 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/GoogleHelpers.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/GoogleHelpers.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static junit.framework.Assert.fail;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 
 /**
@@ -26,7 +25,6 @@ import com.google.common.collect.Multimap;
  *
  * @author Colin Decker
  */
-@GwtCompatible
 final class GoogleHelpers {
 
   private GoogleHelpers() {}
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/ListGenerators.java b/android/guava-testlib/src/com/google/common/collect/testing/google/ListGenerators.java
index 0839f09..23d7abf 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/ListGenerators.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/ListGenerators.java
@@ -18,8 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.testing.TestCharacterListGenerator;
 import com.google.common.collect.testing.TestListGenerator;
@@ -36,7 +34,6 @@ import java.util.List;
  *
  * @author Hayward Chan
  */
-@GwtCompatible
 public final class ListGenerators {
 
   private ListGenerators() {}
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapAsMapTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapAsMapTester.java
index ca6f21a..4899439 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapAsMapTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapAsMapTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  * @param <K> The key type of the tested multimap.
  * @param <V> The value type of the tested multimap.
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapAsMapTester<K, V> extends AbstractListMultimapTester<K, V> {
   public void testAsMapValuesImplementList() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapEqualsTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapEqualsTester.java
index 2a9b144..cb1772e 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapEqualsTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapEqualsTester.java
@@ -16,7 +16,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -28,7 +27,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapEqualsTester<K, V> extends AbstractListMultimapTester<K, V> {
   @CollectionSize.Require(SEVERAL)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutAllTester.java
index 2433616..9ac2496 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutAllTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.Helpers.copyToList;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.Arrays;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapPutAllTester<K, V> extends AbstractListMultimapTester<K, V> {
   @MapFeature.Require(SUPPORTS_PUT)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutTester.java
index c459496..b4c8329 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutTester.java
@@ -18,7 +18,6 @@ import static com.google.common.collect.testing.Helpers.copyToList;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapPutTester<K, V> extends AbstractListMultimapTester<K, V> {
   // MultimapPutTester tests non-duplicate values, but ignores ordering
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapRemoveTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapRemoveTester.java
index 04ac0a2..65ea2bc 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapRemoveTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapRemoveTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.Helpers.mapEntry;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapRemoveTester<K, V> extends AbstractListMultimapTester<K, V> {
   @SuppressWarnings("unchecked")
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapReplaceValuesTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapReplaceValuesTester.java
index b070165..4311bf4 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapReplaceValuesTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapReplaceValuesTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.Arrays;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapReplaceValuesTester<K, V> extends AbstractListMultimapTester<K, V> {
   @MapFeature.Require({SUPPORTS_PUT, SUPPORTS_REMOVE})
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapTestSuiteBuilder.java
index b55c7d6..8a64032 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.AbstractTester;
 import com.google.common.collect.testing.FeatureSpecificTestSuiteBuilder;
@@ -41,7 +40,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class ListMultimapTestSuiteBuilder<K, V>
     extends MultimapTestSuiteBuilder<K, V, ListMultimap<K, V>> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MapGenerators.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MapGenerators.java
index bb84ea1..e7d10cf 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MapGenerators.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MapGenerators.java
@@ -18,9 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.Helpers.mapEntry;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
@@ -45,7 +42,6 @@ import java.util.Map.Entry;
  *
  * @author Hayward Chan
  */
-@GwtCompatible
 public class MapGenerators {
   public static class ImmutableMapGenerator extends TestStringMapGenerator {
     @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapGetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapGetTester.java
index dadb9a3..cb3fecd 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapGetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapGetTester.java
@@ -25,7 +25,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapAsMapGetTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapTester.java
index 23b2351..1cc3194 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapTester.java
@@ -25,7 +25,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
@@ -45,7 +44,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapAsMapTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testAsMapGet() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapClearTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapClearTester.java
index 6ce9907..4a33a14 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapClearTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapClearTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 import static com.google.common.collect.testing.google.GoogleHelpers.assertEmpty;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapClearTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsEntryTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsEntryTester.java
index 9da7fe3..c3de01d 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsEntryTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsEntryTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapContainsEntryTester<K, V>
     extends AbstractMultimapTester<K, V, Multimap<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsKeyTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsKeyTester.java
index a7dcd66..b16605f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsKeyTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsKeyTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapContainsKeyTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsValueTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsValueTester.java
index 00ca12a..5c8ce2d 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsValueTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsValueTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapContainsValueTester<K, V>
     extends AbstractMultimapTester<K, V, Multimap<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapEntriesTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapEntriesTester.java
index 9874b88..e24ecdc 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapEntriesTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapEntriesTester.java
@@ -25,7 +25,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapEntriesTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testEntries() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapEqualsTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapEqualsTester.java
index 2116360..2ce7e04 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapEqualsTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapEqualsTester.java
@@ -18,7 +18,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapEqualsTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testEqualsTrue() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapFeature.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapFeature.java
index 8c1bdaa..5a33995 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapFeature.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.Feature;
@@ -33,7 +32,6 @@ import java.util.Set;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum MultimapFeature implements Feature<Multimap> {
   VALUE_COLLECTIONS_SUPPORT_ITERATOR_REMOVE;
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapGetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapGetTester.java
index 6978473..f537b5b 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapGetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapGetTester.java
@@ -26,7 +26,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -40,7 +39,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapGetTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testGetEmpty() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeySetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeySetTester.java
index 100b15b..7a2bff2 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeySetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeySetTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapKeySetTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testKeySet() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeysTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeysTester.java
index 6b2a93c..2237904 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeysTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeysTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Multisets;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapKeysTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @CollectionSize.Require(SEVERAL)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutAllMultimapTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutAllMultimapTester.java
index 9262293..da43112 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutAllMultimapTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutAllMultimapTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.MapFeature;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapPutAllMultimapTester<K, V>
     extends AbstractMultimapTester<K, V, Multimap<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutIterableTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutIterableTester.java
index b360378..d271012 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutIterableTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutIterableTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Multimap;
@@ -39,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapPutIterableTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutTester.java
index c108e85..4916b28 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutTester.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
@@ -42,7 +40,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapPutTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @MapFeature.Require(absent = SUPPORTS_PUT)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveAllTester.java
index 185ba2c..6cf53a8 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveAllTester.java
@@ -25,7 +25,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 import static com.google.common.collect.testing.google.GoogleHelpers.assertEmpty;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapRemoveAllTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @MapFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveEntryTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveEntryTester.java
index 250a691..ba14126 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveEntryTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveEntryTester.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -41,7 +39,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapRemoveEntryTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @MapFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapReplaceValuesTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapReplaceValuesTester.java
index 3e2597d..247dc8b 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapReplaceValuesTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapReplaceValuesTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -40,7 +39,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapReplaceValuesTester<K, V>
     extends AbstractMultimapTester<K, V, Multimap<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapSizeTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapSizeTester.java
index 23d6bdf..ec341b6 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapSizeTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapSizeTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapSizeTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapTestSuiteBuilder.java
index 97c24c9..3cd2449 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapTestSuiteBuilder.java
@@ -19,9 +19,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.collect.testing.Helpers.mapEntry;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMultimap;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.AbstractTester;
@@ -62,7 +59,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class MultimapTestSuiteBuilder<K, V, M extends Multimap<K, V>>
     extends PerCollectionSizeTestSuiteBuilder<
         MultimapTestSuiteBuilder<K, V, M>, TestMultimapGenerator<K, V, M>, M, Entry<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapToStringTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapToStringTester.java
index 203f278..c5c6a08 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapToStringTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapToStringTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapToStringTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @CollectionSize.Require(ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapValuesTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapValuesTester.java
index ab7afce..e8728b5 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapValuesTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultimapValuesTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.KNOWN
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ITERATOR_REMOVE;
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapValuesTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testValues() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetAddTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetAddTester.java
index fa8874d..9074c4d 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetAddTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetAddTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import java.util.Arrays;
 import java.util.Collections;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetAddTester<E> extends AbstractMultisetTester<E> {
   @CollectionFeature.Require(absent = SUPPORTS_ADD)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetContainsTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetContainsTester.java
index bdbd090..f2b2fd3 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetContainsTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetContainsTester.java
@@ -16,7 +16,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.Arrays;
 import org.junit.Ignore;
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetContainsTester<E> extends AbstractMultisetTester<E> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetCountTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetCountTester.java
index 7c07cd3..c48acc1 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetCountTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetCountTester.java
@@ -21,8 +21,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -37,7 +35,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetCountTester<E> extends AbstractMultisetTester<E> {
 
@@ -86,7 +83,7 @@ public class MultisetCountTester<E> extends AbstractMultisetTester<E> {
    * Returns {@link Method} instances for the read tests that assume multisets support duplicates so
    * that the test of {@code Multisets.forSet()} can suppress them.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getCountDuplicateInitializingMethods() {
     return Arrays.asList(Helpers.getMethod(MultisetCountTester.class, "testCount_3"));
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetElementSetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetElementSetTester.java
index baa6071..5084999 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetElementSetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetElementSetTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -39,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetElementSetTester<E> extends AbstractMultisetTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
@@ -99,7 +96,7 @@ public class MultisetElementSetTester<E> extends AbstractMultisetTester<E> {
    * Returns {@link Method} instances for the read tests that assume multisets support duplicates so
    * that the test of {@code Multisets.forSet()} can suppress them.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getElementSetDuplicateInitializingMethods() {
     return Arrays.asList(
         Helpers.getMethod(
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetEntrySetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetEntrySetTester.java
index 3bec616..0e74c13 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetEntrySetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetEntrySetTester.java
@@ -24,7 +24,6 @@ import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.google.MultisetFeature.ENTRIES_ARE_VIEWS;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Multisets;
@@ -39,7 +38,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetEntrySetTester<E> extends AbstractMultisetTester<E> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetEqualsTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetEqualsTester.java
index 9d9fee0..76b7daf 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetEqualsTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetEqualsTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.testing.EqualsTester;
@@ -28,7 +27,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetEqualsTester<E> extends AbstractMultisetTester<E> {
   public void testEqualsSameContents() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetFeature.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetFeature.java
index d05c560..ce4e05f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetFeature.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.collect.testing.features.TesterAnnotation;
@@ -31,7 +30,6 @@ import java.util.Set;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public enum MultisetFeature implements Feature<Multiset> {
   /**
    * Indicates that elements from {@code Multiset.entrySet()} update to reflect changes in the
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetIteratorTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetIteratorTester.java
index 34a8c72..9b72744 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetIteratorTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetIteratorTester.java
@@ -19,8 +19,6 @@ import static com.google.common.collect.testing.IteratorFeature.UNMODIFIABLE;
 import static com.google.common.collect.testing.features.CollectionFeature.KNOWN_ORDER;
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ITERATOR_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.IteratorTester;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -36,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetIteratorTester<E> extends AbstractMultisetTester<E> {
   @SuppressWarnings("unchecked")
@@ -103,7 +100,7 @@ public class MultisetIteratorTester<E> extends AbstractMultisetTester<E> {
    * Returns {@link Method} instances for the tests that assume multisets support duplicates so that
    * the test of {@code Multisets.forSet()} can suppress them.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getIteratorDuplicateInitializingMethods() {
     return Arrays.asList(
         Helpers.getMethod(MultisetIteratorTester.class, "testIteratorKnownOrder"),
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetNavigationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetNavigationTester.java
index b65cd96..26b5fd0 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetNavigationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetNavigationTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BoundType;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Multiset;
@@ -44,7 +43,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetNavigationTester<E> extends AbstractMultisetTester<E> {
   private SortedMultiset<E> sortedMultiset;
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetReadsTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetReadsTester.java
index 3a0cf59..fbafcbb 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetReadsTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetReadsTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.HashMultiset;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Multisets;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetReadsTester<E> extends AbstractMultisetTester<E> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetRemoveTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetRemoveTester.java
index e6594c1..69e702a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetRemoveTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetRemoveTester.java
@@ -23,8 +23,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -41,7 +39,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetRemoveTester<E> extends AbstractMultisetTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
@@ -188,7 +185,7 @@ public class MultisetRemoveTester<E> extends AbstractMultisetTester<E> {
    * Returns {@link Method} instances for the remove tests that assume multisets support duplicates
    * so that the test of {@code Multisets.forSet()} can suppress them.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getRemoveDuplicateInitializingMethods() {
     return Arrays.asList(
         Helpers.getMethod(MultisetRemoveTester.class, "testRemove_some_occurrences_present"));
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSerializationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSerializationTester.java
index 0303970..30ba4d3 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSerializationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSerializationTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.testing.SerializableTester;
@@ -31,7 +30,7 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible // but no-op
+// but no-op
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetSerializationTester<E> extends AbstractMultisetTester<E> {
   @CollectionFeature.Require(SERIALIZABLE_INCLUDING_VIEWS)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountConditionallyTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountConditionallyTester.java
index d5e6963..d2241a0 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountConditionallyTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountConditionallyTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static java.util.Collections.nCopies;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetSetCountConditionallyTester<E> extends AbstractMultisetSetCountTester<E> {
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountUnconditionallyTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountUnconditionallyTester.java
index ec5436d..43280a0 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountUnconditionallyTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountUnconditionallyTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import org.junit.Ignore;
 
 /**
@@ -25,7 +24,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetSetCountUnconditionallyTester<E> extends AbstractMultisetSetCountTester<E> {
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetTestSuiteBuilder.java
index d6a665c..47db036 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/MultisetTestSuiteBuilder.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Multiset.Entry;
 import com.google.common.collect.Multisets;
@@ -52,7 +51,6 @@ import junit.framework.TestSuite;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class MultisetTestSuiteBuilder<E>
     extends AbstractCollectionTestSuiteBuilder<MultisetTestSuiteBuilder<E>, E> {
   public static <E> MultisetTestSuiteBuilder<E> using(TestMultisetGenerator<E> generator) {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java
index 0b55a27..4b62b61 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java
@@ -25,12 +25,8 @@ import static com.google.common.collect.testing.SampleElements.Strings.BEFORE_FI
 import static com.google.common.collect.testing.SampleElements.Strings.BEFORE_FIRST_2;
 import static junit.framework.Assert.assertEquals;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ContiguousSet;
 import com.google.common.collect.DiscreteDomain;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSortedSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.Range;
@@ -58,7 +54,6 @@ import java.util.SortedSet;
  * @author Jared Levy
  * @author Hayward Chan
  */
-@GwtCompatible(emulated = true)
 public class SetGenerators {
 
   public static class ImmutableSetCopyOfGenerator extends TestStringSetGenerator {
@@ -171,7 +166,7 @@ public class SetGenerators {
     }
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public static class ImmutableSortedSetDescendingGenerator extends TestStringSortedSetGenerator {
     @Override
     protected SortedSet<String> create(String[] elements) {
@@ -263,7 +258,7 @@ public class SetGenerators {
     }
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public static class ImmutableSortedSetDescendingAsListGenerator extends TestStringListGenerator {
     @Override
     protected List<String> create(String[] elements) {
@@ -390,7 +385,7 @@ public class SetGenerators {
     }
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public static class ContiguousSetDescendingGenerator extends AbstractContiguousSetGenerator {
     @Override
     protected SortedSet<Integer> create(Integer[] elements) {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapAsMapTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapAsMapTester.java
index 49187dd..44e2b6b 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapAsMapTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapAsMapTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Maps;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.Sets;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  * @param <K> The key type of the tested multimap.
  * @param <V> The value type of the tested multimap.
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetMultimapAsMapTester<K, V> extends AbstractMultimapTester<K, V, SetMultimap<K, V>> {
   public void testAsMapValuesImplementSet() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapEqualsTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapEqualsTester.java
index 18d3823..a8c003a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapEqualsTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapEqualsTester.java
@@ -16,7 +16,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -28,7 +27,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetMultimapEqualsTester<K, V> extends AbstractMultimapTester<K, V, SetMultimap<K, V>> {
   @CollectionSize.Require(SEVERAL)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutAllTester.java
index ca02b56..d6eb113 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutAllTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.Helpers.copyToSet;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.Arrays;
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetMultimapPutAllTester<K, V> extends AbstractMultimapTester<K, V, SetMultimap<K, V>> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutTester.java
index 7aaf9dc..d1facbb 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetMultimapPutTester<K, V> extends AbstractMultimapTester<K, V, SetMultimap<K, V>> {
   // Tests for non-duplicate values are in MultimapPutTester
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapReplaceValuesTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapReplaceValuesTester.java
index 67b6aec..9990bc1 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapReplaceValuesTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapReplaceValuesTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.Arrays;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetMultimapReplaceValuesTester<K, V>
     extends AbstractMultimapTester<K, V, SetMultimap<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapTestSuiteBuilder.java
index 4368cee..16cf7de 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.AbstractTester;
 import com.google.common.collect.testing.FeatureSpecificTestSuiteBuilder;
@@ -39,7 +38,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class SetMultimapTestSuiteBuilder<K, V>
     extends MultimapTestSuiteBuilder<K, V, SetMultimap<K, V>> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SortedMapGenerators.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SortedMapGenerators.java
index 424fbb1..15ec27a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SortedMapGenerators.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SortedMapGenerators.java
@@ -19,8 +19,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.testing.Helpers.mapEntry;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableSortedMap;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -41,7 +39,6 @@ import java.util.SortedMap;
  * @author Chris Povirk
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class SortedMapGenerators {
   public static class ImmutableSortedMapGenerator extends TestStringSortedMapGenerator {
     @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SortedMultisetTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SortedMultisetTestSuiteBuilder.java
index dafd521..92a50e4 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SortedMultisetTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SortedMultisetTestSuiteBuilder.java
@@ -21,9 +21,7 @@ import static com.google.common.collect.testing.features.CollectionFeature.RESTR
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.BoundType;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.SortedMultiset;
@@ -53,7 +51,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class SortedMultisetTestSuiteBuilder<E> extends MultisetTestSuiteBuilder<E> {
   public static <E> SortedMultisetTestSuiteBuilder<E> using(TestMultisetGenerator<E> generator) {
     SortedMultisetTestSuiteBuilder<E> result = new SortedMultisetTestSuiteBuilder<E>();
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapAsMapTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapAsMapTester.java
index 1c00f09..f655769 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapAsMapTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapAsMapTester.java
@@ -16,7 +16,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SortedSetMultimap;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.ArrayList;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  * @param <K> The key type of the tested multimap.
  * @param <V> The value type of the tested multimap.
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SortedSetMultimapAsMapTester<K, V>
     extends AbstractMultimapTester<K, V, SortedSetMultimap<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapGetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapGetTester.java
index 5244b57..6fa30c5 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapGetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapGetTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SortedSetMultimap;
 import org.junit.Ignore;
 
@@ -25,7 +24,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SortedSetMultimapGetTester<K, V>
     extends AbstractMultimapTester<K, V, SortedSetMultimap<K, V>> {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapTestSuiteBuilder.java b/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapTestSuiteBuilder.java
index 66c5a8e..f937e2d 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapTestSuiteBuilder.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.AbstractTester;
 import com.google.common.collect.testing.FeatureSpecificTestSuiteBuilder;
@@ -38,7 +37,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class SortedSetMultimapTestSuiteBuilder<K, V>
     extends MultimapTestSuiteBuilder<K, V, SetMultimap<K, V>> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/TestBiMapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/google/TestBiMapGenerator.java
index 11c353b..c676ebc 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/TestBiMapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/TestBiMapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.TestContainerGenerator;
 import java.util.Map.Entry;
@@ -26,7 +25,6 @@ import java.util.Map.Entry;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestBiMapGenerator<K, V> extends TestContainerGenerator<BiMap<K, V>, Entry<K, V>> {
   K[] createKeyArray(int length);
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/TestEnumMultisetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/google/TestEnumMultisetGenerator.java
index 851e221..ed4e670 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/TestEnumMultisetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/TestEnumMultisetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.AnEnum;
 import com.google.common.collect.testing.SampleElements;
@@ -29,7 +28,6 @@ import java.util.List;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestEnumMultisetGenerator implements TestMultisetGenerator<AnEnum> {
   @Override
   public SampleElements<AnEnum> samples() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/TestListMultimapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/google/TestListMultimapGenerator.java
index 1ab668f..43ff9bf 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/TestListMultimapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/TestListMultimapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 
 /**
@@ -24,6 +23,5 @@ import com.google.common.collect.ListMultimap;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestListMultimapGenerator<K, V>
     extends TestMultimapGenerator<K, V, ListMultimap<K, V>> {}
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/TestMultimapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/google/TestMultimapGenerator.java
index 06ce43f..b78cb6f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/TestMultimapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/TestMultimapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestContainerGenerator;
@@ -28,7 +27,6 @@ import java.util.Map.Entry;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestMultimapGenerator<K, V, M extends Multimap<K, V>>
     extends TestContainerGenerator<M, Entry<K, V>> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/TestMultisetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/google/TestMultisetGenerator.java
index d3b5acd..9868410 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/TestMultisetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/TestMultisetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.TestCollectionGenerator;
 
@@ -25,7 +24,6 @@ import com.google.common.collect.testing.TestCollectionGenerator;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public interface TestMultisetGenerator<E> extends TestCollectionGenerator<E> {
   @Override
   Multiset<E> create(Object... elements);
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/TestSetMultimapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/google/TestSetMultimapGenerator.java
index 579dcbd..640235c 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/TestSetMultimapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/TestSetMultimapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 
 /**
@@ -24,6 +23,5 @@ import com.google.common.collect.SetMultimap;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestSetMultimapGenerator<K, V>
     extends TestMultimapGenerator<K, V, SetMultimap<K, V>> {}
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringBiMapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringBiMapGenerator.java
index d475397..2f69a77 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringBiMapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringBiMapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.SampleElements;
@@ -31,7 +30,6 @@ import java.util.Map.Entry;
  * @author George van den Driessche
  * @author Louis Wasserman
  */
-@GwtCompatible
 public abstract class TestStringBiMapGenerator implements TestBiMapGenerator<String, String> {
 
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringListMultimapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringListMultimapGenerator.java
index 64b33af..1d838ce 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringListMultimapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringListMultimapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.SampleElements;
@@ -29,7 +28,6 @@ import java.util.Map.Entry;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public abstract class TestStringListMultimapGenerator
     implements TestListMultimapGenerator<String, String> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringMultisetGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringMultisetGenerator.java
index eeacf5d..ff2257f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringMultisetGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringMultisetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.SampleElements.Strings;
@@ -27,7 +26,6 @@ import java.util.List;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestStringMultisetGenerator implements TestMultisetGenerator<String> {
   @Override
   public SampleElements<String> samples() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringSetMultimapGenerator.java b/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringSetMultimapGenerator.java
index e49ccff..9e8e213 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringSetMultimapGenerator.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/TestStringSetMultimapGenerator.java
@@ -15,7 +15,6 @@
  */
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.SampleElements;
@@ -28,7 +27,6 @@ import java.util.Map.Entry;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public abstract class TestStringSetMultimapGenerator
     implements TestSetMultimapGenerator<String, String> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/google/UnmodifiableCollectionTests.java b/android/guava-testlib/src/com/google/common/collect/testing/google/UnmodifiableCollectionTests.java
index 005746f..838f0c4 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/google/UnmodifiableCollectionTests.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/google/UnmodifiableCollectionTests.java
@@ -20,7 +20,6 @@ import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.assertTrue;
 import static junit.framework.TestCase.fail;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.LinkedHashMultiset;
@@ -42,7 +41,6 @@ import java.util.Set;
  *
  * @author Robert Konigsberg
  */
-@GwtCompatible
 public class UnmodifiableCollectionTests {
 
   public static void assertMapEntryIsUnmodifiable(Entry<?, ?> entry) {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListIndexOfTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListIndexOfTester.java
index 46bd529..cdb40ea 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListIndexOfTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListIndexOfTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractListIndexOfTester<E> extends AbstractListTester<E> {
   /** Override to call {@code indexOf()} or {@code lastIndexOf()}. */
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListTester.java
index 5275acb..d241070 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import java.util.Collection;
@@ -28,7 +27,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class AbstractListTester<E> extends AbstractCollectionTester<E> {
   /*
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractQueueTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractQueueTester.java
index 7476340..0994b66 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractQueueTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractQueueTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import java.util.Queue;
 import org.junit.Ignore;
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class AbstractQueueTester<E> extends AbstractCollectionTester<E> {
   protected final Queue<E> getQueue() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractSetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractSetTester.java
index b7409af..261505e 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractSetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/AbstractSetTester.java
@@ -16,13 +16,11 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import java.util.Set;
 import org.junit.Ignore;
 
 /** @author George van den Driessche */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class AbstractSetTester<E> extends AbstractCollectionTester<E> {
   /*
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddAllTester.java
index 5c21c9a..7d86c7e 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddAllTester.java
@@ -23,8 +23,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static java.util.Collections.singletonList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.MinimalCollection;
@@ -44,7 +42,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionAddAllTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
@@ -167,7 +164,7 @@ public class CollectionAddAllTester<E> extends AbstractCollectionTester<E> {
    * suppress it with {@code FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddAllNullUnsupportedMethod() {
     return Helpers.getMethod(CollectionAddAllTester.class, "testAddAll_nullUnsupported");
   }
@@ -178,7 +175,7 @@ public class CollectionAddAllTester<E> extends AbstractCollectionTester<E> {
    * figure out what to do with <a href="http://goo.gl/qJBruX">{@code ConcurrentHashMap} support for
    * {@code entrySet().add()}</a>.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddAllUnsupportedNonePresentMethod() {
     return Helpers.getMethod(CollectionAddAllTester.class, "testAddAll_unsupportedNonePresent");
   }
@@ -189,7 +186,7 @@ public class CollectionAddAllTester<E> extends AbstractCollectionTester<E> {
    * figure out what to do with <a href="http://goo.gl/qJBruX">{@code ConcurrentHashMap} support for
    * {@code entrySet().add()}</a>.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddAllUnsupportedSomePresentMethod() {
     return Helpers.getMethod(CollectionAddAllTester.class, "testAddAll_unsupportedSomePresent");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddTester.java
index bed257c..84d6702 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.RESTR
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -41,7 +39,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionAddTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
@@ -112,7 +109,7 @@ public class CollectionAddTester<E> extends AbstractCollectionTester<E> {
    * will be to permit them, as it seems more likely that code would depend on that behavior than on
    * the other. Thus, we say the bug is in add(), which fails to support null.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddNullSupportedMethod() {
     return Helpers.getMethod(CollectionAddTester.class, "testAdd_nullSupported");
   }
@@ -123,7 +120,7 @@ public class CollectionAddTester<E> extends AbstractCollectionTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddNullUnsupportedMethod() {
     return Helpers.getMethod(CollectionAddTester.class, "testAdd_nullUnsupported");
   }
@@ -134,7 +131,7 @@ public class CollectionAddTester<E> extends AbstractCollectionTester<E> {
    * what to do with <a href="http://goo.gl/qJBruX">{@code ConcurrentHashMap} support for {@code
    * entrySet().add()}</a>.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddUnsupportedNotPresentMethod() {
     return Helpers.getMethod(CollectionAddTester.class, "testAdd_unsupportedNotPresent");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionClearTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionClearTester.java
index 9b97fff..59318ab 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionClearTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionClearTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionClearTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsAllTester.java
index 8d03271..fbcedb0 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsAllTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.WrongType;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionContainsAllTester<E> extends AbstractCollectionTester<E> {
   public void testContainsAll_empty() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsTester.java
index 47e0dd6..820ead6 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionContainsTester<E> extends AbstractCollectionTester<E> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionCreationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionCreationTester.java
index 848fdd6..3608471 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionCreationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionCreationTester.java
@@ -19,8 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -35,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionCreationTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(ALLOWS_NULL_VALUES)
@@ -63,7 +60,7 @@ public class CollectionCreationTester<E> extends AbstractCollectionTester<E> {
    * can suppress it with {@code FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getCreateWithNullUnsupportedMethod() {
     return Helpers.getMethod(CollectionCreationTester.class, "testCreateWithNull_unsupported");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionEqualsTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionEqualsTester.java
index e8276cb..733817e 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionEqualsTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionEqualsTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import org.junit.Ignore;
 
@@ -25,7 +24,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionEqualsTester<E> extends AbstractCollectionTester<E> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIsEmptyTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIsEmptyTester.java
index 419e049..676fbe8 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIsEmptyTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIsEmptyTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionIsEmptyTester<E> extends AbstractCollectionTester<E> {
   @CollectionSize.Require(ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIteratorTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIteratorTester.java
index b170497..081ab9f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIteratorTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIteratorTester.java
@@ -25,7 +25,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.IteratorFeature;
@@ -47,7 +46,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionIteratorTester<E> extends AbstractCollectionTester<E> {
   public void testIterator() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveAllTester.java
index 0d59097..34f24ca 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveAllTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.WrongType;
@@ -42,7 +41,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionRemoveAllTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveTester.java
index 49568fc..dfdf840 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -39,7 +38,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionRemoveTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRetainAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRetainAllTester.java
index db7aef1..5f1ca13 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRetainAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRetainAllTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -39,7 +38,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionRetainAllTester<E> extends AbstractCollectionTester<E> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationEqualTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationEqualTester.java
index 38c770d..4ad19f2 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationEqualTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationEqualTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.testing.SerializableTester;
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionSerializationEqualTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SERIALIZABLE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationTester.java
index 18f8c66..c3522bb 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionSerializationTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SERIALIZABLE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSizeTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSizeTester.java
index 64d07a0..b80ea32 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSizeTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSizeTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import org.junit.Ignore;
 
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionSizeTester<E> extends AbstractCollectionTester<E> {
   public void testSize() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToArrayTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToArrayTester.java
index b40fc36..bf641d5 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToArrayTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToArrayTester.java
@@ -19,8 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.KNOWN_ORDER;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.WrongType;
@@ -39,7 +37,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionToArrayTester<E> extends AbstractCollectionTester<E> {
   public void testToArray_noArgs() {
@@ -194,7 +191,7 @@ public class CollectionToArrayTester<E> extends AbstractCollectionTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6260652">Sun bug 6260652</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getToArrayIsPlainObjectArrayMethod() {
     return Helpers.getMethod(CollectionToArrayTester.class, "testToArray_isPlainObjectArray");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToStringTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToStringTester.java
index f138ccf..951de46 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToStringTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToStringTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -36,7 +35,6 @@ import org.junit.Ignore;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionToStringTester<E> extends AbstractCollectionTester<E> {
   public void testToString_minimal() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapPutIfAbsentTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapPutIfAbsentTester.java
index 6cf5be2..8d4c03d 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapPutIfAbsentTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapPutIfAbsentTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -36,7 +35,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ConcurrentMapPutIfAbsentTester<K, V> extends AbstractMapTester<K, V> {
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapRemoveTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapRemoveTester.java
index 87cc319..987d0e1 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapRemoveTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapRemoveTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ConcurrentMapRemoveTester<K, V> extends AbstractMapTester<K, V> {
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceEntryTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceEntryTester.java
index 57f631c..f439102 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceEntryTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceEntryTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ConcurrentMapReplaceEntryTester<K, V> extends AbstractMapTester<K, V> {
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceTester.java
index f0bc164..6ceeab5 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -36,7 +35,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ConcurrentMapReplaceTester<K, V> extends AbstractMapTester<K, V> {
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllAtIndexTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllAtIndexTester.java
index c3e338f..fe17b01 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllAtIndexTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllAtIndexTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_ADD_WITH_INDEX;
 import static java.util.Collections.singletonList;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -37,7 +36,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListAddAllAtIndexTester<E> extends AbstractListTester<E> {
   @ListFeature.Require(SUPPORTS_ADD_WITH_INDEX)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllTester.java
index 1504f1a..91990d7 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListAddAllTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAtIndexTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAtIndexTester.java
index 32310b8..9d93ce9 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAtIndexTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAtIndexTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_ADD_WITH_INDEX;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -40,7 +38,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListAddAtIndexTester<E> extends AbstractListTester<E> {
   @ListFeature.Require(SUPPORTS_ADD_WITH_INDEX)
@@ -154,7 +151,7 @@ public class ListAddAtIndexTester<E> extends AbstractListTester<E> {
    * Returns the {@link Method} instance for {@link #testAddAtIndex_nullSupported()} so that tests
    * can suppress it. See {@link CollectionAddTester#getAddNullSupportedMethod()} for details.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddNullSupportedMethod() {
     return Helpers.getMethod(ListAddAtIndexTester.class, "testAddAtIndex_nullSupported");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddTester.java
index 8559d34..0ef67c4 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListAddTester.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -36,7 +34,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListAddTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
@@ -76,7 +73,7 @@ public class ListAddTester<E> extends AbstractListTester<E> {
    * Returns the {@link Method} instance for {@link #testAdd_supportedNullPresent()} so that tests
    * can suppress it. See {@link CollectionAddTester#getAddNullSupportedMethod()} for details.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddSupportedNullPresentMethod() {
     return Helpers.getMethod(ListAddTester.class, "testAdd_supportedNullPresent");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListCreationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListCreationTester.java
index 9d0b77a..adc70b9 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListCreationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListCreationTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.REJEC
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListCreationTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(absent = REJECTS_DUPLICATES_AT_CREATION)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListEqualsTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListEqualsTester.java
index 3a09586..5af576c 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListEqualsTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListEqualsTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalSet;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListEqualsTester<E> extends AbstractListTester<E> {
   public void testEquals_otherListWithSameElements() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListGetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListGetTester.java
index 2ca16c4..ea23cd8 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListGetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListGetTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import org.junit.Ignore;
 
 /**
@@ -25,7 +24,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListGetTester<E> extends AbstractListTester<E> {
   public void testGet_valid() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListHashCodeTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListHashCodeTester.java
index 93a8526..1319f3a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListHashCodeTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListHashCodeTester.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.reflect.Method;
 import org.junit.Ignore;
@@ -27,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListHashCodeTester<E> extends AbstractListTester<E> {
   public void testHashCode() {
@@ -45,7 +42,7 @@ public class ListHashCodeTester<E> extends AbstractListTester<E> {
    * Returns the {@link Method} instance for {@link #testHashCode()} so that list tests on
    * unhashable objects can suppress it with {@code FeatureSpecificTestSuiteBuilder.suppressing()}.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getHashCodeMethod() {
     return Helpers.getMethod(ListHashCodeTester.class, "testHashCode");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListIndexOfTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListIndexOfTester.java
index 7afb8c8..9f7c470 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListIndexOfTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListIndexOfTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.REJEC
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListIndexOfTester<E> extends AbstractListIndexOfTester<E> {
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListLastIndexOfTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListLastIndexOfTester.java
index 19f7f1e..2430c46 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListLastIndexOfTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListLastIndexOfTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.REJEC
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListLastIndexOfTester<E> extends AbstractListIndexOfTester<E> {
   @Override
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListListIteratorTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListListIteratorTester.java
index 0d4b13e..9960ebd 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListListIteratorTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListListIteratorTester.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_SE
 import static com.google.common.collect.testing.testers.Platform.listListIteratorTesterNumIterations;
 import static java.util.Collections.singleton;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.IteratorFeature;
 import com.google.common.collect.testing.ListIteratorTester;
@@ -45,7 +43,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListListIteratorTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(absent = SUPPORTS_REMOVE)
@@ -111,7 +108,7 @@ public class ListListIteratorTester<E> extends AbstractListTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570575">Sun bug 6570575</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getListIteratorFullyModifiableMethod() {
     return Helpers.getMethod(ListListIteratorTester.class, "testListIterator_fullyModifiable");
   }
@@ -120,7 +117,7 @@ public class ListListIteratorTester<E> extends AbstractListTester<E> {
    * Returns the {@link Method} instance for {@link #testListIterator_unmodifiable()} so that it can
    * be suppressed in GWT tests.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getListIteratorUnmodifiableMethod() {
     return Helpers.getMethod(ListListIteratorTester.class, "testListIterator_unmodifiable");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAllTester.java
index 513134c..78503e5 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAllTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListRemoveAllTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAtIndexTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAtIndexTester.java
index 9714251..bd51122 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAtIndexTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAtIndexTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_REMOVE_WITH_INDEX;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -37,7 +36,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListRemoveAtIndexTester<E> extends AbstractListTester<E> {
   @ListFeature.Require(absent = SUPPORTS_REMOVE_WITH_INDEX)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveTester.java
index 9c2c688..de9fcbd 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListRemoveTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRetainAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRetainAllTester.java
index 96bd3b4..58dcc93 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRetainAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListRetainAllTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListRetainAllTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListSetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListSetTester.java
index 844f1b4..9495cd3 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListSetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListSetTester.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_SET;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -35,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListSetTester<E> extends AbstractListTester<E> {
   @ListFeature.Require(SUPPORTS_SET)
@@ -142,7 +139,7 @@ public class ListSetTester<E> extends AbstractListTester<E> {
    * will be to permit them, as it seems more likely that code would depend on that behavior than on
    * the other. Thus, we say the bug is in set(), which fails to support null.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSetNullSupportedMethod() {
     return Helpers.getMethod(ListSetTester.class, "testSet_null");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListSubListTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListSubListTester.java
index 553b693..12aa66d 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListSubListTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListSubListTester.java
@@ -25,8 +25,6 @@ import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_RE
 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_SET;
 import static java.util.Collections.emptyList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -46,7 +44,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListSubListTester<E> extends AbstractListTester<E> {
   public void testSubList_startNegative() {
@@ -319,7 +316,7 @@ public class ListSubListTester<E> extends AbstractListTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570631">Sun bug 6570631</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSubListOriginalListSetAffectsSubListMethod() {
     return getMethod(ListSubListTester.class, "testSubList_originalListSetAffectsSubList");
   }
@@ -331,7 +328,7 @@ public class ListSubListTester<E> extends AbstractListTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570631">Sun bug 6570631</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSubListOriginalListSetAffectsSubListLargeListMethod() {
     return getMethod(ListSubListTester.class, "testSubList_originalListSetAffectsSubListLargeList");
   }
@@ -343,7 +340,7 @@ public class ListSubListTester<E> extends AbstractListTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570575">Sun bug 6570575</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSubListSubListRemoveAffectsOriginalLargeListMethod() {
     return getMethod(ListSubListTester.class, "testSubList_subListRemoveAffectsOriginalLargeList");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListToArrayTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListToArrayTester.java
index 4c5eb09..c0193bf 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/ListToArrayTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/ListToArrayTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.Arrays;
 import org.junit.Ignore;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListToArrayTester<E> extends AbstractListTester<E> {
   // CollectionToArrayTester tests everything except ordering.
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapClearTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapClearTester.java
index 64f5127..6fb2d48 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapClearTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapClearTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.FAILS_FAST_ON_CONCURRENT_MODIFICATION;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -37,7 +36,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapClearTester<K, V> extends AbstractMapTester<K, V> {
   @MapFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsKeyTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsKeyTester.java
index 3721db1..f83877c 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsKeyTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsKeyTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapContainsKeyTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsValueTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsValueTester.java
index 044562a..c7f3f5e 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsValueTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsValueTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapContainsValueTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapCreationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapCreationTester.java
index 0810dea..2394c1e 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapCreationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapCreationTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.REJECTS_DUPLICATES_AT_CREATION;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -42,7 +40,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapCreationTester<K, V> extends AbstractMapTester<K, V> {
   @MapFeature.Require(ALLOWS_NULL_KEYS)
@@ -147,7 +144,7 @@ public class MapCreationTester<K, V> extends AbstractMapTester<K, V> {
    * tests can suppress it with {@code FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getCreateWithNullKeyUnsupportedMethod() {
     return Helpers.getMethod(MapCreationTester.class, "testCreateWithNullKeyUnsupported");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapEntrySetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapEntrySetTester.java
index 537f091..232538b 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapEntrySetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapEntrySetTester.java
@@ -25,8 +25,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -45,7 +43,6 @@ import org.junit.Ignore;
  * @param <K> The key type of the map implementation under test.
  * @param <V> The value type of the map implementation under test.
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapEntrySetTester<K, V> extends AbstractMapTester<K, V> {
   private enum IncomparableType {
@@ -141,27 +138,27 @@ public class MapEntrySetTester<K, V> extends AbstractMapTester<K, V> {
     expectUnchanged();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getContainsEntryWithIncomparableKeyMethod() {
     return Helpers.getMethod(MapEntrySetTester.class, "testContainsEntryWithIncomparableKey");
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getContainsEntryWithIncomparableValueMethod() {
     return Helpers.getMethod(MapEntrySetTester.class, "testContainsEntryWithIncomparableValue");
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSetValueMethod() {
     return Helpers.getMethod(MapEntrySetTester.class, "testSetValue");
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSetValueWithNullValuesPresentMethod() {
     return Helpers.getMethod(MapEntrySetTester.class, "testSetValueWithNullValuesPresent");
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSetValueWithNullValuesAbsentMethod() {
     return Helpers.getMethod(MapEntrySetTester.class, "testSetValueWithNullValuesAbsent");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapEqualsTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapEqualsTester.java
index 2408ad4..71b06db 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapEqualsTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapEqualsTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -36,7 +35,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapEqualsTester<K, V> extends AbstractMapTester<K, V> {
   public void testEquals_otherMapWithSameEntries() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapGetTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapGetTester.java
index 89610f2..a36cd3d 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapGetTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapGetTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapGetTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapHashCodeTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapHashCodeTester.java
index 97ad5c4..925fc85 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapHashCodeTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapHashCodeTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapHashCodeTester<K, V> extends AbstractMapTester<K, V> {
   public void testHashCode() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapIsEmptyTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapIsEmptyTester.java
index 548ebe5..89e186a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapIsEmptyTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapIsEmptyTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapIsEmptyTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionSize.Require(ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapPutAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapPutAllTester.java
index 21d89d8..c0b0617 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapPutAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapPutAllTester.java
@@ -23,8 +23,6 @@ import static com.google.common.collect.testing.features.MapFeature.FAILS_FAST_O
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static java.util.Collections.singletonList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.MinimalCollection;
@@ -48,7 +46,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapPutAllTester<K, V> extends AbstractMapTester<K, V> {
   private List<Entry<K, V>> containsNullKey;
@@ -196,7 +193,7 @@ public class MapPutAllTester<K, V> extends AbstractMapTester<K, V> {
    * can suppress it with {@code FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getPutAllNullKeyUnsupportedMethod() {
     return Helpers.getMethod(MapPutAllTester.class, "testPutAll_nullKeyUnsupported");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapPutTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapPutTester.java
index c9a745d..e435b6a 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapPutTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapPutTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.FAILS_FAST_ON_CONCURRENT_MODIFICATION;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -42,7 +40,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapPutTester<K, V> extends AbstractMapTester<K, V> {
   private Entry<K, V> nullKeyEntry;
@@ -255,7 +252,7 @@ public class MapPutTester<K, V> extends AbstractMapTester<K, V> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getPutNullKeyUnsupportedMethod() {
     return Helpers.getMethod(MapPutTester.class, "testPut_nullKeyUnsupported");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveTester.java
index 00c074e..e854cbb 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.FAILS_FAST_ON_CONCURRENT_MODIFICATION;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapRemoveTester<K, V> extends AbstractMapTester<K, V> {
   @MapFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapSerializationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapSerializationTester.java
index dfa0a1e..8f5a346 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapSerializationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapSerializationTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.testing.EqualsTester;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapSerializationTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionFeature.Require(SERIALIZABLE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapSizeTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapSizeTester.java
index b35d64a..c33e654 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapSizeTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapSizeTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import org.junit.Ignore;
 
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapSizeTester<K, V> extends AbstractMapTester<K, V> {
   public void testSize() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapToStringTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapToStringTester.java
index 429f8f4..b5d6c24 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/MapToStringTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/MapToStringTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapToStringTester<K, V> extends AbstractMapTester<K, V> {
   public void testToString_minimal() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/NavigableMapNavigationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/NavigableMapNavigationTester.java
index ebb86b6..5579a09 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/NavigableMapNavigationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/NavigableMapNavigationTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -40,7 +39,6 @@ import org.junit.Ignore;
  * @author Jesse Wilson
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class NavigableMapNavigationTester<K, V> extends AbstractMapTester<K, V> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/NavigableSetNavigationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/NavigableSetNavigationTester.java
index 3901616..abe32b4 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/NavigableSetNavigationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/NavigableSetNavigationTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  * @author Jesse Wilson
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class NavigableSetNavigationTester<E> extends AbstractSetTester<E> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/Platform.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/Platform.java
index aed6e76..0be9dd5 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/Platform.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/Platform.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Locale;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Locale;
  *
  * @author Hayward Chan
  */
-@GwtCompatible
 final class Platform {
 
   /** Format the template with args, only supports the placeholder {@code %s}. */
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueElementTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueElementTester.java
index 3275e43..8f29e6f 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueElementTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueElementTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.NoSuchElementException;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class QueueElementTester<E> extends AbstractQueueTester<E> {
   @CollectionSize.Require(ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueOfferTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueOfferTester.java
index 3b17289..67f0d91 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueOfferTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueOfferTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import org.junit.Ignore;
 
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  * @author Jared Levy
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class QueueOfferTester<E> extends AbstractQueueTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/QueuePeekTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/QueuePeekTester.java
index 641f171..c0f4364 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/QueuePeekTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/QueuePeekTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class QueuePeekTester<E> extends AbstractQueueTester<E> {
   @CollectionSize.Require(ZERO)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/QueuePollTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/QueuePollTester.java
index 544b14a..7c5b6b8 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/QueuePollTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/QueuePollTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  * @author Jared Levy
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class QueuePollTester<E> extends AbstractQueueTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueRemoveTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueRemoveTester.java
index 2b02cea..ddfe494 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueRemoveTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/QueueRemoveTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.NoSuchElementException;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  * @author Jared Levy
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class QueueRemoveTester<E> extends AbstractQueueTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetAddAllTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetAddAllTester.java
index 8e917cd..04bdc18 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetAddAllTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetAddAllTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetAddAllTester<E> extends AbstractSetTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetAddTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetAddTester.java
index 1974968..44e6604 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetAddTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetAddTester.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -34,7 +32,6 @@ import org.junit.Ignore;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetAddTester<E> extends AbstractSetTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
@@ -57,7 +54,7 @@ public class SetAddTester<E> extends AbstractSetTester<E> {
    * Returns the {@link Method} instance for {@link #testAdd_supportedNullPresent()} so that tests
    * can suppress it. See {@link CollectionAddTester#getAddNullSupportedMethod()} for details.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddSupportedNullPresentMethod() {
     return Helpers.getMethod(SetAddTester.class, "testAdd_supportedNullPresent");
   }
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetCreationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetCreationTester.java
index 0c1be6b..8b5cb72 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetCreationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetCreationTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.REJEC
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.Arrays;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetCreationTester<E> extends AbstractSetTester<E> {
   @CollectionFeature.Require(value = ALLOWS_NULL_VALUES, absent = REJECTS_DUPLICATES_AT_CREATION)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetEqualsTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetEqualsTester.java
index 839e173..903f1cf 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetEqualsTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetEqualsTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.MinimalSet;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetEqualsTester<E> extends AbstractSetTester<E> {
   public void testEquals_otherSetWithSameElements() {
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetHashCodeTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetHashCodeTester.java
index 5f60327..4920758 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetHashCodeTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetHashCodeTester.java
@@ -18,8 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetHashCodeTester<E> extends AbstractSetTester<E> {
   public void testHashCode() {
@@ -69,7 +66,7 @@ public class SetHashCodeTester<E> extends AbstractSetTester<E> {
    * hashCode()} on the set values so that set tests on unhashable objects can suppress it with
    * {@code FeatureSpecificTestSuiteBuilder.suppressing()}.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method[] getHashCodeMethods() {
     return new Method[] {
       Helpers.getMethod(SetHashCodeTester.class, "testHashCode"),
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetRemoveTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetRemoveTester.java
index 7f1f88d..32ab4d3 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/SetRemoveTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/SetRemoveTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_REMOVE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetRemoveTester<E> extends AbstractSetTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/SortedMapNavigationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/SortedMapNavigationTester.java
index 691fee1..375b2d5 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/SortedMapNavigationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/SortedMapNavigationTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  * @author Jesse Wilson
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SortedMapNavigationTester<K, V> extends AbstractMapTester<K, V> {
 
diff --git a/android/guava-testlib/src/com/google/common/collect/testing/testers/SortedSetNavigationTester.java b/android/guava-testlib/src/com/google/common/collect/testing/testers/SortedSetNavigationTester.java
index bf5ac22..1666027 100644
--- a/android/guava-testlib/src/com/google/common/collect/testing/testers/SortedSetNavigationTester.java
+++ b/android/guava-testlib/src/com/google/common/collect/testing/testers/SortedSetNavigationTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.Collections;
@@ -36,7 +35,6 @@ import org.junit.Ignore;
  * @author Jesse Wilson
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SortedSetNavigationTester<E> extends AbstractSetTester<E> {
 
diff --git a/android/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java b/android/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java
index 3920afe..e1de546 100644
--- a/android/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java
+++ b/android/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java
@@ -18,8 +18,6 @@ package com.google.common.escape.testing;
 
 import static com.google.common.escape.Escapers.computeReplacement;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.CharEscaper;
 import com.google.common.escape.Escaper;
 import com.google.common.escape.UnicodeEscaper;
@@ -32,8 +30,6 @@ import junit.framework.Assert;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 public final class EscaperAsserts {
   private EscaperAsserts() {}
 
diff --git a/android/guava-testlib/src/com/google/common/escape/testing/package-info.java b/android/guava-testlib/src/com/google/common/escape/testing/package-info.java
index 8698847..f6963ab 100644
--- a/android/guava-testlib/src/com/google/common/escape/testing/package-info.java
+++ b/android/guava-testlib/src/com/google/common/escape/testing/package-info.java
@@ -20,7 +20,5 @@
  * <p>This package is a part of the open-source <a href="http://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 package com.google.common.escape.testing;
 
-import com.google.errorprone.annotations.CheckReturnValue;
diff --git a/android/guava-testlib/src/com/google/common/testing/AbstractPackageSanityTests.java b/android/guava-testlib/src/com/google/common/testing/AbstractPackageSanityTests.java
index 962b15f..169bf13 100644
--- a/android/guava-testlib/src/com/google/common/testing/AbstractPackageSanityTests.java
+++ b/android/guava-testlib/src/com/google/common/testing/AbstractPackageSanityTests.java
@@ -20,13 +20,9 @@ import static com.google.common.base.Predicates.and;
 import static com.google.common.base.Predicates.not;
 import static com.google.common.testing.AbstractPackageSanityTests.Chopper.suffix;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.collect.HashMultimap;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -34,7 +30,6 @@ import com.google.common.collect.Multimap;
 import com.google.common.collect.Sets;
 import com.google.common.reflect.ClassPath;
 import com.google.common.testing.NullPointerTester.Visibility;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
 import java.io.IOException;
 import java.io.Serializable;
 import java.util.LinkedHashSet;
@@ -101,11 +96,9 @@ import org.junit.Test;
  * @author Ben Yu
  * @since 14.0
  */
-@Beta
 // TODO: Switch to JUnit 4 and use @Parameterized and @BeforeClass
 // Note: @Test annotations are deliberate, as some subclasses specify @RunWith(JUnit4).
-@GwtIncompatible
-@J2ObjCIncompatible // com.google.common.reflect.ClassPath
+// com.google.common.reflect.ClassPath
 public abstract class AbstractPackageSanityTests extends TestCase {
 
   /**
@@ -337,7 +330,6 @@ public abstract class AbstractPackageSanityTests extends TestCase {
    * Finds the classes not ending with a test suffix and not covered by an explicit test whose name
    * is {@code explicitTestName}.
    */
-  @VisibleForTesting
   List<Class<?>> findClassesToTest(
       Iterable<? extends Class<?>> classes, Iterable<String> explicitTestNames) {
     // "a.b.Foo" -> a.b.Foo.class
diff --git a/android/guava-testlib/src/com/google/common/testing/ArbitraryInstances.java b/android/guava-testlib/src/com/google/common/testing/ArbitraryInstances.java
index 01904d6..cf45107 100644
--- a/android/guava-testlib/src/com/google/common/testing/ArbitraryInstances.java
+++ b/android/guava-testlib/src/com/google/common/testing/ArbitraryInstances.java
@@ -18,8 +18,6 @@ package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Charsets;
 import com.google.common.base.Defaults;
@@ -32,20 +30,6 @@ import com.google.common.base.Stopwatch;
 import com.google.common.base.Ticker;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.ClassToInstanceMap;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableClassToInstanceMap;
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
-import com.google.common.collect.ImmutableSortedMap;
-import com.google.common.collect.ImmutableSortedMultiset;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.MapDifference;
@@ -142,7 +126,6 @@ import java.util.logging.Logger;
 import java.util.regex.MatchResult;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Supplies an arbitrary "default" instance for a wide range of types, often useful in testing
@@ -166,8 +149,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  * @author Ben Yu
  * @since 12.0
  */
-@Beta
-@GwtIncompatible
 public final class ArbitraryInstances {
 
   private static final Ordering<Field> BY_FIELD_NAME =
@@ -327,7 +308,6 @@ public final class ArbitraryInstances {
   }
 
   @SuppressWarnings("unchecked") // it's a subtype map
-  @NullableDecl
   private static <T> Class<? extends T> getImplementation(Class<T> type) {
     return (Class<? extends T>) implementations.get(type);
   }
@@ -338,7 +318,6 @@ public final class ArbitraryInstances {
    * Returns an arbitrary instance for {@code type}, or {@code null} if no arbitrary instance can be
    * determined.
    */
-  @NullableDecl
   public static <T> T get(Class<T> type) {
     T defaultValue = DEFAULTS.getInstance(type);
     if (defaultValue != null) {
@@ -386,7 +365,6 @@ public final class ArbitraryInstances {
     }
   }
 
-  @NullableDecl
   private static <T> T arbitraryConstantInstanceOrNull(Class<T> type) {
     Field[] fields = type.getDeclaredFields();
     Arrays.sort(fields, BY_FIELD_NAME);
diff --git a/android/guava-testlib/src/com/google/common/testing/ClassSanityTester.java b/android/guava-testlib/src/com/google/common/testing/ClassSanityTester.java
index 55f167e..5bbf90b 100644
--- a/android/guava-testlib/src/com/google/common/testing/ClassSanityTester.java
+++ b/android/guava-testlib/src/com/google/common/testing/ClassSanityTester.java
@@ -19,15 +19,10 @@ package com.google.common.testing;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.throwIfUnchecked;
-import static com.google.common.testing.NullPointerTester.isNullable;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Joiner;
 import com.google.common.base.Objects;
 import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.MutableClassToInstanceMap;
@@ -52,7 +47,6 @@ import java.util.Map.Entry;
 import java.util.Set;
 import junit.framework.Assert;
 import junit.framework.AssertionFailedError;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Tester that runs automated sanity tests for any given class. A typical use case is to test static
@@ -78,8 +72,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  * @author Ben Yu
  * @since 14.0
  */
-@Beta
-@GwtIncompatible
 public final class ClassSanityTester {
 
   private static final Ordering<Invokable<?, ?>> BY_METHOD_NAME =
@@ -334,7 +326,6 @@ public final class ClassSanityTester {
    * @return The instantiated instance, or {@code null} if the class has no non-private constructor
    *     or factory method to be constructed.
    */
-  @NullableDecl
   <T> T instantiate(Class<T> cls)
       throws ParameterNotInstantiableException, IllegalAccessException, InvocationTargetException,
           FactoryMethodReturnsNullException {
@@ -383,7 +374,6 @@ public final class ClassSanityTester {
    *     class, preventing its methods from being accessible.
    * @throws InvocationTargetException if a static method threw exception.
    */
-  @NullableDecl
   private <T> T instantiate(Invokable<?, ? extends T> factory)
       throws ParameterNotInstantiableException, InvocationTargetException, IllegalAccessException {
     return invoke(factory, getDummyArguments(factory));
@@ -664,7 +654,6 @@ public final class ClassSanityTester {
     return generator;
   }
 
-  @NullableDecl
   private static Object generateDummyArg(Parameter param, FreshValueGenerator generator)
       throws ParameterNotInstantiableException {
     if (isNullable(param)) {
@@ -761,7 +750,6 @@ public final class ClassSanityTester {
     return instance;
   }
 
-  @NullableDecl
   private static <T> T invoke(Invokable<?, ? extends T> factory, List<?> args)
       throws InvocationTargetException, IllegalAccessException {
     T returnValue = factory.invoke(null, args.toArray());
@@ -776,7 +764,6 @@ public final class ClassSanityTester {
    * Thrown if the test tries to invoke a constructor or static factory method but failed because
    * the dummy value of a constructor or method parameter is unknown.
    */
-  @VisibleForTesting
   static class ParameterNotInstantiableException extends Exception {
     public ParameterNotInstantiableException(Parameter parameter) {
       super(
@@ -792,7 +779,6 @@ public final class ClassSanityTester {
    * parameter in order to test {@link Object#equals} and {@link Object#hashCode} of the declaring
    * class.
    */
-  @VisibleForTesting
   static class ParameterHasNoDistinctValueException extends Exception {
     ParameterHasNoDistinctValueException(Parameter parameter) {
       super(
@@ -807,7 +793,6 @@ public final class ClassSanityTester {
    * Thrown if the test tries to invoke a static factory method to test instance methods but the
    * factory returned null.
    */
-  @VisibleForTesting
   static class FactoryMethodReturnsNullException extends Exception {
     public FactoryMethodReturnsNullException(Invokable<?, ?> factory) {
       super(factory + " returns null and cannot be used to test instance methods.");
diff --git a/android/guava-testlib/src/com/google/common/testing/ClusterException.java b/android/guava-testlib/src/com/google/common/testing/ClusterException.java
index 7665ab1..7c6e601 100644
--- a/android/guava-testlib/src/com/google/common/testing/ClusterException.java
+++ b/android/guava-testlib/src/com/google/common/testing/ClusterException.java
@@ -16,7 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -58,7 +57,6 @@ import java.util.Collections;
  *
  * @author Luiz-Otavio Zorzella
  */
-@GwtCompatible
 final class ClusterException extends RuntimeException {
 
   public final Collection<? extends Throwable> exceptions;
diff --git a/android/guava-testlib/src/com/google/common/testing/DummyProxy.java b/android/guava-testlib/src/com/google/common/testing/DummyProxy.java
index 85e229d..3c2ba4c 100644
--- a/android/guava-testlib/src/com/google/common/testing/DummyProxy.java
+++ b/android/guava-testlib/src/com/google/common/testing/DummyProxy.java
@@ -17,10 +17,7 @@
 package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.testing.NullPointerTester.isNullable;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Sets;
 import com.google.common.reflect.AbstractInvocationHandler;
 import com.google.common.reflect.Invokable;
@@ -36,7 +33,6 @@ import java.util.Set;
  *
  * @author Ben Yu
  */
-@GwtIncompatible
 abstract class DummyProxy {
 
   /**
diff --git a/android/guava-testlib/src/com/google/common/testing/EqualsTester.java b/android/guava-testlib/src/com/google/common/testing/EqualsTester.java
index 2c8e08b..acc03bc 100644
--- a/android/guava-testlib/src/com/google/common/testing/EqualsTester.java
+++ b/android/guava-testlib/src/com/google/common/testing/EqualsTester.java
@@ -20,10 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertTrue;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Equivalence;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import java.util.List;
@@ -74,8 +71,6 @@ import java.util.List;
  * @author Jige Yu
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public final class EqualsTester {
   private static final int REPETITIONS = 3;
 
diff --git a/android/guava-testlib/src/com/google/common/testing/EquivalenceTester.java b/android/guava-testlib/src/com/google/common/testing/EquivalenceTester.java
index ce1dc98..17aeea6 100644
--- a/android/guava-testlib/src/com/google/common/testing/EquivalenceTester.java
+++ b/android/guava-testlib/src/com/google/common/testing/EquivalenceTester.java
@@ -20,10 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertTrue;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Equivalence;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.testing.RelationshipTester.ItemReporter;
 import java.util.List;
@@ -49,8 +46,6 @@ import java.util.List;
  * @author Gregory Kick
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public final class EquivalenceTester<T> {
   private static final int REPETITIONS = 3;
 
diff --git a/android/guava-testlib/src/com/google/common/testing/FakeTicker.java b/android/guava-testlib/src/com/google/common/testing/FakeTicker.java
index 698db6a..e6da629 100644
--- a/android/guava-testlib/src/com/google/common/testing/FakeTicker.java
+++ b/android/guava-testlib/src/com/google/common/testing/FakeTicker.java
@@ -18,8 +18,6 @@ package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Ticker;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
@@ -35,8 +33,6 @@ import java.util.concurrent.atomic.AtomicLong;
  * @author Jige Yu
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public class FakeTicker extends Ticker {
 
   private final AtomicLong nanos = new AtomicLong();
diff --git a/android/guava-testlib/src/com/google/common/testing/ForwardingWrapperTester.java b/android/guava-testlib/src/com/google/common/testing/ForwardingWrapperTester.java
index 4ee461e..747cef9 100644
--- a/android/guava-testlib/src/com/google/common/testing/ForwardingWrapperTester.java
+++ b/android/guava-testlib/src/com/google/common/testing/ForwardingWrapperTester.java
@@ -22,8 +22,6 @@ import static com.google.common.base.Throwables.throwIfUnchecked;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.fail;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Throwables;
 import com.google.common.collect.Lists;
@@ -53,8 +51,6 @@ import java.util.concurrent.atomic.AtomicInteger;
  * @author Ben Yu
  * @since 14.0
  */
-@Beta
-@GwtIncompatible
 public final class ForwardingWrapperTester {
 
   private boolean testsEquals = false;
diff --git a/android/guava-testlib/src/com/google/common/testing/FreshValueGenerator.java b/android/guava-testlib/src/com/google/common/testing/FreshValueGenerator.java
index 9110490..e5432a7 100644
--- a/android/guava-testlib/src/com/google/common/testing/FreshValueGenerator.java
+++ b/android/guava-testlib/src/com/google/common/testing/FreshValueGenerator.java
@@ -19,7 +19,6 @@ package com.google.common.testing;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.throwIfUnchecked;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Charsets;
 import com.google.common.base.Equivalence;
@@ -32,19 +31,6 @@ import com.google.common.collect.HashBasedTable;
 import com.google.common.collect.HashBiMap;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.HashMultiset;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
-import com.google.common.collect.ImmutableSortedMap;
-import com.google.common.collect.ImmutableSortedMultiset;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.LinkedHashMultimap;
 import com.google.common.collect.LinkedHashMultiset;
@@ -118,14 +104,12 @@ import java.util.TreeSet;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.regex.Pattern;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Generates fresh instances of types that are different from each other (if possible).
  *
  * @author Ben Yu
  */
-@GwtIncompatible
 class FreshValueGenerator {
 
   private static final ImmutableMap<Class<?>, Method> GENERATORS;
@@ -175,7 +159,6 @@ class FreshValueGenerator {
    *   <li>null if no value can be generated.
    * </ul>
    */
-  @NullableDecl
   final Object generateFresh(TypeToken<?> type) {
     Object generated = generate(type);
     if (generated != null) {
@@ -184,7 +167,6 @@ class FreshValueGenerator {
     return generated;
   }
 
-  @NullableDecl
   final <T> T generateFresh(Class<T> type) {
     return Primitives.wrap(type).cast(generateFresh(TypeToken.of(type)));
   }
diff --git a/android/guava-testlib/src/com/google/common/testing/GcFinalization.java b/android/guava-testlib/src/com/google/common/testing/GcFinalization.java
index 015afea..f2e4950 100644
--- a/android/guava-testlib/src/com/google/common/testing/GcFinalization.java
+++ b/android/guava-testlib/src/com/google/common/testing/GcFinalization.java
@@ -18,11 +18,6 @@ package com.google.common.testing;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotMock;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
-import java.lang.ref.WeakReference;
 import java.util.Locale;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.CountDownLatch;
@@ -103,9 +98,7 @@ import java.util.concurrent.TimeoutException;
  * @author Martin Buchholz
  * @since 11.0
  */
-@Beta
-@GwtIncompatible
-@J2ObjCIncompatible // gc
+// gc
 public final class GcFinalization {
   private GcFinalization() {}
 
@@ -242,7 +235,6 @@ public final class GcFinalization {
    *   <li>enqueuing weak references to unreachable referents in their reference queue
    * </ul>
    */
-  @DoNotMock("Implement with a lambda")
   public interface FinalizationPredicate {
     boolean isDone();
   }
diff --git a/android/guava-testlib/src/com/google/common/testing/NullPointerTester.java b/android/guava-testlib/src/com/google/common/testing/NullPointerTester.java
index e32a950..384a1cd 100644
--- a/android/guava-testlib/src/com/google/common/testing/NullPointerTester.java
+++ b/android/guava-testlib/src/com/google/common/testing/NullPointerTester.java
@@ -19,13 +19,9 @@ package com.google.common.testing;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.base.Objects;
 import com.google.common.collect.ClassToInstanceMap;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.MutableClassToInstanceMap;
@@ -47,7 +43,6 @@ import java.util.List;
 import java.util.concurrent.ConcurrentMap;
 import junit.framework.Assert;
 import junit.framework.AssertionFailedError;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * A test utility that verifies that your methods and constructors throw {@link
@@ -66,8 +61,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@Beta
-@GwtIncompatible
 public final class NullPointerTester {
 
   private final ClassToInstanceMap<Object> defaults = MutableClassToInstanceMap.create();
diff --git a/android/guava-testlib/src/com/google/common/testing/Platform.java b/android/guava-testlib/src/com/google/common/testing/Platform.java
index b107966..fa4ccdb 100644
--- a/android/guava-testlib/src/com/google/common/testing/Platform.java
+++ b/android/guava-testlib/src/com/google/common/testing/Platform.java
@@ -18,7 +18,6 @@ package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -30,7 +29,6 @@ import java.io.ObjectOutputStream;
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 final class Platform {
   /** Serializes and deserializes the specified object. */
   @SuppressWarnings("unchecked")
diff --git a/android/guava-testlib/src/com/google/common/testing/RelationshipTester.java b/android/guava-testlib/src/com/google/common/testing/RelationshipTester.java
index 5adf010..04bd05f 100644
--- a/android/guava-testlib/src/com/google/common/testing/RelationshipTester.java
+++ b/android/guava-testlib/src/com/google/common/testing/RelationshipTester.java
@@ -18,9 +18,7 @@ package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Equivalence;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import java.util.List;
 import junit.framework.AssertionFailedError;
@@ -31,7 +29,6 @@ import junit.framework.AssertionFailedError;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 final class RelationshipTester<T> {
 
   static class ItemReporter {
diff --git a/android/guava-testlib/src/com/google/common/testing/SerializableTester.java b/android/guava-testlib/src/com/google/common/testing/SerializableTester.java
index 6298076..55b4533 100644
--- a/android/guava-testlib/src/com/google/common/testing/SerializableTester.java
+++ b/android/guava-testlib/src/com/google/common/testing/SerializableTester.java
@@ -16,8 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.Assert;
 import junit.framework.AssertionFailedError;
 
@@ -32,8 +30,7 @@ import junit.framework.AssertionFailedError;
  * @author Mike Bostock
  * @since 10.0
  */
-@Beta
-@GwtCompatible // but no-op!
+// but no-op!
 public final class SerializableTester {
   private SerializableTester() {}
 
diff --git a/android/guava-testlib/src/com/google/common/testing/SloppyTearDown.java b/android/guava-testlib/src/com/google/common/testing/SloppyTearDown.java
index 95ff34e..abba185 100644
--- a/android/guava-testlib/src/com/google/common/testing/SloppyTearDown.java
+++ b/android/guava-testlib/src/com/google/common/testing/SloppyTearDown.java
@@ -16,8 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -30,8 +28,6 @@ import java.util.logging.Logger;
  * @author Luiz-Otavio Zorzella
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public abstract class SloppyTearDown implements TearDown {
   private static final Logger logger = Logger.getLogger(SloppyTearDown.class.getName());
 
diff --git a/android/guava-testlib/src/com/google/common/testing/TearDown.java b/android/guava-testlib/src/com/google/common/testing/TearDown.java
index 5048534..ccbd0b3 100644
--- a/android/guava-testlib/src/com/google/common/testing/TearDown.java
+++ b/android/guava-testlib/src/com/google/common/testing/TearDown.java
@@ -16,8 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * An object that can perform a {@link #tearDown} operation.
@@ -25,8 +23,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public interface TearDown {
   /**
    * Performs a <b>single</b> tear-down operation. See test-libraries-for-java's {@code
diff --git a/android/guava-testlib/src/com/google/common/testing/TearDownAccepter.java b/android/guava-testlib/src/com/google/common/testing/TearDownAccepter.java
index bad1f19..96d2183 100644
--- a/android/guava-testlib/src/com/google/common/testing/TearDownAccepter.java
+++ b/android/guava-testlib/src/com/google/common/testing/TearDownAccepter.java
@@ -16,9 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Any object which can accept registrations of {@link TearDown} instances.
@@ -26,9 +23,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@Beta
-@DoNotMock("Implement with a lambda")
-@GwtCompatible
 public interface TearDownAccepter {
   /**
    * Registers a TearDown implementor which will be run after the test proper.
diff --git a/android/guava-testlib/src/com/google/common/testing/TearDownStack.java b/android/guava-testlib/src/com/google/common/testing/TearDownStack.java
index bab025a..0596404 100644
--- a/android/guava-testlib/src/com/google/common/testing/TearDownStack.java
+++ b/android/guava-testlib/src/com/google/common/testing/TearDownStack.java
@@ -18,10 +18,7 @@ package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Lists;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
@@ -36,12 +33,9 @@ import java.util.logging.Logger;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public class TearDownStack implements TearDownAccepter {
   private static final Logger logger = Logger.getLogger(TearDownStack.class.getName());
 
-  @GuardedBy("stack")
   final LinkedList<TearDown> stack = new LinkedList<>();
 
   private final boolean suppressThrows;
diff --git a/android/guava-testlib/src/com/google/common/testing/TestLogHandler.java b/android/guava-testlib/src/com/google/common/testing/TestLogHandler.java
index c03093b..22e2836 100644
--- a/android/guava-testlib/src/com/google/common/testing/TestLogHandler.java
+++ b/android/guava-testlib/src/com/google/common/testing/TestLogHandler.java
@@ -16,14 +16,11 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.logging.Handler;
 import java.util.logging.LogRecord;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Tests may use this to intercept messages that are logged by the code under test. Example:
@@ -52,8 +49,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public class TestLogHandler extends Handler {
   /** We will keep a private list of all logged records */
   private final List<LogRecord> list = new ArrayList<>();
diff --git a/android/guava-testlib/src/com/google/common/util/concurrent/testing/AbstractListenableFutureTest.java b/android/guava-testlib/src/com/google/common/util/concurrent/testing/AbstractListenableFutureTest.java
index 2ba7515..c438306 100644
--- a/android/guava-testlib/src/com/google/common/util/concurrent/testing/AbstractListenableFutureTest.java
+++ b/android/guava-testlib/src/com/google/common/util/concurrent/testing/AbstractListenableFutureTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.util.concurrent.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.CountDownLatch;
@@ -36,8 +34,6 @@ import junit.framework.TestCase;
  * @author Sven Mawson
  * @since 10.0
  */
-@Beta
-@GwtIncompatible
 public abstract class AbstractListenableFutureTest extends TestCase {
 
   protected CountDownLatch latch;
diff --git a/android/guava-testlib/src/com/google/common/util/concurrent/testing/MockFutureListener.java b/android/guava-testlib/src/com/google/common/util/concurrent/testing/MockFutureListener.java
index fc3ed21..987fd65 100644
--- a/android/guava-testlib/src/com/google/common/util/concurrent/testing/MockFutureListener.java
+++ b/android/guava-testlib/src/com/google/common/util/concurrent/testing/MockFutureListener.java
@@ -18,8 +18,6 @@ package com.google.common.util.concurrent.testing;
 
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
@@ -32,8 +30,6 @@ import junit.framework.Assert;
  * @author Nishant Thakkar
  * @since 10.0
  */
-@Beta
-@GwtIncompatible
 public class MockFutureListener implements Runnable {
   private final CountDownLatch countDownLatch;
   private final ListenableFuture<?> future;
diff --git a/android/guava-testlib/src/com/google/common/util/concurrent/testing/SameThreadScheduledExecutorService.java b/android/guava-testlib/src/com/google/common/util/concurrent/testing/SameThreadScheduledExecutorService.java
index c232218..b2595bd 100644
--- a/android/guava-testlib/src/com/google/common/util/concurrent/testing/SameThreadScheduledExecutorService.java
+++ b/android/guava-testlib/src/com/google/common/util/concurrent/testing/SameThreadScheduledExecutorService.java
@@ -18,7 +18,6 @@ package com.google.common.util.concurrent.testing;
 
 import static com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -43,7 +42,6 @@ import java.util.concurrent.TimeoutException;
  * @author John Sirois
  * @author Zach van Schouwen
  */
-@GwtIncompatible
 class SameThreadScheduledExecutorService extends AbstractExecutorService
     implements ListeningScheduledExecutorService {
 
diff --git a/android/guava-testlib/src/com/google/common/util/concurrent/testing/TestingExecutors.java b/android/guava-testlib/src/com/google/common/util/concurrent/testing/TestingExecutors.java
index 4212430..b8a6dc9 100644
--- a/android/guava-testlib/src/com/google/common/util/concurrent/testing/TestingExecutors.java
+++ b/android/guava-testlib/src/com/google/common/util/concurrent/testing/TestingExecutors.java
@@ -16,9 +16,6 @@
 
 package com.google.common.util.concurrent.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.primitives.Longs;
 import com.google.common.util.concurrent.AbstractFuture;
 import com.google.common.util.concurrent.AbstractListeningExecutorService;
@@ -37,8 +34,6 @@ import java.util.concurrent.TimeUnit;
  * @author Chris Nokleberg
  * @since 14.0
  */
-@Beta
-@GwtIncompatible
 public final class TestingExecutors {
   private TestingExecutors() {}
 
diff --git a/android/guava-testlib/test/com/google/common/collect/testing/HelpersTest.java b/android/guava-testlib/test/com/google/common/collect/testing/HelpersTest.java
index 41f4bfb..366d4fd 100644
--- a/android/guava-testlib/test/com/google/common/collect/testing/HelpersTest.java
+++ b/android/guava-testlib/test/com/google/common/collect/testing/HelpersTest.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static com.google.common.collect.testing.Helpers.NullsBeforeB;
 import static com.google.common.collect.testing.Helpers.testComparator;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -35,7 +34,6 @@ import junit.framework.TestCase;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 public class HelpersTest extends TestCase {
   public void testNullsBeforeB() {
     testComparator(NullsBeforeB.INSTANCE, "a", "azzzzzz", null, "b", "c");
diff --git a/android/guava-testlib/test/com/google/common/collect/testing/IteratorTesterTest.java b/android/guava-testlib/test/com/google/common/collect/testing/IteratorTesterTest.java
index 283f51e..1619ad5 100644
--- a/android/guava-testlib/test/com/google/common/collect/testing/IteratorTesterTest.java
+++ b/android/guava-testlib/test/com/google/common/collect/testing/IteratorTesterTest.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.testing.IteratorFeature.MODIFIABLE;
 import static java.util.Collections.emptyList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import java.util.Iterator;
 import java.util.List;
@@ -34,7 +32,6 @@ import junit.framework.TestCase;
  *
  * @author Mick Killianey
  */
-@GwtCompatible
 @SuppressWarnings("serial") // No serialization is used in this test
 public class IteratorTesterTest extends TestCase {
 
diff --git a/android/guava-testlib/test/com/google/common/collect/testing/MinimalIterableTest.java b/android/guava-testlib/test/com/google/common/collect/testing/MinimalIterableTest.java
index f6fae31..16feb04 100644
--- a/android/guava-testlib/test/com/google/common/collect/testing/MinimalIterableTest.java
+++ b/android/guava-testlib/test/com/google/common/collect/testing/MinimalIterableTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
@@ -27,7 +26,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class MinimalIterableTest extends TestCase {
 
   public void testOf_empty() {
diff --git a/android/guava-testlib/test/com/google/common/collect/testing/SafeTreeMapTest.java b/android/guava-testlib/test/com/google/common/collect/testing/SafeTreeMapTest.java
index f03ff0a..f62be76 100644
--- a/android/guava-testlib/test/com/google/common/collect/testing/SafeTreeMapTest.java
+++ b/android/guava-testlib/test/com/google/common/collect/testing/SafeTreeMapTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect.testing;
 
 import static java.util.Collections.sort;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSortedMap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.testing.Helpers.NullsBeforeTwo;
@@ -101,7 +99,7 @@ public class SafeTreeMapTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testViewSerialization() {
     Map<String, Integer> map = ImmutableSortedMap.of("one", 1, "two", 2, "three", 3);
     SerializableTester.reserializeAndAssert(map.entrySet());
@@ -111,7 +109,7 @@ public class SafeTreeMapTest extends TestCase {
         Lists.newArrayList(SerializableTester.reserialize(map.values())));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public static class ReserializedMapTests extends SortedMapInterfaceTest<String, Integer> {
     public ReserializedMapTests() {
       super(false, true, true, true, true);
diff --git a/android/guava-testlib/test/com/google/common/collect/testing/SafeTreeSetTest.java b/android/guava-testlib/test/com/google/common/collect/testing/SafeTreeSetTest.java
index ea5a784..5512395 100644
--- a/android/guava-testlib/test/com/google/common/collect/testing/SafeTreeSetTest.java
+++ b/android/guava-testlib/test/com/google/common/collect/testing/SafeTreeSetTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSortedMap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.Sets;
@@ -83,7 +81,7 @@ public class SafeTreeSetTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testViewSerialization() {
     Map<String, Integer> map = ImmutableSortedMap.of("one", 1, "two", 2, "three", 3);
     SerializableTester.reserializeAndAssert(map.entrySet());
@@ -93,14 +91,14 @@ public class SafeTreeSetTest extends TestCase {
         Lists.newArrayList(SerializableTester.reserialize(map.values())));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testEmpty_serialization() {
     SortedSet<String> set = new SafeTreeSet<>();
     SortedSet<String> copy = SerializableTester.reserializeAndAssert(set);
     assertEquals(set.comparator(), copy.comparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSingle_serialization() {
     SortedSet<String> set = new SafeTreeSet<>();
     set.add("e");
@@ -108,7 +106,7 @@ public class SafeTreeSetTest extends TestCase {
     assertEquals(set.comparator(), copy.comparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSeveral_serialization() {
     SortedSet<String> set = new SafeTreeSet<>();
     set.add("a");
diff --git a/android/guava-testlib/test/com/google/common/collect/testing/features/AndroidIncompatible.java b/android/guava-testlib/test/com/google/common/collect/testing/features/AndroidIncompatible.java
index 46c2123..c29bca3 100644
--- a/android/guava-testlib/test/com/google/common/collect/testing/features/AndroidIncompatible.java
+++ b/android/guava-testlib/test/com/google/common/collect/testing/features/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-testlib/test/com/google/common/collect/testing/features/FeatureUtilTest.java b/android/guava-testlib/test/com/google/common/collect/testing/features/FeatureUtilTest.java
index 37af90b..e0beeca 100644
--- a/android/guava-testlib/test/com/google/common/collect/testing/features/FeatureUtilTest.java
+++ b/android/guava-testlib/test/com/google/common/collect/testing/features/FeatureUtilTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.features;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
diff --git a/android/guava-testlib/test/com/google/common/testing/AbstractPackageSanityTestsTest.java b/android/guava-testlib/test/com/google/common/testing/AbstractPackageSanityTestsTest.java
index cb6ba6a..38f2698 100644
--- a/android/guava-testlib/test/com/google/common/testing/AbstractPackageSanityTestsTest.java
+++ b/android/guava-testlib/test/com/google/common/testing/AbstractPackageSanityTestsTest.java
@@ -19,7 +19,6 @@ package com.google.common.testing;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
 import java.util.Arrays;
 import java.util.List;
 import junit.framework.TestCase;
diff --git a/android/guava-testlib/test/com/google/common/testing/AndroidIncompatible.java b/android/guava-testlib/test/com/google/common/testing/AndroidIncompatible.java
index 326d7b8..e354a5e 100644
--- a/android/guava-testlib/test/com/google/common/testing/AndroidIncompatible.java
+++ b/android/guava-testlib/test/com/google/common/testing/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-testlib/test/com/google/common/testing/ArbitraryInstancesTest.java b/android/guava-testlib/test/com/google/common/testing/ArbitraryInstancesTest.java
index b47672f..db9708d 100644
--- a/android/guava-testlib/test/com/google/common/testing/ArbitraryInstancesTest.java
+++ b/android/guava-testlib/test/com/google/common/testing/ArbitraryInstancesTest.java
@@ -28,19 +28,6 @@ import com.google.common.base.Stopwatch;
 import com.google.common.base.Ticker;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.ClassToInstanceMap;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableClassToInstanceMap;
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
-import com.google.common.collect.ImmutableSortedMap;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.MapDifference;
 import com.google.common.collect.Multimap;
diff --git a/android/guava-testlib/test/com/google/common/testing/ClassSanityTesterTest.java b/android/guava-testlib/test/com/google/common/testing/ClassSanityTesterTest.java
index 586eb28..96f6616 100644
--- a/android/guava-testlib/test/com/google/common/testing/ClassSanityTesterTest.java
+++ b/android/guava-testlib/test/com/google/common/testing/ClassSanityTesterTest.java
@@ -21,7 +21,6 @@ import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Functions;
 import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.ClassSanityTester.FactoryMethodReturnsNullException;
 import com.google.common.testing.ClassSanityTester.ParameterHasNoDistinctValueException;
 import com.google.common.testing.ClassSanityTester.ParameterNotInstantiableException;
@@ -36,7 +35,6 @@ import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Unit tests for {@link ClassSanityTester}.
@@ -287,7 +285,6 @@ public class ClassSanityTesterTest extends TestCase {
   }
 
   public static class FactoryThatReturnsNullAndAnnotated {
-    @NullableDecl
     public static Object bad() {
       return null;
     }
@@ -753,7 +750,6 @@ public class ClassSanityTesterTest extends TestCase {
 
     // keep trying
     @SuppressWarnings("unused")
-    @NullableDecl
     public static GoodEquals createMayReturnNull(int a, int b) {
       return null;
     }
@@ -1175,7 +1171,6 @@ public class ClassSanityTesterTest extends TestCase {
   static class FactoryMethodReturnsNullAndAnnotated {
     private FactoryMethodReturnsNullAndAnnotated() {}
 
-    @NullableDecl
     public static FactoryMethodReturnsNullAndAnnotated returnsNull() {
       return null;
     }
diff --git a/android/guava-testlib/test/com/google/common/testing/EqualsTesterTest.java b/android/guava-testlib/test/com/google/common/testing/EqualsTesterTest.java
index d615af6..52808db 100644
--- a/android/guava-testlib/test/com/google/common/testing/EqualsTesterTest.java
+++ b/android/guava-testlib/test/com/google/common/testing/EqualsTesterTest.java
@@ -16,9 +16,7 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Sets;
 import java.util.Set;
 import junit.framework.AssertionFailedError;
@@ -29,7 +27,6 @@ import junit.framework.TestCase;
  *
  * @author Jim McMaster
  */
-@GwtCompatible
 @SuppressWarnings("MissingTestCall")
 public class EqualsTesterTest extends TestCase {
   private ValidTestObject reference;
diff --git a/android/guava-testlib/test/com/google/common/testing/EquivalenceTesterTest.java b/android/guava-testlib/test/com/google/common/testing/EquivalenceTesterTest.java
index d612b2c..7f2d37d 100644
--- a/android/guava-testlib/test/com/google/common/testing/EquivalenceTesterTest.java
+++ b/android/guava-testlib/test/com/google/common/testing/EquivalenceTesterTest.java
@@ -19,11 +19,8 @@ package com.google.common.testing;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Equivalence;
 import com.google.common.base.MoreObjects;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableTable;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
@@ -32,7 +29,6 @@ import junit.framework.TestCase;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 public class EquivalenceTesterTest extends TestCase {
   private EquivalenceTester<Object> tester;
   private MockEquivalence equivalenceMock;
diff --git a/android/guava-testlib/test/com/google/common/testing/FakeTickerTest.java b/android/guava-testlib/test/com/google/common/testing/FakeTickerTest.java
index 654304b..33c37db 100644
--- a/android/guava-testlib/test/com/google/common/testing/FakeTickerTest.java
+++ b/android/guava-testlib/test/com/google/common/testing/FakeTickerTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.EnumSet;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CountDownLatch;
@@ -32,10 +30,9 @@ import junit.framework.TestCase;
  *
  * @author Jige Yu
  */
-@GwtCompatible(emulated = true)
 public class FakeTickerTest extends TestCase {
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(new FakeTicker());
@@ -100,7 +97,7 @@ public class FakeTickerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // concurrency
+  // concurrency
 
   public void testConcurrentAdvance() throws Exception {
     final FakeTicker ticker = new FakeTicker();
@@ -122,7 +119,7 @@ public class FakeTickerTest extends TestCase {
     assertEquals(numberOfThreads * 2, ticker.read());
   }
 
-  @GwtIncompatible // concurrency
+  // concurrency
 
   public void testConcurrentAutoIncrementStep() throws Exception {
     int incrementByNanos = 3;
@@ -144,7 +141,7 @@ public class FakeTickerTest extends TestCase {
   }
 
   /** Runs {@code callable} concurrently {@code numberOfThreads} times. */
-  @GwtIncompatible // concurrency
+  // concurrency
   private void runConcurrentTest(int numberOfThreads, final Callable<Void> callable)
       throws Exception {
     ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);
diff --git a/android/guava-testlib/test/com/google/common/testing/FreshValueGeneratorTest.java b/android/guava-testlib/test/com/google/common/testing/FreshValueGeneratorTest.java
index b20517c..d9821e5 100644
--- a/android/guava-testlib/test/com/google/common/testing/FreshValueGeneratorTest.java
+++ b/android/guava-testlib/test/com/google/common/testing/FreshValueGeneratorTest.java
@@ -29,19 +29,6 @@ import com.google.common.collect.HashBasedTable;
 import com.google.common.collect.HashBiMap;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.HashMultiset;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
-import com.google.common.collect.ImmutableSortedMap;
-import com.google.common.collect.ImmutableSortedMultiset;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.LinkedHashMultimap;
 import com.google.common.collect.LinkedHashMultiset;
 import com.google.common.collect.ListMultimap;
diff --git a/android/guava-testlib/test/com/google/common/testing/GcFinalizationTest.java b/android/guava-testlib/test/com/google/common/testing/GcFinalizationTest.java
index 164ac5a..4bdb510 100644
--- a/android/guava-testlib/test/com/google/common/testing/GcFinalizationTest.java
+++ b/android/guava-testlib/test/com/google/common/testing/GcFinalizationTest.java
@@ -20,8 +20,6 @@ import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.testing.GcFinalization.FinalizationPredicate;
 import com.google.common.util.concurrent.SettableFuture;
-import java.lang.ref.WeakReference;
-import java.util.WeakHashMap;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicBoolean;
 import junit.framework.TestCase;
diff --git a/android/guava-testlib/test/com/google/common/testing/NullPointerTesterTest.java b/android/guava-testlib/test/com/google/common/testing/NullPointerTesterTest.java
index d1dc49b..f8699b2 100644
--- a/android/guava-testlib/test/com/google/common/testing/NullPointerTesterTest.java
+++ b/android/guava-testlib/test/com/google/common/testing/NullPointerTesterTest.java
@@ -23,20 +23,12 @@ import static com.google.common.truth.Truth.assertThat;
 import com.google.common.base.Converter;
 import com.google.common.base.Function;
 import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Table;
 import com.google.common.reflect.TypeToken;
 import com.google.common.testing.NullPointerTester.Visibility;
-import com.google.common.testing.anotherpackage.SomeClassThatDoesNotUseNullable;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.util.List;
@@ -46,7 +38,6 @@ import java.util.Set;
 import java.util.SortedSet;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Unit test for {@link NullPointerTester}.
diff --git a/android/guava-testlib/test/com/google/common/testing/TearDownStackTest.java b/android/guava-testlib/test/com/google/common/testing/TearDownStackTest.java
index 5a4f9ed..d693ce0 100644
--- a/android/guava-testlib/test/com/google/common/testing/TearDownStackTest.java
+++ b/android/guava-testlib/test/com/google/common/testing/TearDownStackTest.java
@@ -18,11 +18,9 @@ package com.google.common.testing;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /** @author Luiz-Otavio "Z" Zorzella */
-@GwtCompatible
 public class TearDownStackTest extends TestCase {
 
   private TearDownStack tearDownStack = new TearDownStack();
diff --git a/android/guava-testlib/test/com/google/common/util/concurrent/testing/TestingExecutorsTest.java b/android/guava-testlib/test/com/google/common/util/concurrent/testing/TestingExecutorsTest.java
index 66ad784..563794a 100644
--- a/android/guava-testlib/test/com/google/common/util/concurrent/testing/TestingExecutorsTest.java
+++ b/android/guava-testlib/test/com/google/common/util/concurrent/testing/TestingExecutorsTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.util.concurrent.testing;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.ListeningScheduledExecutorService;
 import java.util.List;
 import java.util.concurrent.Callable;
diff --git a/android/guava-tests/benchmark/com/google/common/collect/ConcurrentHashMultisetBenchmark.java b/android/guava-tests/benchmark/com/google/common/collect/ConcurrentHashMultisetBenchmark.java
index 5b713f2..b6b16ca 100644
--- a/android/guava-tests/benchmark/com/google/common/collect/ConcurrentHashMultisetBenchmark.java
+++ b/android/guava-tests/benchmark/com/google/common/collect/ConcurrentHashMultisetBenchmark.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import com.google.caliper.BeforeExperiment;
 import com.google.caliper.Benchmark;
 import com.google.caliper.Param;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.primitives.Ints;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import java.util.Iterator;
@@ -37,7 +36,6 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Benchmarks for {@link ConcurrentHashMultiset}.
@@ -177,7 +175,6 @@ public class ConcurrentHashMultisetBenchmark {
       return new OldConcurrentHashMultiset<E>(new ConcurrentHashMap<E, Integer>());
     }
 
-    @VisibleForTesting
     OldConcurrentHashMultiset(ConcurrentMap<E, Integer> countMap) {
       checkArgument(countMap.isEmpty());
       this.countMap = countMap;
diff --git a/android/guava-tests/benchmark/com/google/common/math/QuantilesBenchmark.java b/android/guava-tests/benchmark/com/google/common/math/QuantilesBenchmark.java
index 6830482..d5cc69d 100644
--- a/android/guava-tests/benchmark/com/google/common/math/QuantilesBenchmark.java
+++ b/android/guava-tests/benchmark/com/google/common/math/QuantilesBenchmark.java
@@ -21,7 +21,6 @@ import com.google.caliper.Benchmark;
 import com.google.caliper.Param;
 import com.google.common.collect.ContiguousSet;
 import com.google.common.collect.DiscreteDomain;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Range;
 import java.util.Random;
 
diff --git a/android/guava-tests/benchmark/com/google/common/util/concurrent/ExecutionListBenchmark.java b/android/guava-tests/benchmark/com/google/common/util/concurrent/ExecutionListBenchmark.java
index c9df774..1d897bf 100644
--- a/android/guava-tests/benchmark/com/google/common/util/concurrent/ExecutionListBenchmark.java
+++ b/android/guava-tests/benchmark/com/google/common/util/concurrent/ExecutionListBenchmark.java
@@ -27,7 +27,6 @@ import com.google.caliper.api.VmOptions;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.AbstractFutureBenchmarks.OldAbstractFuture;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.util.Queue;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.CountDownLatch;
@@ -38,7 +37,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /** Benchmarks for {@link ExecutionList}. */
 @VmOptions({"-Xms8g", "-Xmx8g"})
@@ -439,10 +437,8 @@ public class ExecutionListBenchmark {
   private static final class NewExecutionListWithoutReverse {
     static final Logger log = Logger.getLogger(NewExecutionListWithoutReverse.class.getName());
 
-    @GuardedBy("this")
     private RunnableExecutorPair runnables;
 
-    @GuardedBy("this")
     private boolean executed;
 
     public void add(Runnable runnable, Executor executor) {
@@ -488,7 +484,7 @@ public class ExecutionListBenchmark {
     private static final class RunnableExecutorPair {
       final Runnable runnable;
       final Executor executor;
-      @NullableDecl RunnableExecutorPair next;
+      RunnableExecutorPair next;
 
       RunnableExecutorPair(Runnable runnable, Executor executor, RunnableExecutorPair next) {
         this.runnable = runnable;
@@ -503,13 +499,10 @@ public class ExecutionListBenchmark {
   private static final class NewExecutionListQueue {
     static final Logger log = Logger.getLogger(NewExecutionListQueue.class.getName());
 
-    @GuardedBy("this")
     private RunnableExecutorPair head;
 
-    @GuardedBy("this")
     private RunnableExecutorPair tail;
 
-    @GuardedBy("this")
     private boolean executed;
 
     public void add(Runnable runnable, Executor executor) {
@@ -563,7 +556,7 @@ public class ExecutionListBenchmark {
     private static final class RunnableExecutorPair {
       Runnable runnable;
       Executor executor;
-      @NullableDecl RunnableExecutorPair next;
+      RunnableExecutorPair next;
 
       RunnableExecutorPair(Runnable runnable, Executor executor) {
         this.runnable = runnable;
@@ -669,7 +662,7 @@ public class ExecutionListBenchmark {
       final Runnable runnable;
       final Executor executor;
       // Volatile because this is written on one thread and read on another with no synchronization.
-      @NullableDecl volatile RunnableExecutorPair next;
+      volatile RunnableExecutorPair next;
 
       RunnableExecutorPair(Runnable runnable, Executor executor) {
         this.runnable = runnable;
diff --git a/android/guava-tests/benchmark/com/google/common/util/concurrent/FuturesGetCheckedBenchmark.java b/android/guava-tests/benchmark/com/google/common/util/concurrent/FuturesGetCheckedBenchmark.java
index bb76420..14a920f 100644
--- a/android/guava-tests/benchmark/com/google/common/util/concurrent/FuturesGetCheckedBenchmark.java
+++ b/android/guava-tests/benchmark/com/google/common/util/concurrent/FuturesGetCheckedBenchmark.java
@@ -28,7 +28,6 @@ import static com.google.common.util.concurrent.FuturesGetChecked.weakSetValidat
 import com.google.caliper.BeforeExperiment;
 import com.google.caliper.Benchmark;
 import com.google.caliper.Param;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.util.concurrent.FuturesGetChecked.GetCheckedTypeValidator;
 import java.io.IOException;
 import java.net.URISyntaxException;
diff --git a/android/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedArrayBlockingQueue.java b/android/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedArrayBlockingQueue.java
index 61f735d..98c97a1 100644
--- a/android/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedArrayBlockingQueue.java
+++ b/android/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedArrayBlockingQueue.java
@@ -17,7 +17,6 @@
 package com.google.common.util.concurrent;
 
 import com.google.common.collect.ObjectArrays;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.AbstractQueue;
 import java.util.Collection;
 import java.util.ConcurrentModificationException;
@@ -25,7 +24,6 @@ import java.util.Iterator;
 import java.util.NoSuchElementException;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * A bounded {@linkplain BlockingQueue blocking queue} backed by an array. This queue orders
@@ -51,7 +49,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  * @author Justin T. Sampson
  * @param <E> the type of elements held in this collection
  */
-@CanIgnoreReturnValue
 public class MonitorBasedArrayBlockingQueue<E> extends AbstractQueue<E>
     implements BlockingQueue<E> {
 
diff --git a/android/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedPriorityBlockingQueue.java b/android/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedPriorityBlockingQueue.java
index 086253d..0d11f71 100644
--- a/android/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedPriorityBlockingQueue.java
+++ b/android/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedPriorityBlockingQueue.java
@@ -18,7 +18,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.AbstractQueue;
 import java.util.Collection;
 import java.util.Comparator;
@@ -30,7 +29,6 @@ import java.util.Queue;
 import java.util.SortedSet;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * An unbounded {@linkplain BlockingQueue blocking queue} that uses the same ordering rules as class
@@ -76,7 +74,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  * @author Justin T. Sampson
  * @param <E> the type of elements held in this collection
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
+// TODO(cpovirk): Consider being more strict.
 public class MonitorBasedPriorityBlockingQueue<E> extends AbstractQueue<E>
     implements BlockingQueue<E> {
 
diff --git a/android/guava-tests/benchmark/com/google/common/util/concurrent/StripedBenchmark.java b/android/guava-tests/benchmark/com/google/common/util/concurrent/StripedBenchmark.java
index 03c90d3..eec9c9a 100644
--- a/android/guava-tests/benchmark/com/google/common/util/concurrent/StripedBenchmark.java
+++ b/android/guava-tests/benchmark/com/google/common/util/concurrent/StripedBenchmark.java
@@ -25,7 +25,6 @@ import com.google.caliper.Param;
 import com.google.caliper.api.Footprint;
 import com.google.caliper.api.VmOptions;
 import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
 import com.google.common.primitives.Ints;
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/android/guava-tests/test/com/google/common/base/AbstractIteratorTest.java b/android/guava-tests/test/com/google/common/base/AbstractIteratorTest.java
index da732bf..b519f93 100644
--- a/android/guava-tests/test/com/google/common/base/AbstractIteratorTest.java
+++ b/android/guava-tests/test/com/google/common/base/AbstractIteratorTest.java
@@ -16,10 +16,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.GcFinalization;
-import java.lang.ref.WeakReference;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import junit.framework.TestCase;
@@ -29,7 +26,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class AbstractIteratorTest extends TestCase {
 
   public void testDefaultBehaviorOfNextAndHasNext() {
@@ -172,7 +168,7 @@ public class AbstractIteratorTest extends TestCase {
   }
 
 
-  @GwtIncompatible // weak references
+  // weak references
   public void testFreesNextReference() {
     Iterator<Object> itr =
         new AbstractIterator<Object>() {
diff --git a/android/guava-tests/test/com/google/common/base/AndroidIncompatible.java b/android/guava-tests/test/com/google/common/base/AndroidIncompatible.java
index 5e190a3..fccbb12 100644
--- a/android/guava-tests/test/com/google/common/base/AndroidIncompatible.java
+++ b/android/guava-tests/test/com/google/common/base/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -66,5 +65,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-tests/test/com/google/common/base/AsciiTest.java b/android/guava-tests/test/com/google/common/base/AsciiTest.java
index d3a1f8f..c6b864b 100644
--- a/android/guava-tests/test/com/google/common/base/AsciiTest.java
+++ b/android/guava-tests/test/com/google/common/base/AsciiTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import junit.framework.TestCase;
 
 /**
@@ -25,7 +23,6 @@ import junit.framework.TestCase;
  *
  * @author Craig Berry
  */
-@GwtCompatible
 public class AsciiTest extends TestCase {
 
   /**
@@ -139,7 +136,7 @@ public class AsciiTest extends TestCase {
     assertFalse(Ascii.equalsIgnoreCase("[", "{"));
   }
 
-  @GwtIncompatible // String.toUpperCase() has browser semantics
+  // String.toUpperCase() has browser semantics
   public void testEqualsIgnoreCaseUnicodeEquivalence() {
     // Note that it's possible in future that the JDK's idea to toUpperCase() or equalsIgnoreCase()
     // may change and break assumptions in this test [*]. This is not a bug in the implementation of
diff --git a/android/guava-tests/test/com/google/common/base/CaseFormatTest.java b/android/guava-tests/test/com/google/common/base/CaseFormatTest.java
index f08d9f9..5f3a3d4 100644
--- a/android/guava-tests/test/com/google/common/base/CaseFormatTest.java
+++ b/android/guava-tests/test/com/google/common/base/CaseFormatTest.java
@@ -22,8 +22,6 @@ import static com.google.common.base.CaseFormat.LOWER_UNDERSCORE;
 import static com.google.common.base.CaseFormat.UPPER_CAMEL;
 import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
 import junit.framework.TestCase;
@@ -33,7 +31,6 @@ import junit.framework.TestCase;
  *
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 public class CaseFormatTest extends TestCase {
 
   public void testIdentity() {
@@ -46,7 +43,7 @@ public class CaseFormatTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullArguments() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(CaseFormat.class);
diff --git a/android/guava-tests/test/com/google/common/base/CharMatcherTest.java b/android/guava-tests/test/com/google/common/base/CharMatcherTest.java
index 5412882..e25fe29 100644
--- a/android/guava-tests/test/com/google/common/base/CharMatcherTest.java
+++ b/android/guava-tests/test/com/google/common/base/CharMatcherTest.java
@@ -25,8 +25,6 @@ import static com.google.common.base.CharMatcher.isNot;
 import static com.google.common.base.CharMatcher.noneOf;
 import static com.google.common.base.CharMatcher.whitespace;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Sets;
 import com.google.common.testing.NullPointerTester;
 import java.util.Arrays;
@@ -42,10 +40,9 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class CharMatcherTest extends TestCase {
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStaticNullPointers() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(CharMatcher.class);
@@ -90,7 +87,7 @@ public class CharMatcherTest extends TestCase {
   // The next tests require ICU4J and have, at least for now, been sliced out
   // of the open-source view of the tests.
 
-  @GwtIncompatible // Character.isISOControl
+  // Character.isISOControl
   public void testJavaIsoControl() {
     for (int c = 0; c <= Character.MAX_VALUE; c++) {
       assertEquals(
@@ -108,7 +105,7 @@ public class CharMatcherTest extends TestCase {
   // method, but by overall "scenario". Also, the variety of actual tests we
   // do borders on absurd overkill. Better safe than sorry, though?
 
-  @GwtIncompatible // java.util.BitSet
+  // java.util.BitSet
   public void testSetBits() {
     doTestSetBits(CharMatcher.any());
     doTestSetBits(CharMatcher.none());
@@ -128,7 +125,7 @@ public class CharMatcherTest extends TestCase {
     doTestSetBits(inRange('A', 'Z').and(inRange('F', 'K').negate()));
   }
 
-  @GwtIncompatible // java.util.BitSet
+  // java.util.BitSet
   private void doTestSetBits(CharMatcher matcher) {
     BitSet bitset = new BitSet();
     matcher.setBits(bitset);
@@ -151,7 +148,7 @@ public class CharMatcherTest extends TestCase {
     doTestEmpty(forPredicate(Predicates.equalTo('c')));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNull() throws Exception {
     doTestNull(CharMatcher.any());
     doTestNull(CharMatcher.none());
@@ -196,7 +193,7 @@ public class CharMatcherTest extends TestCase {
     assertEquals(0, matcher.countIn(""));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   private static void doTestNull(CharMatcher matcher) throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(matcher);
@@ -664,12 +661,12 @@ public class CharMatcherTest extends TestCase {
     assertSame(CharMatcher.any(), CharMatcher.any().precomputed());
   }
 
-  @GwtIncompatible // java.util.BitSet
+  // java.util.BitSet
   private static BitSet bitSet(String chars) {
     return bitSet(chars.toCharArray());
   }
 
-  @GwtIncompatible // java.util.BitSet
+  // java.util.BitSet
   private static BitSet bitSet(char[] chars) {
     BitSet tmp = new BitSet();
     for (char c : chars) {
@@ -678,7 +675,7 @@ public class CharMatcherTest extends TestCase {
     return tmp;
   }
 
-  @GwtIncompatible // java.util.Random, java.util.BitSet
+  // java.util.Random, java.util.BitSet
   public void testSmallCharMatcher() {
     CharMatcher len1 = SmallCharMatcher.from(bitSet("#"), "#");
     CharMatcher len2 = SmallCharMatcher.from(bitSet("ab"), "ab");
diff --git a/android/guava-tests/test/com/google/common/base/CharsetsTest.java b/android/guava-tests/test/com/google/common/base/CharsetsTest.java
index c968c8d..5fc0efb 100644
--- a/android/guava-tests/test/com/google/common/base/CharsetsTest.java
+++ b/android/guava-tests/test/com/google/common/base/CharsetsTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.nio.charset.Charset;
 import java.util.Arrays;
 import junit.framework.TestCase;
@@ -27,15 +25,14 @@ import junit.framework.TestCase;
  *
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 public class CharsetsTest extends TestCase {
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testUsAscii() {
     assertEquals(Charset.forName("US-ASCII"), Charsets.US_ASCII);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testIso88591() {
     assertEquals(Charset.forName("ISO-8859-1"), Charsets.ISO_8859_1);
   }
@@ -44,22 +41,22 @@ public class CharsetsTest extends TestCase {
     assertEquals(Charset.forName("UTF-8"), Charsets.UTF_8);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testUtf16be() {
     assertEquals(Charset.forName("UTF-16BE"), Charsets.UTF_16BE);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testUtf16le() {
     assertEquals(Charset.forName("UTF-16LE"), Charsets.UTF_16LE);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testUtf16() {
     assertEquals(Charset.forName("UTF-16"), Charsets.UTF_16);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testWhyUsAsciiIsDangerous() {
     byte[] b1 = "朝日新聞".getBytes(Charsets.US_ASCII);
     byte[] b2 = "聞朝日新".getBytes(Charsets.US_ASCII);
diff --git a/android/guava-tests/test/com/google/common/base/ConverterTest.java b/android/guava-tests/test/com/google/common/base/ConverterTest.java
index c787ef0..2000066 100644
--- a/android/guava-tests/test/com/google/common/base/ConverterTest.java
+++ b/android/guava-tests/test/com/google/common/base/ConverterTest.java
@@ -18,8 +18,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Functions.toStringFunction;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.primitives.Longs;
 import com.google.common.testing.EqualsTester;
@@ -29,7 +27,6 @@ import java.util.List;
 import junit.framework.TestCase;
 
 /** Unit tests for {@link Converter}. */
-@GwtCompatible
 public class ConverterTest extends TestCase {
 
   private static final Converter<String, Long> STR_TO_LONG =
diff --git a/android/guava-tests/test/com/google/common/base/EnumsTest.java b/android/guava-tests/test/com/google/common/base/EnumsTest.java
index d8b13af..495fb67 100644
--- a/android/guava-tests/test/com/google/common/base/EnumsTest.java
+++ b/android/guava-tests/test/com/google/common/base/EnumsTest.java
@@ -20,17 +20,12 @@ import static com.google.common.base.StandardSystemProperty.JAVA_CLASS_PATH;
 import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.GcFinalization;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
 import java.io.File;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
-import java.lang.ref.WeakReference;
 import java.lang.reflect.Field;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -44,7 +39,6 @@ import junit.framework.TestCase;
  *
  * @author Steve McKay
  */
-@GwtCompatible(emulated = true)
 public class EnumsTest extends TestCase {
 
   private enum TestEnum {
@@ -80,7 +74,7 @@ public class EnumsTest extends TestCase {
   }
 
 
-  @GwtIncompatible // weak references
+  // weak references
   public void testGetIfPresent_doesNotPreventClassUnloading() throws Exception {
     WeakReference<?> shadowLoaderReference = doTestClassUnloading();
     GcFinalization.awaitClear(shadowLoaderReference);
@@ -91,7 +85,7 @@ public class EnumsTest extends TestCase {
   // new ClassLoader. If Enums.getIfPresent does caching that prevents the shadow TestEnum
   // (and therefore its ClassLoader) from being unloaded, then this WeakReference will never be
   // cleared.
-  @GwtIncompatible // weak references
+  // weak references
   private WeakReference<?> doTestClassUnloading() throws Exception {
     URLClassLoader shadowLoader = new URLClassLoader(getClassPathUrls(), null);
     @SuppressWarnings("unchecked")
@@ -137,7 +131,7 @@ public class EnumsTest extends TestCase {
     assertEquals("POODLE", converter.reverse().convert(TestEnum.POODLE));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     Converter<String, TestEnum> converter = Enums.stringConverter(TestEnum.class);
     NullPointerTester tester = new NullPointerTester();
@@ -150,7 +144,7 @@ public class EnumsTest extends TestCase {
     assertNull(converter.reverse().convert(null));
   }
 
-  @GwtIncompatible // Class.getName()
+  // Class.getName()
   public void testStringConverter_toString() {
     assertEquals(
         "Enums.stringConverter(com.google.common.base.EnumsTest$TestEnum.class)",
@@ -161,7 +155,7 @@ public class EnumsTest extends TestCase {
     SerializableTester.reserializeAndAssert(Enums.stringConverter(TestEnum.class));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Enums.class);
@@ -176,7 +170,7 @@ public class EnumsTest extends TestCase {
     BAR
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testGetField() {
     Field foo = Enums.getField(AnEnum.FOO);
     assertEquals("FOO", foo.getName());
@@ -187,7 +181,7 @@ public class EnumsTest extends TestCase {
     assertFalse(bar.isAnnotationPresent(ExampleAnnotation.class));
   }
 
-  @GwtIncompatible // Class.getClassLoader()
+  // Class.getClassLoader()
   private URL[] getClassPathUrls() {
     ClassLoader classLoader = getClass().getClassLoader();
     return classLoader instanceof URLClassLoader
@@ -200,7 +194,6 @@ public class EnumsTest extends TestCase {
    * System#getProperty system property}.
    */
   // TODO(b/65488446): Make this a public API.
-  @GwtIncompatible
   private static ImmutableList<URL> parseJavaClassPath() {
     ImmutableList.Builder<URL> urls = ImmutableList.builder();
     for (String entry : Splitter.on(PATH_SEPARATOR.value()).split(JAVA_CLASS_PATH.value())) {
diff --git a/android/guava-tests/test/com/google/common/base/EquivalenceTest.java b/android/guava-tests/test/com/google/common/base/EquivalenceTest.java
index 07c86ea..67cabf0 100644
--- a/android/guava-tests/test/com/google/common/base/EquivalenceTest.java
+++ b/android/guava-tests/test/com/google/common/base/EquivalenceTest.java
@@ -16,10 +16,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Equivalence.Wrapper;
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.EquivalenceTester;
 import com.google.common.testing.NullPointerTester;
@@ -31,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Jige Yu
  */
-@GwtCompatible(emulated = true)
 public class EquivalenceTest extends TestCase {
   @SuppressWarnings("unchecked") // varargs
   public void testPairwiseEquivalent() {
@@ -81,7 +77,7 @@ public class EquivalenceTest extends TestCase {
     assertSame(test, wrapper.get());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     SerializableTester.reserializeAndAssert(LENGTH_EQUIVALENCE.wrap("hello"));
     SerializableTester.reserializeAndAssert(Equivalence.equals());
@@ -157,7 +153,7 @@ public class EquivalenceTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Equivalence.class);
     new NullPointerTester().testAllPublicInstanceMethods(Equivalence.equals());
diff --git a/android/guava-tests/test/com/google/common/base/FinalizableReferenceQueueClassLoaderUnloadingTest.java b/android/guava-tests/test/com/google/common/base/FinalizableReferenceQueueClassLoaderUnloadingTest.java
index ae35c16..790b305 100644
--- a/android/guava-tests/test/com/google/common/base/FinalizableReferenceQueueClassLoaderUnloadingTest.java
+++ b/android/guava-tests/test/com/google/common/base/FinalizableReferenceQueueClassLoaderUnloadingTest.java
@@ -20,11 +20,9 @@ import static com.google.common.base.StandardSystemProperty.JAVA_CLASS_PATH;
 import static com.google.common.base.StandardSystemProperty.JAVA_SPECIFICATION_VERSION;
 import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.GcFinalization;
 import java.io.Closeable;
 import java.io.File;
-import java.lang.ref.WeakReference;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.net.MalformedURLException;
diff --git a/android/guava-tests/test/com/google/common/base/FinalizableReferenceQueueTest.java b/android/guava-tests/test/com/google/common/base/FinalizableReferenceQueueTest.java
index 3e99122..7e001f1 100644
--- a/android/guava-tests/test/com/google/common/base/FinalizableReferenceQueueTest.java
+++ b/android/guava-tests/test/com/google/common/base/FinalizableReferenceQueueTest.java
@@ -19,7 +19,6 @@ package com.google.common.base;
 import com.google.common.base.internal.Finalizer;
 import com.google.common.testing.GcFinalization;
 import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.Arrays;
diff --git a/android/guava-tests/test/com/google/common/base/FunctionsTest.java b/android/guava-tests/test/com/google/common/base/FunctionsTest.java
index 1411c19..55f06ce 100644
--- a/android/guava-tests/test/com/google/common/base/FunctionsTest.java
+++ b/android/guava-tests/test/com/google/common/base/FunctionsTest.java
@@ -16,9 +16,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import com.google.common.testing.ClassSanityTester;
 import com.google.common.testing.EqualsTester;
@@ -34,7 +31,6 @@ import junit.framework.TestCase;
  * @author Mike Bostock
  * @author Vlad Patryshev
  */
-@GwtCompatible(emulated = true)
 public class FunctionsTest extends TestCase {
 
   public void testIdentity_same() {
@@ -48,7 +44,7 @@ public class FunctionsTest extends TestCase {
     assertNotSame(new Long(135135L), identity.apply(new Long(135135L)));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testIdentitySerializable() {
     checkCanReserializeSingleton(Functions.identity());
   }
@@ -73,12 +69,12 @@ public class FunctionsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testToStringFunctionSerializable() {
     checkCanReserializeSingleton(Functions.toStringFunction());
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Functions.class);
@@ -107,7 +103,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForMapWithoutDefaultSerializable() {
     checkCanReserialize(Functions.forMap(ImmutableMap.of(1, 2)));
   }
@@ -132,7 +128,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForMapWithDefault_includeSerializable() {
     Map<String, Integer> map = Maps.newHashMap();
     map.put("One", 1);
@@ -152,7 +148,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForMapWithDefaultSerializable() {
     checkCanReserialize(Functions.forMap(ImmutableMap.of(1, 2), 3));
   }
@@ -171,7 +167,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForMapWithDefault_null_compareWithSerializable() {
     ImmutableMap<String, Integer> map = ImmutableMap.of("One", 1);
     Function<String, Integer> function = Functions.forMap(map, null);
@@ -235,7 +231,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testComposition_includeReserializabled() {
     Map<String, Integer> mJapaneseToInteger = Maps.newHashMap();
     mJapaneseToInteger.put("Ichi", 1);
@@ -332,7 +328,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForPredicateSerializable() {
     checkCanReserialize(Functions.forPredicate(Predicates.equalTo(5)));
   }
@@ -361,7 +357,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testConstantSerializable() {
     checkCanReserialize(Functions.constant(5));
   }
@@ -406,24 +402,24 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForSupplierSerializable() {
     checkCanReserialize(Functions.forSupplier(new CountingSupplier()));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Functions.class).testNulls();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // TODO(cpovirk): ClassNotFoundException: com.google.common.base.Function
   // (I suspect that this and the other similar failures happen with ArbitraryInstances proxies.)
   public void testEqualsAndSerializable() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Functions.class).testEqualsAndSerializable();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   private static <Y> void checkCanReserialize(Function<? super Integer, Y> f) {
     Function<? super Integer, Y> g = SerializableTester.reserializeAndAssert(f);
     for (int i = 1; i < 5; i++) {
@@ -443,7 +439,7 @@ public class FunctionsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   private static <Y> void checkCanReserializeSingleton(Function<? super String, Y> f) {
     Function<? super String, Y> g = SerializableTester.reserializeAndAssert(f);
     assertSame(f, g);
diff --git a/android/guava-tests/test/com/google/common/base/JoinerTest.java b/android/guava-tests/test/com/google/common/base/JoinerTest.java
index d9ed347..5482def 100644
--- a/android/guava-tests/test/com/google/common/base/JoinerTest.java
+++ b/android/guava-tests/test/com/google/common/base/JoinerTest.java
@@ -16,12 +16,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Joiner.MapJoiner;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.testing.NullPointerTester;
@@ -39,7 +34,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class JoinerTest extends TestCase {
   private static final Joiner J = Joiner.on("-");
 
@@ -359,7 +353,7 @@ public class JoinerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // StringBuilder.append in GWT invokes Object.toString(), unlike the JRE version.
+  // StringBuilder.append in GWT invokes Object.toString(), unlike the JRE version.
   public void testDontConvertCharSequenceToString() {
     assertEquals("foo,foo", Joiner.on(",").join(new DontStringMeBro(), new DontStringMeBro()));
     assertEquals(
@@ -367,7 +361,7 @@ public class JoinerTest extends TestCase {
         Joiner.on(",").useForNull("bar").join(new DontStringMeBro(), null, new DontStringMeBro()));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Joiner.class);
diff --git a/android/guava-tests/test/com/google/common/base/ObjectsTest.java b/android/guava-tests/test/com/google/common/base/ObjectsTest.java
index 0388140..1e95755 100644
--- a/android/guava-tests/test/com/google/common/base/ObjectsTest.java
+++ b/android/guava-tests/test/com/google/common/base/ObjectsTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import junit.framework.TestCase;
 
@@ -26,7 +24,6 @@ import junit.framework.TestCase;
  *
  * @author Laurence Gonsalves
  */
-@GwtCompatible(emulated = true)
 public class ObjectsTest extends TestCase {
 
   public void testEqual() throws Exception {
@@ -58,7 +55,7 @@ public class ObjectsTest extends TestCase {
     assertTrue(Objects.hashCode(1, 2, 3) != Objects.hashCode(2, 3, 1));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Objects.class);
diff --git a/android/guava-tests/test/com/google/common/base/OptionalTest.java b/android/guava-tests/test/com/google/common/base/OptionalTest.java
index ba6ace7..50d7b8e 100644
--- a/android/guava-tests/test/com/google/common/base/OptionalTest.java
+++ b/android/guava-tests/test/com/google/common/base/OptionalTest.java
@@ -19,10 +19,7 @@ package com.google.common.base;
 import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import java.util.Collections;
@@ -35,7 +32,6 @@ import junit.framework.TestCase;
  *
  * @author Kurt Alfred Kluever
  */
-@GwtCompatible(emulated = true)
 public final class OptionalTest extends TestCase {
   public void testAbsent() {
     Optional<String> optionalName = Optional.absent();
@@ -298,7 +294,7 @@ public final class OptionalTest extends TestCase {
     Number value = first.or(0.5); // fine
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester npTester = new NullPointerTester();
     npTester.testAllPublicConstructors(Optional.class);
diff --git a/android/guava-tests/test/com/google/common/base/PreconditionsTest.java b/android/guava-tests/test/com/google/common/base/PreconditionsTest.java
index 1add44d..763b39a 100644
--- a/android/guava-tests/test/com/google/common/base/PreconditionsTest.java
+++ b/android/guava-tests/test/com/google/common/base/PreconditionsTest.java
@@ -18,10 +18,6 @@ package com.google.common.base;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.testing.ArbitraryInstances;
 import java.lang.reflect.InvocationTargetException;
@@ -38,7 +34,6 @@ import junit.framework.TestCase;
  * @author Kevin Bourrillion
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class PreconditionsTest extends TestCase {
   public void testCheckArgument_simple_success() {
     Preconditions.checkArgument(true);
@@ -383,7 +378,6 @@ public class PreconditionsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible("Reflection")
   public void testAllOverloads_checkArgument() throws Exception {
     for (ImmutableList<Class<?>> sig : allSignatures(boolean.class)) {
       Method checkArgumentMethod =
@@ -400,7 +394,6 @@ public class PreconditionsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible("Reflection")
   public void testAllOverloads_checkState() throws Exception {
     for (ImmutableList<Class<?>> sig : allSignatures(boolean.class)) {
       Method checkArgumentMethod =
@@ -417,7 +410,6 @@ public class PreconditionsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible("Reflection")
   public void testAllOverloads_checkNotNull() throws Exception {
     for (ImmutableList<Class<?>> sig : allSignatures(Object.class)) {
       Method checkArgumentMethod =
@@ -460,7 +452,6 @@ public class PreconditionsTest extends TestCase {
    * @param firstParam The first parameter
    * @param sig The method signature
    */
-  @GwtIncompatible("ArbitraryInstances")
   private Object[] getParametersForSignature(Object firstParam, ImmutableList<Class<?>> sig) {
     Object[] params = new Object[sig.size()];
     params[0] = firstParam;
@@ -536,7 +527,7 @@ public class PreconditionsTest extends TestCase {
     Preconditions.checkState(boxedBoolean.booleanValue(), "", s);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     /*
      * Don't bother testing: Preconditions defines a bunch of methods that accept a template (or
diff --git a/android/guava-tests/test/com/google/common/base/PredicatesTest.java b/android/guava-tests/test/com/google/common/base/PredicatesTest.java
index 8f8647f..7b04a68 100644
--- a/android/guava-tests/test/com/google/common/base/PredicatesTest.java
+++ b/android/guava-tests/test/com/google/common/base/PredicatesTest.java
@@ -19,9 +19,6 @@ package com.google.common.base;
 import static com.google.common.base.CharMatcher.whitespace;
 import static com.google.common.collect.Lists.newArrayList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.ClassSanityTester;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
@@ -42,7 +39,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class PredicatesTest extends TestCase {
   private static final Predicate<Integer> TRUE = Predicates.alwaysTrue();
   private static final Predicate<Integer> FALSE = Predicates.alwaysFalse();
@@ -105,7 +101,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testAlwaysTrue_serialization() {
     checkSerialization(Predicates.alwaysTrue());
   }
@@ -126,7 +122,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testAlwaysFalse_serialization() {
     checkSerialization(Predicates.alwaysFalse());
   }
@@ -175,7 +171,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNot_serialization() {
     checkSerialization(Predicates.not(isOdd()));
   }
@@ -198,7 +194,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testAnd_serializationNoArgs() {
     checkSerialization(Predicates.and());
@@ -221,7 +217,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testAnd_serializationOneArg() {
     checkSerialization(Predicates.and(isOdd()));
@@ -243,7 +239,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testAnd_serializationBinary() {
     checkSerialization(Predicates.and(TRUE, isOdd()));
   }
@@ -268,7 +264,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testAnd_serializationTernary() {
     checkSerialization(Predicates.and(TRUE, isOdd(), FALSE));
@@ -295,7 +291,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testAnd_serializationIterable() {
     checkSerialization(Predicates.and(Arrays.asList(TRUE, FALSE)));
@@ -351,7 +347,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testOr_serializationNoArgs() {
     checkSerialization(Predicates.or());
@@ -374,7 +370,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testOr_serializationOneArg() {
     checkSerialization(Predicates.or(isOdd()));
@@ -400,7 +396,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testOr_serializationBinary() {
     checkSerialization(Predicates.or(isOdd(), TRUE));
   }
@@ -424,7 +420,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testOr_serializationTernary() {
     checkSerialization(Predicates.or(FALSE, isOdd(), TRUE));
@@ -457,7 +453,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testOr_serializationIterable() {
     Predicate<Integer> pre = Predicates.or(Arrays.asList(TRUE, FALSE));
@@ -517,7 +513,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testIsEqualTo_serialization() {
     checkSerialization(Predicates.equalTo(1));
   }
@@ -536,7 +532,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testIsEqualToNull_serialization() {
     checkSerialization(Predicates.equalTo(null));
   }
@@ -546,7 +542,7 @@ public class PredicatesTest extends TestCase {
    * stripper to remove comments properly. Currently, all tests before the comments are removed as
    * well.
    */
-  @GwtIncompatible // Predicates.instanceOf
+  // Predicates.instanceOf
   public void testIsInstanceOf_apply() {
     Predicate<Object> isInteger = Predicates.instanceOf(Integer.class);
 
@@ -556,7 +552,7 @@ public class PredicatesTest extends TestCase {
     assertFalse(isInteger.apply(null));
   }
 
-  @GwtIncompatible // Predicates.instanceOf
+  // Predicates.instanceOf
   public void testIsInstanceOf_subclass() {
     Predicate<Object> isNumber = Predicates.instanceOf(Number.class);
 
@@ -566,7 +562,7 @@ public class PredicatesTest extends TestCase {
     assertFalse(isNumber.apply(null));
   }
 
-  @GwtIncompatible // Predicates.instanceOf
+  // Predicates.instanceOf
   public void testIsInstanceOf_interface() {
     Predicate<Object> isComparable = Predicates.instanceOf(Comparable.class);
 
@@ -576,7 +572,7 @@ public class PredicatesTest extends TestCase {
     assertFalse(isComparable.apply(null));
   }
 
-  @GwtIncompatible // Predicates.instanceOf
+  // Predicates.instanceOf
   public void testIsInstanceOf_equality() {
     new EqualsTester()
         .addEqualityGroup(
@@ -586,12 +582,12 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // Predicates.instanceOf, SerializableTester
+  // Predicates.instanceOf, SerializableTester
   public void testIsInstanceOf_serialization() {
     checkSerialization(Predicates.instanceOf(Integer.class));
   }
 
-  @GwtIncompatible // Predicates.subtypeOf
+  // Predicates.subtypeOf
   public void testSubtypeOf_apply() {
     Predicate<Class<?>> isInteger = Predicates.subtypeOf(Integer.class);
 
@@ -605,7 +601,7 @@ public class PredicatesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Predicates.subtypeOf
+  // Predicates.subtypeOf
   public void testSubtypeOf_subclass() {
     Predicate<Class<?>> isNumber = Predicates.subtypeOf(Number.class);
 
@@ -613,7 +609,7 @@ public class PredicatesTest extends TestCase {
     assertTrue(isNumber.apply(Float.class));
   }
 
-  @GwtIncompatible // Predicates.subtypeOf
+  // Predicates.subtypeOf
   public void testSubtypeOf_interface() {
     Predicate<Class<?>> isComparable = Predicates.subtypeOf(Comparable.class);
 
@@ -621,7 +617,7 @@ public class PredicatesTest extends TestCase {
     assertTrue(isComparable.apply(Float.class));
   }
 
-  @GwtIncompatible // Predicates.subtypeOf
+  // Predicates.subtypeOf
   public void testSubtypeOf_equality() {
     new EqualsTester()
         .addEqualityGroup(Predicates.subtypeOf(Integer.class))
@@ -630,7 +626,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // Predicates.subtypeOf, SerializableTester
+  // Predicates.subtypeOf, SerializableTester
   public void testSubtypeOf_serialization() {
     Predicate<Class<?>> predicate = Predicates.subtypeOf(Integer.class);
     Predicate<Class<?>> reserialized = SerializableTester.reserializeAndAssert(predicate);
@@ -657,7 +653,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testIsNull_serialization() {
     Predicate<String> pre = Predicates.isNull();
     Predicate<String> post = SerializableTester.reserializeAndAssert(pre);
@@ -678,7 +674,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNotNull_serialization() {
     checkSerialization(Predicates.notNull());
   }
@@ -709,7 +705,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testIn_serialization() {
     checkSerialization(Predicates.in(Arrays.asList(1, 2, 3, null)));
   }
@@ -757,14 +753,14 @@ public class PredicatesTest extends TestCase {
     // Predicate<Integer> p4 = Predicates.<Integer>in(nums);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Predicates.class);
   }
 
   @SuppressWarnings("unchecked") // varargs
-  @GwtIncompatible // SerializbleTester
+  // SerializbleTester
   public void testCascadingSerialization() throws Exception {
     // Eclipse says Predicate<Integer>; javac says Predicate<Object>.
     Predicate<? super Integer> nasty =
@@ -815,7 +811,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testComposeSerialization() {
     Function<String, String> trim = TrimStringFunction.INSTANCE;
     Predicate<String> equalsFoo = Predicates.equalTo("Foo");
@@ -828,14 +824,14 @@ public class PredicatesTest extends TestCase {
    * works, so there are only trivial tests of that aspect. TODO: Fix comment style once annotation
    * stripper is fixed.
    */
-  @GwtIncompatible // Predicates.containsPattern
+  // Predicates.containsPattern
   public void testContainsPattern_apply() {
     Predicate<CharSequence> isFoobar = Predicates.containsPattern("^Fo.*o.*bar$");
     assertTrue(isFoobar.apply("Foxyzoabcbar"));
     assertFalse(isFoobar.apply("Foobarx"));
   }
 
-  @GwtIncompatible // Predicates.containsPattern
+  // Predicates.containsPattern
   public void testContains_apply() {
     Predicate<CharSequence> isFoobar = Predicates.contains(Pattern.compile("^Fo.*o.*bar$"));
 
@@ -843,7 +839,7 @@ public class PredicatesTest extends TestCase {
     assertFalse(isFoobar.apply("Foobarx"));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testContainsPattern_nulls() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     Predicate<CharSequence> isWooString = Predicates.containsPattern("Woo");
@@ -851,7 +847,7 @@ public class PredicatesTest extends TestCase {
     tester.testAllPublicInstanceMethods(isWooString);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testContains_nulls() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     Predicate<CharSequence> isWooPattern = Predicates.contains(Pattern.compile("Woo"));
@@ -859,14 +855,14 @@ public class PredicatesTest extends TestCase {
     tester.testAllPublicInstanceMethods(isWooPattern);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testContainsPattern_serialization() {
     Predicate<CharSequence> pre = Predicates.containsPattern("foo");
     Predicate<CharSequence> post = SerializableTester.reserializeAndAssert(pre);
     assertEquals(pre.apply("foo"), post.apply("foo"));
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testContains_equals() {
     new EqualsTester()
         .addEqualityGroup(
@@ -897,12 +893,12 @@ public class PredicatesTest extends TestCase {
     assertTrue(Predicates.and(p1, p2).hashCode() != Predicates.or(p1, p2).hashCode());
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Predicates.class).testNulls();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // TODO(cpovirk): ClassNotFoundException: com.google.common.base.Function
   public void testEqualsAndSerializable() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Predicates.class).testEqualsAndSerializable();
@@ -956,7 +952,7 @@ public class PredicatesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   private static void checkSerialization(Predicate<? super Integer> predicate) {
     Predicate<? super Integer> reserialized = SerializableTester.reserializeAndAssert(predicate);
     assertEvalsLike(predicate, reserialized);
diff --git a/android/guava-tests/test/com/google/common/base/SplitterTest.java b/android/guava-tests/test/com/google/common/base/SplitterTest.java
index 46928aa..f81189e 100644
--- a/android/guava-tests/test/com/google/common/base/SplitterTest.java
+++ b/android/guava-tests/test/com/google/common/base/SplitterTest.java
@@ -18,10 +18,7 @@ package com.google.common.base;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Splitter.MapSplitter;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.testing.NullPointerTester;
 import java.util.Iterator;
 import java.util.List;
@@ -30,7 +27,6 @@ import java.util.regex.Pattern;
 import junit.framework.TestCase;
 
 /** @author Julien Silland */
-@GwtCompatible(emulated = true)
 public class SplitterTest extends TestCase {
 
   private static final Splitter COMMA_SPLITTER = Splitter.on(',');
@@ -287,42 +283,42 @@ public class SplitterTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSimpleSplit() {
     String simple = "a,b,c";
     Iterable<String> letters = Splitter.onPattern(",").split(simple);
     assertThat(letters).containsExactly("a", "b", "c").inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSimpleSplitWithNoDelimiter() {
     String simple = "a,b,c";
     Iterable<String> letters = Splitter.onPattern("foo").split(simple);
     assertThat(letters).containsExactly("a,b,c").inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSplitWithDoubleDelimiter() {
     String doubled = "a,,b,c";
     Iterable<String> letters = Splitter.onPattern(",").split(doubled);
     assertThat(letters).containsExactly("a", "", "b", "c").inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSplitWithDoubleDelimiterAndSpace() {
     String doubled = "a,, b,c";
     Iterable<String> letters = Splitter.onPattern(",").split(doubled);
     assertThat(letters).containsExactly("a", "", " b", "c").inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSplitWithTrailingDelimiter() {
     String trailing = "a,b,c,";
     Iterable<String> letters = Splitter.onPattern(",").split(trailing);
     assertThat(letters).containsExactly("a", "b", "c", "").inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSplitWithLeadingDelimiter() {
     String leading = ",a,b,c";
     Iterable<String> letters = Splitter.onPattern(",").split(leading);
@@ -331,7 +327,7 @@ public class SplitterTest extends TestCase {
 
   // TODO(kevinb): the name of this method suggests it might not actually be testing what it
   // intends to be testing?
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSplitWithMultipleLetters() {
     Iterable<String> testPatterningMotto =
         Splitter.onPattern("-").split("Testing-rocks-Debugging-sucks");
@@ -340,19 +336,19 @@ public class SplitterTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   private static Pattern literalDotPattern() {
     return Pattern.compile("\\.");
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWithDoubleDelimiterOmitEmptyStrings() {
     String doubled = "a..b.c";
     Iterable<String> letters = Splitter.on(literalDotPattern()).omitEmptyStrings().split(doubled);
     assertThat(letters).containsExactly("a", "b", "c").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   @AndroidIncompatible // Bug in older versions of Android we test against, since fixed.
   public void testPatternSplitLookBehind() {
     if (!CommonPattern.isPcreLike()) {
@@ -365,7 +361,7 @@ public class SplitterTest extends TestCase {
     // splits into chunks ending in :
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   @AndroidIncompatible // Bug in older versions of Android we test against, since fixed.
   public void testPatternSplitWordBoundary() {
     String string = "foo<bar>bletch";
@@ -373,7 +369,7 @@ public class SplitterTest extends TestCase {
     assertThat(words).containsExactly("foo", "<", "bar", ">", "bletch").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWordBoundary_singleCharInput() {
     String string = "f";
     Iterable<String> words = Splitter.on(Pattern.compile("\\b")).split(string);
@@ -381,21 +377,21 @@ public class SplitterTest extends TestCase {
   }
 
   @AndroidIncompatible // Apparently Gingerbread's regex API is buggy.
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWordBoundary_singleWordInput() {
     String string = "foo";
     Iterable<String> words = Splitter.on(Pattern.compile("\\b")).split(string);
     assertThat(words).containsExactly("foo").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitEmptyToken() {
     String emptyToken = "a. .c";
     Iterable<String> letters = Splitter.on(literalDotPattern()).trimResults().split(emptyToken);
     assertThat(letters).containsExactly("a", "", "c").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitEmptyTokenOmitEmptyStrings() {
     String emptyToken = "a. .c";
     Iterable<String> letters =
@@ -403,41 +399,41 @@ public class SplitterTest extends TestCase {
     assertThat(letters).containsExactly("a", "c").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitOnOnlyDelimiter() {
     Iterable<String> blankblank = Splitter.on(literalDotPattern()).split(".");
 
     assertThat(blankblank).containsExactly("", "").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitOnOnlyDelimitersOmitEmptyStrings() {
     Iterable<String> empty = Splitter.on(literalDotPattern()).omitEmptyStrings().split("...");
     assertThat(empty).isEmpty();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitMatchingIsGreedy() {
     String longDelimiter = "a, b,   c";
     Iterable<String> letters = Splitter.on(Pattern.compile(",\\s*")).split(longDelimiter);
     assertThat(letters).containsExactly("a", "b", "c").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWithLongLeadingDelimiter() {
     String longDelimiter = ", a, b, c";
     Iterable<String> letters = Splitter.on(Pattern.compile(", ")).split(longDelimiter);
     assertThat(letters).containsExactly("", "a", "b", "c").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWithLongTrailingDelimiter() {
     String longDelimiter = "a, b, c/ ";
     Iterable<String> letters = Splitter.on(Pattern.compile("[,/]\\s")).split(longDelimiter);
     assertThat(letters).containsExactly("a", "b", "c", "").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitInvalidPattern() {
     try {
       Splitter.on(Pattern.compile("a*"));
@@ -446,7 +442,7 @@ public class SplitterTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWithTrim() {
     String jacksons =
         "arfo(Marlon)aorf, (Michael)orfa, afro(Jackie)orfa, " + "ofar(Jemaine), aff(Tito)";
@@ -467,7 +463,7 @@ public class SplitterTest extends TestCase {
     assertIteratorIsUnmodifiable(Splitter.on(",").split("a,b").iterator());
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testSplitterIterableIsUnmodifiable_pattern() {
     assertIteratorIsUnmodifiable(Splitter.on(Pattern.compile(",")).split("a,b").iterator());
   }
@@ -489,7 +485,7 @@ public class SplitterTest extends TestCase {
     assertSplitterIterableIsLazy(Splitter.on(","));
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   @AndroidIncompatible // not clear that j.u.r.Matcher promises to handle mutations during use
   public void testSplitterIterableIsLazy_pattern() {
     if (!CommonPattern.isPcreLike()) {
@@ -663,7 +659,7 @@ public class SplitterTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Splitter.class);
diff --git a/android/guava-tests/test/com/google/common/base/StopwatchTest.java b/android/guava-tests/test/com/google/common/base/StopwatchTest.java
index b85ebb7..2c1b2de 100644
--- a/android/guava-tests/test/com/google/common/base/StopwatchTest.java
+++ b/android/guava-tests/test/com/google/common/base/StopwatchTest.java
@@ -20,7 +20,6 @@ import static java.util.concurrent.TimeUnit.MICROSECONDS;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.testing.FakeTicker;
 import junit.framework.TestCase;
 
@@ -29,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class StopwatchTest extends TestCase {
 
   private final FakeTicker ticker = new FakeTicker();
diff --git a/android/guava-tests/test/com/google/common/base/StringsTest.java b/android/guava-tests/test/com/google/common/base/StringsTest.java
index ac3ad20..a2a17c5 100644
--- a/android/guava-tests/test/com/google/common/base/StringsTest.java
+++ b/android/guava-tests/test/com/google/common/base/StringsTest.java
@@ -18,8 +18,6 @@ package com.google.common.base;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import junit.framework.TestCase;
 
@@ -28,7 +26,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class StringsTest extends TestCase {
   public void testNullToEmpty() {
     assertEquals("", Strings.nullToEmpty(null));
@@ -232,7 +229,7 @@ public class StringsTest extends TestCase {
     assertEquals("(Object[])null", Strings.lenientFormat("%s", (Object[]) null));
   }
 
-  @GwtIncompatible // GWT reflection includes less data
+  // GWT reflection includes less data
   public void testLenientFormat_badArgumentToString() {
     assertThat(Strings.lenientFormat("boiler %s plate", new ThrowsOnToString()))
         .matches(
@@ -252,7 +249,7 @@ public class StringsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Strings.class);
diff --git a/android/guava-tests/test/com/google/common/base/SuppliersTest.java b/android/guava-tests/test/com/google/common/base/SuppliersTest.java
index a97fe65..8e23fb6 100644
--- a/android/guava-tests/test/com/google/common/base/SuppliersTest.java
+++ b/android/guava-tests/test/com/google/common/base/SuppliersTest.java
@@ -19,8 +19,6 @@ package com.google.common.base;
 import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Lists;
 import com.google.common.testing.ClassSanityTester;
 import com.google.common.testing.EqualsTester;
@@ -39,7 +37,6 @@ import junit.framework.TestCase;
  * @author Laurence Gonsalves
  * @author Harry Heymann
  */
-@GwtCompatible(emulated = true)
 public class SuppliersTest extends TestCase {
 
   static class CountingSupplier implements Supplier<Integer> {
@@ -126,7 +123,7 @@ public class SuppliersTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testMemoizeNonSerializable() throws Exception {
     CountingSupplier countingSupplier = new CountingSupplier();
     Supplier<Integer> memoizedSupplier = Suppliers.memoize(countingSupplier);
@@ -146,7 +143,7 @@ public class SuppliersTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testMemoizeSerializable() throws Exception {
     SerializableCountingSupplier countingSupplier = new SerializableCountingSupplier();
     Supplier<Integer> memoizedSupplier = Suppliers.memoize(countingSupplier);
@@ -213,7 +210,7 @@ public class SuppliersTest extends TestCase {
     assertEquals(Integer.valueOf(1), result.get(1));
   }
 
-  @GwtIncompatible // Thread.sleep
+  // Thread.sleep
   public void testMemoizeWithExpiration() throws InterruptedException {
     CountingSupplier countingSupplier = new CountingSupplier();
 
@@ -223,7 +220,7 @@ public class SuppliersTest extends TestCase {
     checkExpiration(countingSupplier, memoizedSupplier);
   }
 
-  @GwtIncompatible // Thread.sleep, SerializationTester
+  // Thread.sleep, SerializationTester
   public void testMemoizeWithExpirationSerialized() throws InterruptedException {
     SerializableCountingSupplier countingSupplier = new SerializableCountingSupplier();
 
@@ -240,7 +237,7 @@ public class SuppliersTest extends TestCase {
     checkExpiration(countingCopy, copy);
   }
 
-  @GwtIncompatible // Thread.sleep
+  // Thread.sleep
   private void checkExpiration(
       CountingSupplier countingSupplier, Supplier<Integer> memoizedSupplier)
       throws InterruptedException {
@@ -278,7 +275,7 @@ public class SuppliersTest extends TestCase {
     assertNull(nullSupplier.get());
   }
 
-  @GwtIncompatible // Thread
+  // Thread
 
   public void testExpiringMemoizedSupplierThreadSafe() throws Throwable {
     Function<Supplier<Boolean>, Supplier<Boolean>> memoizer =
@@ -291,7 +288,7 @@ public class SuppliersTest extends TestCase {
     testSupplierThreadSafe(memoizer);
   }
 
-  @GwtIncompatible // Thread
+  // Thread
 
   public void testMemoizedSupplierThreadSafe() throws Throwable {
     Function<Supplier<Boolean>, Supplier<Boolean>> memoizer =
@@ -304,7 +301,7 @@ public class SuppliersTest extends TestCase {
     testSupplierThreadSafe(memoizer);
   }
 
-  @GwtIncompatible // Thread
+  // Thread
   public void testSupplierThreadSafe(Function<Supplier<Boolean>, Supplier<Boolean>> memoizer)
       throws Throwable {
     final AtomicInteger count = new AtomicInteger(0);
@@ -380,7 +377,7 @@ public class SuppliersTest extends TestCase {
     assertEquals(1, count.get());
   }
 
-  @GwtIncompatible // Thread
+  // Thread
 
   public void testSynchronizedSupplierThreadSafe() throws InterruptedException {
     final Supplier<Integer> nonThreadSafe =
@@ -427,7 +424,7 @@ public class SuppliersTest extends TestCase {
     assertEquals(14, (int) supplierFunction.apply(supplier));
   }
 
-  @GwtIncompatible // SerializationTester
+  // SerializationTester
   public void testSerialization() {
     assertEquals(Integer.valueOf(5), reserialize(Suppliers.ofInstance(5)).get());
     assertEquals(
@@ -443,12 +440,12 @@ public class SuppliersTest extends TestCase {
         reserialize(Suppliers.synchronizedSupplier(Suppliers.ofInstance(5))).get());
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testSuppliersNullChecks() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Suppliers.class).testNulls();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // TODO(cpovirk): ClassNotFoundException: com.google.common.base.Function
   public void testSuppliersSerializable() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Suppliers.class).testSerializable();
diff --git a/android/guava-tests/test/com/google/common/base/ThrowablesTest.java b/android/guava-tests/test/com/google/common/base/ThrowablesTest.java
index e4c64aa..87c636d 100644
--- a/android/guava-tests/test/com/google/common/base/ThrowablesTest.java
+++ b/android/guava-tests/test/com/google/common/base/ThrowablesTest.java
@@ -26,8 +26,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 import static java.util.regex.Pattern.quote;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Iterables;
 import com.google.common.primitives.Ints;
 import com.google.common.testing.NullPointerTester;
@@ -39,7 +37,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class ThrowablesTest extends TestCase {
   public void testThrowIfUnchecked_Unchecked() {
     try {
@@ -62,7 +59,7 @@ public class ThrowablesTest extends TestCase {
     throwIfUnchecked(new SomeCheckedException());
   }
 
-  @GwtIncompatible // propagateIfPossible
+  // propagateIfPossible
   public void testPropagateIfPossible_NoneDeclared_NoneThrown() {
     Sample sample =
         new Sample() {
@@ -81,7 +78,7 @@ public class ThrowablesTest extends TestCase {
     sample.noneDeclared();
   }
 
-  @GwtIncompatible // propagateIfPossible
+  // propagateIfPossible
   public void testPropagateIfPossible_NoneDeclared_UncheckedThrown() {
     Sample sample =
         new Sample() {
@@ -104,7 +101,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible
+  // propagateIfPossible
   public void testPropagateIfPossible_NoneDeclared_UndeclaredThrown() {
     Sample sample =
         new Sample() {
@@ -127,7 +124,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class)
+  // propagateIfPossible(Throwable, Class)
   public void testPropagateIfPossible_OneDeclared_NoneThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -148,7 +145,7 @@ public class ThrowablesTest extends TestCase {
     sample.oneDeclared();
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class)
+  // propagateIfPossible(Throwable, Class)
   public void testPropagateIfPossible_OneDeclared_UncheckedThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -171,7 +168,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class)
+  // propagateIfPossible(Throwable, Class)
   public void testPropagateIfPossible_OneDeclared_CheckedThrown() {
     Sample sample =
         new Sample() {
@@ -194,7 +191,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class)
+  // propagateIfPossible(Throwable, Class)
   public void testPropagateIfPossible_OneDeclared_UndeclaredThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -217,7 +214,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class, Class)
+  // propagateIfPossible(Throwable, Class, Class)
   public void testPropagateIfPossible_TwoDeclared_NoneThrown()
       throws SomeCheckedException, SomeOtherCheckedException {
     Sample sample =
@@ -238,7 +235,7 @@ public class ThrowablesTest extends TestCase {
     sample.twoDeclared();
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class, Class)
+  // propagateIfPossible(Throwable, Class, Class)
   public void testPropagateIfPossible_TwoDeclared_UncheckedThrown()
       throws SomeCheckedException, SomeOtherCheckedException {
     Sample sample =
@@ -263,7 +260,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class, Class)
+  // propagateIfPossible(Throwable, Class, Class)
   public void testPropagateIfPossible_TwoDeclared_CheckedThrown() throws SomeOtherCheckedException {
     Sample sample =
         new Sample() {
@@ -287,7 +284,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class, Class)
+  // propagateIfPossible(Throwable, Class, Class)
   public void testPropagateIfPossible_TwoDeclared_OtherCheckedThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -319,22 +316,22 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible
+  // propagateIfPossible
   public void testPropageIfPossible_null() throws SomeCheckedException {
     Throwables.propagateIfPossible(null);
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class)
+  // propagateIfPossible(Throwable, Class)
   public void testPropageIfPossible_OneDeclared_null() throws SomeCheckedException {
     Throwables.propagateIfPossible(null, SomeCheckedException.class);
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class, Class)
+  // propagateIfPossible(Throwable, Class, Class)
   public void testPropageIfPossible_TwoDeclared_null() throws SomeCheckedException {
     Throwables.propagateIfPossible(null, SomeCheckedException.class, SomeUncheckedException.class);
   }
 
-  @GwtIncompatible // propagate
+  // propagate
   public void testPropagate_NoneDeclared_NoneThrown() {
     Sample sample =
         new Sample() {
@@ -352,7 +349,7 @@ public class ThrowablesTest extends TestCase {
     sample.noneDeclared();
   }
 
-  @GwtIncompatible // propagate
+  // propagate
   public void testPropagate_NoneDeclared_UncheckedThrown() {
     Sample sample =
         new Sample() {
@@ -374,7 +371,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagate
+  // propagate
   public void testPropagate_NoneDeclared_ErrorThrown() {
     Sample sample =
         new Sample() {
@@ -396,7 +393,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagate
+  // propagate
   public void testPropagate_NoneDeclared_CheckedThrown() {
     Sample sample =
         new Sample() {
@@ -419,17 +416,17 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testThrowIfInstanceOf_Unchecked() throws SomeCheckedException {
     throwIfInstanceOf(new SomeUncheckedException(), SomeCheckedException.class);
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testThrowIfInstanceOf_CheckedDifferent() throws SomeCheckedException {
     throwIfInstanceOf(new SomeOtherCheckedException(), SomeCheckedException.class);
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testThrowIfInstanceOf_CheckedSame() {
     try {
       throwIfInstanceOf(new SomeCheckedException(), SomeCheckedException.class);
@@ -438,7 +435,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testThrowIfInstanceOf_CheckedSubclass() {
     try {
       throwIfInstanceOf(new SomeCheckedException() {}, SomeCheckedException.class);
@@ -447,7 +444,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testPropagateIfInstanceOf_NoneThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -466,7 +463,7 @@ public class ThrowablesTest extends TestCase {
     sample.oneDeclared();
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testPropagateIfInstanceOf_DeclaredThrown() {
     Sample sample =
         new Sample() {
@@ -489,7 +486,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testPropagateIfInstanceOf_UncheckedThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -512,7 +509,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testPropagateIfInstanceOf_UndeclaredThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -536,7 +533,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testThrowIfInstanceOf_null() throws SomeCheckedException {
     try {
       throwIfInstanceOf(null, SomeCheckedException.class);
@@ -545,7 +542,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testPropageIfInstanceOf_null() throws SomeCheckedException {
     Throwables.propagateIfInstanceOf(null, SomeCheckedException.class);
   }
@@ -625,7 +622,7 @@ public class ThrowablesTest extends TestCase {
     throw new SomeUndeclaredCheckedException();
   }
 
-  @GwtIncompatible // getStackTraceAsString(Throwable)
+  // getStackTraceAsString(Throwable)
   public void testGetStackTraceAsString() {
     class StackTraceException extends Exception {
       StackTraceException(String message) {
@@ -679,7 +676,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Throwables.getCauseAs(Throwable, Class)
+  // Throwables.getCauseAs(Throwable, Class)
   public void testGetCauseAs() {
     SomeCheckedException cause = new SomeCheckedException();
     SomeChainingException thrown = new SomeChainingException(cause);
@@ -697,7 +694,7 @@ public class ThrowablesTest extends TestCase {
   }
 
   @AndroidIncompatible // No getJavaLangAccess in Android (at least not in the version we use).
-  @GwtIncompatible // lazyStackTraceIsLazy()
+  // lazyStackTraceIsLazy()
   public void testLazyStackTraceWorksInProd() {
     // TODO(b/64442212): Remove this guard once lazyStackTrace() works in Java 9+.
     Integer javaVersion = Ints.tryParse(JAVA_SPECIFICATION_VERSION.value());
@@ -708,7 +705,7 @@ public class ThrowablesTest extends TestCase {
     assertTrue(lazyStackTraceIsLazy());
   }
 
-  @GwtIncompatible // lazyStackTrace(Throwable)
+  // lazyStackTrace(Throwable)
   public void testLazyStackTrace() {
     Exception e = new Exception();
     StackTraceElement[] originalStackTrace = e.getStackTrace();
@@ -731,7 +728,7 @@ public class ThrowablesTest extends TestCase {
     assertThat(lazyStackTrace(e)).containsExactly((Object[]) originalStackTrace).inOrder();
   }
 
-  @GwtIncompatible // lazyStackTrace
+  // lazyStackTrace
   private void doTestLazyStackTraceFallback() {
     assertFalse(lazyStackTraceIsLazy());
 
@@ -749,7 +746,7 @@ public class ThrowablesTest extends TestCase {
     assertThat(lazyStackTrace(e)).isEmpty();
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     new NullPointerTester().testAllPublicStaticMethods(Throwables.class);
   }
diff --git a/android/guava-tests/test/com/google/common/base/ToStringHelperTest.java b/android/guava-tests/test/com/google/common/base/ToStringHelperTest.java
index db15f2e..de74a75 100644
--- a/android/guava-tests/test/com/google/common/base/ToStringHelperTest.java
+++ b/android/guava-tests/test/com/google/common/base/ToStringHelperTest.java
@@ -16,9 +16,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMap;
 import java.util.Arrays;
 import java.util.Map;
 import junit.framework.TestCase;
@@ -28,10 +25,9 @@ import junit.framework.TestCase;
  *
  * @author Jason Lee
  */
-@GwtCompatible
 public class ToStringHelperTest extends TestCase {
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testConstructor_instance() {
     String toTest = MoreObjects.toStringHelper(this).toString();
     assertEquals("ToStringHelperTest{}", toTest);
@@ -42,7 +38,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testConstructor_innerClass() {
     String toTest = MoreObjects.toStringHelper(new TestClass()).toString();
     assertEquals("TestClass{}", toTest);
@@ -53,7 +49,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testConstructor_anonymousClass() {
     String toTest = MoreObjects.toStringHelper(new Object() {}).toString();
     assertEquals("{}", toTest);
@@ -64,7 +60,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testConstructor_classObject() {
     String toTest = MoreObjects.toStringHelper(TestClass.class).toString();
     assertEquals("TestClass{}", toTest);
@@ -80,7 +76,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("FooBar{}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringHelper_localInnerClass() {
     // Local inner classes have names ending like "Outer.$1Inner"
     class LocalInnerClass {}
@@ -94,7 +90,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringHelper_localInnerNestedClass() {
     class LocalInnerClass {
       class LocalInnerNestedClass {}
@@ -113,7 +109,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringHelper_moreThanNineAnonymousClasses() {
     // The nth anonymous class has a name ending like "Outer.$n"
     Object unused1 = new Object() {};
@@ -147,20 +143,20 @@ public class ToStringHelperTest extends TestCase {
   }
 
   // all remaining test are on an inner class with various fields
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_oneField() {
     String toTest = MoreObjects.toStringHelper(new TestClass()).add("field1", "Hello").toString();
     assertEquals("TestClass{field1=Hello}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_oneIntegerField() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass()).add("field1", new Integer(42)).toString();
     assertEquals("TestClass{field1=42}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_nullInteger() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass()).add("field1", (Integer) null).toString();
@@ -184,7 +180,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{field1\\=null\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_complexFields() {
 
     Map<String, Integer> map =
@@ -230,7 +226,7 @@ public class ToStringHelperTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_addWithNullValue() {
     final String result = MoreObjects.toStringHelper(new TestClass()).add("Hello", null).toString();
 
@@ -242,7 +238,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(result, result.matches(".*\\{Hello\\=null\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_ToStringTwice() {
     MoreObjects.ToStringHelper helper =
         MoreObjects.toStringHelper(new TestClass())
@@ -261,7 +257,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals(expected2, helper.toString());
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_addValue() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -288,7 +284,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(expected));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_addValueWithNullValue() {
     final String result =
         MoreObjects.toStringHelper(new TestClass())
@@ -313,14 +309,14 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(result, result.matches(expected));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_oneField() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass()).omitNullValues().add("field1", null).toString();
     assertEquals("TestClass{}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_manyFieldsFirstNull() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -332,7 +328,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("TestClass{field2=Googley, field3=World}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_manyFieldsOmitAfterNull() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -344,7 +340,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("TestClass{field2=Googley, field3=World}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_manyFieldsLastNull() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -356,14 +352,14 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("TestClass{field1=Hello, field2=Googley}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitEmptyValues_oneValue() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass()).omitNullValues().addValue(null).toString();
     assertEquals("TestClass{}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_manyValuesFirstNull() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -375,7 +371,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("TestClass{Googley, World}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_manyValuesLastNull() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -387,7 +383,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("TestClass{Hello, Googley}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_differentOrder() {
     String expected = "TestClass{field1=Hello, field2=Googley, field3=World}";
     String toTest1 =
@@ -408,7 +404,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals(expected, toTest2);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_canBeCalledManyTimes() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
diff --git a/android/guava-tests/test/com/google/common/base/Utf8Test.java b/android/guava-tests/test/com/google/common/base/Utf8Test.java
index 049e8d2..110d8d4 100644
--- a/android/guava-tests/test/com/google/common/base/Utf8Test.java
+++ b/android/guava-tests/test/com/google/common/base/Utf8Test.java
@@ -24,9 +24,6 @@ import static java.lang.Character.MIN_HIGH_SURROGATE;
 import static java.lang.Character.MIN_LOW_SURROGATE;
 import static java.lang.Character.MIN_SUPPLEMENTARY_CODE_POINT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Random;
@@ -39,7 +36,6 @@ import junit.framework.TestCase;
  * @author Martin Buchholz
  * @author Clément Roux
  */
-@GwtCompatible(emulated = true)
 public class Utf8Test extends TestCase {
 
   private static final ImmutableList<String> ILL_FORMED_STRINGS;
@@ -187,19 +183,19 @@ public class Utf8Test extends TestCase {
           FOUR_BYTE_ROUNDTRIPPABLE_CHARACTERS;
 
   /** Tests that round tripping of all two byte permutations work. */
-  @GwtIncompatible // java.nio.charset.Charset
+  // java.nio.charset.Charset
   public void testIsWellFormed_1Byte() {
     testBytes(1, EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT);
   }
 
   /** Tests that round tripping of all two byte permutations work. */
-  @GwtIncompatible // java.nio.charset.Charset
+  // java.nio.charset.Charset
   public void testIsWellFormed_2Bytes() {
     testBytes(2, EXPECTED_TWO_BYTE_ROUNDTRIPPABLE_COUNT);
   }
 
   /** Tests that round tripping of all three byte permutations work. */
-  @GwtIncompatible // java.nio.charset.Charset
+  // java.nio.charset.Charset
 
   public void testIsWellFormed_3Bytes() {
     testBytes(3, EXPECTED_THREE_BYTE_ROUNDTRIPPABLE_COUNT);
@@ -302,7 +298,7 @@ public class Utf8Test extends TestCase {
    * @param numBytes the number of bytes in the byte array
    * @param expectedCount the expected number of roundtrippable permutations
    */
-  @GwtIncompatible // java.nio.charset.Charset
+  // java.nio.charset.Charset
   private static void testBytes(int numBytes, long expectedCount) {
     testBytes(numBytes, expectedCount, 0, -1);
   }
@@ -317,7 +313,7 @@ public class Utf8Test extends TestCase {
    * @param lim the limit of bytes to process encoded as a long as big-endian, or -1 to mean the max
    *     limit for numBytes
    */
-  @GwtIncompatible // java.nio.charset.Charset
+  // java.nio.charset.Charset
   private static void testBytes(int numBytes, long expectedCount, long start, long lim) {
     byte[] bytes = new byte[numBytes];
     if (lim == -1) {
diff --git a/android/guava-tests/test/com/google/common/base/VerifyTest.java b/android/guava-tests/test/com/google/common/base/VerifyTest.java
index 37c6efc..fd2cfda 100644
--- a/android/guava-tests/test/com/google/common/base/VerifyTest.java
+++ b/android/guava-tests/test/com/google/common/base/VerifyTest.java
@@ -18,13 +18,10 @@ import static com.google.common.base.Verify.verify;
 import static com.google.common.base.Verify.verifyNotNull;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
 /** Unit test for {@link com.google.common.base.Verify}. */
-@GwtCompatible(emulated = true)
 public class VerifyTest extends TestCase {
   public void testVerify_simple_success() {
     verify(true);
@@ -93,7 +90,7 @@ public class VerifyTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     // Don't bother testing: Verify is like Preconditions. See the discussion on that class.
   }
diff --git a/android/guava-tests/test/com/google/common/cache/AbstractCacheTest.java b/android/guava-tests/test/com/google/common/cache/AbstractCacheTest.java
index 13ef33d..5eee405 100644
--- a/android/guava-tests/test/com/google/common/cache/AbstractCacheTest.java
+++ b/android/guava-tests/test/com/google/common/cache/AbstractCacheTest.java
@@ -18,8 +18,6 @@ package com.google.common.cache;
 
 import com.google.common.cache.AbstractCache.SimpleStatsCounter;
 import com.google.common.cache.AbstractCache.StatsCounter;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicReference;
diff --git a/android/guava-tests/test/com/google/common/cache/AndroidIncompatible.java b/android/guava-tests/test/com/google/common/cache/AndroidIncompatible.java
index 135f524..d7a7fbf 100644
--- a/android/guava-tests/test/com/google/common/cache/AndroidIncompatible.java
+++ b/android/guava-tests/test/com/google/common/cache/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-tests/test/com/google/common/cache/CacheBuilderFactory.java b/android/guava-tests/test/com/google/common/cache/CacheBuilderFactory.java
index 04b6f1e..0a93ac8 100644
--- a/android/guava-tests/test/com/google/common/cache/CacheBuilderFactory.java
+++ b/android/guava-tests/test/com/google/common/cache/CacheBuilderFactory.java
@@ -26,7 +26,6 @@ import com.google.common.collect.Sets;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Helper class for creating {@link CacheBuilder} instances with all combinations of several sets of
diff --git a/android/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java b/android/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java
index 2ae8144..d7a449f 100644
--- a/android/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java
+++ b/android/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java
@@ -16,10 +16,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.FakeTicker;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -37,7 +33,6 @@ import junit.framework.TestCase;
  *
  * @author Jon Donovan
  */
-@GwtCompatible
 public class CacheBuilderGwtTest extends TestCase {
 
   private FakeTicker fakeTicker;
diff --git a/android/guava-tests/test/com/google/common/cache/CacheBuilderTest.java b/android/guava-tests/test/com/google/common/cache/CacheBuilderTest.java
index 1a9faee..56b36a6 100644
--- a/android/guava-tests/test/com/google/common/cache/CacheBuilderTest.java
+++ b/android/guava-tests/test/com/google/common/cache/CacheBuilderTest.java
@@ -27,8 +27,6 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ticker;
 import com.google.common.cache.TestingRemovalListeners.CountingRemovalListener;
 import com.google.common.cache.TestingRemovalListeners.QueuingRemovalListener;
@@ -47,7 +45,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import junit.framework.TestCase;
 
 /** Unit tests for CacheBuilder. */
-@GwtCompatible(emulated = true)
 public class CacheBuilderTest extends TestCase {
 
   public void testNewBuilder() {
@@ -79,7 +76,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // CacheTesting
+  // CacheTesting
   public void testInitialCapacity_small() {
     LoadingCache<?, ?> cache = CacheBuilder.newBuilder().initialCapacity(5).build(identityLoader());
     LocalCache<?, ?> map = CacheTesting.toLocalCache(cache);
@@ -91,7 +88,7 @@ public class CacheBuilderTest extends TestCase {
     assertEquals(2, map.segments[3].table.length());
   }
 
-  @GwtIncompatible // CacheTesting
+  // CacheTesting
   public void testInitialCapacity_smallest() {
     LoadingCache<?, ?> cache = CacheBuilder.newBuilder().initialCapacity(0).build(identityLoader());
     LocalCache<?, ?> map = CacheTesting.toLocalCache(cache);
@@ -129,7 +126,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // CacheTesting
+  // CacheTesting
   public void testConcurrencyLevel_small() {
     LoadingCache<?, ?> cache =
         CacheBuilder.newBuilder().concurrencyLevel(1).build(identityLoader());
@@ -161,7 +158,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // maximumWeight
+  // maximumWeight
   public void testMaximumSize_andWeight() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder().maximumSize(16);
     try {
@@ -171,7 +168,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // digs into internals of the non-GWT implementation
+  // digs into internals of the non-GWT implementation
   public void testMaximumSize_largerThanInt() {
     CacheBuilder<Object, Object> builder =
         CacheBuilder.newBuilder().initialCapacity(512).maximumSize(Long.MAX_VALUE);
@@ -179,7 +176,7 @@ public class CacheBuilderTest extends TestCase {
     assertThat(cache.segments.length * cache.segments[0].table.length()).isEqualTo(512);
   }
 
-  @GwtIncompatible // maximumWeight
+  // maximumWeight
   public void testMaximumWeight_negative() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder();
     try {
@@ -189,7 +186,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // maximumWeight
+  // maximumWeight
   public void testMaximumWeight_setTwice() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder().maximumWeight(16);
     try {
@@ -205,7 +202,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // maximumWeight
+  // maximumWeight
   public void testMaximumWeight_withoutWeigher() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder().maximumWeight(1);
     try {
@@ -215,7 +212,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // weigher
+  // weigher
   public void testWeigher_withoutMaximumWeight() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder().weigher(constantWeigher(42));
     try {
@@ -225,7 +222,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // weigher
+  // weigher
   public void testWeigher_withMaximumSize() {
     try {
       CacheBuilder.newBuilder().weigher(constantWeigher(42)).maximumSize(1);
@@ -239,7 +236,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // weakKeys
+  // weakKeys
   public void testKeyStrengthSetTwice() {
     CacheBuilder<Object, Object> builder1 = CacheBuilder.newBuilder().weakKeys();
     try {
@@ -249,7 +246,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // weakValues
+  // weakValues
   public void testValueStrengthSetTwice() {
     CacheBuilder<Object, Object> builder1 = CacheBuilder.newBuilder().weakValues();
     try {
@@ -337,7 +334,7 @@ public class CacheBuilderTest extends TestCase {
     // well, it didn't blow up.
   }
 
-  @GwtIncompatible // refreshAfterWrite
+  // refreshAfterWrite
   public void testRefresh_zero() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder();
     try {
@@ -347,7 +344,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // refreshAfterWrite
+  // refreshAfterWrite
   public void testRefresh_setTwice() {
     CacheBuilder<Object, Object> builder =
         CacheBuilder.newBuilder().refreshAfterWrite(3600, SECONDS);
@@ -385,7 +382,7 @@ public class CacheBuilderTest extends TestCase {
     assertFalse(CacheBuilder.newBuilder().build().asMap().values() instanceof Set);
   }
 
-  @GwtIncompatible // CacheTesting
+  // CacheTesting
   public void testNullCache() {
     CountingRemovalListener<Object, Object> listener = countingRemovalListener();
     LoadingCache<Object, Object> nullCache =
@@ -398,7 +395,7 @@ public class CacheBuilderTest extends TestCase {
     CacheTesting.checkEmpty(nullCache.asMap());
   }
 
-  @GwtIncompatible // QueuingRemovalListener
+  // QueuingRemovalListener
 
   public void testRemovalNotification_clear() throws InterruptedException {
     // If a clear() happens while a computation is pending, we should not get a removal
@@ -469,7 +466,7 @@ public class CacheBuilderTest extends TestCase {
    * removal listener), or else is not affected by the {@code clear()} (and therefore exists in the
    * cache afterward).
    */
-  @GwtIncompatible // QueuingRemovalListener
+  // QueuingRemovalListener
 
   public void testRemovalNotification_clear_basher() throws InterruptedException {
     // If a clear() happens close to the end of computation, one of two things should happen:
@@ -553,7 +550,7 @@ public class CacheBuilderTest extends TestCase {
    * Calls get() repeatedly from many different threads, and tests that all of the removed entries
    * (removed because of size limits or expiration) trigger appropriate removal notifications.
    */
-  @GwtIncompatible // QueuingRemovalListener
+  // QueuingRemovalListener
 
   public void testRemovalNotification_get_basher() throws InterruptedException {
     int nTasks = 1000;
@@ -633,14 +630,14 @@ public class CacheBuilderTest extends TestCase {
     assertEquals(computeCount.get(), cache.size() + removalListener.size());
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullParameters() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder();
     tester.testAllPublicInstanceMethods(builder);
   }
 
-  @GwtIncompatible // CacheTesting
+  // CacheTesting
   public void testSizingDefaults() {
     LoadingCache<?, ?> cache = CacheBuilder.newBuilder().build(identityLoader());
     LocalCache<?, ?> map = CacheTesting.toLocalCache(cache);
@@ -648,7 +645,7 @@ public class CacheBuilderTest extends TestCase {
     assertEquals(4, map.segments[0].table.length()); // capacity / conc level
   }
 
-  @GwtIncompatible // CountDownLatch
+  // CountDownLatch
   static final class DelayingIdentityLoader<T> extends CacheLoader<T, T> {
     private final AtomicBoolean shouldWait;
     private final CountDownLatch delayLatch;
diff --git a/android/guava-tests/test/com/google/common/cache/CacheLoaderTest.java b/android/guava-tests/test/com/google/common/cache/CacheLoaderTest.java
index e078ddd..4c14b92 100644
--- a/android/guava-tests/test/com/google/common/cache/CacheLoaderTest.java
+++ b/android/guava-tests/test/com/google/common/cache/CacheLoaderTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Queues;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
diff --git a/android/guava-tests/test/com/google/common/cache/CacheLoadingTest.java b/android/guava-tests/test/com/google/common/cache/CacheLoadingTest.java
index f5ea546..fdeee8f 100644
--- a/android/guava-tests/test/com/google/common/cache/CacheLoadingTest.java
+++ b/android/guava-tests/test/com/google/common/cache/CacheLoadingTest.java
@@ -29,8 +29,6 @@ import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
 import com.google.common.cache.TestingCacheLoaders.CountingLoader;
 import com.google.common.cache.TestingCacheLoaders.IdentityLoader;
 import com.google.common.cache.TestingRemovalListeners.CountingRemovalListener;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.testing.FakeTicker;
@@ -41,7 +39,6 @@ import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import java.io.IOException;
-import java.lang.ref.WeakReference;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
diff --git a/android/guava-tests/test/com/google/common/cache/CacheManualTest.java b/android/guava-tests/test/com/google/common/cache/CacheManualTest.java
index abe0b15..0ee764a 100644
--- a/android/guava-tests/test/com/google/common/cache/CacheManualTest.java
+++ b/android/guava-tests/test/com/google/common/cache/CacheManualTest.java
@@ -16,8 +16,6 @@ package com.google.common.cache;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import junit.framework.TestCase;
 
 /** @author Charles Fry */
diff --git a/android/guava-tests/test/com/google/common/cache/CacheReferencesTest.java b/android/guava-tests/test/com/google/common/cache/CacheReferencesTest.java
index 1fe2636..da63939 100644
--- a/android/guava-tests/test/com/google/common/cache/CacheReferencesTest.java
+++ b/android/guava-tests/test/com/google/common/cache/CacheReferencesTest.java
@@ -21,9 +21,7 @@ import static com.google.common.truth.Truth.assertThat;
 import com.google.common.base.Function;
 import com.google.common.cache.LocalCache.Strength;
 import com.google.common.cache.TestingRemovalListeners.CountingRemovalListener;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
-import java.lang.ref.WeakReference;
 import junit.framework.TestCase;
 
 /**
diff --git a/android/guava-tests/test/com/google/common/cache/CacheTesting.java b/android/guava-tests/test/com/google/common/cache/CacheTesting.java
index 255a894..affe7eb 100644
--- a/android/guava-tests/test/com/google/common/cache/CacheTesting.java
+++ b/android/guava-tests/test/com/google/common/cache/CacheTesting.java
@@ -28,9 +28,6 @@ import com.google.common.base.Preconditions;
 import com.google.common.cache.LocalCache.LocalLoadingCache;
 import com.google.common.cache.LocalCache.Segment;
 import com.google.common.cache.LocalCache.ValueReference;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import com.google.common.testing.EqualsTester;
@@ -44,7 +41,6 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReferenceArray;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * A collection of utilities for {@link Cache} testing.
diff --git a/android/guava-tests/test/com/google/common/cache/EmptyCachesTest.java b/android/guava-tests/test/com/google/common/cache/EmptyCachesTest.java
index a5e3a59..8e2f58b 100644
--- a/android/guava-tests/test/com/google/common/cache/EmptyCachesTest.java
+++ b/android/guava-tests/test/com/google/common/cache/EmptyCachesTest.java
@@ -23,7 +23,6 @@ import static java.util.concurrent.TimeUnit.SECONDS;
 import com.google.common.base.Function;
 import com.google.common.cache.CacheBuilderFactory.DurationSpec;
 import com.google.common.cache.LocalCache.Strength;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Maps;
 import com.google.common.testing.EqualsTester;
diff --git a/android/guava-tests/test/com/google/common/cache/ForwardingCacheTest.java b/android/guava-tests/test/com/google/common/cache/ForwardingCacheTest.java
index 412ff78..3ca6775 100644
--- a/android/guava-tests/test/com/google/common/cache/ForwardingCacheTest.java
+++ b/android/guava-tests/test/com/google/common/cache/ForwardingCacheTest.java
@@ -20,8 +20,6 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import java.util.concurrent.ExecutionException;
 import junit.framework.TestCase;
 
diff --git a/android/guava-tests/test/com/google/common/cache/ForwardingLoadingCacheTest.java b/android/guava-tests/test/com/google/common/cache/ForwardingLoadingCacheTest.java
index d78db2d..097107d 100644
--- a/android/guava-tests/test/com/google/common/cache/ForwardingLoadingCacheTest.java
+++ b/android/guava-tests/test/com/google/common/cache/ForwardingLoadingCacheTest.java
@@ -20,8 +20,6 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import java.util.concurrent.ExecutionException;
 import junit.framework.TestCase;
 
diff --git a/android/guava-tests/test/com/google/common/cache/LocalCacheTest.java b/android/guava-tests/test/com/google/common/cache/LocalCacheTest.java
index 3c4529c..60aa880 100644
--- a/android/guava-tests/test/com/google/common/cache/LocalCacheTest.java
+++ b/android/guava-tests/test/com/google/common/cache/LocalCacheTest.java
@@ -44,9 +44,6 @@ import com.google.common.cache.LocalCache.ValueReference;
 import com.google.common.cache.TestingCacheLoaders.CountingLoader;
 import com.google.common.cache.TestingRemovalListeners.CountingRemovalListener;
 import com.google.common.cache.TestingRemovalListeners.QueuingRemovalListener;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.testing.ConcurrentMapTestSuiteBuilder;
diff --git a/android/guava-tests/test/com/google/common/cache/LocalLoadingCacheTest.java b/android/guava-tests/test/com/google/common/cache/LocalLoadingCacheTest.java
index 8ba9dbc..435d709 100644
--- a/android/guava-tests/test/com/google/common/cache/LocalLoadingCacheTest.java
+++ b/android/guava-tests/test/com/google/common/cache/LocalLoadingCacheTest.java
@@ -23,8 +23,6 @@ import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.cache.LocalCache.LocalLoadingCache;
 import com.google.common.cache.LocalCache.Segment;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.NullPointerTester;
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.util.Map;
diff --git a/android/guava-tests/test/com/google/common/cache/PopulatedCachesTest.java b/android/guava-tests/test/com/google/common/cache/PopulatedCachesTest.java
index b02b8ac..5346d10 100644
--- a/android/guava-tests/test/com/google/common/cache/PopulatedCachesTest.java
+++ b/android/guava-tests/test/com/google/common/cache/PopulatedCachesTest.java
@@ -24,8 +24,6 @@ import static java.util.concurrent.TimeUnit.SECONDS;
 import com.google.common.base.Function;
 import com.google.common.cache.CacheBuilderFactory.DurationSpec;
 import com.google.common.cache.LocalCache.Strength;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
diff --git a/android/guava-tests/test/com/google/common/cache/TestingCacheLoaders.java b/android/guava-tests/test/com/google/common/cache/TestingCacheLoaders.java
index 8507e68..593e3d6 100644
--- a/android/guava-tests/test/com/google/common/cache/TestingCacheLoaders.java
+++ b/android/guava-tests/test/com/google/common/cache/TestingCacheLoaders.java
@@ -16,21 +16,17 @@ package com.google.common.cache;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Maps;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Utility {@link CacheLoader} implementations intended for use in testing.
  *
  * @author mike nonemacher
  */
-@GwtCompatible(emulated = true)
 class TestingCacheLoaders {
 
   /**
@@ -140,7 +136,7 @@ class TestingCacheLoaders {
       return key;
     }
 
-    @GwtIncompatible // reload
+    // reload
     @Override
     public ListenableFuture<Integer> reload(Integer key, Integer oldValue) {
       countReload.incrementAndGet();
diff --git a/android/guava-tests/test/com/google/common/cache/TestingRemovalListeners.java b/android/guava-tests/test/com/google/common/cache/TestingRemovalListeners.java
index 698467f..b8c10af 100644
--- a/android/guava-tests/test/com/google/common/cache/TestingRemovalListeners.java
+++ b/android/guava-tests/test/com/google/common/cache/TestingRemovalListeners.java
@@ -14,8 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -24,7 +22,6 @@ import java.util.concurrent.atomic.AtomicInteger;
  *
  * @author mike nonemacher
  */
-@GwtCompatible(emulated = true)
 class TestingRemovalListeners {
 
   /** Returns a new no-op {@code RemovalListener}. */
@@ -33,7 +30,7 @@ class TestingRemovalListeners {
   }
 
   /** Type-inferring factory method for creating a {@link QueuingRemovalListener}. */
-  @GwtIncompatible // ConcurrentLinkedQueue
+  // ConcurrentLinkedQueue
   static <K, V> QueuingRemovalListener<K, V> queuingRemovalListener() {
     return new QueuingRemovalListener<>();
   }
@@ -44,7 +41,7 @@ class TestingRemovalListeners {
   }
 
   /** {@link RemovalListener} that adds all {@link RemovalNotification} objects to a queue. */
-  @GwtIncompatible // ConcurrentLinkedQueue
+  // ConcurrentLinkedQueue
   static class QueuingRemovalListener<K, V> extends ConcurrentLinkedQueue<RemovalNotification<K, V>>
       implements RemovalListener<K, V> {
 
diff --git a/android/guava-tests/test/com/google/common/collect/AbstractImmutableSetTest.java b/android/guava-tests/test/com/google/common/collect/AbstractImmutableSetTest.java
index d7a8d16..353bf8e 100644
--- a/android/guava-tests/test/com/google/common/collect/AbstractImmutableSetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/AbstractImmutableSetTest.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.testing.IteratorFeature.UNMODIFIABLE;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.IteratorTester;
 import com.google.common.collect.testing.MinimalCollection;
@@ -40,7 +38,6 @@ import junit.framework.TestCase;
  * @author Kevin Bourrillion
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public abstract class AbstractImmutableSetTest extends TestCase {
 
   protected abstract <E extends Comparable<? super E>> Set<E> of();
@@ -279,7 +276,7 @@ public abstract class AbstractImmutableSetTest extends TestCase {
     assertEquals("[a, b, c, d, e, f, g]", set.toString());
   }
 
-  @GwtIncompatible // slow (~40s)
+  // slow (~40s)
   public void testIterator_oneElement() {
     new IteratorTester<String>(
         5, UNMODIFIABLE, Collections.singleton("a"), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -290,7 +287,7 @@ public abstract class AbstractImmutableSetTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~30s)
+  // slow (~30s)
   public void testIterator_general() {
     new IteratorTester<String>(
         5, UNMODIFIABLE, asList("a", "b", "c"), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -476,7 +473,7 @@ public abstract class AbstractImmutableSetTest extends TestCase {
    */
   // TODO(benyu): turn this into a test once all copyOf(Collection) are
   // thread-safe
-  @GwtIncompatible // GWT is single threaded
+  // GWT is single threaded
   void verifyThreadSafe() {
     List<String> sample = Lists.newArrayList("a", "b", "c");
     for (int delta : new int[] {-1, 0, 1}) {
diff --git a/android/guava-tests/test/com/google/common/collect/AbstractImmutableTableTest.java b/android/guava-tests/test/com/google/common/collect/AbstractImmutableTableTest.java
index ffff9f5..cfc5a3e 100644
--- a/android/guava-tests/test/com/google/common/collect/AbstractImmutableTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/AbstractImmutableTableTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -24,7 +23,6 @@ import junit.framework.TestCase;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 public abstract class AbstractImmutableTableTest extends TestCase {
 
   abstract Iterable<ImmutableTable<Character, Integer, String>> getTestInstances();
diff --git a/android/guava-tests/test/com/google/common/collect/AbstractIteratorTest.java b/android/guava-tests/test/com/google/common/collect/AbstractIteratorTest.java
index 3592210..1d65ebc 100644
--- a/android/guava-tests/test/com/google/common/collect/AbstractIteratorTest.java
+++ b/android/guava-tests/test/com/google/common/collect/AbstractIteratorTest.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.GcFinalization;
-import java.lang.ref.WeakReference;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import junit.framework.TestCase;
@@ -30,7 +27,6 @@ import junit.framework.TestCase;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("serial") // No serialization is used in this test
-@GwtCompatible(emulated = true)
 public class AbstractIteratorTest extends TestCase {
 
   public void testDefaultBehaviorOfNextAndHasNext() {
@@ -138,7 +134,7 @@ public class AbstractIteratorTest extends TestCase {
   }
 
 
-  @GwtIncompatible // weak references
+  // weak references
   public void testFreesNextReference() {
     Iterator<Object> itr =
         new AbstractIterator<Object>() {
diff --git a/android/guava-tests/test/com/google/common/collect/AbstractMapEntryTest.java b/android/guava-tests/test/com/google/common/collect/AbstractMapEntryTest.java
index 11c66a7..d01a41a 100644
--- a/android/guava-tests/test/com/google/common/collect/AbstractMapEntryTest.java
+++ b/android/guava-tests/test/com/google/common/collect/AbstractMapEntryTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.Map.Entry;
 import junit.framework.TestCase;
@@ -26,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Mike Bostock
  */
-@GwtCompatible
 public class AbstractMapEntryTest extends TestCase {
   private static final String NK = null;
   private static final Integer NV = null;
diff --git a/android/guava-tests/test/com/google/common/collect/AbstractMultimapAsMapImplementsMapTest.java b/android/guava-tests/test/com/google/common/collect/AbstractMultimapAsMapImplementsMapTest.java
index 3e41dec..9330ab0 100644
--- a/android/guava-tests/test/com/google/common/collect/AbstractMultimapAsMapImplementsMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/AbstractMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Map;
@@ -27,7 +26,6 @@ import java.util.Map;
  * @author George van den Driessche
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class AbstractMultimapAsMapImplementsMapTest
     extends MapInterfaceTest<String, Collection<Integer>> {
 
diff --git a/android/guava-tests/test/com/google/common/collect/AbstractRangeSetTest.java b/android/guava-tests/test/com/google/common/collect/AbstractRangeSetTest.java
index e53bea1..830462a 100644
--- a/android/guava-tests/test/com/google/common/collect/AbstractRangeSetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/AbstractRangeSetTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
@@ -25,7 +24,7 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // TreeRangeSet
+// TreeRangeSet
 public abstract class AbstractRangeSetTest extends TestCase {
   public static void testInvariants(RangeSet<?> rangeSet) {
     testInvariantsInternal(rangeSet);
diff --git a/android/guava-tests/test/com/google/common/collect/AbstractSequentialIteratorTest.java b/android/guava-tests/test/com/google/common/collect/AbstractSequentialIteratorTest.java
index c0b7d91..c82360d 100644
--- a/android/guava-tests/test/com/google/common/collect/AbstractSequentialIteratorTest.java
+++ b/android/guava-tests/test/com/google/common/collect/AbstractSequentialIteratorTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.collect.testing.IteratorFeature.UNMODIFIABLE;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.IteratorTester;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
@@ -28,9 +26,8 @@ import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
 /** Tests for {@link AbstractSequentialIterator}. */
-@GwtCompatible(emulated = true)
 public class AbstractSequentialIteratorTest extends TestCase {
-  @GwtIncompatible // Too slow
+  // Too slow
   public void testDoublerExhaustive() {
     new IteratorTester<Integer>(
         3, UNMODIFIABLE, ImmutableList.of(1, 2), IteratorTester.KnownOrder.KNOWN_ORDER) {
diff --git a/android/guava-tests/test/com/google/common/collect/AbstractTableReadTest.java b/android/guava-tests/test/com/google/common/collect/AbstractTableReadTest.java
index 67d44cb..da0819b 100644
--- a/android/guava-tests/test/com/google/common/collect/AbstractTableReadTest.java
+++ b/android/guava-tests/test/com/google/common/collect/AbstractTableReadTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
@@ -30,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public abstract class AbstractTableReadTest extends TestCase {
   protected Table<String, Integer, Character> table;
 
@@ -184,7 +181,7 @@ public abstract class AbstractTableReadTest extends TestCase {
     assertThat(table.columnKeySet()).containsExactly(1, 2, 3);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerInstance() {
     table = create("foo", 1, 'a', "bar", 1, 'b', "foo", 2, 'c', "bar", 3, 'd');
     new NullPointerTester().testAllPublicInstanceMethods(table);
diff --git a/android/guava-tests/test/com/google/common/collect/AbstractTableTest.java b/android/guava-tests/test/com/google/common/collect/AbstractTableTest.java
index f634b6a..02ec0a1 100644
--- a/android/guava-tests/test/com/google/common/collect/AbstractTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/AbstractTableTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 
 /**
@@ -27,7 +26,6 @@ import java.util.Map;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible
 public abstract class AbstractTableTest extends AbstractTableReadTest {
 
   protected void populate(Table<String, Integer, Character> table, Object... data) {
diff --git a/android/guava-tests/test/com/google/common/collect/AndroidIncompatible.java b/android/guava-tests/test/com/google/common/collect/AndroidIncompatible.java
index 6600c1f..b1dee9d 100644
--- a/android/guava-tests/test/com/google/common/collect/AndroidIncompatible.java
+++ b/android/guava-tests/test/com/google/common/collect/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-tests/test/com/google/common/collect/ArrayListMultimapTest.java b/android/guava-tests/test/com/google/common/collect/ArrayListMultimapTest.java
index 08e5ae8..4974e1f 100644
--- a/android/guava-tests/test/com/google/common/collect/ArrayListMultimapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ArrayListMultimapTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -39,10 +37,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ArrayListMultimapTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
diff --git a/android/guava-tests/test/com/google/common/collect/ArrayTableTest.java b/android/guava-tests/test/com/google/common/collect/ArrayTableTest.java
index b7622c2..1c26a18 100644
--- a/android/guava-tests/test/com/google/common/collect/ArrayTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ArrayTableTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.collect.Table.Cell;
 import com.google.common.testing.EqualsTester;
@@ -34,7 +32,6 @@ import java.util.Map;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ArrayTableTest extends AbstractTableTest {
 
   @Override
@@ -231,7 +228,7 @@ public class ArrayTableTest extends AbstractTableTest {
     }
   }
 
-  @GwtIncompatible // toArray
+  // toArray
   public void testEmptyToArry() {
     ArrayTable<String, String, Character> table =
         ArrayTable.create(Arrays.<String>asList(), Arrays.<String>asList());
@@ -290,7 +287,7 @@ public class ArrayTableTest extends AbstractTableTest {
     SerializableTester.reserializeAndAssert(table);
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNullPointerStatic() {
     new NullPointerTester().testAllPublicStaticMethods(ArrayTable.class);
   }
@@ -452,7 +449,7 @@ public class ArrayTableTest extends AbstractTableTest {
     assertNull(table.erase("bar", null));
   }
 
-  @GwtIncompatible // ArrayTable.toArray(Class)
+  // ArrayTable.toArray(Class)
   public void testToArray() {
     ArrayTable<String, Integer, Character> table =
         create("foo", 1, 'a', "bar", 1, 'b', "foo", 3, 'c');
@@ -519,12 +516,12 @@ public class ArrayTableTest extends AbstractTableTest {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() {
     new NullPointerTester().testAllPublicInstanceMethods(create());
   }
 
-  @GwtIncompatible // serialize
+  // serialize
   public void testSerializable() {
     SerializableTester.reserializeAndAssert(create());
   }
diff --git a/android/guava-tests/test/com/google/common/collect/Collections2Test.java b/android/guava-tests/test/com/google/common/collect/Collections2Test.java
index 4b87618..9bddb02 100644
--- a/android/guava-tests/test/com/google/common/collect/Collections2Test.java
+++ b/android/guava-tests/test/com/google/common/collect/Collections2Test.java
@@ -23,8 +23,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 import static java.util.Collections.nCopies;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.collect.testing.CollectionTestSuiteBuilder;
@@ -47,9 +45,8 @@ import junit.framework.TestSuite;
  * @author Chris Povirk
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class Collections2Test extends TestCase {
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite(Collections2Test.class.getSimpleName());
     suite.addTest(testsForFilter());
@@ -86,7 +83,7 @@ public class Collections2Test extends TestCase {
         }
       };
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilter() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -109,7 +106,7 @@ public class Collections2Test extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterAll() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -130,7 +127,7 @@ public class Collections2Test extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterLinkedList() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -153,7 +150,7 @@ public class Collections2Test extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterNoNulls() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -176,7 +173,7 @@ public class Collections2Test extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterFiltered() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -208,7 +205,7 @@ public class Collections2Test extends TestCase {
         }
       };
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForTransform() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -230,7 +227,7 @@ public class Collections2Test extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Collections2.class);
diff --git a/android/guava-tests/test/com/google/common/collect/CompactHashSetTest.java b/android/guava-tests/test/com/google/common/collect/CompactHashSetTest.java
index 0f0216f..03c300d 100644
--- a/android/guava-tests/test/com/google/common/collect/CompactHashSetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/CompactHashSetTest.java
@@ -19,7 +19,6 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.stream.Collectors.*;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.SetTestSuiteBuilder;
 import com.google.common.collect.testing.TestStringSetGenerator;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -37,7 +36,7 @@ import junit.framework.TestSuite;
  *
  * @author Dimitris Andreou
  */
-@GwtIncompatible // java.util.Arrays#copyOf(Object[], int), java.lang.reflect.Array
+// java.util.Arrays#copyOf(Object[], int), java.lang.reflect.Array
 public class CompactHashSetTest extends TestCase {
   public static Test suite() {
     List<Feature<?>> allFeatures =
diff --git a/android/guava-tests/test/com/google/common/collect/CompactLinkedHashSetTest.java b/android/guava-tests/test/com/google/common/collect/CompactLinkedHashSetTest.java
index 299503e..12a04b6 100644
--- a/android/guava-tests/test/com/google/common/collect/CompactLinkedHashSetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/CompactLinkedHashSetTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.SetTestSuiteBuilder;
 import com.google.common.collect.testing.TestStringSetGenerator;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -36,7 +35,7 @@ import junit.framework.TestSuite;
  *
  * @author Dimitris Andreou
  */
-@GwtIncompatible // java.util.Arrays#copyOf(Object[], int), java.lang.reflect.Array
+// java.util.Arrays#copyOf(Object[], int), java.lang.reflect.Array
 public class CompactLinkedHashSetTest extends TestCase {
   public static Test suite() {
     List<Feature<?>> allFeatures =
diff --git a/android/guava-tests/test/com/google/common/collect/ComparatorsTest.java b/android/guava-tests/test/com/google/common/collect/ComparatorsTest.java
index b30cb76..930060a 100644
--- a/android/guava-tests/test/com/google/common/collect/ComparatorsTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ComparatorsTest.java
@@ -19,7 +19,6 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.EqualsTester;
 import java.util.Collections;
@@ -31,7 +30,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class ComparatorsTest extends TestCase {
   @SuppressWarnings("unchecked") // dang varargs
   public void testLexicographical() {
diff --git a/android/guava-tests/test/com/google/common/collect/ComparisonChainTest.java b/android/guava-tests/test/com/google/common/collect/ComparisonChainTest.java
index 9a9f98a..bfde573 100644
--- a/android/guava-tests/test/com/google/common/collect/ComparisonChainTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ComparisonChainTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
@@ -25,7 +24,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class ComparisonChainTest extends TestCase {
   private static final DontCompareMe DONT_COMPARE_ME = new DontCompareMe();
 
diff --git a/android/guava-tests/test/com/google/common/collect/ContiguousSetTest.java b/android/guava-tests/test/com/google/common/collect/ContiguousSetTest.java
index 6b19b1e..86cd879 100644
--- a/android/guava-tests/test/com/google/common/collect/ContiguousSetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ContiguousSetTest.java
@@ -28,8 +28,6 @@ import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.testing.SerializableTester.reserializeAndAssert;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.NavigableSetTestSuiteBuilder;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.SetGenerators.ContiguousSetDescendingGenerator;
@@ -45,7 +43,6 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 /** @author Gregory Kick */
-@GwtCompatible(emulated = true)
 public class ContiguousSetTest extends TestCase {
   private static final DiscreteDomain<Integer> NOT_EQUAL_TO_INTEGERS =
       new DiscreteDomain<Integer>() {
@@ -134,7 +131,7 @@ public class ContiguousSetTest extends TestCase {
         ContiguousSet.create(Range.atMost(Integer.MAX_VALUE), integers()));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     ContiguousSet<Integer> empty = ContiguousSet.create(Range.closedOpen(1, 1), integers());
     assertTrue(empty instanceof EmptyContiguousSet);
@@ -388,7 +385,7 @@ public class ContiguousSetTest extends TestCase {
     assertEquals(ImmutableList.of(1, 2, 3), ImmutableList.copyOf(list.toArray(new Integer[0])));
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static class BuiltTests extends TestCase {
     public static Test suite() {
       TestSuite suite = new TestSuite();
diff --git a/android/guava-tests/test/com/google/common/collect/CountTest.java b/android/guava-tests/test/com/google/common/collect/CountTest.java
index 0eff420..a523a56 100644
--- a/android/guava-tests/test/com/google/common/collect/CountTest.java
+++ b/android/guava-tests/test/com/google/common/collect/CountTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -22,7 +21,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class CountTest extends TestCase {
   public void testGet() {
     assertEquals(20, new Count(20).get());
diff --git a/android/guava-tests/test/com/google/common/collect/DiscreteDomainTest.java b/android/guava-tests/test/com/google/common/collect/DiscreteDomainTest.java
index b9e15fd..6ad4ddd 100644
--- a/android/guava-tests/test/com/google/common/collect/DiscreteDomainTest.java
+++ b/android/guava-tests/test/com/google/common/collect/DiscreteDomainTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.testing.SerializableTester.reserializeAndAssert;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.math.BigInteger;
 import junit.framework.TestCase;
 
@@ -27,7 +26,7 @@ import junit.framework.TestCase;
  *
  * @author Chris Povirk
  */
-@GwtIncompatible // SerializableTester
+// SerializableTester
 public class DiscreteDomainTest extends TestCase {
   public void testSerialization() {
     reserializeAndAssert(DiscreteDomain.integers());
diff --git a/android/guava-tests/test/com/google/common/collect/EmptyImmutableTableTest.java b/android/guava-tests/test/com/google/common/collect/EmptyImmutableTableTest.java
index 4fb26e6..70a7655 100644
--- a/android/guava-tests/test/com/google/common/collect/EmptyImmutableTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/EmptyImmutableTableTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.EqualsTester;
 
 /**
@@ -25,7 +23,6 @@ import com.google.common.testing.EqualsTester;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 public class EmptyImmutableTableTest extends AbstractImmutableTableTest {
   private static final ImmutableTable<Character, Integer, String> INSTANCE = ImmutableTable.of();
 
@@ -48,7 +45,7 @@ public class EmptyImmutableTableTest extends AbstractImmutableTableTest {
         .testEquals();
   }
 
-  @GwtIncompatible // ArrayTable
+  // ArrayTable
   public void testEqualsObjectNullValues() {
     new EqualsTester()
         .addEqualityGroup(INSTANCE)
diff --git a/android/guava-tests/test/com/google/common/collect/EnumBiMapTest.java b/android/guava-tests/test/com/google/common/collect/EnumBiMapTest.java
index 25b057a..10d21d3 100644
--- a/android/guava-tests/test/com/google/common/collect/EnumBiMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/EnumBiMapTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.collect.testing.Helpers.orderEntriesByKey;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -47,7 +45,6 @@ import junit.framework.TestSuite;
  * @author Mike Bostock
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class EnumBiMapTest extends TestCase {
   private enum Currency {
     DOLLAR,
@@ -109,7 +106,7 @@ public class EnumBiMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -285,13 +282,13 @@ public class EnumBiMapTest extends TestCase {
     assertEquals(3, uniqueEntries.size());
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   public void testSerializable() {
     SerializableTester.reserializeAndAssert(
         EnumBiMap.create(ImmutableMap.of(Currency.DOLLAR, Country.CANADA)));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(EnumBiMap.class);
     new NullPointerTester()
diff --git a/android/guava-tests/test/com/google/common/collect/EnumHashBiMapTest.java b/android/guava-tests/test/com/google/common/collect/EnumHashBiMapTest.java
index 2a78f55..a55420a 100644
--- a/android/guava-tests/test/com/google/common/collect/EnumHashBiMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/EnumHashBiMapTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -40,7 +38,6 @@ import junit.framework.TestSuite;
  *
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 public class EnumHashBiMapTest extends TestCase {
   private enum Currency {
     DOLLAR,
@@ -102,7 +99,7 @@ public class EnumHashBiMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -216,12 +213,12 @@ public class EnumHashBiMapTest extends TestCase {
     assertEquals(3, uniqueEntries.size());
   }
 
-  @GwtIncompatible // serialize
+  // serialize
   public void testSerializable() {
     SerializableTester.reserializeAndAssert(EnumHashBiMap.create(Currency.class));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(EnumHashBiMap.class);
     new NullPointerTester().testAllPublicInstanceMethods(EnumHashBiMap.create(Currency.class));
diff --git a/android/guava-tests/test/com/google/common/collect/EnumMultisetTest.java b/android/guava-tests/test/com/google/common/collect/EnumMultisetTest.java
index 265db21..6642a6e 100644
--- a/android/guava-tests/test/com/google/common/collect/EnumMultisetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/EnumMultisetTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AnEnum;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -41,10 +39,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class EnumMultisetTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -133,7 +130,7 @@ public class EnumMultisetTest extends TestCase {
     assertEquals("[BLUE x 3, RED x 2, YELLOW]", ms.toString());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializable() {
     Multiset<Color> ms = EnumMultiset.create(asList(Color.RED, Color.YELLOW, Color.RED));
     assertEquals(ms, SerializableTester.reserialize(ms));
@@ -159,7 +156,7 @@ public class EnumMultisetTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testEquals() throws Exception {
     new ClassSanityTester()
         .setDistinctValues(Class.class, Color.class, Gender.class)
@@ -168,7 +165,7 @@ public class EnumMultisetTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     new NullPointerTester()
         .setDefault(Class.class, Color.class)
diff --git a/android/guava-tests/test/com/google/common/collect/EvictingQueueTest.java b/android/guava-tests/test/com/google/common/collect/EvictingQueueTest.java
index 05fdbd0..3c70178 100644
--- a/android/guava-tests/test/com/google/common/collect/EvictingQueueTest.java
+++ b/android/guava-tests/test/com/google/common/collect/EvictingQueueTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
 import java.util.AbstractList;
@@ -30,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Kurt Alfred Kluever
  */
-@GwtCompatible(emulated = true)
 public class EvictingQueueTest extends TestCase {
 
   public void testCreateWithNegativeSize() throws Exception {
@@ -187,7 +184,7 @@ public class EvictingQueueTest extends TestCase {
     assertTrue(queue.isEmpty());
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(EvictingQueue.class);
diff --git a/android/guava-tests/test/com/google/common/collect/FilteredMultimapTest.java b/android/guava-tests/test/com/google/common/collect/FilteredMultimapTest.java
index 0e5e265..17325eb 100644
--- a/android/guava-tests/test/com/google/common/collect/FilteredMultimapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/FilteredMultimapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Predicate;
 import java.util.Arrays;
 import java.util.Map.Entry;
@@ -27,7 +26,7 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtIncompatible // nottested
+// nottested
 public class FilteredMultimapTest extends TestCase {
 
   private static final Predicate<Entry<String, Integer>> ENTRY_PREDICATE =
diff --git a/android/guava-tests/test/com/google/common/collect/FluentIterableTest.java b/android/guava-tests/test/com/google/common/collect/FluentIterableTest.java
index e623f31..177a6ab 100644
--- a/android/guava-tests/test/com/google/common/collect/FluentIterableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/FluentIterableTest.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.base.Joiner;
@@ -40,17 +38,15 @@ import java.util.SortedSet;
 import java.util.concurrent.TimeUnit;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Unit test for {@link FluentIterable}.
  *
  * @author Marcin Mikosik
  */
-@GwtCompatible(emulated = true)
 public class FluentIterableTest extends TestCase {
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(FluentIterable.class);
@@ -361,7 +357,7 @@ public class FluentIterableTest extends TestCase {
 
   private static class HasBoth extends TypeA implements TypeB {}
 
-  @GwtIncompatible // Iterables.filter(Iterable, Class)
+  // Iterables.filter(Iterable, Class)
   public void testFilterByType() throws Exception {
     HasBoth hasBoth = new HasBoth();
     FluentIterable<TypeA> alist =
diff --git a/android/guava-tests/test/com/google/common/collect/ForMapMultimapAsMapImplementsMapTest.java b/android/guava-tests/test/com/google/common/collect/ForMapMultimapAsMapImplementsMapTest.java
index 402410b..918554c 100644
--- a/android/guava-tests/test/com/google/common/collect/ForMapMultimapAsMapImplementsMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ForMapMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Map;
@@ -27,7 +26,6 @@ import java.util.Map;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class ForMapMultimapAsMapImplementsMapTest extends AbstractMultimapAsMapImplementsMapTest {
 
   public ForMapMultimapAsMapImplementsMapTest() {
diff --git a/android/guava-tests/test/com/google/common/collect/ForwardingSortedMapImplementsMapTest.java b/android/guava-tests/test/com/google/common/collect/ForwardingSortedMapImplementsMapTest.java
index b694d5d..404d070 100644
--- a/android/guava-tests/test/com/google/common/collect/ForwardingSortedMapImplementsMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ForwardingSortedMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import com.google.common.collect.testing.SortedMapInterfaceTest;
 import java.util.SortedMap;
@@ -27,7 +26,6 @@ import java.util.TreeMap;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public class ForwardingSortedMapImplementsMapTest extends SortedMapInterfaceTest<String, Integer> {
 
   private static class SimpleForwardingSortedMap<K, V> extends ForwardingSortedMap<K, V> {
diff --git a/android/guava-tests/test/com/google/common/collect/ForwardingSortedMultisetTest.java b/android/guava-tests/test/com/google/common/collect/ForwardingSortedMultisetTest.java
index d0673f1..2e7b807 100644
--- a/android/guava-tests/test/com/google/common/collect/ForwardingSortedMultisetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ForwardingSortedMultisetTest.java
@@ -30,7 +30,6 @@ import java.util.NavigableSet;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Tests for {@link ForwardingSortedMultiset}.
diff --git a/android/guava-tests/test/com/google/common/collect/GeneralRangeTest.java b/android/guava-tests/test/com/google/common/collect/GeneralRangeTest.java
index dfa73d6..9defcde 100644
--- a/android/guava-tests/test/com/google/common/collect/GeneralRangeTest.java
+++ b/android/guava-tests/test/com/google/common/collect/GeneralRangeTest.java
@@ -17,8 +17,6 @@ package com.google.common.collect;
 import static com.google.common.collect.BoundType.CLOSED;
 import static com.google.common.collect.BoundType.OPEN;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.testing.NullPointerTester;
 import java.util.Arrays;
@@ -30,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class GeneralRangeTest extends TestCase {
   private static final Ordering<Integer> ORDERING = Ordering.natural().nullsFirst();
 
@@ -219,7 +216,7 @@ public class GeneralRangeTest extends TestCase {
         GeneralRange.range(ORDERING, 3, CLOSED, 5, OPEN).reverse());
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     new NullPointerTester().testAllPublicStaticMethods(GeneralRange.class);
   }
diff --git a/android/guava-tests/test/com/google/common/collect/HashBasedTableTest.java b/android/guava-tests/test/com/google/common/collect/HashBasedTableTest.java
index 8a608ae..914e0bd 100644
--- a/android/guava-tests/test/com/google/common/collect/HashBasedTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/HashBasedTableTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
 
@@ -28,7 +26,6 @@ import com.google.common.testing.SerializableTester;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class HashBasedTableTest extends AbstractTableTest {
 
   @Override
@@ -91,13 +88,13 @@ public class HashBasedTableTest extends AbstractTableTest {
     assertEquals((Character) 'a', copy.get("foo", 1));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     table = create("foo", 1, 'a', "bar", 1, 'b', "foo", 3, 'c');
     SerializableTester.reserializeAndAssert(table);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerStatic() {
     new NullPointerTester().testAllPublicStaticMethods(HashBasedTable.class);
   }
diff --git a/android/guava-tests/test/com/google/common/collect/HashBiMapTest.java b/android/guava-tests/test/com/google/common/collect/HashBiMapTest.java
index 9541434..750df3b 100644
--- a/android/guava-tests/test/com/google/common/collect/HashBiMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/HashBiMapTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -38,7 +36,6 @@ import junit.framework.TestSuite;
  *
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 public class HashBiMapTest extends TestCase {
 
   public static final class HashBiMapGenerator extends TestStringBiMapGenerator {
@@ -52,7 +49,7 @@ public class HashBiMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
diff --git a/android/guava-tests/test/com/google/common/collect/HashMultimapTest.java b/android/guava-tests/test/com/google/common/collect/HashMultimapTest.java
index 6cde6c5..88c3402 100644
--- a/android/guava-tests/test/com/google/common/collect/HashMultimapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/HashMultimapTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -33,10 +31,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class HashMultimapTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
diff --git a/android/guava-tests/test/com/google/common/collect/HashMultisetTest.java b/android/guava-tests/test/com/google/common/collect/HashMultisetTest.java
index 030c927..c68f0b0 100644
--- a/android/guava-tests/test/com/google/common/collect/HashMultisetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/HashMultisetTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.MultisetFeature;
@@ -38,10 +36,9 @@ import junit.framework.TestSuite;
  * @author Kevin Bourrillion
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class HashMultisetTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -90,7 +87,7 @@ public class HashMultisetTest extends TestCase {
     assertEquals(2, multiset.count("foo"));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializationContainingSelf() {
     Multiset<Multiset<?>> multiset = HashMultiset.create();
     multiset.add(multiset, 2);
@@ -99,7 +96,7 @@ public class HashMultisetTest extends TestCase {
     assertSame(copy, copy.iterator().next());
   }
 
-  @GwtIncompatible // Only used by @GwtIncompatible code
+  // Only used by @GwtIncompatible code
   private static class MultisetHolder implements Serializable {
     public Multiset<?> member;
 
@@ -110,7 +107,7 @@ public class HashMultisetTest extends TestCase {
     private static final long serialVersionUID = 1L;
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializationIndirectSelfReference() {
     Multiset<MultisetHolder> multiset = HashMultiset.create();
     MultisetHolder holder = new MultisetHolder(multiset);
diff --git a/android/guava-tests/test/com/google/common/collect/HashingTest.java b/android/guava-tests/test/com/google/common/collect/HashingTest.java
index 5dfac47..dd8202a 100644
--- a/android/guava-tests/test/com/google/common/collect/HashingTest.java
+++ b/android/guava-tests/test/com/google/common/collect/HashingTest.java
@@ -16,11 +16,9 @@ package com.google.common.collect;
 
 import static com.google.common.collect.Hashing.smear;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /** Tests for {@code Hashing}. */
-@GwtCompatible
 public class HashingTest extends TestCase {
   public void testSmear() {
     assertEquals(1459320713, smear(754102528));
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableBiMapTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableBiMapTest.java
index e0dd1ef..d13ba1b 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableBiMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableBiMapTest.java
@@ -18,17 +18,11 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableBiMap.Builder;
 import com.google.common.collect.testing.MapInterfaceTest;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
-import com.google.common.collect.testing.google.BiMapGenerators.ImmutableBiMapCopyOfEntriesGenerator;
-import com.google.common.collect.testing.google.BiMapGenerators.ImmutableBiMapCopyOfGenerator;
-import com.google.common.collect.testing.google.BiMapGenerators.ImmutableBiMapGenerator;
 import com.google.common.collect.testing.google.BiMapInverseTester;
 import com.google.common.collect.testing.google.BiMapTestSuiteBuilder;
 import com.google.common.testing.SerializableTester;
@@ -47,12 +41,11 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableBiMapTest extends TestCase {
 
   // TODO: Reduce duplication of ImmutableMapTest code
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
 
@@ -206,7 +199,6 @@ public class ImmutableBiMapTest extends TestCase {
       assertMapEquals(map.inverse(), 1, "one", 2, "two", 3, "three", 4, "four", 5, "five");
     }
 
-    @GwtIncompatible
     public void testBuilderExactlySizedReusesArray() {
       ImmutableBiMap.Builder<Integer, Integer> builder = ImmutableBiMap.builderWithExpectedSize(10);
       Object[] builderArray = builder.alternatingKeysAndValues;
@@ -720,13 +712,13 @@ public class ImmutableBiMapTest extends TestCase {
       assertSame(bimap, bimap.inverse().inverse());
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testEmptySerialization() {
       ImmutableBiMap<String, Integer> bimap = ImmutableBiMap.of();
       assertSame(bimap, SerializableTester.reserializeAndAssert(bimap));
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testSerialization() {
       ImmutableBiMap<String, Integer> bimap =
           ImmutableBiMap.copyOf(ImmutableMap.of("one", 1, "two", 2));
@@ -736,7 +728,7 @@ public class ImmutableBiMapTest extends TestCase {
       assertSame(copy, copy.inverse().inverse());
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testInverseSerialization() {
       ImmutableBiMap<String, Integer> bimap =
           ImmutableBiMap.copyOf(ImmutableMap.of(1, "one", 2, "two")).inverse();
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableEnumMapTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableEnumMapTest.java
index 189db72..ec8a9a3 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableEnumMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableEnumMapTest.java
@@ -21,8 +21,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.collect.testing.AnEnum;
 import com.google.common.collect.testing.Helpers;
@@ -40,7 +38,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class ImmutableEnumMapTest extends TestCase {
   public static class ImmutableEnumMapGenerator extends TestEnumMapGenerator {
     @Override
@@ -53,7 +50,7 @@ public class ImmutableEnumMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableListMultimapTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableListMultimapTest.java
index 1260740..06e1cc3 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableListMultimapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableListMultimapTest.java
@@ -21,9 +21,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SERIA
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_ANY_NULL_QUERIES;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableListMultimap.Builder;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.ListMultimapTestSuiteBuilder;
 import com.google.common.collect.testing.google.TestStringListMultimapGenerator;
@@ -44,7 +41,6 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableListMultimapTest extends TestCase {
   public static class ImmutableListMultimapGenerator extends TestStringListMultimapGenerator {
     @Override
@@ -65,7 +61,7 @@ public class ImmutableListMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -554,7 +550,7 @@ public class ImmutableListMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     Multimap<String, Integer> multimap = createMultimap();
     SerializableTester.reserializeAndAssert(multimap);
@@ -567,13 +563,13 @@ public class ImmutableListMultimapTest extends TestCase {
     assertEquals(HashMultiset.create(multimap.values()), HashMultiset.create(valuesCopy));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testEmptySerialization() {
     Multimap<String, Integer> multimap = ImmutableListMultimap.of();
     assertSame(multimap, SerializableTester.reserialize(multimap));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableListMultimap.class);
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableListTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableListTest.java
index 52ed7fa..6e0ef02 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableListTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableListTest.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SERIA
 import static java.lang.reflect.Proxy.newProxyInstance;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.MinimalCollection;
@@ -33,11 +31,6 @@ import com.google.common.collect.testing.MinimalIterable;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.ListGenerators.BuilderAddAllListGenerator;
 import com.google.common.collect.testing.google.ListGenerators.BuilderReversedListGenerator;
-import com.google.common.collect.testing.google.ListGenerators.ImmutableListHeadSubListGenerator;
-import com.google.common.collect.testing.google.ListGenerators.ImmutableListMiddleSubListGenerator;
-import com.google.common.collect.testing.google.ListGenerators.ImmutableListOfGenerator;
-import com.google.common.collect.testing.google.ListGenerators.ImmutableListTailSubListGenerator;
-import com.google.common.collect.testing.google.ListGenerators.UnhashableElementsImmutableListGenerator;
 import com.google.common.collect.testing.testers.ListHashCodeTester;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -62,10 +55,9 @@ import junit.framework.TestSuite;
  * @author George van den Driessche
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableListTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -469,7 +461,7 @@ public class ImmutableListTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static class ConcurrentTests extends TestCase {
     enum WrapWithIterable {
       WRAP,
@@ -639,26 +631,26 @@ public class ImmutableListTest extends TestCase {
 
   public static class BasicTests extends TestCase {
 
-    @GwtIncompatible // NullPointerTester
+    // NullPointerTester
     public void testNullPointers() {
       NullPointerTester tester = new NullPointerTester();
       tester.testAllPublicStaticMethods(ImmutableList.class);
       tester.testAllPublicInstanceMethods(ImmutableList.of(1, 2, 3));
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testSerialization_empty() {
       Collection<String> c = ImmutableList.of();
       assertSame(c, SerializableTester.reserialize(c));
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testSerialization_singleton() {
       Collection<String> c = ImmutableList.of("a");
       SerializableTester.reserializeAndAssert(c);
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testSerialization_multiple() {
       Collection<String> c = ImmutableList.of("a", "b", "c");
       SerializableTester.reserializeAndAssert(c);
@@ -678,7 +670,6 @@ public class ImmutableListTest extends TestCase {
       assertEquals(asList("a", "b", "a", "c"), list);
     }
 
-    @GwtIncompatible("Builder impl")
     public void testBuilderForceCopy() {
       ImmutableList.Builder<Integer> builder = ImmutableList.builder();
       Object[] prevArray = null;
@@ -690,7 +681,6 @@ public class ImmutableListTest extends TestCase {
       }
     }
 
-    @GwtIncompatible
     public void testBuilderExactlySizedReusesArray() {
       ImmutableList.Builder<Integer> builder = ImmutableList.builderWithExpectedSize(10);
       Object[] builderArray = builder.contents;
@@ -823,7 +813,6 @@ public class ImmutableListTest extends TestCase {
       assertSame(list, list.asList());
     }
 
-    @GwtIncompatible("builder internals")
     public void testReusedBuilder() {
       ImmutableList.Builder<String> builder = new ImmutableList.Builder<String>();
       for (int i = 0; i < 10; i++) {
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableMapTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableMapTest.java
index f4da971..76cc500 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableMapTest.java
@@ -20,10 +20,7 @@ import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableMap.Builder;
 import com.google.common.collect.testing.CollectionTestSuiteBuilder;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.MapInterfaceTest;
@@ -35,15 +32,6 @@ import com.google.common.collect.testing.UnhashableObject;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapCopyOfEntriesGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapCopyOfEnumMapGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapCopyOfGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapEntryListGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapKeyListGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapUnhashableValuesGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapValueListGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapValuesAsSingletonSetGenerator;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -67,10 +55,9 @@ import junit.framework.TestSuite;
  * @author Kevin Bourrillion
  * @author Jesse Wilson
  */
-@GwtCompatible(emulated = true)
 public class ImmutableMapTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ImmutableMapTest.class);
@@ -236,7 +223,7 @@ public class ImmutableMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public static class ReserializedMapTests extends AbstractMapTests<String, Integer> {
     @Override
     protected Map<String, Integer> makePopulatedMap() {
@@ -282,7 +269,7 @@ public class ImmutableMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // GWT's ImmutableMap emulation is backed by java.util.HashMap.
+  // GWT's ImmutableMap emulation is backed by java.util.HashMap.
   public static class MapTestsWithUnhashableValues
       extends AbstractMapTests<Integer, UnhashableObject> {
     @Override
@@ -307,7 +294,7 @@ public class ImmutableMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // GWT's ImmutableMap emulation is backed by java.util.HashMap.
+  // GWT's ImmutableMap emulation is backed by java.util.HashMap.
   public static class MapTestsWithSingletonUnhashableValue extends MapTestsWithUnhashableValues {
     @Override
     protected Map<Integer, UnhashableObject> makePopulatedMap() {
@@ -339,7 +326,6 @@ public class ImmutableMapTest extends TestCase {
       assertMapEquals(map, "one", 1, "two", 2, "three", 3, "four", 4, "five", 5);
     }
 
-    @GwtIncompatible
     public void testBuilderExactlySizedReusesArray() {
       ImmutableMap.Builder<Integer, Integer> builder = ImmutableMap.builderWithExpectedSize(10);
       Object[] builderArray = builder.alternatingKeysAndValues;
@@ -866,7 +852,7 @@ public class ImmutableMapTest extends TestCase {
     assertSame(multimap1, multimap2);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableMap.class);
@@ -916,7 +902,7 @@ public class ImmutableMapTest extends TestCase {
     assertEquals(intMap.hashCode(), map.hashCode());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testViewSerialization() {
     Map<String, Integer> map = ImmutableMap.of("one", 1, "two", 2, "three", 3);
     LenientSerializableTester.reserializeAndAssertLenient(map.entrySet());
@@ -927,7 +913,7 @@ public class ImmutableMapTest extends TestCase {
     assertTrue(reserializedValues instanceof ImmutableCollection);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testKeySetIsSerializable_regularImmutableMap() {
     class NonSerializableClass {}
 
@@ -938,7 +924,7 @@ public class ImmutableMapTest extends TestCase {
     LenientSerializableTester.reserializeAndAssertLenient(set);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testValuesCollectionIsSerializable_regularImmutableMap() {
     class NonSerializableClass {}
 
@@ -950,7 +936,7 @@ public class ImmutableMapTest extends TestCase {
   }
 
   // TODO: Re-enable this test after moving to new serialization format in ImmutableMap.
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked")
   public void ignore_testSerializationNoDuplication_regularImmutableMap() throws Exception {
     // Tests that searializing a map, its keySet, and values only writes the underlying data once.
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableMultimapAsMapImplementsMapTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableMultimapAsMapImplementsMapTest.java
index 8c1f020..ba18362 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableMultimapAsMapImplementsMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +25,6 @@ import java.util.Map;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class ImmutableMultimapAsMapImplementsMapTest
     extends AbstractMultimapAsMapImplementsMapTest {
 
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableMultimapTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableMultimapTest.java
index ac09593..df71d86 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableMultimapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableMultimapTest.java
@@ -16,9 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMultimap.Builder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.SampleElements.Unhashables;
 import com.google.common.collect.testing.UnhashableObject;
@@ -33,7 +30,6 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableMultimapTest extends TestCase {
 
   public void testBuilder_withImmutableEntry() {
@@ -127,7 +123,7 @@ public class ImmutableMultimapTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableMultimap.class);
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableMultisetTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableMultisetTest.java
index 2b320ce..6073902 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableMultisetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableMultisetTest.java
@@ -20,8 +20,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.SetTestSuiteBuilder;
@@ -50,10 +48,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableMultisetTest extends TestCase {
 
-  @GwtIncompatible // suite // TODO(cpovirk): add to collect/gwt/suites
+  // suite // TODO(cpovirk): add to collect/gwt/suites
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ImmutableMultisetTest.class);
@@ -470,33 +467,33 @@ public class ImmutableMultisetTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableMultiset.class);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization_empty() {
     Collection<String> c = ImmutableMultiset.of();
     assertSame(c, SerializableTester.reserialize(c));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization_multiple() {
     Collection<String> c = ImmutableMultiset.of("a", "b", "a");
     Collection<String> copy = SerializableTester.reserializeAndAssert(c);
     assertThat(copy).containsExactly("a", "a", "b").inOrder();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization_elementSet() {
     Multiset<String> c = ImmutableMultiset.of("a", "b", "a");
     Collection<String> copy = LenientSerializableTester.reserializeAndAssertLenient(c.elementSet());
     assertThat(copy).containsExactly("a", "b").inOrder();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization_entrySet() {
     Multiset<String> c = ImmutableMultiset.of("a", "b", "c");
     SerializableTester.reserializeAndAssert(c.entrySet());
@@ -531,7 +528,7 @@ public class ImmutableMultisetTest extends TestCase {
     assertEquals(4, list.lastIndexOf("b"));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization_asList() {
     ImmutableMultiset<String> multiset = ImmutableMultiset.of("a", "a", "b", "b", "b");
     SerializableTester.reserializeAndAssert(multiset.asList());
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableRangeMapTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableRangeMapTest.java
index 59f3a1b..40f822d 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableRangeMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableRangeMapTest.java
@@ -17,7 +17,6 @@ package com.google.common.collect;
 import static com.google.common.collect.BoundType.OPEN;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.SerializableTester;
 import java.util.Map.Entry;
 import java.util.NoSuchElementException;
@@ -28,7 +27,7 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // NavigableMap
+// NavigableMap
 public class ImmutableRangeMapTest extends TestCase {
   private static final ImmutableList<Range<Integer>> RANGES;
   private static final int MIN_BOUND = 0;
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableRangeSetTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableRangeSetTest.java
index 5ca1f58..b2cbf1a 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableRangeSetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableRangeSetTest.java
@@ -16,7 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.NavigableSetTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestSetGenerator;
@@ -34,7 +33,7 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // ImmutableRangeSet
+// ImmutableRangeSet
 public class ImmutableRangeSetTest extends AbstractRangeSetTest {
 
   static final class ImmutableRangeSetIntegerAsSetGenerator implements TestSetGenerator<Integer> {
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableSetMultimapAsMapImplementsMapTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableSetMultimapAsMapImplementsMapTest.java
index c503a17..4738bb3 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableSetMultimapAsMapImplementsMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableSetMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +25,6 @@ import java.util.Map;
  *
  * @author Mike Ward
  */
-@GwtCompatible
 public class ImmutableSetMultimapAsMapImplementsMapTest
     extends AbstractMultimapAsMapImplementsMapTest {
 
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableSetMultimapTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableSetMultimapTest.java
index 33d4ec1..907f23e 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableSetMultimapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableSetMultimapTest.java
@@ -21,9 +21,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SERIA
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_ANY_NULL_QUERIES;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSetMultimap.Builder;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.SetMultimapTestSuiteBuilder;
 import com.google.common.collect.testing.google.TestStringSetMultimapGenerator;
@@ -44,7 +41,6 @@ import junit.framework.TestSuite;
  *
  * @author Mike Ward
  */
-@GwtCompatible(emulated = true)
 public class ImmutableSetMultimapTest extends TestCase {
   private static final class ImmutableSetMultimapGenerator extends TestStringSetMultimapGenerator {
     @Override
@@ -65,7 +61,7 @@ public class ImmutableSetMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ImmutableSetMultimapTest.class);
@@ -548,7 +544,7 @@ public class ImmutableSetMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     Multimap<String, Integer> multimap = createMultimap();
     SerializableTester.reserializeAndAssert(multimap);
@@ -561,13 +557,13 @@ public class ImmutableSetMultimapTest extends TestCase {
     assertEquals(HashMultiset.create(multimap.values()), HashMultiset.create(valuesCopy));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testEmptySerialization() {
     Multimap<String, Integer> multimap = ImmutableSetMultimap.of();
     assertSame(multimap, SerializableTester.reserialize(multimap));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSortedSerialization() {
     Multimap<String, Integer> multimap =
         new ImmutableSetMultimap.Builder<String, Integer>()
@@ -594,7 +590,7 @@ public class ImmutableSetMultimapTest extends TestCase {
         .build();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableSetMultimap.class);
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableSetTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableSetTest.java
index 2ddd1ee..1c9078c 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableSetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableSetTest.java
@@ -18,21 +18,10 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSet.Builder;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SetTestSuiteBuilder;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
-import com.google.common.collect.testing.google.SetGenerators.DegeneratedImmutableSetGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetAsListGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetCopyOfGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetSizedBuilderGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetTooBigBuilderGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetTooSmallBuilderGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetUnsizedBuilderGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetWithBadHashesGenerator;
 import com.google.common.testing.EqualsTester;
 import java.util.Collection;
 import java.util.Collections;
@@ -48,10 +37,9 @@ import junit.framework.TestSuite;
  * @author Jared Levy
  * @author Nick Kralevich
  */
-@GwtCompatible(emulated = true)
 public class ImmutableSetTest extends AbstractImmutableSetTest {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
 
@@ -217,7 +205,6 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
     assertThat(set).containsExactly("a", "b", "c").inOrder();
   }
 
-  @GwtIncompatible("Builder impl")
   public void testBuilderForceCopy() {
     ImmutableSet.Builder<Integer> builder = ImmutableSet.builder();
     builder.add(-1);
@@ -230,7 +217,6 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
     }
   }
 
-  @GwtIncompatible("Builder impl")
   public void testPresizedBuilderDedups() {
     ImmutableSet.Builder<String> builder = ImmutableSet.builderWithExpectedSize(4);
     builder.add("a");
@@ -244,7 +230,6 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
     assertSame(table, ((RegularImmutableSet<String>) builder.build()).table);
   }
 
-  @GwtIncompatible("Builder impl")
   public void testPresizedBuilderForceCopy() {
     for (int expectedSize = 1; expectedSize < 4; expectedSize++) {
       ImmutableSet.Builder<Integer> builder = ImmutableSet.builderWithExpectedSize(expectedSize);
@@ -266,7 +251,7 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
     assertEquals(Collections.singleton(array), set);
   }
 
-  @GwtIncompatible // ImmutableSet.chooseTableSize
+  // ImmutableSet.chooseTableSize
   public void testChooseTableSize() {
     assertEquals(8, ImmutableSet.chooseTableSize(3));
     assertEquals(8, ImmutableSet.chooseTableSize(4));
@@ -286,7 +271,7 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
     }
   }
 
-  @GwtIncompatible // RegularImmutableSet.table not in emulation
+  // RegularImmutableSet.table not in emulation
   public void testResizeTable() {
     verifyTableSize(100, 2, 4);
     verifyTableSize(100, 5, 8);
@@ -301,7 +286,7 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
     verifyTableSize(17, 15, 32);
   }
 
-  @GwtIncompatible // RegularImmutableSet.table not in emulation
+  // RegularImmutableSet.table not in emulation
   private void verifyTableSize(int inputSize, int setSize, int tableSize) {
     Builder<Integer> builder = ImmutableSet.builder();
     for (int i = 0; i < inputSize; i++) {
@@ -329,7 +314,7 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
     assertThat(set).containsExactly("a", "b", "c", "d").inOrder();
   }
 
-  @GwtIncompatible // GWT is single threaded
+  // GWT is single threaded
   public void testCopyOf_threadSafe() {
     verifyThreadSafe();
   }
@@ -352,7 +337,6 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
         .testEquals();
   }
 
-  @GwtIncompatible("internals")
   public void testControlsArraySize() {
     ImmutableSet.Builder<String> builder = new ImmutableSet.Builder<String>();
     for (int i = 0; i < 10; i++) {
@@ -363,7 +347,6 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
     assertTrue(set.elements.length <= 2 * set.size());
   }
 
-  @GwtIncompatible("internals")
   public void testReusedBuilder() {
     ImmutableSet.Builder<String> builder = new ImmutableSet.Builder<String>();
     for (int i = 0; i < 10; i++) {
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableSortedMapTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableSortedMapTest.java
index 850a8e7..a353a51 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableSortedMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableSortedMapTest.java
@@ -18,10 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableSortedMap.Builder;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.MapTestSuiteBuilder;
 import com.google.common.collect.testing.NavigableMapTestSuiteBuilder;
@@ -29,11 +26,6 @@ import com.google.common.collect.testing.SortedMapInterfaceTest;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
-import com.google.common.collect.testing.google.SortedMapGenerators.ImmutableSortedMapCopyOfEntriesGenerator;
-import com.google.common.collect.testing.google.SortedMapGenerators.ImmutableSortedMapEntryListGenerator;
-import com.google.common.collect.testing.google.SortedMapGenerators.ImmutableSortedMapGenerator;
-import com.google.common.collect.testing.google.SortedMapGenerators.ImmutableSortedMapKeyListGenerator;
-import com.google.common.collect.testing.google.SortedMapGenerators.ImmutableSortedMapValueListGenerator;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
 import java.io.Serializable;
@@ -55,11 +47,10 @@ import junit.framework.TestSuite;
  * @author Jesse Wilson
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableSortedMapTest extends TestCase {
   // TODO: Avoid duplicating code in ImmutableMapTest
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ImmutableSortedMapTest.class);
@@ -186,7 +177,7 @@ public class ImmutableSortedMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public static class ReserializedMapTests extends AbstractMapTests<String, Integer> {
     @Override
     protected SortedMap<String, Integer> makePopulatedMap() {
@@ -830,7 +821,7 @@ public class ImmutableSortedMapTest extends TestCase {
     assertNull(map.get(null));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableSortedMap.class);
@@ -914,7 +905,7 @@ public class ImmutableSortedMapTest extends TestCase {
     assertEquals(intMap.hashCode(), map.hashCode());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testViewSerialization() {
     Map<String, Integer> map = ImmutableSortedMap.of("one", 1, "two", 2, "three", 3);
     SerializableTester.reserializeAndAssert(map.entrySet());
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableSortedMultisetTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableSortedMultisetTest.java
index cda23dd..30826e9 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableSortedMultisetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableSortedMultisetTest.java
@@ -19,7 +19,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableSortedMultiset.Builder;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.TestStringListGenerator;
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableSortedSetTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableSortedSetTest.java
index ea0e3a8..e6f3ab3 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableSortedSetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableSortedSetTest.java
@@ -19,21 +19,10 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.NavigableSetTestSuiteBuilder;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetAsListGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetCopyOfGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetDescendingAsListGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetDescendingGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetExplicitComparator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetExplicitSuperclassComparatorGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetReversedOrderGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetSubsetAsListGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetUnhashableGenerator;
 import com.google.common.collect.testing.testers.SetHashCodeTester;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -54,10 +43,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
 
@@ -229,7 +217,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     return ImmutableSortedSet.copyOf(elements);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     new NullPointerTester().testAllPublicStaticMethods(ImmutableSortedSet.class);
   }
@@ -272,7 +260,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testEmpty_serialization() {
     SortedSet<String> set = of();
     SortedSet<String> copy = SerializableTester.reserialize(set);
@@ -320,7 +308,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertEquals("e", set.last());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSingle_serialization() {
     SortedSet<String> set = of("e");
     SortedSet<String> copy = SerializableTester.reserializeAndAssert(set);
@@ -419,7 +407,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testOf_subSetSerialization() {
     SortedSet<String> set = of("e", "f", "b", "d", "c");
     SerializableTester.reserializeAndAssert(set.subSet("c", "e"));
@@ -435,7 +423,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertEquals("f", set.last());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testOf_serialization() {
     SortedSet<String> set = of("e", "f", "b", "d", "c");
     SortedSet<String> copy = SerializableTester.reserializeAndAssert(set);
@@ -556,7 +544,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertEquals("jumped", set.last());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testExplicitEmpty_serialization() {
     SortedSet<String> set = ImmutableSortedSet.orderedBy(STRING_LENGTH).build();
     SortedSet<String> copy = SerializableTester.reserializeAndAssert(set);
@@ -565,7 +553,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertSame(set.comparator(), copy.comparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testExplicit_serialization() {
     SortedSet<String> set =
         ImmutableSortedSet.orderedBy(STRING_LENGTH)
@@ -814,7 +802,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertFalse(set.containsAll(Sets.newTreeSet(asList("f", "d", "a"))));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testDifferentComparator_serialization() {
     // don't use Collections.reverseOrder(); it didn't reserialize to the same instance in JDK5
     Comparator<Comparable<?>> comparator = Ordering.natural().reverse();
@@ -931,7 +919,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertSame(list, ImmutableList.copyOf(set));
   }
 
-  @GwtIncompatible // SerializableTester, ImmutableSortedAsList
+  // SerializableTester, ImmutableSortedAsList
   public void testAsListReturnTypeAndSerialization() {
     ImmutableSet<String> set = ImmutableSortedSet.of("a", "e", "i", "o", "u");
     ImmutableList<String> list = set.asList();
@@ -946,7 +934,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertEquals(list, ImmutableList.copyOf(set));
   }
 
-  @GwtIncompatible // SerializableTester, ImmutableSortedAsList
+  // SerializableTester, ImmutableSortedAsList
   public void testSubsetAsListReturnTypeAndSerialization() {
     ImmutableSet<String> set = ImmutableSortedSet.of("a", "e", "i", "o", "u").subSet("c", "r");
     ImmutableList<String> list = set.asList();
@@ -1154,7 +1142,6 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertThat(reverse).isNotNull();
   }
 
-  @GwtIncompatible("internals")
   public void testControlsArraySize() {
     ImmutableSet.Builder<String> builder = ImmutableSortedSet.naturalOrder();
     for (int i = 0; i < 10; i++) {
@@ -1166,7 +1153,6 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertTrue(list.array.length <= 2 * set.size());
   }
 
-  @GwtIncompatible("internals")
   public void testReusedBuilder() {
     ImmutableSortedSet.Builder<String> builder = ImmutableSortedSet.naturalOrder();
     for (int i = 0; i < 10; i++) {
diff --git a/android/guava-tests/test/com/google/common/collect/ImmutableTableTest.java b/android/guava-tests/test/com/google/common/collect/ImmutableTableTest.java
index 9bdc99c..d18da04 100644
--- a/android/guava-tests/test/com/google/common/collect/ImmutableTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ImmutableTableTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.SerializableTester;
 
 /**
@@ -27,7 +25,6 @@ import com.google.common.testing.SerializableTester;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 public class ImmutableTableTest extends AbstractTableReadTest {
   @Override
   protected Table<String, Integer, Character> create(Object... data) {
@@ -468,7 +465,7 @@ public class ImmutableTableTest extends AbstractTableReadTest {
     assertThat(copy.columnKeySet()).containsExactlyElementsIn(original.columnKeySet()).inOrder();
   }
 
-  @GwtIncompatible // Mind-bogglingly slow in GWT
+  // Mind-bogglingly slow in GWT
   @AndroidIncompatible // slow
   public void testOverflowCondition() {
     // See https://code.google.com/p/guava-libraries/issues/detail?id=1322 for details.
diff --git a/android/guava-tests/test/com/google/common/collect/InternersTest.java b/android/guava-tests/test/com/google/common/collect/InternersTest.java
index cfa14b8..4d1d88a 100644
--- a/android/guava-tests/test/com/google/common/collect/InternersTest.java
+++ b/android/guava-tests/test/com/google/common/collect/InternersTest.java
@@ -21,7 +21,6 @@ import com.google.common.collect.Interners.InternerImpl;
 import com.google.common.collect.MapMakerInternalMap.Strength;
 import com.google.common.testing.GcFinalization;
 import com.google.common.testing.NullPointerTester;
-import java.lang.ref.WeakReference;
 import junit.framework.TestCase;
 
 /**
diff --git a/android/guava-tests/test/com/google/common/collect/IterablesTest.java b/android/guava-tests/test/com/google/common/collect/IterablesTest.java
index 4177210..b2665f6 100644
--- a/android/guava-tests/test/com/google/common/collect/IterablesTest.java
+++ b/android/guava-tests/test/com/google/common/collect/IterablesTest.java
@@ -25,8 +25,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 import static java.util.Collections.emptyList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
@@ -54,7 +52,6 @@ import junit.framework.TestCase;
  * @author Kevin Bourrillion
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class IterablesTest extends TestCase {
 
   public void testSize0() {
@@ -188,21 +185,21 @@ public class IterablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Iterables.toArray(Iterable, Class)
+  // Iterables.toArray(Iterable, Class)
   public void testToArrayEmpty() {
     Iterable<String> iterable = Collections.emptyList();
     String[] array = Iterables.toArray(iterable, String.class);
     assertTrue(Arrays.equals(new String[0], array));
   }
 
-  @GwtIncompatible // Iterables.toArray(Iterable, Class)
+  // Iterables.toArray(Iterable, Class)
   public void testToArraySingleton() {
     Iterable<String> iterable = Collections.singletonList("a");
     String[] array = Iterables.toArray(iterable, String.class);
     assertTrue(Arrays.equals(new String[] {"a"}, array));
   }
 
-  @GwtIncompatible // Iterables.toArray(Iterable, Class)
+  // Iterables.toArray(Iterable, Class)
   public void testToArray() {
     String[] sourceArray = new String[] {"a", "b", "c"};
     Iterable<String> iterable = asList(sourceArray);
@@ -270,7 +267,7 @@ public class IterablesTest extends TestCase {
 
   private static class HasBoth extends TypeA implements TypeB {}
 
-  @GwtIncompatible // Iterables.filter(Iterable, Class)
+  // Iterables.filter(Iterable, Class)
   public void testFilterByType_iterator() throws Exception {
     HasBoth hasBoth = new HasBoth();
     Iterable<TypeA> alist = Lists.newArrayList(new TypeA(), new TypeA(), hasBoth, new TypeA());
@@ -452,7 +449,7 @@ public class IterablesTest extends TestCase {
     assertEquals(ImmutableList.of(3, 4), first);
   }
 
-  @GwtIncompatible // ?
+  // ?
   // TODO: Figure out why this is failing in GWT.
   public void testPartitionRandomAccessInput() {
     Iterable<Integer> source = asList(1, 2, 3);
@@ -462,7 +459,7 @@ public class IterablesTest extends TestCase {
     assertTrue(iterator.next() instanceof RandomAccess);
   }
 
-  @GwtIncompatible // ?
+  // ?
   // TODO: Figure out why this is failing in GWT.
   public void testPartitionNonRandomAccessInput() {
     Iterable<Integer> source = Lists.newLinkedList(asList(1, 2, 3));
@@ -513,7 +510,7 @@ public class IterablesTest extends TestCase {
     for (@SuppressWarnings("unused") Object obj : iterable) {}
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Iterables.class);
@@ -650,7 +647,7 @@ public class IterablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // slow (~35s)
+  // slow (~35s)
   public void testSkip_iterator() {
     new IteratorTester<Integer>(
         5, MODIFIABLE, newArrayList(2, 3), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -661,7 +658,7 @@ public class IterablesTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~35s)
+  // slow (~35s)
   public void testSkip_iteratorList() {
     new IteratorTester<Integer>(
         5, MODIFIABLE, newArrayList(2, 3), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -1204,7 +1201,7 @@ public class IterablesTest extends TestCase {
     assertFalse(consumingIterator.hasNext());
   }
 
-  @GwtIncompatible // ?
+  // ?
   // TODO: Figure out why this is failing in GWT.
   public void testConsumingIterable_duelingIterators() {
     // Test data
@@ -1395,7 +1392,7 @@ public class IterablesTest extends TestCase {
     verifyMergeSorted(iterables, allIntegers);
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testIterables_nullCheck() throws Exception {
     new ClassSanityTester()
         .forAllPublicStaticMethods(Iterables.class)
diff --git a/android/guava-tests/test/com/google/common/collect/IteratorsTest.java b/android/guava-tests/test/com/google/common/collect/IteratorsTest.java
index 15f7ccc..6c7e130 100644
--- a/android/guava-tests/test/com/google/common/collect/IteratorsTest.java
+++ b/android/guava-tests/test/com/google/common/collect/IteratorsTest.java
@@ -27,8 +27,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 import static java.util.Collections.singleton;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
@@ -63,10 +61,9 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class IteratorsTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite(IteratorsTest.class.getSimpleName());
     suite.addTest(testsForRemoveAllAndRetainAll());
@@ -247,21 +244,21 @@ public class IteratorsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Iterators.toArray(Iterator, Class)
+  // Iterators.toArray(Iterator, Class)
   public void testToArrayEmpty() {
     Iterator<String> iterator = Collections.<String>emptyList().iterator();
     String[] array = Iterators.toArray(iterator, String.class);
     assertTrue(Arrays.equals(new String[0], array));
   }
 
-  @GwtIncompatible // Iterators.toArray(Iterator, Class)
+  // Iterators.toArray(Iterator, Class)
   public void testToArraySingleton() {
     Iterator<String> iterator = Collections.singletonList("a").iterator();
     String[] array = Iterators.toArray(iterator, String.class);
     assertTrue(Arrays.equals(new String[] {"a"}, array));
   }
 
-  @GwtIncompatible // Iterators.toArray(Iterator, Class)
+  // Iterators.toArray(Iterator, Class)
   public void testToArray() {
     String[] sourceArray = new String[] {"a", "b", "c"};
     Iterator<String> iterator = asList(sourceArray).iterator();
@@ -310,7 +307,7 @@ public class IteratorsTest extends TestCase {
     assertEquals(expected, actual);
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testFilterUsingIteratorTester() {
     final List<Integer> list = asList(1, 2, 3, 4, 5);
     final Predicate<Integer> isEven =
@@ -696,7 +693,7 @@ public class IteratorsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testCycleUsingIteratorTester() {
     new IteratorTester<Integer>(
         5,
@@ -710,7 +707,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~5s)
+  // slow (~5s)
   public void testConcatNoIteratorsYieldsEmpty() {
     new EmptyIteratorTester() {
       @SuppressWarnings("unchecked")
@@ -721,7 +718,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~5s)
+  // slow (~5s)
   public void testConcatOneEmptyIteratorYieldsEmpty() {
     new EmptyIteratorTester() {
       @SuppressWarnings("unchecked")
@@ -732,7 +729,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~5s)
+  // slow (~5s)
   public void testConcatMultipleEmptyIteratorsYieldsEmpty() {
     new EmptyIteratorTester() {
       @Override
@@ -742,7 +739,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~3s)
+  // slow (~3s)
   public void testConcatSingletonYieldsSingleton() {
     new SingletonIteratorTester() {
       @SuppressWarnings("unchecked")
@@ -753,7 +750,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~5s)
+  // slow (~5s)
   public void testConcatEmptyAndSingletonAndEmptyYieldsSingleton() {
     new SingletonIteratorTester() {
       @Override
@@ -763,7 +760,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // fairly slow (~40s)
+  // fairly slow (~40s)
   public void testConcatSingletonAndSingletonYieldsDoubleton() {
     new DoubletonIteratorTester() {
       @Override
@@ -773,7 +770,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // fairly slow (~40s)
+  // fairly slow (~40s)
   public void testConcatSingletonAndSingletonWithEmptiesYieldsDoubleton() {
     new DoubletonIteratorTester() {
       @Override
@@ -783,7 +780,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // fairly slow (~50s)
+  // fairly slow (~50s)
   public void testConcatUnmodifiable() {
     new IteratorTester<Integer>(
         5, UNMODIFIABLE, asList(1, 2), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -889,27 +886,27 @@ public class IteratorsTest extends TestCase {
     assertFalse(changed);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Iterators.class);
   }
 
-  @GwtIncompatible // Only used by @GwtIncompatible code
+  // Only used by @GwtIncompatible code
   private abstract static class EmptyIteratorTester extends IteratorTester<Integer> {
     protected EmptyIteratorTester() {
       super(3, MODIFIABLE, Collections.<Integer>emptySet(), IteratorTester.KnownOrder.KNOWN_ORDER);
     }
   }
 
-  @GwtIncompatible // Only used by @GwtIncompatible code
+  // Only used by @GwtIncompatible code
   private abstract static class SingletonIteratorTester extends IteratorTester<Integer> {
     protected SingletonIteratorTester() {
       super(3, MODIFIABLE, singleton(1), IteratorTester.KnownOrder.KNOWN_ORDER);
     }
   }
 
-  @GwtIncompatible // Only used by @GwtIncompatible code
+  // Only used by @GwtIncompatible code
   private abstract static class DoubletonIteratorTester extends IteratorTester<Integer> {
     protected DoubletonIteratorTester() {
       super(5, MODIFIABLE, newArrayList(1, 2), IteratorTester.KnownOrder.KNOWN_ORDER);
@@ -1001,7 +998,7 @@ public class IteratorsTest extends TestCase {
     assertFalse(partitions.hasNext());
   }
 
-  @GwtIncompatible // fairly slow (~50s)
+  // fairly slow (~50s)
   public void testPartition_general() {
     new IteratorTester<List<Integer>>(
         5,
@@ -1030,7 +1027,7 @@ public class IteratorsTest extends TestCase {
     assertEquals(ImmutableList.of(3), first);
   }
 
-  @GwtIncompatible // ?
+  // ?
   // TODO: Figure out why this is failing in GWT.
   public void testPartitionRandomAccess() {
     Iterator<Integer> source = asList(1, 2, 3).iterator();
@@ -1072,7 +1069,7 @@ public class IteratorsTest extends TestCase {
     assertFalse(partitions.hasNext());
   }
 
-  @GwtIncompatible // fairly slow (~50s)
+  // fairly slow (~50s)
   public void testPaddedPartition_general() {
     new IteratorTester<List<Integer>>(
         5,
@@ -1171,7 +1168,7 @@ public class IteratorsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testForArrayUsingTester() {
     new IteratorTester<Integer>(
         6, UNMODIFIABLE, asList(1, 2, 3), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -1182,7 +1179,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testForArrayWithOffsetUsingTester() {
     new IteratorTester<Integer>(
         6, UNMODIFIABLE, asList(1, 2, 3), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -1333,7 +1330,7 @@ public class IteratorsTest extends TestCase {
     assertEquals("pants", list.get(0));
   }
 
-  @GwtIncompatible // fairly slow (~30s)
+  // fairly slow (~30s)
   public void testLimitUsingIteratorTester() {
     final List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5);
     new IteratorTester<Integer>(
@@ -1535,7 +1532,7 @@ public class IteratorsTest extends TestCase {
     assertEquals(3, Iterators.frequency(list.iterator(), null));
   }
 
-  @GwtIncompatible // slow (~4s)
+  // slow (~4s)
   public void testSingletonIterator() {
     new IteratorTester<Integer>(
         3, UNMODIFIABLE, singleton(1), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -1586,7 +1583,7 @@ public class IteratorsTest extends TestCase {
     assertEquals(newArrayList("b", "d"), list);
   }
 
-  @GwtIncompatible // ListTestSuiteBuilder
+  // ListTestSuiteBuilder
   private static Test testsForRemoveAllAndRetainAll() {
     return ListTestSuiteBuilder.using(
             new TestStringListGenerator() {
@@ -1640,7 +1637,7 @@ public class IteratorsTest extends TestCase {
     assertFalse(consumingIterator.hasNext());
   }
 
-  @GwtIncompatible // ?
+  // ?
   // TODO: Figure out why this is failing in GWT.
   public void testConsumingIterator_duelingIterators() {
     // Test data
diff --git a/android/guava-tests/test/com/google/common/collect/LegacyComparable.java b/android/guava-tests/test/com/google/common/collect/LegacyComparable.java
index 8b0c962..534d4f7 100644
--- a/android/guava-tests/test/com/google/common/collect/LegacyComparable.java
+++ b/android/guava-tests/test/com/google/common/collect/LegacyComparable.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Arrays;
 
@@ -28,7 +27,6 @@ import java.util.Arrays;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("ComparableType")
-@GwtCompatible
 class LegacyComparable implements Comparable, Serializable {
   static final LegacyComparable X = new LegacyComparable("x");
   static final LegacyComparable Y = new LegacyComparable("y");
diff --git a/android/guava-tests/test/com/google/common/collect/LenientSerializableTester.java b/android/guava-tests/test/com/google/common/collect/LenientSerializableTester.java
index ce3ec9d..168df4d 100644
--- a/android/guava-tests/test/com/google/common/collect/LenientSerializableTester.java
+++ b/android/guava-tests/test/com/google/common/collect/LenientSerializableTester.java
@@ -20,10 +20,7 @@ import static com.google.common.testing.SerializableTester.reserialize;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertTrue;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.SerializableTester;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Set;
 
@@ -37,14 +34,12 @@ import java.util.Set;
  * The whole thing is really @GwtIncompatible, but GwtJUnitConvertedTestModule doesn't have a
  * parameter for non-GWT, non-test files, and it didn't seem worth adding one for this unusual case.
  */
-@GwtCompatible(emulated = true)
 final class LenientSerializableTester {
   /*
    * TODO(cpovirk): move this to c.g.c.testing if we allow for c.g.c.annotations dependencies so
    * that it can be GWTified?
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   static <E> Set<E> reserializeAndAssertLenient(Set<E> original) {
     Set<E> copy = reserialize(original);
     assertEquals(original, copy);
@@ -52,8 +47,7 @@ final class LenientSerializableTester {
     return copy;
   }
 
-  @CanIgnoreReturnValue
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   static <E> Multiset<E> reserializeAndAssertLenient(Multiset<E> original) {
     Multiset<E> copy = reserialize(original);
     assertEquals(original, copy);
@@ -61,8 +55,7 @@ final class LenientSerializableTester {
     return copy;
   }
 
-  @CanIgnoreReturnValue
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   static <E> Collection<E> reserializeAndAssertElementsEqual(Collection<E> original) {
     Collection<E> copy = reserialize(original);
     assertTrue(Iterables.elementsEqual(original, copy));
diff --git a/android/guava-tests/test/com/google/common/collect/LinkedHashMultimapTest.java b/android/guava-tests/test/com/google/common/collect/LinkedHashMultimapTest.java
index 92d8e05..24606f8 100644
--- a/android/guava-tests/test/com/google/common/collect/LinkedHashMultimapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/LinkedHashMultimapTest.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.IteratorFeature.MODIFIABLE;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.IteratorTester;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -49,10 +47,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class LinkedHashMultimapTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -135,14 +132,14 @@ public class LinkedHashMultimapTest extends TestCase {
     assertOrderingReadOnly(Multimaps.synchronizedMultimap(multimap));
   }
 
-  @GwtIncompatible // SeriazableTester
+  // SeriazableTester
   public void testSerializationOrdering() {
     Multimap<String, Integer> multimap = initializeMultimap5();
     Multimap<String, Integer> copy = SerializableTester.reserializeAndAssert(multimap);
     assertOrderingReadOnly(copy);
   }
 
-  @GwtIncompatible // SeriazableTester
+  // SeriazableTester
   public void testSerializationOrderingKeysAndEntries() {
     Multimap<String, Integer> multimap = LinkedHashMultimap.create();
     multimap.put("a", 1);
@@ -275,7 +272,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testGetIteration() {
     new IteratorTester<Integer>(
         6,
@@ -300,7 +297,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testEntriesIteration() {
     @SuppressWarnings("unchecked")
     Set<Entry<String, Integer>> set =
@@ -332,7 +329,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testKeysIteration() {
     new IteratorTester<String>(
         6,
@@ -357,7 +354,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testValuesIteration() {
     new IteratorTester<Integer>(
         6, MODIFIABLE, newArrayList(2, 3, 4, 5, 6), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -379,7 +376,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testKeySetIteration() {
     new IteratorTester<String>(
         6,
@@ -408,7 +405,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testAsSetIteration() {
     @SuppressWarnings("unchecked")
     Set<Entry<String, Collection<Integer>>> set =
diff --git a/android/guava-tests/test/com/google/common/collect/LinkedHashMultisetTest.java b/android/guava-tests/test/com/google/common/collect/LinkedHashMultisetTest.java
index da7e868..2ffc94b 100644
--- a/android/guava-tests/test/com/google/common/collect/LinkedHashMultisetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/LinkedHashMultisetTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.MultisetFeature;
@@ -37,10 +35,9 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class LinkedHashMultisetTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
diff --git a/android/guava-tests/test/com/google/common/collect/LinkedListMultimapTest.java b/android/guava-tests/test/com/google/common/collect/LinkedListMultimapTest.java
index b0d48f0..f36d74a 100644
--- a/android/guava-tests/test/com/google/common/collect/LinkedListMultimapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/LinkedListMultimapTest.java
@@ -25,8 +25,6 @@ import static com.google.common.collect.testing.IteratorFeature.SUPPORTS_SET;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.IteratorTester;
 import com.google.common.collect.testing.ListIteratorTester;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -54,10 +52,9 @@ import junit.framework.TestSuite;
  *
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 public class LinkedListMultimapTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -333,7 +330,7 @@ public class LinkedListMultimapTest extends TestCase {
   }
 
   @SuppressWarnings("unchecked")
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testEntriesIteration() {
     List<Entry<String, Integer>> addItems =
         ImmutableList.of(
@@ -370,7 +367,7 @@ public class LinkedListMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testKeysIteration() {
     new IteratorTester<String>(
         6,
@@ -395,7 +392,7 @@ public class LinkedListMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testValuesIteration() {
     List<Integer> addItems = ImmutableList.of(99, 88, 77);
 
@@ -426,7 +423,7 @@ public class LinkedListMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testKeySetIteration() {
     new IteratorTester<String>(
         6,
@@ -456,7 +453,7 @@ public class LinkedListMultimapTest extends TestCase {
   }
 
   @SuppressWarnings("unchecked")
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testAsSetIteration() {
     Set<Entry<String, Collection<Integer>>> set =
         Sets.newLinkedHashSet(
@@ -498,7 +495,7 @@ public class LinkedListMultimapTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(LinkedListMultimap.class);
diff --git a/android/guava-tests/test/com/google/common/collect/ListsImplTest.java b/android/guava-tests/test/com/google/common/collect/ListsImplTest.java
index 2d18f5a..284ee30 100644
--- a/android/guava-tests/test/com/google/common/collect/ListsImplTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ListsImplTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -34,7 +32,6 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 /** Tests the package level *impl methods directly using various types of lists. */
-@GwtCompatible(emulated = true)
 public class ListsImplTest extends TestCase {
 
   /** Describes how a list is modifiable */
@@ -70,7 +67,7 @@ public class ListsImplTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(createExampleSuite(new ArrayListExample("ArrayList")));
@@ -82,7 +79,7 @@ public class ListsImplTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // suite sub call
+  // suite sub call
   private static TestSuite createExampleSuite(ListExample example) {
     TestSuite resultSuite = new TestSuite(ListsImplTest.class);
     for (Enumeration<Test> testEnum = resultSuite.tests(); testEnum.hasMoreElements(); ) {
@@ -261,7 +258,7 @@ public class ListsImplTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Iterables.toArray
+  // Iterables.toArray
   private static final class ArraysAsListExample extends ListExample {
 
     protected ArraysAsListExample(String name) {
@@ -288,7 +285,7 @@ public class ListsImplTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // CopyOnWriteArrayList
+  // CopyOnWriteArrayList
   private static final class CopyOnWriteListExample extends ListExample {
 
     protected CopyOnWriteListExample(String name) {
diff --git a/android/guava-tests/test/com/google/common/collect/ListsTest.java b/android/guava-tests/test/com/google/common/collect/ListsTest.java
index ef90e54..b0f025e 100644
--- a/android/guava-tests/test/com/google/common/collect/ListsTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ListsTest.java
@@ -22,8 +22,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 import static java.util.Collections.singletonList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.collect.testing.IteratorTester;
@@ -58,7 +56,6 @@ import junit.framework.TestSuite;
  * @author Mike Bostock
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ListsTest extends TestCase {
 
   private static final Collection<Integer> SOME_COLLECTION = asList(0, 1, 1);
@@ -98,7 +95,7 @@ public class ListsTest extends TestCase {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ListsTest.class);
@@ -393,19 +390,19 @@ public class ListsTest extends TestCase {
     assertEquals(SOME_COLLECTION, list);
   }
 
-  @GwtIncompatible // CopyOnWriteArrayList
+  // CopyOnWriteArrayList
   public void testNewCOWALEmpty() {
     CopyOnWriteArrayList<Integer> list = Lists.newCopyOnWriteArrayList();
     assertEquals(Collections.emptyList(), list);
   }
 
-  @GwtIncompatible // CopyOnWriteArrayList
+  // CopyOnWriteArrayList
   public void testNewCOWALFromIterable() {
     CopyOnWriteArrayList<Integer> list = Lists.newCopyOnWriteArrayList(SOME_ITERABLE);
     assertEquals(SOME_COLLECTION, list);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Lists.class);
@@ -441,7 +438,7 @@ public class ListsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testAsList1() {
     List<String> list = Lists.asList("foo", new String[] {"bar", "baz"});
     checkFooBarBazList(list);
@@ -499,7 +496,7 @@ public class ListsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testAsList2Small() {
     List<String> list = Lists.asList("foo", "bar", new String[0]);
     assertThat(list).containsExactly("foo", "bar").inOrder();
@@ -935,7 +932,7 @@ public class ListsTest extends TestCase {
     assertEquals(asList(3), partitions.get(1));
   }
 
-  @GwtIncompatible // ArrayList.subList doesn't implement RandomAccess in GWT.
+  // ArrayList.subList doesn't implement RandomAccess in GWT.
   public void testPartitionRandomAccessTrue() {
     List<Integer> source = asList(1, 2, 3);
     List<List<Integer>> partitions = Lists.partition(source, 2);
@@ -993,7 +990,7 @@ public class ListsTest extends TestCase {
     assertEquals(1, Lists.partition(list, Integer.MAX_VALUE - 1).size());
   }
 
-  @GwtIncompatible // cannot do such a big explicit copy
+  // cannot do such a big explicit copy
   public void testPartitionSize_2() {
     assertEquals(2, Lists.partition(Collections.nCopies(0x40000001, 1), 0x40000000).size());
   }
diff --git a/android/guava-tests/test/com/google/common/collect/MapMakerInternalMapTest.java b/android/guava-tests/test/com/google/common/collect/MapMakerInternalMapTest.java
index 47fc74c..1003dca 100644
--- a/android/guava-tests/test/com/google/common/collect/MapMakerInternalMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MapMakerInternalMapTest.java
@@ -23,8 +23,6 @@ import com.google.common.base.Equivalence;
 import com.google.common.collect.MapMakerInternalMap.InternalEntry;
 import com.google.common.collect.MapMakerInternalMap.Segment;
 import com.google.common.collect.MapMakerInternalMap.Strength;
-import com.google.common.collect.MapMakerInternalMap.WeakValueEntry;
-import com.google.common.collect.MapMakerInternalMap.WeakValueReference;
 import com.google.common.testing.NullPointerTester;
 import java.lang.ref.Reference;
 import java.util.concurrent.atomic.AtomicReferenceArray;
diff --git a/android/guava-tests/test/com/google/common/collect/MapMakerTest.java b/android/guava-tests/test/com/google/common/collect/MapMakerTest.java
index 4b54f0d..44c699f 100644
--- a/android/guava-tests/test/com/google/common/collect/MapMakerTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MapMakerTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.util.concurrent.Uninterruptibles.awaitUninterruptibly;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.testing.NullPointerTester;
 import java.util.Map;
@@ -28,16 +26,15 @@ import java.util.concurrent.CountDownLatch;
 import junit.framework.TestCase;
 
 /** @author Charles Fry */
-@GwtCompatible(emulated = true)
 public class MapMakerTest extends TestCase {
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullParameters() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(new MapMaker());
   }
 
-  @GwtIncompatible // threads
+  // threads
   static final class DelayingIdentityLoader<T> implements Function<T, T> {
     private final CountDownLatch delayLatch;
 
diff --git a/android/guava-tests/test/com/google/common/collect/MapsCollectionTest.java b/android/guava-tests/test/com/google/common/collect/MapsCollectionTest.java
index 54aa1aa..5c5e227 100644
--- a/android/guava-tests/test/com/google/common/collect/MapsCollectionTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MapsCollectionTest.java
@@ -52,7 +52,6 @@ import java.util.SortedSet;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Test suites for wrappers in {@code Maps}.
diff --git a/android/guava-tests/test/com/google/common/collect/MapsSortedTransformValuesTest.java b/android/guava-tests/test/com/google/common/collect/MapsSortedTransformValuesTest.java
index 98bbde5..7db6930 100644
--- a/android/guava-tests/test/com/google/common/collect/MapsSortedTransformValuesTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MapsSortedTransformValuesTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import java.util.SortedMap;
@@ -26,7 +25,6 @@ import java.util.SortedMap;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class MapsSortedTransformValuesTest extends MapsTransformValuesTest {
 
   @Override
diff --git a/android/guava-tests/test/com/google/common/collect/MapsTest.java b/android/guava-tests/test/com/google/common/collect/MapsTest.java
index 76394c8..ca8d04f 100644
--- a/android/guava-tests/test/com/google/common/collect/MapsTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MapsTest.java
@@ -24,8 +24,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
@@ -71,7 +69,6 @@ import junit.framework.TestCase;
  * @author Mike Bostock
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class MapsTest extends TestCase {
 
   private static final Comparator<Integer> SOME_COMPARATOR = Collections.reverseOrder();
@@ -117,7 +114,7 @@ public class MapsTest extends TestCase {
    *
    * <p>This test may fail miserably on non-OpenJDK environments...
    */
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // relies on assumptions about OpenJDK
   public void testNewHashMapWithExpectedSize_wontGrow() throws Exception {
     // before jdk7u40: creates one-bucket table
@@ -131,7 +128,7 @@ public class MapsTest extends TestCase {
   }
 
   /** Same test as above but for newLinkedHashMapWithExpectedSize */
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // relies on assumptions about OpenJDK
   public void testNewLinkedHashMapWithExpectedSize_wontGrow() throws Exception {
     assertTrue(bucketsOf(Maps.newLinkedHashMapWithExpectedSize(0)) <= 1);
@@ -144,7 +141,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static void assertWontGrow(
       int size, HashMap<Object, Object> map1, HashMap<Object, Object> map2) throws Exception {
     // Only start measuring table size after the first element inserted, to
@@ -170,7 +167,7 @@ public class MapsTest extends TestCase {
         .isEqualTo(initialBuckets);
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static int bucketsOf(HashMap<?, ?> hashMap) throws Exception {
     Field tableField = HashMap.class.getDeclaredField("table");
     tableField.setAccessible(true);
@@ -366,7 +363,7 @@ public class MapsTest extends TestCase {
     assertEquals(hashmap.toString(), Maps.toStringImpl(hashmap));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     new NullPointerTester().testAllPublicStaticMethods(Maps.class);
   }
@@ -773,7 +770,7 @@ public class MapsTest extends TestCase {
     assertNull(map.get("five"));
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testAsMapNavigable() {
     NavigableSet<String> strings = Sets.newTreeSet(asList("one", "two", "three"));
     NavigableMap<String, Integer> map = Maps.asMap(strings, LENGTH_FUNCTION);
@@ -820,7 +817,7 @@ public class MapsTest extends TestCase {
     assertEquals(1, map.size());
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testAsMapNavigableReadsThrough() {
     NavigableSet<String> strings = Sets.newTreeSet();
     Collections.addAll(strings, "one", "two", "three");
@@ -854,7 +851,7 @@ public class MapsTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testAsMapNavigableWritesThrough() {
     NavigableSet<String> strings = Sets.newTreeSet();
     Collections.addAll(strings, "one", "two", "three");
@@ -866,7 +863,7 @@ public class MapsTest extends TestCase {
     assertThat(strings).contains("one");
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testAsMapNavigableSubViewKeySetsDoNotSupportAdd() {
     NavigableMap<String, Integer> map = Maps.asMap(Sets.<String>newTreeSet(), LENGTH_FUNCTION);
     try {
@@ -896,7 +893,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testAsMapNavigableEmpty() {
     NavigableSet<String> strings = ImmutableSortedSet.of();
     NavigableMap<String, Integer> map = Maps.asMap(strings, LENGTH_FUNCTION);
@@ -1014,7 +1011,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Maps.fromProperties
+  // Maps.fromProperties
   @SuppressWarnings("deprecation") // StringBufferInputStream
   public void testFromProperties() throws IOException {
     Properties testProp = new Properties();
@@ -1063,7 +1060,7 @@ public class MapsTest extends TestCase {
     assertNotSame(System.getProperty("java.version"), result.get("java.version"));
   }
 
-  @GwtIncompatible // Maps.fromProperties
+  // Maps.fromProperties
   @SuppressWarnings("serial") // never serialized
   public void testFromPropertiesNullKey() {
     Properties properties =
@@ -1083,7 +1080,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Maps.fromProperties
+  // Maps.fromProperties
   @SuppressWarnings("serial") // never serialized
   public void testFromPropertiesNonStringKeys() {
     Properties properties =
@@ -1679,7 +1676,7 @@ public class MapsTest extends TestCase {
     assertEquals(ImmutableSortedMap.of("a", 2.0, "b", 3.0), transformed);
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testNavigableMapTransformValues() {
     NavigableMap<String, Integer> map = ImmutableSortedMap.of("a", 4, "b", 9);
     NavigableMap<String, Double> transformed = transformValues(map, SQRT_FUNCTION);
@@ -1705,7 +1702,7 @@ public class MapsTest extends TestCase {
     assertEquals(ImmutableSortedMap.of("a", "a4", "b", "b9"), transformed);
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testNavigableMapTransformEntries() {
     NavigableMap<String, String> map = ImmutableSortedMap.of("a", "4", "b", "9");
     EntryTransformer<String, String, String> concat =
@@ -1720,7 +1717,7 @@ public class MapsTest extends TestCase {
     assertEquals(ImmutableSortedMap.of("a", "a4", "b", "b9"), transformed);
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testUnmodifiableNavigableMap() {
     TreeMap<Integer, String> mod = Maps.newTreeMap();
     mod.put(1, "one");
@@ -1830,7 +1827,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   void ensureNotDirectlyModifiable(NavigableMap<Integer, String> unmod) {
     try {
       unmod.put(4, "four");
@@ -1859,7 +1856,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testSubMap_boundedRange() {
     ImmutableSortedMap<Integer, Integer> map = ImmutableSortedMap.of(2, 0, 4, 0, 6, 0, 8, 0, 10, 0);
     ImmutableSortedMap<Integer, Integer> empty = ImmutableSortedMap.of();
@@ -1889,7 +1886,7 @@ public class MapsTest extends TestCase {
     assertEquals(empty, Maps.subMap(map, Range.closedOpen(20, 30)));
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testSubMap_halfBoundedRange() {
     ImmutableSortedMap<Integer, Integer> map = ImmutableSortedMap.of(2, 0, 4, 0, 6, 0, 8, 0, 10, 0);
     ImmutableSortedMap<Integer, Integer> empty = ImmutableSortedMap.of();
@@ -1916,14 +1913,14 @@ public class MapsTest extends TestCase {
     assertEquals(map, Maps.subMap(map, Range.atMost(20)));
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testSubMap_unboundedRange() {
     ImmutableSortedMap<Integer, Integer> map = ImmutableSortedMap.of(2, 0, 4, 0, 6, 0, 8, 0, 10, 0);
 
     assertEquals(map, Maps.subMap(map, Range.<Integer>all()));
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testSubMap_unnaturalOrdering() {
     ImmutableSortedMap<Integer, Integer> map =
         ImmutableSortedMap.<Integer, Integer>reverseOrder()
diff --git a/android/guava-tests/test/com/google/common/collect/MapsTransformValuesTest.java b/android/guava-tests/test/com/google/common/collect/MapsTransformValuesTest.java
index d81f546..db210ba 100644
--- a/android/guava-tests/test/com/google/common/collect/MapsTransformValuesTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MapsTransformValuesTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.collect.testing.MapInterfaceTest;
@@ -25,14 +24,12 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Tests for {@link Maps#transformValues}.
  *
  * @author Isaac Shum
  */
-@GwtCompatible
 public class MapsTransformValuesTest extends MapInterfaceTest<String, String> {
 
   /**
diff --git a/android/guava-tests/test/com/google/common/collect/MapsTransformValuesUnmodifiableIteratorTest.java b/android/guava-tests/test/com/google/common/collect/MapsTransformValuesUnmodifiableIteratorTest.java
index 81a2d93..e552231 100644
--- a/android/guava-tests/test/com/google/common/collect/MapsTransformValuesUnmodifiableIteratorTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MapsTransformValuesUnmodifiableIteratorTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.collect.testing.MapInterfaceTest;
@@ -25,7 +24,6 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Tests for {@link Maps#transformValues} when the backing map's views have iterators that don't
@@ -33,7 +31,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class MapsTransformValuesUnmodifiableIteratorTest extends MapInterfaceTest<String, String> {
   // TODO(jlevy): Move shared code of this class and MapsTransformValuesTest
   // to a superclass.
diff --git a/android/guava-tests/test/com/google/common/collect/MinMaxPriorityQueueTest.java b/android/guava-tests/test/com/google/common/collect/MinMaxPriorityQueueTest.java
index 5471e36..587fd8d 100644
--- a/android/guava-tests/test/com/google/common/collect/MinMaxPriorityQueueTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MinMaxPriorityQueueTest.java
@@ -21,8 +21,6 @@ import static com.google.common.collect.Platform.reduceExponentIfGwt;
 import static com.google.common.collect.Platform.reduceIterationsIfGwt;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.IteratorFeature;
 import com.google.common.collect.testing.IteratorTester;
 import com.google.common.collect.testing.QueueTestSuiteBuilder;
@@ -54,11 +52,10 @@ import junit.framework.TestSuite;
  * @author Alexei Stolboushkin
  * @author Sverre Sundsdal
  */
-@GwtCompatible(emulated = true)
 public class MinMaxPriorityQueueTest extends TestCase {
   private static final Ordering<Integer> SOME_COMPARATOR = Ordering.natural().reverse();
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(MinMaxPriorityQueueTest.class);
@@ -886,7 +883,7 @@ public class MinMaxPriorityQueueTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicConstructors(MinMaxPriorityQueue.class);
diff --git a/android/guava-tests/test/com/google/common/collect/MultimapBuilderTest.java b/android/guava-tests/test/com/google/common/collect/MultimapBuilderTest.java
index 5528aba..e7c72c6 100644
--- a/android/guava-tests/test/com/google/common/collect/MultimapBuilderTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MultimapBuilderTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.MultimapBuilder.MultimapBuilderWithKeys;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -33,10 +31,9 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class MultimapBuilderTest extends TestCase {
 
-  @GwtIncompatible // doesn't build without explicit type parameters on build() methods
+  // doesn't build without explicit type parameters on build() methods
   public void testGenerics() {
     ListMultimap<String, Integer> a = MultimapBuilder.hashKeys().arrayListValues().build();
     SortedSetMultimap<String, Integer> b = MultimapBuilder.linkedHashKeys().treeSetValues().build();
@@ -55,7 +52,7 @@ public class MultimapBuilderTest extends TestCase {
             .<String, Integer>build();
   }
 
-  @GwtIncompatible // doesn't build without explicit type parameters on build() methods
+  // doesn't build without explicit type parameters on build() methods
   public void testTreeKeys() {
     ListMultimap<String, Integer> multimap = MultimapBuilder.treeKeys().arrayListValues().build();
     assertTrue(multimap.keySet() instanceof SortedSet);
@@ -69,7 +66,7 @@ public class MultimapBuilderTest extends TestCase {
     assertTrue(multimap.asMap() instanceof SortedMap);
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   public void testSerialization() throws Exception {
     for (MultimapBuilderWithKeys<?> builderWithKeys :
         ImmutableList.of(
@@ -93,14 +90,14 @@ public class MultimapBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static void reserializeAndAssert(Object object) throws Exception {
     Object copy = reserialize(object);
     assertEquals(object, copy);
     assertEquals(object.getClass(), copy.getClass());
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static Object reserialize(Object object) throws Exception {
     ByteArrayOutputStream bytes = new ByteArrayOutputStream();
     new ObjectOutputStream(bytes).writeObject(object);
diff --git a/android/guava-tests/test/com/google/common/collect/MultimapsCollectionTest.java b/android/guava-tests/test/com/google/common/collect/MultimapsCollectionTest.java
index e684c3b..21da89c 100644
--- a/android/guava-tests/test/com/google/common/collect/MultimapsCollectionTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MultimapsCollectionTest.java
@@ -27,7 +27,6 @@ import static com.google.common.collect.testing.google.MultisetIteratorTester.ge
 import static com.google.common.collect.testing.google.MultisetRemoveTester.getRemoveDuplicateInitializingMethods;
 import static java.lang.reflect.Proxy.newProxyInstance;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
@@ -70,7 +69,7 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtIncompatible // suite // TODO(cpovirk): set up collect/gwt/suites version
+// suite // TODO(cpovirk): set up collect/gwt/suites version
 public class MultimapsCollectionTest extends TestCase {
 
   private static final Feature<?>[] FOR_MAP_FEATURES_ONE = {
diff --git a/android/guava-tests/test/com/google/common/collect/MultimapsFilterEntriesAsMapTest.java b/android/guava-tests/test/com/google/common/collect/MultimapsFilterEntriesAsMapTest.java
index 314a127..eafbe5f 100644
--- a/android/guava-tests/test/com/google/common/collect/MultimapsFilterEntriesAsMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MultimapsFilterEntriesAsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Predicate;
 import java.util.Collection;
 import java.util.Map;
@@ -27,7 +26,6 @@ import java.util.Map.Entry;
  *
  * @author Jared Levy
  */
-@GwtIncompatible(value = "untested")
 public class MultimapsFilterEntriesAsMapTest extends AbstractMultimapAsMapImplementsMapTest {
   private static final Predicate<Entry<String, Integer>> PREDICATE =
       new Predicate<Entry<String, Integer>>() {
diff --git a/android/guava-tests/test/com/google/common/collect/MultimapsTest.java b/android/guava-tests/test/com/google/common/collect/MultimapsTest.java
index 1a8f84e..3df8cdf 100644
--- a/android/guava-tests/test/com/google/common/collect/MultimapsTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MultimapsTest.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.IteratorFeature.MODIFIABLE;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.base.Predicates;
@@ -56,14 +54,12 @@ import java.util.SortedMap;
 import java.util.SortedSet;
 import java.util.TreeSet;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Unit test for {@code Multimaps}.
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class MultimapsTest extends TestCase {
 
   private static final Comparator<Integer> INT_COMPARATOR =
@@ -106,12 +102,12 @@ public class MultimapsTest extends TestCase {
     assertSame(immutable, Multimaps.unmodifiableMultimap((Multimap<String, Integer>) immutable));
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableArrayListMultimap() {
     checkUnmodifiableMultimap(ArrayListMultimap.<String, Integer>create(), true);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableArrayListMultimap() {
     Multimap<String, Integer> unmodifiable =
         prepareUnmodifiableTests(ArrayListMultimap.<String, Integer>create(), true, null, null);
@@ -136,37 +132,37 @@ public class MultimapsTest extends TestCase {
     assertFalse(multimap.get("bar") instanceof RandomAccess);
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableHashMultimap() {
     checkUnmodifiableMultimap(HashMultimap.<String, Integer>create(), false);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableHashMultimap() {
     Multimap<String, Integer> unmodifiable =
         prepareUnmodifiableTests(HashMultimap.<String, Integer>create(), false, null, null);
     SerializableTester.reserializeAndAssert(unmodifiable);
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableTreeMultimap() {
     checkUnmodifiableMultimap(TreeMultimap.<String, Integer>create(), false, "null", 42);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableTreeMultimap() {
     Multimap<String, Integer> unmodifiable =
         prepareUnmodifiableTests(TreeMultimap.<String, Integer>create(), false, "null", 42);
     SerializableTester.reserializeAndAssert(unmodifiable);
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableSynchronizedArrayListMultimap() {
     checkUnmodifiableMultimap(
         Multimaps.synchronizedListMultimap(ArrayListMultimap.<String, Integer>create()), true);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableSynchronizedArrayListMultimap() {
     Multimap<String, Integer> unmodifiable =
         prepareUnmodifiableTests(
@@ -177,13 +173,13 @@ public class MultimapsTest extends TestCase {
     SerializableTester.reserializeAndAssert(unmodifiable);
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableSynchronizedHashMultimap() {
     checkUnmodifiableMultimap(
         Multimaps.synchronizedSetMultimap(HashMultimap.<String, Integer>create()), false);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableSynchronizedHashMultimap() {
     Multimap<String, Integer> unmodifiable =
         prepareUnmodifiableTests(
@@ -194,7 +190,7 @@ public class MultimapsTest extends TestCase {
     SerializableTester.reserializeAndAssert(unmodifiable);
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableSynchronizedTreeMultimap() {
     TreeMultimap<String, Integer> delegate =
         TreeMultimap.create(Ordering.<String>natural(), INT_COMPARATOR);
@@ -203,7 +199,7 @@ public class MultimapsTest extends TestCase {
     assertSame(INT_COMPARATOR, multimap.valueComparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableSynchronizedTreeMultimap() {
     TreeMultimap<String, Integer> delegate =
         TreeMultimap.create(Ordering.<String>natural(), INT_COMPARATOR);
@@ -448,7 +444,7 @@ public class MultimapsTest extends TestCase {
     assertEquals(multimapView, ArrayListMultimap.create());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForMapSerialization() {
     Map<String, Integer> map = Maps.newHashMap();
     map.put("foo", 1);
@@ -630,7 +626,7 @@ public class MultimapsTest extends TestCase {
     assertTrue(multimap.get(Color.BLUE) instanceof List);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNewMultimapSerialization() {
     CountingSupplier<Queue<Integer>> factory = new QueueSupplier();
     Map<Color, Collection<Integer>> map = Maps.newEnumMap(Color.class);
@@ -665,7 +661,7 @@ public class MultimapsTest extends TestCase {
     assertTrue(multimap.asMap() instanceof SortedMap);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNewListMultimapSerialization() {
     CountingSupplier<LinkedList<Integer>> factory = new ListSupplier();
     Map<Color, Collection<Integer>> map = Maps.newTreeMap();
@@ -696,7 +692,7 @@ public class MultimapsTest extends TestCase {
     assertEquals(Sets.newHashSet(4, 3, 1), multimap.get(Color.BLUE));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNewSetMultimapSerialization() {
     CountingSupplier<Set<Integer>> factory = new SetSupplier();
     Map<Color, Collection<Integer>> map = Maps.newHashMap();
@@ -729,7 +725,7 @@ public class MultimapsTest extends TestCase {
     assertEquals(INT_COMPARATOR, multimap.valueComparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNewSortedSetMultimapSerialization() {
     CountingSupplier<TreeSet<Integer>> factory = new SortedSetSupplier();
     Map<Color, Collection<Integer>> map = Maps.newEnumMap(Color.class);
@@ -812,7 +808,6 @@ public class MultimapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible(value = "untested")
   public void testTransformValues() {
     SetMultimap<String, Integer> multimap =
         ImmutableSetMultimap.of("a", 2, "b", -3, "b", 3, "a", 4, "c", 6);
@@ -834,7 +829,6 @@ public class MultimapsTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible(value = "untested")
   public void testTransformValuesIsView() {
     Multimap<String, String> multimap = LinkedListMultimap.create();
     multimap.put("a", "a");
@@ -853,7 +847,6 @@ public class MultimapsTest extends TestCase {
     assertThat(transformed.entries()).containsExactly(immutableEntry("a", 3));
   }
 
-  @GwtIncompatible(value = "untested")
   public void testTransformListValues() {
     ListMultimap<String, Integer> multimap =
         ImmutableListMultimap.of("a", 2, "b", -3, "b", 3, "a", 4, "c", 6);
@@ -875,7 +868,6 @@ public class MultimapsTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible(value = "untested")
   public void testTransformEntries() {
     SetMultimap<String, Integer> multimap = ImmutableSetMultimap.of("a", 1, "a", 4, "b", -6);
     EntryTransformer<String, Integer, String> transformer =
@@ -892,7 +884,6 @@ public class MultimapsTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible(value = "untested")
   public void testTransformListEntries() {
     ListMultimap<String, Integer> multimap =
         ImmutableListMultimap.of("a", 1, "a", 4, "b", 6, "a", 4);
@@ -998,7 +989,7 @@ public class MultimapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     new NullPointerTester().testAllPublicStaticMethods(Multimaps.class);
   }
diff --git a/android/guava-tests/test/com/google/common/collect/MultimapsTransformValuesAsMapTest.java b/android/guava-tests/test/com/google/common/collect/MultimapsTransformValuesAsMapTest.java
index 491a632..4cf7a53 100644
--- a/android/guava-tests/test/com/google/common/collect/MultimapsTransformValuesAsMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MultimapsTransformValuesAsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Functions;
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +25,6 @@ import java.util.Map;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class MultimapsTransformValuesAsMapTest extends AbstractMultimapAsMapImplementsMapTest {
 
   public MultimapsTransformValuesAsMapTest() {
diff --git a/android/guava-tests/test/com/google/common/collect/MultisetsCollectionTest.java b/android/guava-tests/test/com/google/common/collect/MultisetsCollectionTest.java
index f143ebd..2e960c5 100644
--- a/android/guava-tests/test/com/google/common/collect/MultisetsCollectionTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MultisetsCollectionTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
@@ -39,7 +38,7 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtIncompatible // suite // TODO(cpovirk): set up collect/gwt/suites version
+// suite // TODO(cpovirk): set up collect/gwt/suites version
 public class MultisetsCollectionTest extends TestCase {
   public static Test suite() {
     TestSuite suite = new TestSuite();
diff --git a/android/guava-tests/test/com/google/common/collect/MultisetsImmutableEntryTest.java b/android/guava-tests/test/com/google/common/collect/MultisetsImmutableEntryTest.java
index bef27b9..4e693fc 100644
--- a/android/guava-tests/test/com/google/common/collect/MultisetsImmutableEntryTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MultisetsImmutableEntryTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset.Entry;
 import java.util.Collections;
 import junit.framework.TestCase;
@@ -26,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Mike Bostock
  */
-@GwtCompatible
 public class MultisetsImmutableEntryTest extends TestCase {
   private static final String NE = null;
 
diff --git a/android/guava-tests/test/com/google/common/collect/MultisetsTest.java b/android/guava-tests/test/com/google/common/collect/MultisetsTest.java
index 32e4408..8f578f0 100644
--- a/android/guava-tests/test/com/google/common/collect/MultisetsTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MultisetsTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedComparable;
 import com.google.common.testing.NullPointerTester;
 import java.util.Arrays;
@@ -34,7 +32,6 @@ import junit.framework.TestCase;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class MultisetsTest extends TestCase {
 
   /* See MultisetsImmutableEntryTest for immutableEntry() tests. */
@@ -272,7 +269,7 @@ public class MultisetsTest extends TestCase {
     assertThat(Multisets.copyHighestCountFirst(ImmutableMultiset.of())).isEmpty();
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     new NullPointerTester().testAllPublicStaticMethods(Multisets.class);
   }
diff --git a/android/guava-tests/test/com/google/common/collect/MutableClassToInstanceMapTest.java b/android/guava-tests/test/com/google/common/collect/MutableClassToInstanceMapTest.java
index 156b62d..f4d5414 100644
--- a/android/guava-tests/test/com/google/common/collect/MutableClassToInstanceMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/MutableClassToInstanceMapTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.collect.ImmutableClassToInstanceMapTest.Impl;
-import com.google.common.collect.ImmutableClassToInstanceMapTest.TestClassToInstanceMapGenerator;
 import com.google.common.collect.testing.MapTestSuiteBuilder;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
diff --git a/android/guava-tests/test/com/google/common/collect/NewCustomTableTest.java b/android/guava-tests/test/com/google/common/collect/NewCustomTableTest.java
index 6ad3aa2..d86ff3e 100644
--- a/android/guava-tests/test/com/google/common/collect/NewCustomTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/NewCustomTableTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Supplier;
 import java.util.Map;
 import java.util.TreeMap;
@@ -28,7 +27,6 @@ import java.util.TreeMap;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class NewCustomTableTest extends AbstractTableTest {
 
   @Override
diff --git a/android/guava-tests/test/com/google/common/collect/ObjectArraysTest.java b/android/guava-tests/test/com/google/common/collect/ObjectArraysTest.java
index 32d043f..66dac62 100644
--- a/android/guava-tests/test/com/google/common/collect/ObjectArraysTest.java
+++ b/android/guava-tests/test/com/google/common/collect/ObjectArraysTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import java.io.Serializable;
 import java.util.Arrays;
@@ -31,23 +29,22 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class ObjectArraysTest extends TestCase {
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ObjectArrays.class);
   }
 
-  @GwtIncompatible // ObjectArrays.newArray(Class, int)
+  // ObjectArrays.newArray(Class, int)
   public void testNewArray_fromClass_Empty() {
     String[] empty = ObjectArrays.newArray(String.class, 0);
     assertEquals(String[].class, empty.getClass());
     assertThat(empty).isEmpty();
   }
 
-  @GwtIncompatible // ObjectArrays.newArray(Class, int)
+  // ObjectArrays.newArray(Class, int)
   public void testNewArray_fromClass_Nonempty() {
     String[] array = ObjectArrays.newArray(String.class, 2);
     assertEquals(String[].class, array.getClass());
@@ -55,7 +52,7 @@ public class ObjectArraysTest extends TestCase {
     assertNull(array[0]);
   }
 
-  @GwtIncompatible // ObjectArrays.newArray(Class, int)
+  // ObjectArrays.newArray(Class, int)
   public void testNewArray_fromClass_OfArray() {
     String[][] array = ObjectArrays.newArray(String[].class, 1);
     assertEquals(String[][].class, array.getClass());
@@ -83,28 +80,28 @@ public class ObjectArraysTest extends TestCase {
     assertNull(array[0]);
   }
 
-  @GwtIncompatible // ObjectArrays.concat(Object[], Object[], Class)
+  // ObjectArrays.concat(Object[], Object[], Class)
   public void testConcatEmptyEmpty() {
     String[] result = ObjectArrays.concat(new String[0], new String[0], String.class);
     assertEquals(String[].class, result.getClass());
     assertThat(result).isEmpty();
   }
 
-  @GwtIncompatible // ObjectArrays.concat(Object[], Object[], Class)
+  // ObjectArrays.concat(Object[], Object[], Class)
   public void testConcatEmptyNonempty() {
     String[] result = ObjectArrays.concat(new String[0], new String[] {"a", "b"}, String.class);
     assertEquals(String[].class, result.getClass());
     assertThat(result).asList().containsExactly("a", "b").inOrder();
   }
 
-  @GwtIncompatible // ObjectArrays.concat(Object[], Object[], Class)
+  // ObjectArrays.concat(Object[], Object[], Class)
   public void testConcatNonemptyEmpty() {
     String[] result = ObjectArrays.concat(new String[] {"a", "b"}, new String[0], String.class);
     assertEquals(String[].class, result.getClass());
     assertThat(result).asList().containsExactly("a", "b").inOrder();
   }
 
-  @GwtIncompatible // ObjectArrays.concat(Object[], Object[], Class)
+  // ObjectArrays.concat(Object[], Object[], Class)
   public void testConcatBasic() {
     String[] result =
         ObjectArrays.concat(new String[] {"a", "b"}, new String[] {"c", "d"}, String.class);
@@ -112,7 +109,7 @@ public class ObjectArraysTest extends TestCase {
     assertThat(result).asList().containsExactly("a", "b", "c", "d").inOrder();
   }
 
-  @GwtIncompatible // ObjectArrays.concat(Object[], Object[], Class)
+  // ObjectArrays.concat(Object[], Object[], Class)
   public void testConcatWithMoreGeneralType() {
     Serializable[] result = ObjectArrays.concat(new String[0], new String[0], Serializable.class);
     assertEquals(Serializable[].class, result.getClass());
diff --git a/android/guava-tests/test/com/google/common/collect/OrderingTest.java b/android/guava-tests/test/com/google/common/collect/OrderingTest.java
index b449a29..9195400 100644
--- a/android/guava-tests/test/com/google/common/collect/OrderingTest.java
+++ b/android/guava-tests/test/com/google/common/collect/OrderingTest.java
@@ -23,8 +23,6 @@ import static com.google.common.testing.SerializableTester.reserializeAndAssert;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.collect.Ordering.ArbitraryOrdering;
@@ -41,14 +39,12 @@ import java.util.List;
 import java.util.Random;
 import java.util.RandomAccess;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Unit tests for {@code Ordering}.
  *
  * @author Jesse Wilson
  */
-@GwtCompatible(emulated = true)
 public class OrderingTest extends TestCase {
   // TODO(cpovirk): some of these are inexplicably slow (20-30s) under GWT
 
@@ -680,7 +676,7 @@ public class OrderingTest extends TestCase {
     assertEquals(ImmutableList.of(-1, 3, foo, bar), result);
   }
 
-  @GwtIncompatible // slow
+  // slow
   public void testLeastOf_reconcileAgainstSortAndSublist() {
     runLeastOfComparison(1000, 300, 20);
   }
@@ -853,22 +849,22 @@ public class OrderingTest extends TestCase {
     testExhaustively(Ordering.<String>natural(), "a", "b", "d");
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testCombinationsExhaustively_startingFromExplicit() {
     testExhaustively(Ordering.explicit("a", "b", "c", "d"), "a", "b", "d");
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testCombinationsExhaustively_startingFromUsingToString() {
     testExhaustively(Ordering.usingToString(), 1, 12, 2);
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testCombinationsExhaustively_startingFromFromComparator() {
     testExhaustively(Ordering.from(String.CASE_INSENSITIVE_ORDER), "A", "b", "C", "d");
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testCombinationsExhaustively_startingFromArbitrary() {
     Ordering<Object> arbitrary = Ordering.arbitrary();
     Object[] array = {1, "foo", new Object()};
@@ -1126,7 +1122,7 @@ public class OrderingTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Ordering.class);
diff --git a/android/guava-tests/test/com/google/common/collect/PeekingIteratorTest.java b/android/guava-tests/test/com/google/common/collect/PeekingIteratorTest.java
index 0f79985..21657d0 100644
--- a/android/guava-tests/test/com/google/common/collect/PeekingIteratorTest.java
+++ b/android/guava-tests/test/com/google/common/collect/PeekingIteratorTest.java
@@ -21,8 +21,6 @@ import static com.google.common.collect.testing.IteratorFeature.MODIFIABLE;
 import static com.google.common.collect.testing.IteratorFeature.UNMODIFIABLE;
 import static java.util.Collections.emptyList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.IteratorTester;
 import java.util.Collection;
 import java.util.Collections;
@@ -37,7 +35,6 @@ import junit.framework.TestCase;
  * @author Mick Killianey
  */
 @SuppressWarnings("serial") // No serialization is used in this test
-@GwtCompatible(emulated = true)
 public class PeekingIteratorTest extends TestCase {
 
   /**
@@ -97,12 +94,12 @@ public class PeekingIteratorTest extends TestCase {
   }
 
   // TODO(cpovirk): instead of skipping, use a smaller number of steps
-  @GwtIncompatible // works but takes 5 minutes to run
+  // works but takes 5 minutes to run
   public void testPeekingIteratorBehavesLikeIteratorOnThreeElementIterable() {
     actsLikeIteratorHelper(Lists.newArrayList("A", "B", "C"));
   }
 
-  @GwtIncompatible // works but takes 5 minutes to run
+  // works but takes 5 minutes to run
   public void testPeekingIteratorAcceptsNullElements() {
     actsLikeIteratorHelper(Lists.newArrayList(null, "A", null));
   }
diff --git a/android/guava-tests/test/com/google/common/collect/RangeTest.java b/android/guava-tests/test/com/google/common/collect/RangeTest.java
index 9a2cd74..f47e818 100644
--- a/android/guava-tests/test/com/google/common/collect/RangeTest.java
+++ b/android/guava-tests/test/com/google/common/collect/RangeTest.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.DiscreteDomain.integers;
 import static com.google.common.testing.SerializableTester.reserializeAndAssert;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Predicate;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.EqualsTester;
@@ -38,7 +36,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class RangeTest extends TestCase {
   public void testOpen() {
     Range<Integer> range = Range.open(4, 8);
@@ -599,7 +596,7 @@ public class RangeTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // TODO(b/148207871): Restore once Eclipse compiler no longer flakes for this.
+  // TODO(b/148207871): Restore once Eclipse compiler no longer flakes for this.
   public void testLegacyComparable() {
     Range<LegacyComparable> range = Range.closed(LegacyComparable.X, LegacyComparable.Y);
   }
diff --git a/android/guava-tests/test/com/google/common/collect/RegularImmutableAsListTest.java b/android/guava-tests/test/com/google/common/collect/RegularImmutableAsListTest.java
index b6c2358..5027694 100644
--- a/android/guava-tests/test/com/google/common/collect/RegularImmutableAsListTest.java
+++ b/android/guava-tests/test/com/google/common/collect/RegularImmutableAsListTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -22,7 +21,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class RegularImmutableAsListTest extends TestCase {
   /**
    * RegularImmutableAsList should assume its input is null-free without checking, because it only
diff --git a/android/guava-tests/test/com/google/common/collect/RegularImmutableTableTest.java b/android/guava-tests/test/com/google/common/collect/RegularImmutableTableTest.java
index 82d7b39..4dd5f15 100644
--- a/android/guava-tests/test/com/google/common/collect/RegularImmutableTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/RegularImmutableTableTest.java
@@ -18,11 +18,9 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Table.Cell;
 
 /** @author Gregory Kick */
-@GwtCompatible
 public class RegularImmutableTableTest extends AbstractImmutableTableTest {
   private static final ImmutableSet<Cell<Character, Integer, String>> CELLS =
       ImmutableSet.of(
diff --git a/android/guava-tests/test/com/google/common/collect/SetOperationsTest.java b/android/guava-tests/test/com/google/common/collect/SetOperationsTest.java
index 7a1ec3a..0ab4b68 100644
--- a/android/guava-tests/test/com/google/common/collect/SetOperationsTest.java
+++ b/android/guava-tests/test/com/google/common/collect/SetOperationsTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.SetTestSuiteBuilder;
 import com.google.common.collect.testing.TestStringSetGenerator;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -36,9 +34,8 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class SetOperationsTest extends TestCase {
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
 
diff --git a/android/guava-tests/test/com/google/common/collect/SetsTest.java b/android/guava-tests/test/com/google/common/collect/SetsTest.java
index 8aa8d83..15a82b0 100644
--- a/android/guava-tests/test/com/google/common/collect/SetsTest.java
+++ b/android/guava-tests/test/com/google/common/collect/SetsTest.java
@@ -30,8 +30,6 @@ import static java.io.ObjectStreamConstants.baseWireHandle;
 import static java.util.Collections.emptySet;
 import static java.util.Collections.singleton;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Predicate;
 import com.google.common.collect.testing.AnEnum;
 import com.google.common.collect.testing.IteratorTester;
@@ -76,7 +74,6 @@ import java.util.concurrent.CopyOnWriteArraySet;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Unit test for {@code Sets}.
@@ -84,7 +81,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  * @author Kevin Bourrillion
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class SetsTest extends TestCase {
 
   private static final IteratorTester.KnownOrder KNOWN_ORDER =
@@ -106,7 +102,7 @@ public class SetsTest extends TestCase {
 
   private static final Comparator<Integer> SOME_COMPARATOR = Collections.reverseOrder();
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(SetsTest.class);
@@ -218,7 +214,7 @@ public class SetsTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilter() {
     return SetTestSuiteBuilder.using(
             new TestStringSetGenerator() {
@@ -241,7 +237,7 @@ public class SetsTest extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterNoNulls() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -292,7 +288,7 @@ public class SetsTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterFiltered() {
     return SetTestSuiteBuilder.using(
             new TestStringSetGenerator() {
@@ -341,7 +337,7 @@ public class SetsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testImmutableEnumSet_serialized() {
     Set<SomeEnum> units = Sets.immutableEnumSet(SomeEnum.D, SomeEnum.B);
 
@@ -362,7 +358,7 @@ public class SetsTest extends TestCase {
     assertThat(two).containsExactly(SomeEnum.B, SomeEnum.D).inOrder();
   }
 
-  @GwtIncompatible // java serialization not supported in GWT.
+  // java serialization not supported in GWT.
   public void testImmutableEnumSet_deserializationMakesDefensiveCopy() throws Exception {
     ImmutableSet<SomeEnum> original = Sets.immutableEnumSet(SomeEnum.A, SomeEnum.B);
     int handleOffset = 6;
@@ -377,7 +373,7 @@ public class SetsTest extends TestCase {
     assertTrue(deserialized.contains(SomeEnum.A));
   }
 
-  @GwtIncompatible // java serialization not supported in GWT.
+  // java serialization not supported in GWT.
   private static byte[] serializeWithBackReference(Object original, int handleOffset)
       throws IOException {
     ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -399,7 +395,7 @@ public class SetsTest extends TestCase {
     return out;
   }
 
-  @GwtIncompatible // java.nio.ByteBuffer
+  // java.nio.ByteBuffer
   private static byte[] toByteArray(int h) {
     return ByteBuffer.allocate(4).putInt(h).array();
   }
@@ -565,13 +561,13 @@ public class SetsTest extends TestCase {
     assertEquals(2, set.size());
   }
 
-  @GwtIncompatible // CopyOnWriteArraySet
+  // CopyOnWriteArraySet
   public void testNewCOWASEmpty() {
     CopyOnWriteArraySet<Integer> set = Sets.newCopyOnWriteArraySet();
     verifySetContents(set, EMPTY_COLLECTION);
   }
 
-  @GwtIncompatible // CopyOnWriteArraySet
+  // CopyOnWriteArraySet
   public void testNewCOWASFromIterable() {
     CopyOnWriteArraySet<Integer> set = Sets.newCopyOnWriteArraySet(SOME_ITERABLE);
     verifySetContents(set, SOME_COLLECTION);
@@ -628,7 +624,7 @@ public class SetsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     new NullPointerTester()
         .setDefault(Enum.class, SomeEnum.A)
@@ -642,7 +638,7 @@ public class SetsTest extends TestCase {
     verifySetContents(set, SOME_COLLECTION);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNewSetFromMapSerialization() {
     Set<Integer> set = Sets.newSetFromMap(new LinkedHashMap<Integer, Boolean>());
     set.addAll(SOME_COLLECTION);
@@ -858,7 +854,7 @@ public class SetsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // too slow for GWT
+  // too slow for GWT
   public void testPowerSetIteration_iteratorTester() {
     ImmutableSet<Integer> elements = ImmutableSet.of(1, 2);
 
@@ -1139,7 +1135,7 @@ public class SetsTest extends TestCase {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public void testUnmodifiableNavigableSet() {
     TreeSet<Integer> mod = Sets.newTreeSet();
     mod.add(1);
@@ -1206,7 +1202,7 @@ public class SetsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   void ensureNotDirectlyModifiable(NavigableSet<Integer> unmod) {
     try {
       unmod.add(4);
@@ -1249,7 +1245,7 @@ public class SetsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public void testSubSet_boundedRange() {
     ImmutableSortedSet<Integer> set = ImmutableSortedSet.of(2, 4, 6, 8, 10);
     ImmutableSortedSet<Integer> empty = ImmutableSortedSet.of();
@@ -1279,7 +1275,7 @@ public class SetsTest extends TestCase {
     assertEquals(empty, Sets.subSet(set, Range.closedOpen(20, 30)));
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public void testSubSet_halfBoundedRange() {
     ImmutableSortedSet<Integer> set = ImmutableSortedSet.of(2, 4, 6, 8, 10);
     ImmutableSortedSet<Integer> empty = ImmutableSortedSet.of();
@@ -1305,14 +1301,14 @@ public class SetsTest extends TestCase {
     assertEquals(set, Sets.subSet(set, Range.atMost(20)));
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public void testSubSet_unboundedRange() {
     ImmutableSortedSet<Integer> set = ImmutableSortedSet.of(2, 4, 6, 8, 10);
 
     assertEquals(set, Sets.subSet(set, Range.<Integer>all()));
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public void testSubSet_unnaturalOrdering() {
     ImmutableSortedSet<Integer> set =
         ImmutableSortedSet.<Integer>reverseOrder().add(2, 4, 6, 8, 10).build();
diff --git a/android/guava-tests/test/com/google/common/collect/SimpleAbstractMultisetTest.java b/android/guava-tests/test/com/google/common/collect/SimpleAbstractMultisetTest.java
index 830536d..76e96ff 100644
--- a/android/guava-tests/test/com/google/common/collect/SimpleAbstractMultisetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/SimpleAbstractMultisetTest.java
@@ -16,8 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -31,7 +29,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Unit test for {@link AbstractMultiset}.
@@ -40,9 +37,8 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  * @author Louis Wasserman
  */
 @SuppressWarnings("serial") // No serialization is used in this test
-@GwtCompatible(emulated = true)
 public class SimpleAbstractMultisetTest extends TestCase {
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(SimpleAbstractMultisetTest.class);
diff --git a/android/guava-tests/test/com/google/common/collect/SingletonImmutableTableTest.java b/android/guava-tests/test/com/google/common/collect/SingletonImmutableTableTest.java
index 16c5ecb..7c432e6 100644
--- a/android/guava-tests/test/com/google/common/collect/SingletonImmutableTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/SingletonImmutableTableTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.testing.EqualsTester;
 
@@ -28,7 +26,6 @@ import com.google.common.testing.EqualsTester;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 public class SingletonImmutableTableTest extends AbstractImmutableTableTest {
   private final ImmutableTable<Character, Integer, String> testTable =
       new SingletonImmutableTable<>('a', 1, "blah");
@@ -75,7 +72,7 @@ public class SingletonImmutableTableTest extends AbstractImmutableTableTest {
         .testEquals();
   }
 
-  @GwtIncompatible // ArrayTable
+  // ArrayTable
   public void testEqualsObjectNullValues() {
     new EqualsTester()
         .addEqualityGroup(testTable)
diff --git a/android/guava-tests/test/com/google/common/collect/SortedIterablesTest.java b/android/guava-tests/test/com/google/common/collect/SortedIterablesTest.java
index 543199d..0ff5213 100644
--- a/android/guava-tests/test/com/google/common/collect/SortedIterablesTest.java
+++ b/android/guava-tests/test/com/google/common/collect/SortedIterablesTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.SortedSet;
 import junit.framework.TestCase;
 
@@ -23,7 +22,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class SortedIterablesTest extends TestCase {
   public void testSameComparator() {
     assertTrue(SortedIterables.hasSameComparator(Ordering.natural(), Sets.newTreeSet()));
diff --git a/android/guava-tests/test/com/google/common/collect/SortedListsTest.java b/android/guava-tests/test/com/google/common/collect/SortedListsTest.java
index a6cddcb..066b02a 100644
--- a/android/guava-tests/test/com/google/common/collect/SortedListsTest.java
+++ b/android/guava-tests/test/com/google/common/collect/SortedListsTest.java
@@ -14,8 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.SortedLists.KeyAbsentBehavior;
 import com.google.common.collect.SortedLists.KeyPresentBehavior;
 import com.google.common.testing.NullPointerTester;
@@ -27,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class SortedListsTest extends TestCase {
   private static final ImmutableList<Integer> LIST_WITH_DUPS =
       ImmutableList.of(1, 1, 2, 4, 4, 4, 8);
@@ -124,7 +121,7 @@ public class SortedListsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(SortedLists.class);
   }
diff --git a/android/guava-tests/test/com/google/common/collect/SubMapMultimapAsMapImplementsMapTest.java b/android/guava-tests/test/com/google/common/collect/SubMapMultimapAsMapImplementsMapTest.java
index 1cb7abc..25f9114 100644
--- a/android/guava-tests/test/com/google/common/collect/SubMapMultimapAsMapImplementsMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/SubMapMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Collections;
@@ -27,7 +26,6 @@ import java.util.Map;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class SubMapMultimapAsMapImplementsMapTest extends AbstractMultimapAsMapImplementsMapTest {
 
   public SubMapMultimapAsMapImplementsMapTest() {
diff --git a/android/guava-tests/test/com/google/common/collect/SynchronizedMultimapTest.java b/android/guava-tests/test/com/google/common/collect/SynchronizedMultimapTest.java
index 14111da..e9f3445 100644
--- a/android/guava-tests/test/com/google/common/collect/SynchronizedMultimapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/SynchronizedMultimapTest.java
@@ -33,7 +33,6 @@ import java.util.Set;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Tests for {@code Synchronized#multimap}.
diff --git a/android/guava-tests/test/com/google/common/collect/SynchronizedSetTest.java b/android/guava-tests/test/com/google/common/collect/SynchronizedSetTest.java
index 746ad3f..7e10b40 100644
--- a/android/guava-tests/test/com/google/common/collect/SynchronizedSetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/SynchronizedSetTest.java
@@ -29,7 +29,6 @@ import java.util.HashSet;
 import java.util.Set;
 import junit.framework.Test;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Tests for {@code Synchronized#set}.
diff --git a/android/guava-tests/test/com/google/common/collect/SynchronizedTableTest.java b/android/guava-tests/test/com/google/common/collect/SynchronizedTableTest.java
index f418367..fbc9e06 100644
--- a/android/guava-tests/test/com/google/common/collect/SynchronizedTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/SynchronizedTableTest.java
@@ -20,7 +20,6 @@ import java.io.Serializable;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 public class SynchronizedTableTest extends AbstractTableTest {
   private static final class TestTable<R, C, V> implements Table<R, C, V>, Serializable {
diff --git a/android/guava-tests/test/com/google/common/collect/TableCollectionTest.java b/android/guava-tests/test/com/google/common/collect/TableCollectionTest.java
index 7c94444..5bca5d6 100644
--- a/android/guava-tests/test/com/google/common/collect/TableCollectionTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TableCollectionTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.collect.Table.Cell;
@@ -53,7 +51,6 @@ import junit.framework.TestSuite;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class TableCollectionTest extends TestCase {
 
   private static final Feature<?>[] COLLECTION_FEATURES = {
@@ -75,7 +72,7 @@ public class TableCollectionTest extends TestCase {
     CollectionFeature.ALLOWS_NULL_QUERIES
   };
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ArrayRowTests.class);
@@ -798,7 +795,7 @@ public class TableCollectionTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO(hhchan): ArrayTable
+  // TODO(hhchan): ArrayTable
   public static class ArrayRowTests extends RowTests {
     public ArrayRowTests() {
       super(true, true, false, false, false);
@@ -957,7 +954,7 @@ public class TableCollectionTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO(hhchan): ArrayTable
+  // TODO(hhchan): ArrayTable
   public static class ArrayColumnTests extends ColumnTests {
     public ArrayColumnTests() {
       super(true, true, false, false, false);
@@ -1166,7 +1163,7 @@ public class TableCollectionTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO(hhchan): ArrayTable
+  // TODO(hhchan): ArrayTable
   public static class ArrayRowMapTests extends RowMapTests {
     public ArrayRowMapTests() {
       super(true, false, false, false);
@@ -1393,7 +1390,7 @@ public class TableCollectionTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO(hhchan): ArrayTable
+  // TODO(hhchan): ArrayTable
   public static class ArrayColumnMapTests extends ColumnMapTests {
     public ArrayColumnMapTests() {
       super(true, false, false, false);
diff --git a/android/guava-tests/test/com/google/common/collect/TablesTest.java b/android/guava-tests/test/com/google/common/collect/TablesTest.java
index 1cce12f..d8b0059 100644
--- a/android/guava-tests/test/com/google/common/collect/TablesTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TablesTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Table.Cell;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.SerializableTester;
@@ -28,10 +26,9 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class TablesTest extends TestCase {
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testImmutableEntrySerialization() {
     Cell<String, Integer, Character> entry = Tables.immutableCell("foo", 1, 'a');
     SerializableTester.reserializeAndAssert(entry);
diff --git a/android/guava-tests/test/com/google/common/collect/TablesTransformValuesTest.java b/android/guava-tests/test/com/google/common/collect/TablesTransformValuesTest.java
index 6730b3f..f610665 100644
--- a/android/guava-tests/test/com/google/common/collect/TablesTransformValuesTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TablesTransformValuesTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 
 /**
@@ -27,7 +25,6 @@ import com.google.common.base.Function;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class TablesTransformValuesTest extends AbstractTableTest {
 
   private static final Function<String, Character> FIRST_CHARACTER =
@@ -50,7 +47,7 @@ public class TablesTransformValuesTest extends AbstractTableTest {
   }
 
   // Null support depends on the underlying table and function.
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   @Override
   public void testNullPointerInstance() {}
 
diff --git a/android/guava-tests/test/com/google/common/collect/TopKSelectorTest.java b/android/guava-tests/test/com/google/common/collect/TopKSelectorTest.java
index 2cebdc3..2669179 100644
--- a/android/guava-tests/test/com/google/common/collect/TopKSelectorTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TopKSelectorTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.math.IntMath;
 import com.google.common.primitives.Ints;
 import java.math.RoundingMode;
@@ -32,7 +31,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class TopKSelectorTest extends TestCase {
 
   public void testNegativeK() {
diff --git a/android/guava-tests/test/com/google/common/collect/TransposedTableTest.java b/android/guava-tests/test/com/google/common/collect/TransposedTableTest.java
index 7233cf1..50c3d52 100644
--- a/android/guava-tests/test/com/google/common/collect/TransposedTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TransposedTableTest.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Test cases for {@link Tables#transpose}.
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class TransposedTableTest extends AbstractTableTest {
 
   @Override
diff --git a/android/guava-tests/test/com/google/common/collect/TreeBasedTableTest.java b/android/guava-tests/test/com/google/common/collect/TreeBasedTableTest.java
index 084e649..d228872 100644
--- a/android/guava-tests/test/com/google/common/collect/TreeBasedTableTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TreeBasedTableTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.SortedMapInterfaceTest;
 import com.google.common.collect.testing.SortedMapTestSuiteBuilder;
 import com.google.common.collect.testing.TestStringSortedMapGenerator;
@@ -42,9 +40,8 @@ import junit.framework.TestSuite;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class TreeBasedTableTest extends AbstractTableTest {
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(TreeBasedTableTest.class);
@@ -173,7 +170,7 @@ public class TreeBasedTableTest extends AbstractTableTest {
     assertEquals(original, table);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     table = create("foo", 1, 'a', "bar", 1, 'b', "foo", 3, 'c');
     SerializableTester.reserializeAndAssert(table);
diff --git a/android/guava-tests/test/com/google/common/collect/TreeMultimapExplicitTest.java b/android/guava-tests/test/com/google/common/collect/TreeMultimapExplicitTest.java
index 92a3d83..0d1f01e 100644
--- a/android/guava-tests/test/com/google/common/collect/TreeMultimapExplicitTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TreeMultimapExplicitTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.SerializableTester;
 import java.util.Arrays;
 import java.util.Collection;
@@ -34,7 +32,6 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class TreeMultimapExplicitTest extends TestCase {
 
   /**
@@ -196,7 +193,7 @@ public class TreeMultimapExplicitTest extends TestCase {
     assertEquals(Sets.newHashSet("tree"), keySet.subSet("ask", "yahoo"));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testExplicitComparatorSerialization() {
     TreeMultimap<String, Integer> multimap = createPopulate();
     TreeMultimap<String, Integer> copy = SerializableTester.reserializeAndAssert(multimap);
diff --git a/android/guava-tests/test/com/google/common/collect/TreeMultimapNaturalTest.java b/android/guava-tests/test/com/google/common/collect/TreeMultimapNaturalTest.java
index addcfb7..bd70e69 100644
--- a/android/guava-tests/test/com/google/common/collect/TreeMultimapNaturalTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TreeMultimapNaturalTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedComparable;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.NavigableMapTestSuiteBuilder;
@@ -56,10 +54,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class TreeMultimapNaturalTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     // TODO(lowasser): should we force TreeMultimap to be more thorough about checking nulls?
@@ -407,7 +404,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     assertEquals(Ordering.natural(), multimap.valueComparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testExplicitComparatorSerialization() {
     TreeMultimap<String, Integer> multimap = createPopulate();
     TreeMultimap<String, Integer> copy = SerializableTester.reserializeAndAssert(multimap);
@@ -417,7 +414,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     assertEquals(multimap.valueComparator(), copy.valueComparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testTreeMultimapDerived() {
     TreeMultimap<DerivedComparable, DerivedComparable> multimap = TreeMultimap.create();
     assertEquals(ImmutableMultimap.of(), multimap);
@@ -443,7 +440,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     SerializableTester.reserializeAndAssert(multimap);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testTreeMultimapNonGeneric() {
     TreeMultimap<LegacyComparable, LegacyComparable> multimap = TreeMultimap.create();
     assertEquals(ImmutableMultimap.of(), multimap);
@@ -500,7 +497,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     assertEquals(4, multimap.keys().size());
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testKeySetBridgeMethods() {
     for (Method m : TreeMultimap.class.getMethods()) {
       if (m.getName().equals("keySet") && m.getReturnType().equals(SortedSet.class)) {
@@ -510,7 +507,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     fail("No bridge method found");
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testAsMapBridgeMethods() {
     for (Method m : TreeMultimap.class.getMethods()) {
       if (m.getName().equals("asMap") && m.getReturnType().equals(SortedMap.class)) {
@@ -519,7 +516,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testGetBridgeMethods() {
     for (Method m : TreeMultimap.class.getMethods()) {
       if (m.getName().equals("get") && m.getReturnType().equals(SortedSet.class)) {
diff --git a/android/guava-tests/test/com/google/common/collect/TreeMultisetTest.java b/android/guava-tests/test/com/google/common/collect/TreeMultisetTest.java
index 12da1f1..6859568 100644
--- a/android/guava-tests/test/com/google/common/collect/TreeMultisetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TreeMultisetTest.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.BoundType.CLOSED;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Collections.sort;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers.NullsBeforeB;
 import com.google.common.collect.testing.NavigableSetTestSuiteBuilder;
 import com.google.common.collect.testing.TestStringSetGenerator;
@@ -46,10 +44,9 @@ import junit.framework.TestSuite;
  *
  * @author Neal Kanodia
  */
-@GwtCompatible(emulated = true)
 public class TreeMultisetTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -355,7 +352,7 @@ public class TreeMultisetTest extends TestCase {
     assertEquals(Integer.MAX_VALUE, ms.tailMultiset("a", CLOSED).size());
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // Reflection bug, or actual binary compatibility problem?
   public void testElementSetBridgeMethods() {
     for (Method m : TreeMultiset.class.getMethods()) {
diff --git a/android/guava-tests/test/com/google/common/collect/TreeRangeMapTest.java b/android/guava-tests/test/com/google/common/collect/TreeRangeMapTest.java
index db68b89..ee18eaf 100644
--- a/android/guava-tests/test/com/google/common/collect/TreeRangeMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TreeRangeMapTest.java
@@ -17,7 +17,6 @@ package com.google.common.collect;
 import static com.google.common.collect.BoundType.OPEN;
 import static com.google.common.collect.testing.Helpers.mapEntry;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.MapTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestMapGenerator;
@@ -37,7 +36,7 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // NavigableMap
+// NavigableMap
 public class TreeRangeMapTest extends TestCase {
   public static Test suite() {
     TestSuite suite = new TestSuite();
diff --git a/android/guava-tests/test/com/google/common/collect/TreeRangeSetTest.java b/android/guava-tests/test/com/google/common/collect/TreeRangeSetTest.java
index b33ab2d..d77aa57 100644
--- a/android/guava-tests/test/com/google/common/collect/TreeRangeSetTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TreeRangeSetTest.java
@@ -18,7 +18,6 @@ import static com.google.common.collect.BoundType.OPEN;
 import static com.google.common.collect.Range.range;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.SerializableTester;
 import java.util.Arrays;
 import java.util.List;
@@ -30,7 +29,7 @@ import java.util.NavigableMap;
  * @author Louis Wasserman
  * @author Chris Povirk
  */
-@GwtIncompatible // TreeRangeSet
+// TreeRangeSet
 public class TreeRangeSetTest extends AbstractRangeSetTest {
   // TODO(cpovirk): test all of these with the ranges added in the reverse order
 
@@ -680,7 +679,7 @@ public class TreeRangeSetTest extends AbstractRangeSetTest {
         .inOrder();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     RangeSet<Integer> rangeSet = TreeRangeSet.create();
     rangeSet.add(Range.closed(3, 10));
diff --git a/android/guava-tests/test/com/google/common/collect/TreeTraverserTest.java b/android/guava-tests/test/com/google/common/collect/TreeTraverserTest.java
index 4c2abc7..a8ac639 100644
--- a/android/guava-tests/test/com/google/common/collect/TreeTraverserTest.java
+++ b/android/guava-tests/test/com/google/common/collect/TreeTraverserTest.java
@@ -16,8 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.testing.NullPointerTester;
 import java.util.Arrays;
@@ -29,7 +27,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class TreeTraverserTest extends TestCase {
   private static class Node {
     final char value;
@@ -105,7 +102,7 @@ public class TreeTraverserTest extends TestCase {
     assertThat(iterationOrder(ADAPTER_USING_USING.preOrderTraversal(h))).isEqualTo("hdabcegf");
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(ADAPTER);
diff --git a/android/guava-tests/test/com/google/common/collect/UnmodifiableIteratorTest.java b/android/guava-tests/test/com/google/common/collect/UnmodifiableIteratorTest.java
index 77ecbf7..d27ffad 100644
--- a/android/guava-tests/test/com/google/common/collect/UnmodifiableIteratorTest.java
+++ b/android/guava-tests/test/com/google/common/collect/UnmodifiableIteratorTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import junit.framework.TestCase;
@@ -26,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class UnmodifiableIteratorTest extends TestCase {
 
   public void testRemove() {
diff --git a/android/guava-tests/test/com/google/common/collect/UnmodifiableListIteratorTest.java b/android/guava-tests/test/com/google/common/collect/UnmodifiableListIteratorTest.java
index c9d3068..7a3c701 100644
--- a/android/guava-tests/test/com/google/common/collect/UnmodifiableListIteratorTest.java
+++ b/android/guava-tests/test/com/google/common/collect/UnmodifiableListIteratorTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 import java.util.ListIterator;
 import java.util.NoSuchElementException;
@@ -27,7 +26,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class UnmodifiableListIteratorTest extends TestCase {
   public void testRemove() {
     Iterator<String> iterator = create();
diff --git a/android/guava-tests/test/com/google/common/collect/UnmodifiableMultimapAsMapImplementsMapTest.java b/android/guava-tests/test/com/google/common/collect/UnmodifiableMultimapAsMapImplementsMapTest.java
index d03d7e3..d2a67f5 100644
--- a/android/guava-tests/test/com/google/common/collect/UnmodifiableMultimapAsMapImplementsMapTest.java
+++ b/android/guava-tests/test/com/google/common/collect/UnmodifiableMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +25,6 @@ import java.util.Map;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class UnmodifiableMultimapAsMapImplementsMapTest
     extends AbstractMultimapAsMapImplementsMapTest {
 
diff --git a/android/guava-tests/test/com/google/common/escape/ArrayBasedCharEscaperTest.java b/android/guava-tests/test/com/google/common/escape/ArrayBasedCharEscaperTest.java
index f0983ef..3b6d138 100644
--- a/android/guava-tests/test/com/google/common/escape/ArrayBasedCharEscaperTest.java
+++ b/android/guava-tests/test/com/google/common/escape/ArrayBasedCharEscaperTest.java
@@ -16,14 +16,11 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.escape.testing.EscaperAsserts;
 import java.io.IOException;
 import junit.framework.TestCase;
 
 /** @author David Beaumont */
-@GwtCompatible
 public class ArrayBasedCharEscaperTest extends TestCase {
   private static final ImmutableMap<Character, String> NO_REPLACEMENTS = ImmutableMap.of();
   private static final ImmutableMap<Character, String> SIMPLE_REPLACEMENTS =
diff --git a/android/guava-tests/test/com/google/common/escape/ArrayBasedEscaperMapTest.java b/android/guava-tests/test/com/google/common/escape/ArrayBasedEscaperMapTest.java
index 6d9c1d8..10c7363 100644
--- a/android/guava-tests/test/com/google/common/escape/ArrayBasedEscaperMapTest.java
+++ b/android/guava-tests/test/com/google/common/escape/ArrayBasedEscaperMapTest.java
@@ -16,13 +16,10 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import java.util.Map;
 import junit.framework.TestCase;
 
 /** @author David Beaumont */
-@GwtCompatible
 public class ArrayBasedEscaperMapTest extends TestCase {
   public void testNullMap() {
     try {
diff --git a/android/guava-tests/test/com/google/common/escape/ArrayBasedUnicodeEscaperTest.java b/android/guava-tests/test/com/google/common/escape/ArrayBasedUnicodeEscaperTest.java
index 3243240..405cf9d 100644
--- a/android/guava-tests/test/com/google/common/escape/ArrayBasedUnicodeEscaperTest.java
+++ b/android/guava-tests/test/com/google/common/escape/ArrayBasedUnicodeEscaperTest.java
@@ -16,14 +16,11 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.escape.testing.EscaperAsserts;
 import java.io.IOException;
 import junit.framework.TestCase;
 
 /** @author David Beaumont */
-@GwtCompatible
 public class ArrayBasedUnicodeEscaperTest extends TestCase {
   private static final ImmutableMap<Character, String> NO_REPLACEMENTS = ImmutableMap.of();
   private static final ImmutableMap<Character, String> SIMPLE_REPLACEMENTS =
diff --git a/android/guava-tests/test/com/google/common/escape/EscapersTest.java b/android/guava-tests/test/com/google/common/escape/EscapersTest.java
index 245560a..8737347 100644
--- a/android/guava-tests/test/com/google/common/escape/EscapersTest.java
+++ b/android/guava-tests/test/com/google/common/escape/EscapersTest.java
@@ -16,14 +16,11 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.escape.testing.EscaperAsserts;
 import java.io.IOException;
 import junit.framework.TestCase;
 
 /** @author David Beaumont */
-@GwtCompatible
 public class EscapersTest extends TestCase {
   public void testNullEscaper() throws IOException {
     Escaper escaper = Escapers.nullEscaper();
diff --git a/android/guava-tests/test/com/google/common/escape/UnicodeEscaperTest.java b/android/guava-tests/test/com/google/common/escape/UnicodeEscaperTest.java
index 96cfa10..68fab0e 100644
--- a/android/guava-tests/test/com/google/common/escape/UnicodeEscaperTest.java
+++ b/android/guava-tests/test/com/google/common/escape/UnicodeEscaperTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -24,7 +23,6 @@ import junit.framework.TestCase;
  *
  * @author David Beaumont
  */
-@GwtCompatible
 public class UnicodeEscaperTest extends TestCase {
 
   private static final String SMALLEST_SURROGATE =
diff --git a/android/guava-tests/test/com/google/common/eventbus/DispatcherTest.java b/android/guava-tests/test/com/google/common/eventbus/DispatcherTest.java
index b63a995..8154df9 100644
--- a/android/guava-tests/test/com/google/common/eventbus/DispatcherTest.java
+++ b/android/guava-tests/test/com/google/common/eventbus/DispatcherTest.java
@@ -18,7 +18,6 @@ package com.google.common.eventbus;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Queues;
 import com.google.common.util.concurrent.Uninterruptibles;
 import java.util.concurrent.ConcurrentLinkedQueue;
diff --git a/android/guava-tests/test/com/google/common/eventbus/EventBusTest.java b/android/guava-tests/test/com/google/common/eventbus/EventBusTest.java
index 249d3b0..8c933aa 100644
--- a/android/guava-tests/test/com/google/common/eventbus/EventBusTest.java
+++ b/android/guava-tests/test/com/google/common/eventbus/EventBusTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.eventbus;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
diff --git a/android/guava-tests/test/com/google/common/eventbus/PackageSanityTests.java b/android/guava-tests/test/com/google/common/eventbus/PackageSanityTests.java
index 5dee7ca..2a3a5d4 100644
--- a/android/guava-tests/test/com/google/common/eventbus/PackageSanityTests.java
+++ b/android/guava-tests/test/com/google/common/eventbus/PackageSanityTests.java
@@ -18,7 +18,6 @@ package com.google.common.eventbus;
 
 import com.google.common.testing.AbstractPackageSanityTests;
 import java.lang.reflect.Method;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Basic sanity tests for the entire package.
diff --git a/android/guava-tests/test/com/google/common/eventbus/StringCatcher.java b/android/guava-tests/test/com/google/common/eventbus/StringCatcher.java
index 282abe1..8194c32 100644
--- a/android/guava-tests/test/com/google/common/eventbus/StringCatcher.java
+++ b/android/guava-tests/test/com/google/common/eventbus/StringCatcher.java
@@ -19,7 +19,6 @@ package com.google.common.eventbus;
 import com.google.common.collect.Lists;
 import java.util.List;
 import junit.framework.Assert;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * A simple EventSubscriber mock that records Strings.
diff --git a/android/guava-tests/test/com/google/common/eventbus/SubscriberRegistryTest.java b/android/guava-tests/test/com/google/common/eventbus/SubscriberRegistryTest.java
index c9e5c9a..16fd0f1 100644
--- a/android/guava-tests/test/com/google/common/eventbus/SubscriberRegistryTest.java
+++ b/android/guava-tests/test/com/google/common/eventbus/SubscriberRegistryTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.eventbus;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import java.util.Iterator;
 import junit.framework.TestCase;
diff --git a/android/guava-tests/test/com/google/common/graph/AbstractGraphTest.java b/android/guava-tests/test/com/google/common/graph/AbstractGraphTest.java
index 3a489a1..8585ad4 100644
--- a/android/guava-tests/test/com/google/common/graph/AbstractGraphTest.java
+++ b/android/guava-tests/test/com/google/common/graph/AbstractGraphTest.java
@@ -24,7 +24,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.TruthJUnit.assume;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableSet;
 import java.util.HashSet;
 import java.util.Set;
 import org.junit.After;
diff --git a/android/guava-tests/test/com/google/common/graph/AbstractNetworkTest.java b/android/guava-tests/test/com/google/common/graph/AbstractNetworkTest.java
index 776e4bf..46932f4 100644
--- a/android/guava-tests/test/com/google/common/graph/AbstractNetworkTest.java
+++ b/android/guava-tests/test/com/google/common/graph/AbstractNetworkTest.java
@@ -28,8 +28,6 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import java.util.Set;
 import java.util.concurrent.Callable;
diff --git a/android/guava-tests/test/com/google/common/graph/AbstractStandardDirectedNetworkTest.java b/android/guava-tests/test/com/google/common/graph/AbstractStandardDirectedNetworkTest.java
index 98bc2fd..b3b4dd1 100644
--- a/android/guava-tests/test/com/google/common/graph/AbstractStandardDirectedNetworkTest.java
+++ b/android/guava-tests/test/com/google/common/graph/AbstractStandardDirectedNetworkTest.java
@@ -23,7 +23,6 @@ import static com.google.common.truth.TruthJUnit.assume;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableSet;
 import java.util.Collections;
 import java.util.Set;
 import org.junit.After;
diff --git a/android/guava-tests/test/com/google/common/graph/AbstractStandardUndirectedNetworkTest.java b/android/guava-tests/test/com/google/common/graph/AbstractStandardUndirectedNetworkTest.java
index 5cda1c1..46c5e26 100644
--- a/android/guava-tests/test/com/google/common/graph/AbstractStandardUndirectedNetworkTest.java
+++ b/android/guava-tests/test/com/google/common/graph/AbstractStandardUndirectedNetworkTest.java
@@ -21,7 +21,6 @@ import static com.google.common.truth.TruthJUnit.assume;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
 import java.util.Set;
 import org.junit.After;
diff --git a/android/guava-tests/test/com/google/common/graph/AndroidIncompatible.java b/android/guava-tests/test/com/google/common/graph/AndroidIncompatible.java
index 239cafc..66c7bd3 100644
--- a/android/guava-tests/test/com/google/common/graph/AndroidIncompatible.java
+++ b/android/guava-tests/test/com/google/common/graph/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-tests/test/com/google/common/graph/EndpointPairTest.java b/android/guava-tests/test/com/google/common/graph/EndpointPairTest.java
index 099be1d..a49897d 100644
--- a/android/guava-tests/test/com/google/common/graph/EndpointPairTest.java
+++ b/android/guava-tests/test/com/google/common/graph/EndpointPairTest.java
@@ -19,8 +19,6 @@ package com.google.common.graph;
 import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
 import java.util.Collection;
 import java.util.Set;
diff --git a/android/guava-tests/test/com/google/common/graph/GraphPropertiesTest.java b/android/guava-tests/test/com/google/common/graph/GraphPropertiesTest.java
index d81edaf..f0e467d 100644
--- a/android/guava-tests/test/com/google/common/graph/GraphPropertiesTest.java
+++ b/android/guava-tests/test/com/google/common/graph/GraphPropertiesTest.java
@@ -19,7 +19,6 @@ package com.google.common.graph;
 import static com.google.common.graph.Graphs.hasCycle;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/android/guava-tests/test/com/google/common/graph/GraphsTest.java b/android/guava-tests/test/com/google/common/graph/GraphsTest.java
index a07def0..8559f1e 100644
--- a/android/guava-tests/test/com/google/common/graph/GraphsTest.java
+++ b/android/guava-tests/test/com/google/common/graph/GraphsTest.java
@@ -24,7 +24,6 @@ import static com.google.common.graph.Graphs.transpose;
 import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableSet;
 import java.util.Set;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/android/guava-tests/test/com/google/common/graph/TestUtil.java b/android/guava-tests/test/com/google/common/graph/TestUtil.java
index 68a2503..f843a4a 100644
--- a/android/guava-tests/test/com/google/common/graph/TestUtil.java
+++ b/android/guava-tests/test/com/google/common/graph/TestUtil.java
@@ -18,9 +18,7 @@ package com.google.common.graph;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Set;
 
 /** Utility methods used in various common.graph tests. */
@@ -78,7 +76,6 @@ final class TestUtil {
    * In some cases our graph implementations return custom sets that define their own size() and
    * contains(). Verify that these sets are consistent with the elements of their iterator.
    */
-  @CanIgnoreReturnValue
   static <T> Set<T> sanityCheckSet(Set<T> set) {
     assertThat(set).hasSize(Iterators.size(set.iterator()));
     for (Object element : set) {
diff --git a/android/guava-tests/test/com/google/common/graph/TraverserTest.java b/android/guava-tests/test/com/google/common/graph/TraverserTest.java
index d4c8cf7..cd3c605 100644
--- a/android/guava-tests/test/com/google/common/graph/TraverserTest.java
+++ b/android/guava-tests/test/com/google/common/graph/TraverserTest.java
@@ -24,8 +24,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.fail;
 
 import com.google.common.collect.HashMultiset;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMultimap;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Ordering;
diff --git a/android/guava-tests/test/com/google/common/graph/ValueGraphTest.java b/android/guava-tests/test/com/google/common/graph/ValueGraphTest.java
index b17c91d..779ca3d 100644
--- a/android/guava-tests/test/com/google/common/graph/ValueGraphTest.java
+++ b/android/guava-tests/test/com/google/common/graph/ValueGraphTest.java
@@ -22,7 +22,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.concurrent.Executors.newFixedThreadPool;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableList;
 import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CyclicBarrier;
diff --git a/android/guava-tests/test/com/google/common/hash/AbstractByteHasherTest.java b/android/guava-tests/test/com/google/common/hash/AbstractByteHasherTest.java
index e5c359a..7ceb25e 100644
--- a/android/guava-tests/test/com/google/common/hash/AbstractByteHasherTest.java
+++ b/android/guava-tests/test/com/google/common/hash/AbstractByteHasherTest.java
@@ -17,7 +17,6 @@ package com.google.common.hash;
 import static com.google.common.base.Charsets.UTF_16LE;
 import static org.junit.Assert.assertArrayEquals;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.ByteArrayOutputStream;
 import java.util.Random;
 import junit.framework.TestCase;
@@ -110,7 +109,6 @@ public class AbstractByteHasherTest extends TestCase {
     }
   }
 
-  @CanIgnoreReturnValue
   private class TestHasher extends AbstractByteHasher {
 
     private final ByteArrayOutputStream out = new ByteArrayOutputStream();
diff --git a/android/guava-tests/test/com/google/common/hash/AbstractNonStreamingHashFunctionTest.java b/android/guava-tests/test/com/google/common/hash/AbstractNonStreamingHashFunctionTest.java
index 7541471..39494a9 100644
--- a/android/guava-tests/test/com/google/common/hash/AbstractNonStreamingHashFunctionTest.java
+++ b/android/guava-tests/test/com/google/common/hash/AbstractNonStreamingHashFunctionTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.hash;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.hash.HashTestUtils.RandomHasherAction;
 import java.io.ByteArrayOutputStream;
 import java.nio.ByteBuffer;
diff --git a/android/guava-tests/test/com/google/common/hash/AndroidIncompatible.java b/android/guava-tests/test/com/google/common/hash/AndroidIncompatible.java
index f807acb..1dd77c4 100644
--- a/android/guava-tests/test/com/google/common/hash/AndroidIncompatible.java
+++ b/android/guava-tests/test/com/google/common/hash/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-tests/test/com/google/common/hash/BloomFilterTest.java b/android/guava-tests/test/com/google/common/hash/BloomFilterTest.java
index f69b578..4622f4a 100644
--- a/android/guava-tests/test/com/google/common/hash/BloomFilterTest.java
+++ b/android/guava-tests/test/com/google/common/hash/BloomFilterTest.java
@@ -20,7 +20,6 @@ import static com.google.common.base.Charsets.UTF_8;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Stopwatch;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.hash.BloomFilterStrategies.LockFreeBitArray;
 import com.google.common.math.LongMath;
 import com.google.common.primitives.Ints;
@@ -37,7 +36,6 @@ import java.util.List;
 import java.util.Random;
 import java.util.concurrent.TimeUnit;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Tests for SimpleGenericBloomFilter and derived BloomFilter views.
diff --git a/android/guava-tests/test/com/google/common/hash/HashCodeTest.java b/android/guava-tests/test/com/google/common/hash/HashCodeTest.java
index 4cccefe..4f06337 100644
--- a/android/guava-tests/test/com/google/common/hash/HashCodeTest.java
+++ b/android/guava-tests/test/com/google/common/hash/HashCodeTest.java
@@ -19,7 +19,6 @@ package com.google.common.hash;
 import static com.google.common.io.BaseEncoding.base16;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableList;
 import com.google.common.io.BaseEncoding;
 import com.google.common.testing.ClassSanityTester;
 import java.util.Arrays;
diff --git a/android/guava-tests/test/com/google/common/hash/HashTestUtils.java b/android/guava-tests/test/com/google/common/hash/HashTestUtils.java
index 9e9944b..ab3fa25 100644
--- a/android/guava-tests/test/com/google/common/hash/HashTestUtils.java
+++ b/android/guava-tests/test/com/google/common/hash/HashTestUtils.java
@@ -20,7 +20,6 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import com.google.common.primitives.Ints;
 import com.google.common.testing.EqualsTester;
diff --git a/android/guava-tests/test/com/google/common/hash/HashingTest.java b/android/guava-tests/test/com/google/common/hash/HashingTest.java
index bc3db34..05900fa 100644
--- a/android/guava-tests/test/com/google/common/hash/HashingTest.java
+++ b/android/guava-tests/test/com/google/common/hash/HashingTest.java
@@ -19,8 +19,6 @@ package com.google.common.hash;
 import static com.google.common.base.Charsets.UTF_8;
 import static java.util.Arrays.asList;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Table.Cell;
 import com.google.common.primitives.Ints;
diff --git a/android/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java b/android/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java
index 4dbb424..4fc9aeb 100644
--- a/android/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java
+++ b/android/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java
@@ -19,8 +19,6 @@ package com.google.common.hash;
 import static com.google.common.base.Charsets.UTF_8;
 import static com.google.common.io.BaseEncoding.base16;
 
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Table;
 import com.google.common.testing.NullPointerTester;
 import java.security.Key;
diff --git a/android/guava-tests/test/com/google/common/hash/MessageDigestHashFunctionTest.java b/android/guava-tests/test/com/google/common/hash/MessageDigestHashFunctionTest.java
index 535d455..8d2181b 100644
--- a/android/guava-tests/test/com/google/common/hash/MessageDigestHashFunctionTest.java
+++ b/android/guava-tests/test/com/google/common/hash/MessageDigestHashFunctionTest.java
@@ -17,8 +17,6 @@
 package com.google.common.hash;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Arrays;
diff --git a/android/guava-tests/test/com/google/common/hash/SipHashFunctionTest.java b/android/guava-tests/test/com/google/common/hash/SipHashFunctionTest.java
index ded4447..8fc7a7b 100644
--- a/android/guava-tests/test/com/google/common/hash/SipHashFunctionTest.java
+++ b/android/guava-tests/test/com/google/common/hash/SipHashFunctionTest.java
@@ -16,7 +16,6 @@ package com.google.common.hash;
 
 import static com.google.common.base.Charsets.UTF_8;
 
-import com.google.common.collect.ImmutableSet;
 import junit.framework.TestCase;
 
 /**
diff --git a/android/guava-tests/test/com/google/common/html/HtmlEscapersTest.java b/android/guava-tests/test/com/google/common/html/HtmlEscapersTest.java
index 776aa4c..9c067f0 100644
--- a/android/guava-tests/test/com/google/common/html/HtmlEscapersTest.java
+++ b/android/guava-tests/test/com/google/common/html/HtmlEscapersTest.java
@@ -16,7 +16,6 @@ package com.google.common.html;
 
 import static com.google.common.html.HtmlEscapers.htmlEscaper;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -24,7 +23,6 @@ import junit.framework.TestCase;
  *
  * @author David Beaumont
  */
-@GwtCompatible
 public class HtmlEscapersTest extends TestCase {
 
   public void testHtmlEscaper() throws Exception {
diff --git a/android/guava-tests/test/com/google/common/io/AndroidIncompatible.java b/android/guava-tests/test/com/google/common/io/AndroidIncompatible.java
index b0d80ae..d5270f9 100644
--- a/android/guava-tests/test/com/google/common/io/AndroidIncompatible.java
+++ b/android/guava-tests/test/com/google/common/io/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-tests/test/com/google/common/io/BaseEncodingTest.java b/android/guava-tests/test/com/google/common/io/BaseEncodingTest.java
index 832fb07..739e753 100644
--- a/android/guava-tests/test/com/google/common/io/BaseEncodingTest.java
+++ b/android/guava-tests/test/com/google/common/io/BaseEncodingTest.java
@@ -22,12 +22,9 @@ import static com.google.common.io.BaseEncoding.base64;
 import static com.google.common.io.BaseEncoding.base64Url;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Joiner;
 import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableList;
 import com.google.common.io.BaseEncoding.DecodingException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -36,14 +33,12 @@ import java.io.Reader;
 import java.io.StringReader;
 import java.io.StringWriter;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Tests for {@code BaseEncoding}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class BaseEncodingTest extends TestCase {
 
   public void testSeparatorsExplicitly() {
@@ -86,7 +81,7 @@ public class BaseEncodingTest extends TestCase {
     testEncodingWithSeparators(base64(), "foobar", "Zm9vYmFy");
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   public void testBase64Streaming() throws IOException {
     // The following test vectors are specified in RFC 4648 itself
     testStreamingEncodingWithSeparators(base64(), "", "");
@@ -149,7 +144,7 @@ public class BaseEncodingTest extends TestCase {
     testEncodingWithSeparators(enc, "foobar", "Zm9vYmFy");
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   public void testBase64StreamingAlternatePadding() throws IOException {
     BaseEncoding enc = base64().withPadChar('~');
     testStreamingEncodingWithSeparators(enc, "", "");
@@ -172,7 +167,7 @@ public class BaseEncodingTest extends TestCase {
     testEncodingWithSeparators(enc, "foobar", "Zm9vYmFy");
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   public void testBase64StreamingOmitPadding() throws IOException {
     BaseEncoding enc = base64().omitPadding();
     testStreamingEncodingWithSeparators(enc, "", "");
@@ -213,7 +208,7 @@ public class BaseEncodingTest extends TestCase {
     testEncodingWithCasing(base32(), "foobar", "MZXW6YTBOI======");
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   public void testBase32Streaming() throws IOException {
     // The following test vectors are specified in RFC 4648 itself
     testStreamingEncodingWithCasing(base32(), "", "");
@@ -284,7 +279,7 @@ public class BaseEncodingTest extends TestCase {
     testEncodingWithCasing(base32Hex(), "foobar", "CPNMUOJ1E8======");
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   public void testBase32HexStreaming() throws IOException {
     // The following test vectors are specified in RFC 4648 itself
     testStreamingEncodingWithCasing(base32Hex(), "", "");
@@ -415,7 +410,7 @@ public class BaseEncodingTest extends TestCase {
   }
 
   enum AssertFailsToDecodeStrategy {
-    @GwtIncompatible // decodingStream(Reader)
+    // decodingStream(Reader)
     DECODING_STREAM {
       @Override
       void assertFailsToDecode(
@@ -477,7 +472,7 @@ public class BaseEncodingTest extends TestCase {
         BaseEncoding encoding, String cannotDecode, @NullableDecl String expectedMessage);
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   private static void testStreamingEncodingWithCasing(
       BaseEncoding encoding, String decoded, String encoded) throws IOException {
     testStreamingEncodingWithSeparators(encoding, decoded, encoded);
@@ -485,7 +480,7 @@ public class BaseEncodingTest extends TestCase {
     testStreamingEncodingWithSeparators(encoding.lowerCase(), decoded, Ascii.toLowerCase(encoded));
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   private static void testStreamingEncodingWithSeparators(
       BaseEncoding encoding, String decoded, String encoded) throws IOException {
     testStreamingEncoding(encoding, decoded, encoded);
@@ -501,14 +496,14 @@ public class BaseEncodingTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   private static void testStreamingEncoding(BaseEncoding encoding, String decoded, String encoded)
       throws IOException {
     testStreamingEncodes(encoding, decoded, encoded);
     testStreamingDecodes(encoding, encoded, decoded);
   }
 
-  @GwtIncompatible // Writer
+  // Writer
   private static void testStreamingEncodes(BaseEncoding encoding, String decoded, String encoded)
       throws IOException {
     StringWriter writer = new StringWriter();
@@ -518,7 +513,7 @@ public class BaseEncodingTest extends TestCase {
     assertThat(writer.toString()).isEqualTo(encoded);
   }
 
-  @GwtIncompatible // Reader
+  // Reader
   private static void testStreamingDecodes(BaseEncoding encoding, String encoded, String decoded)
       throws IOException {
     byte[] bytes = decoded.getBytes(UTF_8);
diff --git a/android/guava-tests/test/com/google/common/io/ByteSinkTester.java b/android/guava-tests/test/com/google/common/io/ByteSinkTester.java
index a8ed36f..0c7b8c6 100644
--- a/android/guava-tests/test/com/google/common/io/ByteSinkTester.java
+++ b/android/guava-tests/test/com/google/common/io/ByteSinkTester.java
@@ -21,7 +21,6 @@ import static com.google.common.io.SourceSinkFactory.CharSinkFactory;
 import static org.junit.Assert.assertArrayEquals;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableList;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/android/guava-tests/test/com/google/common/io/ByteSourceTest.java b/android/guava-tests/test/com/google/common/io/ByteSourceTest.java
index 3cf6cca..db80966 100644
--- a/android/guava-tests/test/com/google/common/io/ByteSourceTest.java
+++ b/android/guava-tests/test/com/google/common/io/ByteSourceTest.java
@@ -26,8 +26,6 @@ import static com.google.common.io.TestOption.WRITE_THROWS;
 import static org.junit.Assert.assertArrayEquals;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.hash.Hashing;
 import com.google.common.io.Closer.LoggingSuppressor;
diff --git a/android/guava-tests/test/com/google/common/io/ByteSourceTester.java b/android/guava-tests/test/com/google/common/io/ByteSourceTester.java
index 7585412..207419b 100644
--- a/android/guava-tests/test/com/google/common/io/ByteSourceTester.java
+++ b/android/guava-tests/test/com/google/common/io/ByteSourceTester.java
@@ -22,7 +22,6 @@ import static org.junit.Assert.assertArrayEquals;
 
 import com.google.common.base.Charsets;
 import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
 import com.google.common.hash.HashCode;
 import com.google.common.hash.Hashing;
 import java.io.ByteArrayInputStream;
diff --git a/android/guava-tests/test/com/google/common/io/CharSinkTest.java b/android/guava-tests/test/com/google/common/io/CharSinkTest.java
index ac96d90..be87b6a 100644
--- a/android/guava-tests/test/com/google/common/io/CharSinkTest.java
+++ b/android/guava-tests/test/com/google/common/io/CharSinkTest.java
@@ -21,7 +21,6 @@ import static com.google.common.io.TestOption.OPEN_THROWS;
 import static com.google.common.io.TestOption.READ_THROWS;
 import static com.google.common.io.TestOption.WRITE_THROWS;
 
-import com.google.common.collect.ImmutableList;
 import java.io.IOException;
 import java.io.StringReader;
 import java.io.Writer;
diff --git a/android/guava-tests/test/com/google/common/io/CharSinkTester.java b/android/guava-tests/test/com/google/common/io/CharSinkTester.java
index 788f9c0..092b614 100644
--- a/android/guava-tests/test/com/google/common/io/CharSinkTester.java
+++ b/android/guava-tests/test/com/google/common/io/CharSinkTester.java
@@ -19,7 +19,6 @@ package com.google.common.io;
 import static com.google.common.io.SourceSinkFactory.CharSinkFactory;
 
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
 import java.io.IOException;
 import java.io.Writer;
 import java.lang.reflect.Method;
diff --git a/android/guava-tests/test/com/google/common/io/CharSourceTest.java b/android/guava-tests/test/com/google/common/io/CharSourceTest.java
index 6cc210b..7948485 100644
--- a/android/guava-tests/test/com/google/common/io/CharSourceTest.java
+++ b/android/guava-tests/test/com/google/common/io/CharSourceTest.java
@@ -21,8 +21,6 @@ import static com.google.common.io.TestOption.OPEN_THROWS;
 import static com.google.common.io.TestOption.READ_THROWS;
 import static com.google.common.io.TestOption.WRITE_THROWS;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.io.Closer.LoggingSuppressor;
diff --git a/android/guava-tests/test/com/google/common/io/CharSourceTester.java b/android/guava-tests/test/com/google/common/io/CharSourceTester.java
index e73fcdc..a527883 100644
--- a/android/guava-tests/test/com/google/common/io/CharSourceTester.java
+++ b/android/guava-tests/test/com/google/common/io/CharSourceTester.java
@@ -18,7 +18,6 @@ package com.google.common.io;
 
 import com.google.common.base.Charsets;
 import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.io.SourceSinkFactory.ByteSourceFactory;
 import com.google.common.io.SourceSinkFactory.CharSourceFactory;
diff --git a/android/guava-tests/test/com/google/common/io/CharStreamsTest.java b/android/guava-tests/test/com/google/common/io/CharStreamsTest.java
index 9b2c24e..44979c5 100644
--- a/android/guava-tests/test/com/google/common/io/CharStreamsTest.java
+++ b/android/guava-tests/test/com/google/common/io/CharStreamsTest.java
@@ -17,7 +17,6 @@
 package com.google.common.io;
 
 import com.google.common.base.Strings;
-import com.google.common.collect.ImmutableList;
 import java.io.EOFException;
 import java.io.FilterReader;
 import java.io.IOException;
diff --git a/android/guava-tests/test/com/google/common/io/CloserTest.java b/android/guava-tests/test/com/google/common/io/CloserTest.java
index 23037f2..3dcc48a 100644
--- a/android/guava-tests/test/com/google/common/io/CloserTest.java
+++ b/android/guava-tests/test/com/google/common/io/CloserTest.java
@@ -21,8 +21,6 @@ import static com.google.common.truth.Truth.assertThat;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.io.Closer.LoggingSuppressor;
 import com.google.common.testing.TestLogHandler;
@@ -32,7 +30,6 @@ import java.lang.reflect.Method;
 import java.util.List;
 import java.util.logging.LogRecord;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Tests for {@link Closer}.
diff --git a/android/guava-tests/test/com/google/common/io/FilesFileTraverserTest.java b/android/guava-tests/test/com/google/common/io/FilesFileTraverserTest.java
index c132406..39cf41c 100644
--- a/android/guava-tests/test/com/google/common/io/FilesFileTraverserTest.java
+++ b/android/guava-tests/test/com/google/common/io/FilesFileTraverserTest.java
@@ -19,7 +19,6 @@ package com.google.common.io;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.collect.Iterables;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.FileVisitResult;
@@ -126,14 +125,12 @@ public class FilesFileTraverserTest extends TestCase {
         .containsExactly(rootDir, fileA, fileB, dir1, dir2);
   }
 
-  @CanIgnoreReturnValue
   private File newDir(String name) {
     File file = new File(rootDir, name);
     file.mkdir();
     return file;
   }
 
-  @CanIgnoreReturnValue
   private File newFile(String name) throws IOException {
     File file = new File(rootDir, name);
     file.createNewFile();
diff --git a/android/guava-tests/test/com/google/common/io/FilesTest.java b/android/guava-tests/test/com/google/common/io/FilesTest.java
index 8446da1..c269f0e 100644
--- a/android/guava-tests/test/com/google/common/io/FilesTest.java
+++ b/android/guava-tests/test/com/google/common/io/FilesTest.java
@@ -19,7 +19,6 @@ package com.google.common.io;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableList;
 import com.google.common.hash.Hashing;
 import com.google.common.primitives.Bytes;
 import java.io.BufferedReader;
diff --git a/android/guava-tests/test/com/google/common/io/IoTestCase.java b/android/guava-tests/test/com/google/common/io/IoTestCase.java
index fa89619..89dc072 100644
--- a/android/guava-tests/test/com/google/common/io/IoTestCase.java
+++ b/android/guava-tests/test/com/google/common/io/IoTestCase.java
@@ -17,7 +17,6 @@
 package com.google.common.io;
 
 import com.google.common.collect.Sets;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -170,7 +169,6 @@ public abstract class IoTestCase extends TestCase {
     }
   }
 
-  @CanIgnoreReturnValue
   private boolean delete(File file) {
     if (file.isDirectory()) {
       File[] files = file.listFiles();
diff --git a/android/guava-tests/test/com/google/common/io/MultiReaderTest.java b/android/guava-tests/test/com/google/common/io/MultiReaderTest.java
index 20b4042..8c550ec 100644
--- a/android/guava-tests/test/com/google/common/io/MultiReaderTest.java
+++ b/android/guava-tests/test/com/google/common/io/MultiReaderTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.io;
 
-import com.google.common.collect.ImmutableList;
 import java.io.FilterReader;
 import java.io.IOException;
 import java.io.Reader;
diff --git a/android/guava-tests/test/com/google/common/io/ResourcesTest.java b/android/guava-tests/test/com/google/common/io/ResourcesTest.java
index af2abbb..bb7df92 100644
--- a/android/guava-tests/test/com/google/common/io/ResourcesTest.java
+++ b/android/guava-tests/test/com/google/common/io/ResourcesTest.java
@@ -20,7 +20,6 @@ import static com.google.common.base.CharMatcher.whitespace;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.NullPointerTester;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
diff --git a/android/guava-tests/test/com/google/common/io/SourceSinkFactories.java b/android/guava-tests/test/com/google/common/io/SourceSinkFactories.java
index cf3fad4..5facbc4 100644
--- a/android/guava-tests/test/com/google/common/io/SourceSinkFactories.java
+++ b/android/guava-tests/test/com/google/common/io/SourceSinkFactories.java
@@ -37,7 +37,6 @@ import java.io.Writer;
 import java.nio.CharBuffer;
 import java.util.Arrays;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * {@link SourceSinkFactory} implementations.
diff --git a/android/guava-tests/test/com/google/common/io/SourceSinkTester.java b/android/guava-tests/test/com/google/common/io/SourceSinkTester.java
index 9b07355..ec2fe74 100644
--- a/android/guava-tests/test/com/google/common/io/SourceSinkTester.java
+++ b/android/guava-tests/test/com/google/common/io/SourceSinkTester.java
@@ -18,8 +18,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import java.io.IOException;
 import java.io.Reader;
diff --git a/android/guava-tests/test/com/google/common/io/TestByteSink.java b/android/guava-tests/test/com/google/common/io/TestByteSink.java
index b7eeef0..d6c025a 100644
--- a/android/guava-tests/test/com/google/common/io/TestByteSink.java
+++ b/android/guava-tests/test/com/google/common/io/TestByteSink.java
@@ -16,7 +16,6 @@
 
 package com.google.common.io;
 
-import com.google.common.collect.ImmutableSet;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/android/guava-tests/test/com/google/common/io/TestByteSource.java b/android/guava-tests/test/com/google/common/io/TestByteSource.java
index 54ee982..0ac483c 100644
--- a/android/guava-tests/test/com/google/common/io/TestByteSource.java
+++ b/android/guava-tests/test/com/google/common/io/TestByteSource.java
@@ -18,7 +18,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.collect.ImmutableSet;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/android/guava-tests/test/com/google/common/io/TestInputStream.java b/android/guava-tests/test/com/google/common/io/TestInputStream.java
index c885cf7..09fbdf3 100644
--- a/android/guava-tests/test/com/google/common/io/TestInputStream.java
+++ b/android/guava-tests/test/com/google/common/io/TestInputStream.java
@@ -22,7 +22,6 @@ import static com.google.common.io.TestOption.OPEN_THROWS;
 import static com.google.common.io.TestOption.READ_THROWS;
 import static com.google.common.io.TestOption.SKIP_THROWS;
 
-import com.google.common.collect.ImmutableSet;
 import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/android/guava-tests/test/com/google/common/io/TestOutputStream.java b/android/guava-tests/test/com/google/common/io/TestOutputStream.java
index 1a40b83..3a923f7 100644
--- a/android/guava-tests/test/com/google/common/io/TestOutputStream.java
+++ b/android/guava-tests/test/com/google/common/io/TestOutputStream.java
@@ -21,7 +21,6 @@ import static com.google.common.io.TestOption.CLOSE_THROWS;
 import static com.google.common.io.TestOption.OPEN_THROWS;
 import static com.google.common.io.TestOption.WRITE_THROWS;
 
-import com.google.common.collect.ImmutableSet;
 import java.io.FilterOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/android/guava-tests/test/com/google/common/math/AndroidIncompatible.java b/android/guava-tests/test/com/google/common/math/AndroidIncompatible.java
index b9d81c0..6d65888 100644
--- a/android/guava-tests/test/com/google/common/math/AndroidIncompatible.java
+++ b/android/guava-tests/test/com/google/common/math/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-tests/test/com/google/common/math/BigDecimalMathTest.java b/android/guava-tests/test/com/google/common/math/BigDecimalMathTest.java
index ff86fd5..891f7a0 100644
--- a/android/guava-tests/test/com/google/common/math/BigDecimalMathTest.java
+++ b/android/guava-tests/test/com/google/common/math/BigDecimalMathTest.java
@@ -26,7 +26,6 @@ import static java.math.RoundingMode.UNNECESSARY;
 import static java.math.RoundingMode.UP;
 import static java.math.RoundingMode.values;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
@@ -35,7 +34,6 @@ import java.util.EnumSet;
 import java.util.Map;
 import junit.framework.TestCase;
 
-@GwtIncompatible
 public class BigDecimalMathTest extends TestCase {
   private static final class RoundToDoubleTester {
     private final BigDecimal input;
diff --git a/android/guava-tests/test/com/google/common/math/BigIntegerMathTest.java b/android/guava-tests/test/com/google/common/math/BigIntegerMathTest.java
index 170261b..9d47e88 100644
--- a/android/guava-tests/test/com/google/common/math/BigIntegerMathTest.java
+++ b/android/guava-tests/test/com/google/common/math/BigIntegerMathTest.java
@@ -38,8 +38,6 @@ import static java.math.RoundingMode.UP;
 import static java.math.RoundingMode.values;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -54,7 +52,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class BigIntegerMathTest extends TestCase {
   public void testCeilingPowerOfTwo() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
@@ -110,7 +107,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantSqrt2PrecomputedBits() {
     assertEquals(
         BigIntegerMath.sqrt(
@@ -213,7 +210,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10ZeroAlwaysThrows() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -224,7 +221,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10NegativeAlwaysThrows() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -235,7 +232,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10Floor() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : asList(FLOOR, DOWN)) {
@@ -246,7 +243,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10Ceiling() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : asList(CEILING, UP)) {
@@ -258,7 +255,7 @@ public class BigIntegerMathTest extends TestCase {
   }
 
   // Relies on the correctness of log10(BigInteger, FLOOR).
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10Exact() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       int logFloor = BigIntegerMath.log10(x, FLOOR);
@@ -272,7 +269,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10HalfUp() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       int result = BigIntegerMath.log10(x, HALF_UP);
@@ -284,7 +281,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10HalfDown() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       int result = BigIntegerMath.log10(x, HALF_DOWN);
@@ -297,7 +294,7 @@ public class BigIntegerMathTest extends TestCase {
   }
 
   // Relies on the correctness of log10(BigInteger, {HALF_UP,HALF_DOWN}).
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10HalfEven() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       int halfEven = BigIntegerMath.log10(x, HALF_EVEN);
@@ -308,7 +305,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10TrivialOnPowerOf10() {
     BigInteger x = BigInteger.TEN.pow(100);
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -316,14 +313,14 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtZeroAlwaysZero() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       assertEquals(ZERO, BigIntegerMath.sqrt(ZERO, mode));
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtNegativeAlwaysThrows() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -334,7 +331,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtFloor() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : asList(FLOOR, DOWN)) {
@@ -346,7 +343,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtCeiling() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : asList(CEILING, UP)) {
@@ -359,7 +356,7 @@ public class BigIntegerMathTest extends TestCase {
   }
 
   // Relies on the correctness of sqrt(BigInteger, FLOOR).
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtExact() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       BigInteger floor = BigIntegerMath.sqrt(x, FLOOR);
@@ -374,7 +371,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtHalfUp() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       BigInteger result = BigIntegerMath.sqrt(x, HALF_UP);
@@ -390,7 +387,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtHalfDown() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       BigInteger result = BigIntegerMath.sqrt(x, HALF_DOWN);
@@ -407,7 +404,7 @@ public class BigIntegerMathTest extends TestCase {
   }
 
   // Relies on the correctness of sqrt(BigInteger, {HALF_UP,HALF_DOWN}).
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtHalfEven() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       BigInteger halfEven = BigIntegerMath.sqrt(x, HALF_EVEN);
@@ -418,7 +415,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   @AndroidIncompatible // slow
   public void testDivNonZero() {
     for (BigInteger p : NONZERO_BIGINTEGER_CANDIDATES) {
@@ -438,7 +435,7 @@ public class BigIntegerMathTest extends TestCase {
   private static final BigInteger BAD_FOR_GINGERBREAD_P = new BigInteger("-9223372036854775808");
   private static final BigInteger BAD_FOR_GINGERBREAD_Q = new BigInteger("-4294967296");
 
-  @GwtIncompatible // TODO
+  // TODO
   @AndroidIncompatible // slow
   public void testDivNonZeroExact() {
     boolean isAndroid = System.getProperty("java.runtime.name").contains("Android");
@@ -469,7 +466,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testZeroDivIsAlwaysZero() {
     for (BigInteger q : NONZERO_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -478,7 +475,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testDivByZeroAlwaysFails() {
     for (BigInteger p : ALL_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -515,7 +512,7 @@ public class BigIntegerMathTest extends TestCase {
     runBinomialTest(0, 30);
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testBinomialLarge() {
     runBinomialTest(31, 100);
   }
@@ -548,7 +545,6 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible
   private static final class RoundToDoubleTester {
     private final BigInteger input;
     private final Map<RoundingMode, Double> expectedValues = new EnumMap<>(RoundingMode.class);
@@ -598,24 +594,20 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_Zero() {
     new RoundToDoubleTester(BigInteger.ZERO).setExpectation(0.0, values()).test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_smallPositive() {
     new RoundToDoubleTester(BigInteger.valueOf(16)).setExpectation(16.0, values()).test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_maxPreciselyRepresentable() {
     new RoundToDoubleTester(BigInteger.valueOf(1L << 53))
         .setExpectation(Math.pow(2, 53), values())
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_maxPreciselyRepresentablePlusOne() {
     double twoToThe53 = Math.pow(2, 53);
     // the representable doubles are 2^53 and 2^53 + 2.
@@ -627,7 +619,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_twoToThe54PlusOne() {
     double twoToThe54 = Math.pow(2, 54);
     // the representable doubles are 2^54 and 2^54 + 4
@@ -639,7 +630,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_twoToThe54PlusThree() {
     double twoToThe54 = Math.pow(2, 54);
     // the representable doubles are 2^54 and 2^54 + 4
@@ -651,20 +641,17 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_twoToThe54PlusFour() {
     new RoundToDoubleTester(BigInteger.valueOf((1L << 54) + 4))
         .setExpectation(Math.pow(2, 54) + 4, values())
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_maxDouble() {
     BigInteger maxDoubleAsBI = DoubleMath.roundToBigInteger(Double.MAX_VALUE, UNNECESSARY);
     new RoundToDoubleTester(maxDoubleAsBI).setExpectation(Double.MAX_VALUE, values()).test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_maxDoublePlusOne() {
     BigInteger maxDoubleAsBI =
         DoubleMath.roundToBigInteger(Double.MAX_VALUE, UNNECESSARY).add(BigInteger.ONE);
@@ -675,7 +662,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_wayTooBig() {
     BigInteger bi = BigInteger.ONE.shiftLeft(2 * Double.MAX_EXPONENT);
     new RoundToDoubleTester(bi)
@@ -685,19 +671,16 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_smallNegative() {
     new RoundToDoubleTester(BigInteger.valueOf(-16)).setExpectation(-16.0, values()).test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_minPreciselyRepresentable() {
     new RoundToDoubleTester(BigInteger.valueOf(-1L << 53))
         .setExpectation(-Math.pow(2, 53), values())
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_minPreciselyRepresentableMinusOne() {
     // the representable doubles are -2^53 and -2^53 - 2.
     // -2^53-1 is halfway between, so HALF_UP will go up and HALF_DOWN will go down.
@@ -708,7 +691,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_negativeTwoToThe54MinusOne() {
     new RoundToDoubleTester(BigInteger.valueOf((-1L << 54) - 1))
         .setExpectation(-Math.pow(2, 54), DOWN, CEILING, HALF_DOWN, HALF_UP, HALF_EVEN)
@@ -717,7 +699,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_negativeTwoToThe54MinusThree() {
     new RoundToDoubleTester(BigInteger.valueOf((-1L << 54) - 3))
         .setExpectation(-Math.pow(2, 54), DOWN, CEILING)
@@ -727,20 +708,17 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_negativeTwoToThe54MinusFour() {
     new RoundToDoubleTester(BigInteger.valueOf((-1L << 54) - 4))
         .setExpectation(-Math.pow(2, 54) - 4, values())
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_minDouble() {
     BigInteger minDoubleAsBI = DoubleMath.roundToBigInteger(-Double.MAX_VALUE, UNNECESSARY);
     new RoundToDoubleTester(minDoubleAsBI).setExpectation(-Double.MAX_VALUE, values()).test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_minDoubleMinusOne() {
     BigInteger minDoubleAsBI =
         DoubleMath.roundToBigInteger(-Double.MAX_VALUE, UNNECESSARY).subtract(BigInteger.ONE);
@@ -751,7 +729,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_negativeWayTooBig() {
     BigInteger bi = BigInteger.ONE.shiftLeft(2 * Double.MAX_EXPONENT).negate();
     new RoundToDoubleTester(bi)
@@ -761,7 +738,7 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.setDefault(BigInteger.class, ONE);
@@ -770,7 +747,7 @@ public class BigIntegerMathTest extends TestCase {
     tester.testAllPublicStaticMethods(BigIntegerMath.class);
   }
 
-  @GwtIncompatible // String.format
+  // String.format
   private static void failFormat(String template, Object... args) {
     fail(String.format(template, args));
   }
diff --git a/android/guava-tests/test/com/google/common/math/DoubleMathTest.java b/android/guava-tests/test/com/google/common/math/DoubleMathTest.java
index 724ae96..5557918 100644
--- a/android/guava-tests/test/com/google/common/math/DoubleMathTest.java
+++ b/android/guava-tests/test/com/google/common/math/DoubleMathTest.java
@@ -38,9 +38,6 @@ import static java.math.RoundingMode.UNNECESSARY;
 import static java.math.RoundingMode.UP;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.primitives.Doubles;
 import com.google.common.testing.NullPointerTester;
@@ -56,7 +53,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class DoubleMathTest extends TestCase {
 
   private static final BigDecimal MAX_INT_AS_BIG_DECIMAL = BigDecimal.valueOf(Integer.MAX_VALUE);
@@ -79,7 +75,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundIntegralDoubleToInt() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -98,7 +94,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundFractionalDoubleToInt() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -120,7 +116,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundExactIntegralDoubleToInt() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       BigDecimal expected = new BigDecimal(d).setScale(0, UNNECESSARY);
@@ -137,7 +133,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundExactFractionalDoubleToIntFails() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       try {
@@ -148,7 +144,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundNaNToIntAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -159,7 +155,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundInfiniteToIntAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -175,7 +171,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundIntegralDoubleToLong() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -194,7 +190,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundFractionalDoubleToLong() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -213,7 +209,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundExactIntegralDoubleToLong() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       // every mode except UNNECESSARY
@@ -231,7 +227,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundExactFractionalDoubleToLongFails() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       try {
@@ -242,7 +238,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundNaNToLongAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -253,7 +249,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundInfiniteToLongAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -269,7 +265,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundIntegralDoubleToBigInteger() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -279,7 +275,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundFractionalDoubleToBigInteger() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -289,7 +285,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundExactIntegralDoubleToBigInteger() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       BigDecimal expected = new BigDecimal(d).setScale(0, UNNECESSARY);
@@ -297,7 +293,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundExactFractionalDoubleToBigIntegerFails() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       try {
@@ -308,7 +304,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundNaNToBigIntegerAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -319,7 +315,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundInfiniteToBigIntegerAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -335,7 +331,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundLog2Floor() {
     for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       int log2 = DoubleMath.log2(d, FLOOR);
@@ -344,7 +340,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode), StrictMath
+  // DoubleMath.log2(double, RoundingMode), StrictMath
   public void testRoundLog2Ceiling() {
     for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       int log2 = DoubleMath.log2(d, CEILING);
@@ -354,7 +350,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode), StrictMath
+  // DoubleMath.log2(double, RoundingMode), StrictMath
   public void testRoundLog2Down() {
     for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       int log2 = DoubleMath.log2(d, DOWN);
@@ -370,7 +366,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode), StrictMath
+  // DoubleMath.log2(double, RoundingMode), StrictMath
   public void testRoundLog2Up() {
     for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       int log2 = DoubleMath.log2(d, UP);
@@ -386,7 +382,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode)
+  // DoubleMath.log2(double, RoundingMode)
   public void testRoundLog2Half() {
     // We don't expect perfect rounding accuracy.
     for (int exp : asList(-1022, -50, -1, 0, 1, 2, 3, 4, 100, 1022, 1023)) {
@@ -404,7 +400,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode)
+  // DoubleMath.log2(double, RoundingMode)
   public void testRoundLog2Exact() {
     for (double x : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       boolean isPowerOfTwo = StrictMath.pow(2.0, DoubleMath.log2(x, FLOOR)) == x;
@@ -418,7 +414,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode)
+  // DoubleMath.log2(double, RoundingMode)
   public void testRoundLog2ThrowsOnZerosInfinitiesAndNaN() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       for (double d :
@@ -432,7 +428,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode)
+  // DoubleMath.log2(double, RoundingMode)
   public void testRoundLog2ThrowsOnNegative() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
@@ -445,14 +441,14 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.isPowerOfTwo, DoubleMath.log2(double, RoundingMode), StrictMath
+  // DoubleMath.isPowerOfTwo, DoubleMath.log2(double, RoundingMode), StrictMath
   public void testIsPowerOfTwoYes() {
     for (int i = -1074; i <= 1023; i++) {
       assertTrue(DoubleMath.isPowerOfTwo(StrictMath.pow(2.0, i)));
     }
   }
 
-  @GwtIncompatible // DoubleMath.isPowerOfTwo, DoubleMath.log2(double, RoundingMode), StrictMath
+  // DoubleMath.isPowerOfTwo, DoubleMath.log2(double, RoundingMode), StrictMath
   public void testIsPowerOfTwo() {
     for (double x : ALL_DOUBLE_CANDIDATES) {
       boolean expected =
@@ -464,7 +460,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // #trueLog2, Math.ulp
+  // #trueLog2, Math.ulp
   public void testLog2Accuracy() {
     for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       double dmLog2 = DoubleMath.log2(d);
@@ -496,7 +492,7 @@ public class DoubleMathTest extends TestCase {
     assertTrue(Double.isNaN(DoubleMath.log2(Double.NaN)));
   }
 
-  @GwtIncompatible // StrictMath
+  // StrictMath
   private strictfp double trueLog2(double d) {
     double trueLog2 = StrictMath.log(d) / StrictMath.log(2);
     // increment until it's >= the true value
@@ -514,28 +510,28 @@ public class DoubleMathTest extends TestCase {
     return trueLog2;
   }
 
-  @GwtIncompatible // DoubleMath.isMathematicalInteger
+  // DoubleMath.isMathematicalInteger
   public void testIsMathematicalIntegerIntegral() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       assertTrue(DoubleMath.isMathematicalInteger(d));
     }
   }
 
-  @GwtIncompatible // DoubleMath.isMathematicalInteger
+  // DoubleMath.isMathematicalInteger
   public void testIsMathematicalIntegerFractional() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       assertFalse(DoubleMath.isMathematicalInteger(d));
     }
   }
 
-  @GwtIncompatible // DoubleMath.isMathematicalInteger
+  // DoubleMath.isMathematicalInteger
   public void testIsMathematicalIntegerNotFinite() {
     for (double d : Arrays.asList(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NaN)) {
       assertFalse(DoubleMath.isMathematicalInteger(d));
     }
   }
 
-  @GwtIncompatible // Math.ulp
+  // Math.ulp
   public void testFactorial() {
     for (int i = 0; i <= DoubleMath.MAX_FACTORIAL; i++) {
       double actual = BigIntegerMath.factorial(i).doubleValue();
@@ -710,7 +706,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_doubleVarargs() {
     assertEquals(-1.375, DoubleMath.mean(1.1, -2.2, 4.4, -8.8), 1.0e-10);
     assertEquals(1.1, DoubleMath.mean(1.1), 1.0e-10);
@@ -726,19 +722,19 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_intVarargs() {
     assertEquals(-13.75, DoubleMath.mean(11, -22, 44, -88), 1.0e-10);
     assertEquals(11.0, DoubleMath.mean(11), 1.0e-10);
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_longVarargs() {
     assertEquals(-13.75, DoubleMath.mean(11L, -22L, 44L, -88L), 1.0e-10);
     assertEquals(11.0, DoubleMath.mean(11L), 1.0e-10);
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_emptyVarargs() {
     try {
       DoubleMath.mean();
@@ -747,7 +743,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_doubleIterable() {
     assertEquals(-1.375, DoubleMath.mean(ImmutableList.of(1.1, -2.2, 4.4, -8.8)), 1.0e-10);
     assertEquals(1.1, DoubleMath.mean(ImmutableList.of(1.1)), 1.0e-10);
@@ -768,7 +764,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_intIterable() {
     assertEquals(-13.75, DoubleMath.mean(ImmutableList.of(11, -22, 44, -88)), 1.0e-10);
     assertEquals(11, DoubleMath.mean(ImmutableList.of(11)), 1.0e-10);
@@ -779,7 +775,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_longIterable() {
     assertEquals(-13.75, DoubleMath.mean(ImmutableList.of(11L, -22L, 44L, -88L)), 1.0e-10);
     assertEquals(11, DoubleMath.mean(ImmutableList.of(11L)), 1.0e-10);
@@ -790,7 +786,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_intIterator() {
     assertEquals(-13.75, DoubleMath.mean(ImmutableList.of(11, -22, 44, -88).iterator()), 1.0e-10);
     assertEquals(11, DoubleMath.mean(ImmutableList.of(11).iterator()), 1.0e-10);
@@ -801,7 +797,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_longIterator() {
     assertEquals(
         -13.75, DoubleMath.mean(ImmutableList.of(11L, -22L, 44L, -88L).iterator()), 1.0e-10);
@@ -813,7 +809,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.setDefault(double.class, 3.0);
diff --git a/android/guava-tests/test/com/google/common/math/IntMathTest.java b/android/guava-tests/test/com/google/common/math/IntMathTest.java
index 12b23e2..1022786 100644
--- a/android/guava-tests/test/com/google/common/math/IntMathTest.java
+++ b/android/guava-tests/test/com/google/common/math/IntMathTest.java
@@ -28,8 +28,6 @@ import static java.math.BigInteger.valueOf;
 import static java.math.RoundingMode.FLOOR;
 import static java.math.RoundingMode.UNNECESSARY;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -42,7 +40,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class IntMathTest extends TestCase {
   public void testMaxSignedPowerOfTwo() {
     assertTrue(IntMath.isPowerOfTwo(IntMath.MAX_SIGNED_POWER_OF_TWO));
@@ -110,7 +107,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testConstantMaxPowerOfSqrt2Unsigned() {
     assertEquals(
         /*expected=*/ BigIntegerMath.sqrt(BigInteger.ZERO.setBit(2 * Integer.SIZE - 1), FLOOR)
@@ -118,14 +115,14 @@ public class IntMathTest extends TestCase {
         /*actual=*/ IntMath.MAX_POWER_OF_SQRT2_UNSIGNED);
   }
 
-  @GwtIncompatible // pow()
+  // pow()
   public void testConstantsPowersOf10() {
     for (int i = 0; i < IntMath.powersOf10.length - 1; i++) {
       assertEquals(IntMath.pow(10, i), IntMath.powersOf10[i]);
     }
   }
 
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testMaxLog10ForLeadingZeros() {
     for (int i = 0; i < Integer.SIZE; i++) {
       assertEquals(
@@ -134,7 +131,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testConstantsHalfPowersOf10() {
     for (int i = 0; i < IntMath.halfPowersOf10.length; i++) {
       assert IntMath.halfPowersOf10[i]
@@ -159,7 +156,7 @@ public class IntMathTest extends TestCase {
                 2 * IntMath.biggestBinomials.length, IntMath.biggestBinomials.length)));
   }
 
-  @GwtIncompatible // sqrt
+  // sqrt
   public void testPowersSqrtMaxInt() {
     assertEquals(
         /*expected=*/ IntMath.sqrt(Integer.MAX_VALUE, FLOOR),
@@ -179,7 +176,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // java.math.BigInteger
+  // java.math.BigInteger
   public void testIsPowerOfTwo() {
     for (int x : ALL_INTEGER_CANDIDATES) {
       // Checks for a single bit set.
@@ -234,7 +231,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // log10
+  // log10
   public void testLog10ZeroAlwaysThrows() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -245,7 +242,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // log10
+  // log10
   public void testLog10NegativeAlwaysThrows() {
     for (int x : NEGATIVE_INTEGER_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -259,7 +256,7 @@ public class IntMathTest extends TestCase {
   }
 
   // Relies on the correctness of BigIntegerMath.log10 for all modes except UNNECESSARY.
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testLog10MatchesBigInteger() {
     for (int x : POSITIVE_INTEGER_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -270,7 +267,7 @@ public class IntMathTest extends TestCase {
   }
 
   // Relies on the correctness of log10(int, FLOOR) and of pow(int, int).
-  @GwtIncompatible // pow()
+  // pow()
   public void testLog10Exact() {
     for (int x : POSITIVE_INTEGER_CANDIDATES) {
       int floor = IntMath.log10(x, FLOOR);
@@ -284,7 +281,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // log10
+  // log10
   public void testLog10TrivialOnPowerOfTen() {
     int x = 1000000;
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -293,14 +290,14 @@ public class IntMathTest extends TestCase {
   }
 
   // Simple test to cover sqrt(0) for all types and all modes.
-  @GwtIncompatible // sqrt
+  // sqrt
   public void testSqrtZeroAlwaysZero() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       assertEquals(0, IntMath.sqrt(0, mode));
     }
   }
 
-  @GwtIncompatible // sqrt
+  // sqrt
   public void testSqrtNegativeAlwaysThrows() {
     for (int x : NEGATIVE_INTEGER_CANDIDATES) {
       for (RoundingMode mode : RoundingMode.values()) {
@@ -314,7 +311,7 @@ public class IntMathTest extends TestCase {
   }
 
   /* Relies on the correctness of BigIntegerMath.sqrt for all modes except UNNECESSARY. */
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testSqrtMatchesBigInteger() {
     for (int x : POSITIVE_INTEGER_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -327,7 +324,7 @@ public class IntMathTest extends TestCase {
   }
 
   /* Relies on the correctness of sqrt(int, FLOOR). */
-  @GwtIncompatible // sqrt
+  // sqrt
   public void testSqrtExactMatchesFloorOrThrows() {
     for (int x : POSITIVE_INTEGER_CANDIDATES) {
       int floor = IntMath.sqrt(x, FLOOR);
@@ -342,7 +339,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // 2147483646^2 expected=4
+  // 2147483646^2 expected=4
   public void testPow() {
     for (int i : ALL_INTEGER_CANDIDATES) {
       for (int pow : EXPONENTS) {
@@ -548,7 +545,7 @@ public class IntMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedAdd() {
     for (int a : ALL_INTEGER_CANDIDATES) {
       for (int b : ALL_INTEGER_CANDIDATES) {
@@ -559,7 +556,7 @@ public class IntMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedSubtract() {
     for (int a : ALL_INTEGER_CANDIDATES) {
       for (int b : ALL_INTEGER_CANDIDATES) {
@@ -574,7 +571,7 @@ public class IntMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedMultiply() {
     for (int a : ALL_INTEGER_CANDIDATES) {
       for (int b : ALL_INTEGER_CANDIDATES) {
@@ -588,7 +585,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedPow() {
     for (int a : ALL_INTEGER_CANDIDATES) {
       for (int b : EXPONENTS) {
@@ -673,7 +670,7 @@ public class IntMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // java.math.BigInteger
+  // java.math.BigInteger
   public void testMean() {
     // Odd-sized ranges have an obvious mean
     assertMean(2, 1, 3);
@@ -744,14 +741,14 @@ public class IntMathTest extends TestCase {
     return big.bitLength() <= 31;
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.setDefault(int.class, 1);
     tester.testAllPublicStaticMethods(IntMath.class);
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrime() {
     // Defer correctness tests to Long.isPrime
 
diff --git a/android/guava-tests/test/com/google/common/math/LongMathTest.java b/android/guava-tests/test/com/google/common/math/LongMathTest.java
index 40c2ac9..48fc47f 100644
--- a/android/guava-tests/test/com/google/common/math/LongMathTest.java
+++ b/android/guava-tests/test/com/google/common/math/LongMathTest.java
@@ -31,8 +31,6 @@ import static java.math.BigInteger.valueOf;
 import static java.math.RoundingMode.FLOOR;
 import static java.math.RoundingMode.UNNECESSARY;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -46,7 +44,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class LongMathTest extends TestCase {
   @SuppressWarnings("ConstantOverflow")
   public void testMaxSignedPowerOfTwo() {
@@ -112,7 +109,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantMaxPowerOfSqrt2Unsigned() {
     assertEquals(
         /*expected=*/ BigIntegerMath.sqrt(BigInteger.ZERO.setBit(2 * Long.SIZE - 1), FLOOR)
@@ -120,7 +117,7 @@ public class LongMathTest extends TestCase {
         /*actual=*/ LongMath.MAX_POWER_OF_SQRT2_UNSIGNED);
   }
 
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testMaxLog10ForLeadingZeros() {
     for (int i = 0; i < Long.SIZE; i++) {
       assertEquals(
@@ -129,7 +126,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsPowersOf10() {
     for (int i = 0; i < LongMath.powersOf10.length; i++) {
       assertEquals(LongMath.checkedPow(10, i), LongMath.powersOf10[i]);
@@ -141,7 +138,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsHalfPowersOf10() {
     for (int i = 0; i < LongMath.halfPowersOf10.length; i++) {
       assertEquals(
@@ -153,14 +150,14 @@ public class LongMathTest extends TestCase {
     assertTrue(nextBigger.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0);
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsSqrtMaxLong() {
     assertEquals(
         /*expected=*/ LongMath.sqrt(Long.MAX_VALUE, FLOOR),
         /*actual=*/ LongMath.FLOOR_SQRT_MAX_LONG);
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsFactorials() {
     long expected = 1;
     for (int i = 0; i < LongMath.factorials.length; i++, expected *= i) {
@@ -174,7 +171,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsBiggestBinomials() {
     for (int k = 0; k < LongMath.biggestBinomials.length; k++) {
       assertTrue(fitsInLong(BigIntegerMath.binomial(LongMath.biggestBinomials[k], k)));
@@ -189,7 +186,7 @@ public class LongMathTest extends TestCase {
     // 2 * k is the smallest value for which we don't replace k with (n-k).
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsBiggestSimpleBinomials() {
     for (int k = 0; k < LongMath.biggestSimpleBinomials.length; k++) {
       assertTrue(LongMath.biggestSimpleBinomials[k] <= LongMath.biggestBinomials[k]);
@@ -227,7 +224,7 @@ public class LongMathTest extends TestCase {
   }
 
   // Throws an ArithmeticException if "the simple implementation" of binomial coefficients overflows
-  @GwtIncompatible // TODO
+  // TODO
   private long simpleBinomial(int n, int k) {
     long accum = 1;
     for (int i = 0; i < k; i++) {
@@ -237,7 +234,7 @@ public class LongMathTest extends TestCase {
     return accum;
   }
 
-  @GwtIncompatible // java.math.BigInteger
+  // java.math.BigInteger
   public void testIsPowerOfTwo() {
     for (long x : ALL_LONG_CANDIDATES) {
       // Checks for a single bit set.
@@ -293,7 +290,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10ZeroAlwaysThrows() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -304,7 +301,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10NegativeAlwaysThrows() {
     for (long x : NEGATIVE_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -318,7 +315,7 @@ public class LongMathTest extends TestCase {
   }
 
   // Relies on the correctness of BigIntegerMath.log10 for all modes except UNNECESSARY.
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10MatchesBigInteger() {
     for (long x : POSITIVE_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -328,7 +325,7 @@ public class LongMathTest extends TestCase {
   }
 
   // Relies on the correctness of log10(long, FLOOR) and of pow(long, int).
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10Exact() {
     for (long x : POSITIVE_LONG_CANDIDATES) {
       int floor = LongMath.log10(x, FLOOR);
@@ -344,7 +341,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10TrivialOnPowerOf10() {
     long x = 1000000000000L;
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -352,7 +349,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtNegativeAlwaysThrows() {
     for (long x : NEGATIVE_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -366,7 +363,7 @@ public class LongMathTest extends TestCase {
   }
 
   // Relies on the correctness of BigIntegerMath.sqrt for all modes except UNNECESSARY.
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtMatchesBigInteger() {
     for (long x : POSITIVE_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -378,7 +375,7 @@ public class LongMathTest extends TestCase {
   }
 
   /* Relies on the correctness of sqrt(long, FLOOR). */
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtExactMatchesFloorOrThrows() {
     for (long x : POSITIVE_LONG_CANDIDATES) {
       long sqrtFloor = LongMath.sqrt(x, FLOOR);
@@ -393,7 +390,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testPow() {
     for (long i : ALL_LONG_CANDIDATES) {
       for (int exp : EXPONENTS) {
@@ -402,7 +399,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   @AndroidIncompatible // TODO(cpovirk): File BigDecimal.divide() rounding bug.
   public void testDivNonZero() {
     for (long p : NONZERO_LONG_CANDIDATES) {
@@ -419,7 +416,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   @AndroidIncompatible // Bug in older versions of Android we test against, since fixed.
   public void testDivNonZeroExact() {
     for (long p : NONZERO_LONG_CANDIDATES) {
@@ -439,7 +436,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testZeroDivIsAlwaysZero() {
     for (long q : NONZERO_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -448,7 +445,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testDivByZeroAlwaysFails() {
     for (long p : ALL_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -461,7 +458,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testIntMod() {
     for (long x : ALL_LONG_CANDIDATES) {
       for (int m : POSITIVE_INTEGER_CANDIDATES) {
@@ -470,7 +467,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testIntModNegativeModulusFails() {
     for (long x : ALL_LONG_CANDIDATES) {
       for (int m : NEGATIVE_INTEGER_CANDIDATES) {
@@ -483,7 +480,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testIntModZeroModulusFails() {
     for (long x : ALL_LONG_CANDIDATES) {
       try {
@@ -495,7 +492,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testMod() {
     for (long x : ALL_LONG_CANDIDATES) {
       for (long m : POSITIVE_LONG_CANDIDATES) {
@@ -504,7 +501,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testModNegativeModulusFails() {
     for (long x : ALL_LONG_CANDIDATES) {
       for (long m : NEGATIVE_LONG_CANDIDATES) {
@@ -525,7 +522,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testGCDZero() {
     for (long a : POSITIVE_LONG_CANDIDATES) {
       assertEquals(a, LongMath.gcd(a, 0));
@@ -534,7 +531,7 @@ public class LongMathTest extends TestCase {
     assertEquals(0, LongMath.gcd(0, 0));
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testGCDNegativePositiveThrows() {
     for (long a : NEGATIVE_LONG_CANDIDATES) {
       try {
@@ -550,7 +547,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testGCDNegativeZeroThrows() {
     for (long a : NEGATIVE_LONG_CANDIDATES) {
       try {
@@ -567,7 +564,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testCheckedAdd() {
     for (long a : ALL_LONG_CANDIDATES) {
       for (long b : ALL_LONG_CANDIDATES) {
@@ -586,7 +583,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   @AndroidIncompatible // slow
   public void testCheckedSubtract() {
     for (long a : ALL_LONG_CANDIDATES) {
@@ -638,7 +635,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testCheckedPow() {
     for (long b : ALL_LONG_CANDIDATES) {
       for (int exp : EXPONENTS) {
@@ -659,7 +656,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedAdd() {
     for (long a : ALL_LONG_CANDIDATES) {
       for (long b : ALL_LONG_CANDIDATES) {
@@ -670,7 +667,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedSubtract() {
     for (long a : ALL_LONG_CANDIDATES) {
       for (long b : ALL_LONG_CANDIDATES) {
@@ -685,7 +682,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedMultiply() {
     for (long a : ALL_LONG_CANDIDATES) {
       for (long b : ALL_LONG_CANDIDATES) {
@@ -699,7 +696,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedPow() {
     for (long a : ALL_LONG_CANDIDATES) {
       for (int b : EXPONENTS) {
@@ -716,7 +713,7 @@ public class LongMathTest extends TestCase {
   }
 
   // Depends on the correctness of BigIntegerMath.factorial.
-  @GwtIncompatible // TODO
+  // TODO
   public void testFactorial() {
     for (int n = 0; n <= 50; n++) {
       BigInteger expectedBig = BigIntegerMath.factorial(n);
@@ -725,7 +722,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testFactorialNegative() {
     for (int n : NEGATIVE_INTEGER_CANDIDATES) {
       try {
@@ -748,7 +745,7 @@ public class LongMathTest extends TestCase {
   }
 
 
-  @GwtIncompatible // Slow
+  // Slow
   public void testBinomial_exhaustiveNotOverflowing() {
     // Tests all of the inputs to LongMath.binomial that won't cause it to overflow, that weren't
     // tested in the previous method, for k >= 3.
@@ -785,7 +782,7 @@ public class LongMathTest extends TestCase {
   }
 
 
-  @GwtIncompatible // far too slow
+  // far too slow
   public void testSqrtOfPerfectSquareAsDoubleIsPerfect() {
     // This takes just over a minute on my machine.
     for (long n = 0; n <= LongMath.FLOOR_SQRT_MAX_LONG; n++) {
@@ -800,7 +797,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // java.math.BigInteger
+  // java.math.BigInteger
   public void testMean() {
     // Odd-sized ranges have an obvious mean
     assertMean(2, 1, 3);
@@ -884,7 +881,7 @@ public class LongMathTest extends TestCase {
     return big.longValue();
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.setDefault(int.class, 1);
@@ -892,7 +889,7 @@ public class LongMathTest extends TestCase {
     tester.testAllPublicStaticMethods(LongMath.class);
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeSmall() {
     // Check the first 1000 integers
     for (int i = 2; i < 1000; i++) {
@@ -900,7 +897,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeManyConstants() {
     // Test the thorough test inputs, which also includes special constants in the Miller-Rabin
     // tests.
@@ -909,7 +906,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeOnUniformRandom() {
     Random rand = new Random(1);
     for (int bits = 10; bits < 63; bits++) {
@@ -921,7 +918,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeOnRandomPrimes() {
     Random rand = new Random(1);
     for (int bits = 10; bits < 63; bits++) {
@@ -932,7 +929,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeOnRandomComposites() {
     Random rand = new Random(1);
     for (int bits = 5; bits < 32; bits++) {
@@ -944,7 +941,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeThrowsOnNegative() {
     try {
       LongMath.isPrime(-1);
@@ -989,7 +986,6 @@ public class LongMathTest extends TestCase {
     Long.MIN_VALUE
   };
 
-  @GwtIncompatible
   public void testRoundToDoubleAgainstBigInteger() {
     for (RoundingMode roundingMode : EnumSet.complementOf(EnumSet.of(UNNECESSARY))) {
       for (long candidate : roundToDoubleTestCandidates) {
@@ -999,7 +995,6 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible
   public void testRoundToDoubleAgainstBigIntegerUnnecessary() {
     for (long candidate : roundToDoubleTestCandidates) {
       Double expectedDouble = null;
diff --git a/android/guava-tests/test/com/google/common/math/MathPreconditionsTest.java b/android/guava-tests/test/com/google/common/math/MathPreconditionsTest.java
index 5dbe017..66b1fa8 100644
--- a/android/guava-tests/test/com/google/common/math/MathPreconditionsTest.java
+++ b/android/guava-tests/test/com/google/common/math/MathPreconditionsTest.java
@@ -18,7 +18,6 @@ package com.google.common.math;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import java.math.BigInteger;
 import java.math.RoundingMode;
 import junit.framework.TestCase;
@@ -28,7 +27,6 @@ import junit.framework.TestCase;
  *
  * @author Ben Yu
  */
-@GwtCompatible
 public class MathPreconditionsTest extends TestCase {
 
   public void testCheckPositive_zeroInt() {
diff --git a/android/guava-tests/test/com/google/common/math/MathTesting.java b/android/guava-tests/test/com/google/common/math/MathTesting.java
index 6b74f11..9a55865 100644
--- a/android/guava-tests/test/com/google/common/math/MathTesting.java
+++ b/android/guava-tests/test/com/google/common/math/MathTesting.java
@@ -27,11 +27,8 @@ import static java.math.RoundingMode.HALF_UP;
 import static java.math.RoundingMode.UP;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.primitives.Doubles;
 import java.math.BigInteger;
@@ -42,7 +39,6 @@ import java.math.RoundingMode;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class MathTesting {
   static final ImmutableSet<RoundingMode> ALL_ROUNDING_MODES =
       ImmutableSet.copyOf(RoundingMode.values());
diff --git a/android/guava-tests/test/com/google/common/math/PairedStatsTest.java b/android/guava-tests/test/com/google/common/math/PairedStatsTest.java
index 7dd9e94..53fd7b3 100644
--- a/android/guava-tests/test/com/google/common/math/PairedStatsTest.java
+++ b/android/guava-tests/test/com/google/common/math/PairedStatsTest.java
@@ -49,7 +49,6 @@ import static com.google.common.math.StatsTesting.createPairedStatsOf;
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.math.StatsTesting.ManyValues;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.SerializableTester;
diff --git a/android/guava-tests/test/com/google/common/math/QuantilesAlgorithm.java b/android/guava-tests/test/com/google/common/math/QuantilesAlgorithm.java
index 54d310f..beb2962 100644
--- a/android/guava-tests/test/com/google/common/math/QuantilesAlgorithm.java
+++ b/android/guava-tests/test/com/google/common/math/QuantilesAlgorithm.java
@@ -16,7 +16,6 @@
 
 package com.google.common.math;
 
-import com.google.common.collect.ImmutableMap;
 import java.math.RoundingMode;
 import java.util.Arrays;
 import java.util.Collection;
diff --git a/android/guava-tests/test/com/google/common/math/QuantilesAlgorithmTest.java b/android/guava-tests/test/com/google/common/math/QuantilesAlgorithmTest.java
index 87a962a..34c2b41 100644
--- a/android/guava-tests/test/com/google/common/math/QuantilesAlgorithmTest.java
+++ b/android/guava-tests/test/com/google/common/math/QuantilesAlgorithmTest.java
@@ -19,7 +19,6 @@ package com.google.common.math;
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import java.util.Map;
 import java.util.Random;
diff --git a/android/guava-tests/test/com/google/common/math/QuantilesTest.java b/android/guava-tests/test/com/google/common/math/QuantilesTest.java
index 5ac5f6e..e43ea66 100644
--- a/android/guava-tests/test/com/google/common/math/QuantilesTest.java
+++ b/android/guava-tests/test/com/google/common/math/QuantilesTest.java
@@ -28,8 +28,6 @@ import static java.math.RoundingMode.CEILING;
 import static java.math.RoundingMode.FLOOR;
 import static java.math.RoundingMode.UNNECESSARY;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Ordering;
 import com.google.common.math.Quantiles.ScaleAndIndexes;
 import com.google.common.primitives.Doubles;
@@ -42,7 +40,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Random;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Tests for {@link Quantiles}.
diff --git a/android/guava-tests/test/com/google/common/math/StatsAccumulatorTest.java b/android/guava-tests/test/com/google/common/math/StatsAccumulatorTest.java
index 6926a69..5dab039 100644
--- a/android/guava-tests/test/com/google/common/math/StatsAccumulatorTest.java
+++ b/android/guava-tests/test/com/google/common/math/StatsAccumulatorTest.java
@@ -47,7 +47,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 import static java.lang.Math.sqrt;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.math.StatsTesting.ManyValues;
 import com.google.common.primitives.Doubles;
 import com.google.common.primitives.Longs;
diff --git a/android/guava-tests/test/com/google/common/math/StatsTest.java b/android/guava-tests/test/com/google/common/math/StatsTest.java
index 76de5b5..7d2e26f 100644
--- a/android/guava-tests/test/com/google/common/math/StatsTest.java
+++ b/android/guava-tests/test/com/google/common/math/StatsTest.java
@@ -70,7 +70,6 @@ import static java.lang.Double.NaN;
 import static java.lang.Double.POSITIVE_INFINITY;
 import static java.lang.Math.sqrt;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.math.StatsTesting.ManyValues;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.Longs;
diff --git a/android/guava-tests/test/com/google/common/math/StatsTesting.java b/android/guava-tests/test/com/google/common/math/StatsTesting.java
index 12689d3..5abc5fb 100644
--- a/android/guava-tests/test/com/google/common/math/StatsTesting.java
+++ b/android/guava-tests/test/com/google/common/math/StatsTesting.java
@@ -24,7 +24,6 @@ import static java.lang.Double.POSITIVE_INFINITY;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.primitives.Doubles;
diff --git a/android/guava-tests/test/com/google/common/math/TestPlatform.java b/android/guava-tests/test/com/google/common/math/TestPlatform.java
index 03eb2ec..5c70ad3 100644
--- a/android/guava-tests/test/com/google/common/math/TestPlatform.java
+++ b/android/guava-tests/test/com/google/common/math/TestPlatform.java
@@ -16,10 +16,8 @@
 
 package com.google.common.math;
 
-import com.google.common.annotations.GwtCompatible;
 
 /** @author Chris Povirk */
-@GwtCompatible(emulated = true)
 class TestPlatform {
   static boolean intsCanGoOutOfRange() {
     return false;
diff --git a/android/guava-tests/test/com/google/common/net/HostAndPortTest.java b/android/guava-tests/test/com/google/common/net/HostAndPortTest.java
index 65e8096..792d20d 100644
--- a/android/guava-tests/test/com/google/common/net/HostAndPortTest.java
+++ b/android/guava-tests/test/com/google/common/net/HostAndPortTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.net;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.SerializableTester;
 import junit.framework.TestCase;
@@ -26,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Paul Marks
  */
-@GwtCompatible
 public class HostAndPortTest extends TestCase {
 
   public void testFromStringWellFormed() {
diff --git a/android/guava-tests/test/com/google/common/net/HostSpecifierTest.java b/android/guava-tests/test/com/google/common/net/HostSpecifierTest.java
index fadeff7..fd9a2bb 100644
--- a/android/guava-tests/test/com/google/common/net/HostSpecifierTest.java
+++ b/android/guava-tests/test/com/google/common/net/HostSpecifierTest.java
@@ -18,7 +18,6 @@ package com.google.common.net;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import java.text.ParseException;
diff --git a/android/guava-tests/test/com/google/common/net/HttpHeadersTest.java b/android/guava-tests/test/com/google/common/net/HttpHeadersTest.java
index 5361b3f..b4c8b21 100644
--- a/android/guava-tests/test/com/google/common/net/HttpHeadersTest.java
+++ b/android/guava-tests/test/com/google/common/net/HttpHeadersTest.java
@@ -19,8 +19,6 @@ package com.google.common.net;
 import com.google.common.base.Ascii;
 import com.google.common.base.Joiner;
 import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import java.lang.reflect.Field;
 import java.util.List;
diff --git a/android/guava-tests/test/com/google/common/net/InetAddressesTest.java b/android/guava-tests/test/com/google/common/net/InetAddressesTest.java
index be77e7b..ceded47 100644
--- a/android/guava-tests/test/com/google/common/net/InetAddressesTest.java
+++ b/android/guava-tests/test/com/google/common/net/InetAddressesTest.java
@@ -18,7 +18,6 @@ package com.google.common.net;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.NullPointerTester;
 import java.math.BigInteger;
 import java.net.Inet4Address;
diff --git a/android/guava-tests/test/com/google/common/net/InternetDomainNameTest.java b/android/guava-tests/test/com/google/common/net/InternetDomainNameTest.java
index 7113fb4..17cec57 100644
--- a/android/guava-tests/test/com/google/common/net/InternetDomainNameTest.java
+++ b/android/guava-tests/test/com/google/common/net/InternetDomainNameTest.java
@@ -17,11 +17,8 @@
 package com.google.common.net;
 
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Strings;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
@@ -32,7 +29,6 @@ import junit.framework.TestCase;
  *
  * @author Craig Berry
  */
-@GwtCompatible(emulated = true)
 public final class InternetDomainNameTest extends TestCase {
   private static final InternetDomainName UNICODE_EXAMPLE =
       InternetDomainName.from("j\u00f8rpeland.no");
@@ -501,7 +497,7 @@ public final class InternetDomainNameTest extends TestCase {
     return InternetDomainName.from(domain);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     final NullPointerTester tester = new NullPointerTester();
 
diff --git a/android/guava-tests/test/com/google/common/net/MediaTypeTest.java b/android/guava-tests/test/com/google/common/net/MediaTypeTest.java
index 574db68..76aaf60 100644
--- a/android/guava-tests/test/com/google/common/net/MediaTypeTest.java
+++ b/android/guava-tests/test/com/google/common/net/MediaTypeTest.java
@@ -33,15 +33,10 @@ import static java.lang.reflect.Modifier.isPublic;
 import static java.lang.reflect.Modifier.isStatic;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import java.lang.reflect.Field;
@@ -55,16 +50,15 @@ import junit.framework.TestCase;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 public class MediaTypeTest extends TestCase {
-  @GwtIncompatible // reflection
+  // reflection
   public void testParse_useConstants() throws Exception {
     for (MediaType constant : getConstants()) {
       assertSame(constant, MediaType.parse(constant.toString()));
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testCreate_useConstants() throws Exception {
     for (MediaType constant : getConstants()) {
       assertSame(
@@ -74,7 +68,7 @@ public class MediaTypeTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testConstants_charset() throws Exception {
     for (Field field : getConstantFields()) {
       Optional<Charset> charset = ((MediaType) field.get(null)).charset();
@@ -86,12 +80,12 @@ public class MediaTypeTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testConstants_areUnique() {
     assertThat(getConstants()).containsNoDuplicates();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static FluentIterable<Field> getConstantFields() {
     return FluentIterable.from(asList(MediaType.class.getDeclaredFields()))
         .filter(
@@ -107,7 +101,7 @@ public class MediaTypeTest extends TestCase {
             });
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static FluentIterable<MediaType> getConstants() {
     return getConstantFields()
         .transform(
@@ -517,7 +511,7 @@ public class MediaTypeTest extends TestCase {
     assertThat(MediaType.parse("text/plain; charset=utf-8").charset()).hasValue(UTF_8);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testGetCharset_utf16() {
     assertThat(MediaType.parse("text/plain; charset=utf-16").charset()).hasValue(UTF_16);
   }
@@ -589,7 +583,7 @@ public class MediaTypeTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testEquals_nonUtf8Charsets() {
     new EqualsTester()
         .addEqualityGroup(MediaType.create("text", "plain"))
@@ -598,7 +592,7 @@ public class MediaTypeTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // com.google.common.testing.NullPointerTester
+  // com.google.common.testing.NullPointerTester
   public void testNullPointer() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicConstructors(MediaType.class);
diff --git a/android/guava-tests/test/com/google/common/net/PercentEscaperTest.java b/android/guava-tests/test/com/google/common/net/PercentEscaperTest.java
index 8443680..4febfc1 100644
--- a/android/guava-tests/test/com/google/common/net/PercentEscaperTest.java
+++ b/android/guava-tests/test/com/google/common/net/PercentEscaperTest.java
@@ -21,7 +21,6 @@ import static com.google.common.escape.testing.EscaperAsserts.assertUnescaped;
 import static com.google.common.escape.testing.EscaperAsserts.assertUnicodeEscaping;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.escape.UnicodeEscaper;
 import junit.framework.TestCase;
@@ -31,7 +30,6 @@ import junit.framework.TestCase;
  *
  * @author David Beaumont
  */
-@GwtCompatible
 public class PercentEscaperTest extends TestCase {
 
   /** Tests that the simple escaper treats 0-9, a-z and A-Z as safe */
diff --git a/android/guava-tests/test/com/google/common/net/UrlEscapersTest.java b/android/guava-tests/test/com/google/common/net/UrlEscapersTest.java
index 9a67a95..bc089e5 100644
--- a/android/guava-tests/test/com/google/common/net/UrlEscapersTest.java
+++ b/android/guava-tests/test/com/google/common/net/UrlEscapersTest.java
@@ -23,7 +23,6 @@ import static com.google.common.net.UrlEscapers.urlFormParameterEscaper;
 import static com.google.common.net.UrlEscapers.urlFragmentEscaper;
 import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.UnicodeEscaper;
 import junit.framework.TestCase;
 
@@ -32,7 +31,6 @@ import junit.framework.TestCase;
  *
  * @author David Beaumont
  */
-@GwtCompatible
 public class UrlEscapersTest extends TestCase {
   /**
    * Helper to assert common expected behaviour of uri escapers. You should call
diff --git a/android/guava-tests/test/com/google/common/primitives/AndroidIncompatible.java b/android/guava-tests/test/com/google/common/primitives/AndroidIncompatible.java
index 2cf4a28..9ca8779 100644
--- a/android/guava-tests/test/com/google/common/primitives/AndroidIncompatible.java
+++ b/android/guava-tests/test/com/google/common/primitives/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-tests/test/com/google/common/primitives/BooleansTest.java b/android/guava-tests/test/com/google/common/primitives/BooleansTest.java
index 560c337..803e651 100644
--- a/android/guava-tests/test/com/google/common/primitives/BooleansTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/BooleansTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -33,7 +31,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class BooleansTest extends TestCase {
   private static final boolean[] EMPTY = {};
   private static final boolean[] ARRAY_FALSE = {false};
@@ -172,7 +169,7 @@ public class BooleansTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<boolean[]> comparator = Booleans.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -338,7 +335,7 @@ public class BooleansTest extends TestCase {
     assertEquals(1, Booleans.countTrue(false, false, true, false, false));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Booleans.class);
   }
diff --git a/android/guava-tests/test/com/google/common/primitives/ByteArrayAsListTest.java b/android/guava-tests/test/com/google/common/primitives/ByteArrayAsListTest.java
index c3d0be1..109eb45 100644
--- a/android/guava-tests/test/com/google/common/primitives/ByteArrayAsListTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/ByteArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class ByteArrayAsListTest extends TestCase {
 
   private static List<Byte> asList(Byte[] values) {
@@ -48,7 +44,7 @@ public class ByteArrayAsListTest extends TestCase {
     return Bytes.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Byte>> builders =
         ImmutableList.of(
diff --git a/android/guava-tests/test/com/google/common/primitives/BytesTest.java b/android/guava-tests/test/com/google/common/primitives/BytesTest.java
index 233a015..2bf492e 100644
--- a/android/guava-tests/test/com/google/common/primitives/BytesTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/BytesTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import java.util.Arrays;
@@ -31,7 +29,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class BytesTest extends TestCase {
   private static final byte[] EMPTY = {};
   private static final byte[] ARRAY1 = {(byte) 1};
@@ -268,7 +265,7 @@ public class BytesTest extends TestCase {
     testReverse(new byte[] {-1, 1, -2, 2}, 1, 3, new byte[] {-1, -2, 1, 2});
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Bytes.class);
   }
diff --git a/android/guava-tests/test/com/google/common/primitives/CharArrayAsListTest.java b/android/guava-tests/test/com/google/common/primitives/CharArrayAsListTest.java
index fa2a53d..dfb7023 100644
--- a/android/guava-tests/test/com/google/common/primitives/CharArrayAsListTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/CharArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class CharArrayAsListTest extends TestCase {
 
   private static List<Character> asList(Character[] values) {
@@ -48,7 +44,7 @@ public class CharArrayAsListTest extends TestCase {
     return Chars.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Character>> builders =
         ImmutableList.of(
diff --git a/android/guava-tests/test/com/google/common/primitives/CharsTest.java b/android/guava-tests/test/com/google/common/primitives/CharsTest.java
index f1da7fd..f837e82 100644
--- a/android/guava-tests/test/com/google/common/primitives/CharsTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/CharsTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -34,7 +32,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class CharsTest extends TestCase {
   private static final char[] EMPTY = {};
@@ -215,13 +212,13 @@ public class CharsTest extends TestCase {
             new char[] {(char) 1, (char) 2, (char) 3, (char) 4}, Chars.concat(ARRAY1, ARRAY234)));
   }
 
-  @GwtIncompatible // Chars.fromByteArray
+  // Chars.fromByteArray
   public void testFromByteArray() {
     assertEquals('\u2345', Chars.fromByteArray(new byte[] {0x23, 0x45, (byte) 0xDC}));
     assertEquals('\uFEDC', Chars.fromByteArray(new byte[] {(byte) 0xFE, (byte) 0xDC}));
   }
 
-  @GwtIncompatible // Chars.fromByteArray
+  // Chars.fromByteArray
   public void testFromByteArrayFails() {
     try {
       Chars.fromByteArray(new byte[Chars.BYTES - 1]);
@@ -230,13 +227,13 @@ public class CharsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Chars.fromBytes
+  // Chars.fromBytes
   public void testFromBytes() {
     assertEquals('\u2345', Chars.fromBytes((byte) 0x23, (byte) 0x45));
     assertEquals('\uFEDC', Chars.fromBytes((byte) 0xFE, (byte) 0xDC));
   }
 
-  @GwtIncompatible // Chars.fromByteArray, Chars.toByteArray
+  // Chars.fromByteArray, Chars.toByteArray
   public void testByteArrayRoundTrips() {
     char c = 0;
     for (int hi = 0; hi < 256; hi++) {
@@ -258,7 +255,7 @@ public class CharsTest extends TestCase {
     assertEquals((char) 0, c); // sanity check
   }
 
-  @GwtIncompatible // Chars.fromByteArray, Chars.toByteArray
+  // Chars.fromByteArray, Chars.toByteArray
   public void testByteArrayRoundTripsFails() {
     try {
       Chars.fromByteArray(new byte[] {0x11});
@@ -314,7 +311,7 @@ public class CharsTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<char[]> comparator = Chars.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -452,7 +449,7 @@ public class CharsTest extends TestCase {
     assertSame(Collections.emptyList(), Chars.asList(EMPTY));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Chars.class);
   }
diff --git a/android/guava-tests/test/com/google/common/primitives/DoubleArrayAsListTest.java b/android/guava-tests/test/com/google/common/primitives/DoubleArrayAsListTest.java
index 23a7ca1..2ee77c4 100644
--- a/android/guava-tests/test/com/google/common/primitives/DoubleArrayAsListTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/DoubleArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class DoubleArrayAsListTest extends TestCase {
 
   private static List<Double> asList(Double[] values) {
@@ -48,7 +44,7 @@ public class DoubleArrayAsListTest extends TestCase {
     return Doubles.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Double>> builders =
         ImmutableList.of(
diff --git a/android/guava-tests/test/com/google/common/primitives/DoublesTest.java b/android/guava-tests/test/com/google/common/primitives/DoublesTest.java
index 871b84c..1cb0a40 100644
--- a/android/guava-tests/test/com/google/common/primitives/DoublesTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/DoublesTest.java
@@ -19,10 +19,7 @@ package com.google.common.primitives;
 import static com.google.common.truth.Truth.assertThat;
 import static java.lang.Double.NaN;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -39,7 +36,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class DoublesTest extends TestCase {
   private static final double[] EMPTY = {};
@@ -194,7 +190,6 @@ public class DoublesTest extends TestCase {
     assertEquals(-1, Doubles.lastIndexOf(new double[] {NaN, 5.0}, NaN));
   }
 
-  @GwtIncompatible
   public void testMax_noArgs() {
     try {
       Doubles.max();
@@ -217,7 +212,6 @@ public class DoublesTest extends TestCase {
     assertTrue(Double.isNaN(Doubles.max(VALUES)));
   }
 
-  @GwtIncompatible
   public void testMin_noArgs() {
     try {
       Doubles.min();
@@ -300,7 +294,7 @@ public class DoublesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Double.toString returns different value in GWT.
+  // Double.toString returns different value in GWT.
   public void testJoin() {
     assertEquals("", Doubles.join(",", EMPTY));
     assertEquals("1.0", Doubles.join(",", ARRAY1));
@@ -403,13 +397,13 @@ public class DoublesTest extends TestCase {
         new double[] {-1, 1, Double.NaN, -2, 2}, 1, 4, new double[] {-1, Double.NaN, 1, -2, 2});
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<double[]> comparator = Doubles.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testStringConverterSerialization() {
     SerializableTester.reserializeAndAssert(Doubles.stringConverter());
   }
@@ -521,7 +515,7 @@ public class DoublesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   private static void checkTryParse(String input) {
     Double expected = referenceTryParse(input);
     assertEquals(expected, Doubles.tryParse(input));
@@ -539,7 +533,7 @@ public class DoublesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   private static void checkTryParse(double expected, String input) {
     assertEquals(Double.valueOf(expected), Doubles.tryParse(input));
     assertThat(input)
@@ -548,7 +542,7 @@ public class DoublesTest extends TestCase {
                 Doubles.FLOATING_POINT_PATTERN.pattern(), Doubles.FLOATING_POINT_PATTERN.flags()));
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseHex() {
     for (String signChar : ImmutableList.of("", "+", "-")) {
       for (String hexPrefix : ImmutableList.of("0x", "0X")) {
@@ -569,7 +563,7 @@ public class DoublesTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseAllCodePoints() {
     // Exercise non-ASCII digit test cases and the like.
     char[] tmp = new char[2];
@@ -579,28 +573,28 @@ public class DoublesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseOfToStringIsOriginal() {
     for (double d : NUMBERS) {
       checkTryParse(d, Double.toString(d));
     }
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseOfToHexStringIsOriginal() {
     for (double d : NUMBERS) {
       checkTryParse(d, Double.toHexString(d));
     }
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseNaN() {
     checkTryParse("NaN");
     checkTryParse("+NaN");
     checkTryParse("-NaN");
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseInfinity() {
     checkTryParse(Double.POSITIVE_INFINITY, "Infinity");
     checkTryParse(Double.POSITIVE_INFINITY, "+Infinity");
@@ -624,7 +618,7 @@ public class DoublesTest extends TestCase {
     "InfinityF"
   };
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseFailures() {
     for (String badInput : BAD_TRY_PARSE_INPUTS) {
       assertThat(badInput)
@@ -637,7 +631,7 @@ public class DoublesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Doubles.class);
   }
@@ -667,7 +661,7 @@ public class DoublesTest extends TestCase {
     assertNull(Doubles.stringConverter().reverse().convert(null));
   }
 
-  @GwtIncompatible // Double.toString returns different value in GWT.
+  // Double.toString returns different value in GWT.
   public void testStringConverter_reverse() {
     Converter<String, Double> converter = Doubles.stringConverter();
     assertEquals("1.0", converter.reverse().convert(1.0));
@@ -677,13 +671,12 @@ public class DoublesTest extends TestCase {
     assertEquals("1.0E-6", converter.reverse().convert(1e-6));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(Doubles.stringConverter());
   }
 
-  @GwtIncompatible
   public void testTryParse_withNullNoGwt() {
     assertNull(Doubles.tryParse("null"));
     try {
diff --git a/android/guava-tests/test/com/google/common/primitives/FloatArrayAsListTest.java b/android/guava-tests/test/com/google/common/primitives/FloatArrayAsListTest.java
index 233a021..bb1b920 100644
--- a/android/guava-tests/test/com/google/common/primitives/FloatArrayAsListTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/FloatArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class FloatArrayAsListTest extends TestCase {
 
   private static List<Float> asList(Float[] values) {
@@ -48,7 +44,7 @@ public class FloatArrayAsListTest extends TestCase {
     return Floats.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Float>> builders =
         ImmutableList.of(
diff --git a/android/guava-tests/test/com/google/common/primitives/FloatsTest.java b/android/guava-tests/test/com/google/common/primitives/FloatsTest.java
index fd59ad4..4316db9 100644
--- a/android/guava-tests/test/com/google/common/primitives/FloatsTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/FloatsTest.java
@@ -19,10 +19,7 @@ package com.google.common.primitives;
 import static com.google.common.truth.Truth.assertThat;
 import static java.lang.Float.NaN;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -38,7 +35,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class FloatsTest extends TestCase {
   private static final float[] EMPTY = {};
@@ -186,7 +182,6 @@ public class FloatsTest extends TestCase {
     assertEquals(-1, Floats.lastIndexOf(new float[] {NaN, 5f}, NaN));
   }
 
-  @GwtIncompatible
   public void testMax_noArgs() {
     try {
       Floats.max();
@@ -208,7 +203,6 @@ public class FloatsTest extends TestCase {
     assertTrue(Float.isNaN(Floats.max(VALUES)));
   }
 
-  @GwtIncompatible
   public void testMin_noArgs() {
     try {
       Floats.min();
@@ -283,7 +277,7 @@ public class FloatsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Float.toString returns different value in GWT.
+  // Float.toString returns different value in GWT.
   public void testJoin() {
     assertEquals("", Floats.join(",", EMPTY));
     assertEquals("1.0", Floats.join(",", ARRAY1));
@@ -308,7 +302,7 @@ public class FloatsTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<float[]> comparator = Floats.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -384,7 +378,7 @@ public class FloatsTest extends TestCase {
         new float[] {-1, 1, Float.NaN, -2, 2}, 1, 4, new float[] {-1, Float.NaN, 1, -2, 2});
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testStringConverterSerialization() {
     SerializableTester.reserializeAndAssert(Floats.stringConverter());
   }
@@ -496,17 +490,17 @@ public class FloatsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   private static void checkTryParse(String input) {
     assertEquals(referenceTryParse(input), Floats.tryParse(input));
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   private static void checkTryParse(float expected, String input) {
     assertEquals(Float.valueOf(expected), Floats.tryParse(input));
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseHex() {
     for (String signChar : ImmutableList.of("", "+", "-")) {
       for (String hexPrefix : ImmutableList.of("0x", "0X")) {
@@ -527,7 +521,7 @@ public class FloatsTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseAllCodePoints() {
     // Exercise non-ASCII digit test cases and the like.
     char[] tmp = new char[2];
@@ -537,28 +531,28 @@ public class FloatsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseOfToStringIsOriginal() {
     for (float f : NUMBERS) {
       checkTryParse(f, Float.toString(f));
     }
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseOfToHexStringIsOriginal() {
     for (float f : NUMBERS) {
       checkTryParse(f, Float.toHexString(f));
     }
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseNaN() {
     checkTryParse("NaN");
     checkTryParse("+NaN");
     checkTryParse("-NaN");
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseInfinity() {
     checkTryParse(Float.POSITIVE_INFINITY, "Infinity");
     checkTryParse(Float.POSITIVE_INFINITY, "+Infinity");
@@ -582,7 +576,7 @@ public class FloatsTest extends TestCase {
     "InfinityF"
   };
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseFailures() {
     for (String badInput : BAD_TRY_PARSE_INPUTS) {
       assertEquals(referenceTryParse(badInput), Floats.tryParse(badInput));
@@ -590,12 +584,12 @@ public class FloatsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Floats.class);
   }
 
-  @GwtIncompatible // Float.toString returns different value in GWT.
+  // Float.toString returns different value in GWT.
   public void testStringConverter_convert() {
     Converter<String, Float> converter = Floats.stringConverter();
     assertEquals((Float) 1.0f, converter.convert("1.0"));
@@ -621,7 +615,7 @@ public class FloatsTest extends TestCase {
     assertNull(Floats.stringConverter().reverse().convert(null));
   }
 
-  @GwtIncompatible // Float.toString returns different value in GWT.
+  // Float.toString returns different value in GWT.
   public void testStringConverter_reverse() {
     Converter<String, Float> converter = Floats.stringConverter();
     assertEquals("1.0", converter.reverse().convert(1.0f));
@@ -631,13 +625,12 @@ public class FloatsTest extends TestCase {
     assertEquals("1.0E-6", converter.reverse().convert(1e-6f));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(Floats.stringConverter());
   }
 
-  @GwtIncompatible
   public void testTryParse_withNullNoGwt() {
     assertNull(Floats.tryParse("null"));
     try {
diff --git a/android/guava-tests/test/com/google/common/primitives/ImmutableDoubleArrayTest.java b/android/guava-tests/test/com/google/common/primitives/ImmutableDoubleArrayTest.java
index 4d98836..12d8b24 100644
--- a/android/guava-tests/test/com/google/common/primitives/ImmutableDoubleArrayTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/ImmutableDoubleArrayTest.java
@@ -18,9 +18,6 @@ import static com.google.common.primitives.TestPlatform.reduceIterationsIfGwt;
 import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ObjectArrays;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
@@ -41,7 +38,6 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 /** @author Kevin Bourrillion */
-@GwtCompatible(emulated = true)
 public class ImmutableDoubleArrayTest extends TestCase {
   // Test all creation paths very lazily: by assuming asList() works
 
@@ -399,7 +395,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     assertActuallyTrims(underSized);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     assertThat(reserialize(ImmutableDoubleArray.of())).isSameInstanceAs(ImmutableDoubleArray.of());
     assertThat(reserialize(ImmutableDoubleArray.of(0, 1).subArray(1, 1)))
@@ -423,7 +419,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     assertThat(iia.trimmed()).isSameInstanceAs(iia);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Double>> builders =
         ImmutableList.of(
@@ -454,7 +450,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static ImmutableDoubleArray makeArray(Double[] values) {
     return ImmutableDoubleArray.copyOf(Arrays.asList(values));
   }
@@ -462,7 +458,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
   // Test generators.  To let the GWT test suite generator access them, they need to be public named
   // classes with a public default constructor (not that we run these suites under GWT yet).
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableDoubleArrayAsListGenerator extends TestDoubleListGenerator {
     @Override
     protected List<Double> create(Double[] elements) {
@@ -470,7 +466,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableDoubleArrayHeadSubListAsListGenerator
       extends TestDoubleListGenerator {
     @Override
@@ -481,7 +477,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableDoubleArrayTailSubListAsListGenerator
       extends TestDoubleListGenerator {
     @Override
@@ -492,7 +488,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableDoubleArrayMiddleSubListAsListGenerator
       extends TestDoubleListGenerator {
     @Override
@@ -504,12 +500,12 @@ public class ImmutableDoubleArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static Double[] concat(Double[] a, Double[] b) {
     return ObjectArrays.concat(a, b, Double.class);
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public abstract static class TestDoubleListGenerator implements TestListGenerator<Double> {
     @Override
     public SampleElements<Double> samples() {
@@ -544,7 +540,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static class SampleDoubles extends SampleElements<Double> {
     public SampleDoubles() {
       super(-0.0, Long.MAX_VALUE * 3.0, Double.MAX_VALUE, Double.POSITIVE_INFINITY, Double.NaN);
diff --git a/android/guava-tests/test/com/google/common/primitives/ImmutableIntArrayTest.java b/android/guava-tests/test/com/google/common/primitives/ImmutableIntArrayTest.java
index 86274d4..10623a3 100644
--- a/android/guava-tests/test/com/google/common/primitives/ImmutableIntArrayTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/ImmutableIntArrayTest.java
@@ -18,9 +18,6 @@ import static com.google.common.primitives.TestPlatform.reduceIterationsIfGwt;
 import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ObjectArrays;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
@@ -41,7 +38,6 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 /** @author Kevin Bourrillion */
-@GwtCompatible(emulated = true)
 public class ImmutableIntArrayTest extends TestCase {
   // Test all creation paths very lazily: by assuming asList() works
 
@@ -386,7 +382,7 @@ public class ImmutableIntArrayTest extends TestCase {
     assertActuallyTrims(underSized);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     assertThat(reserialize(ImmutableIntArray.of())).isSameInstanceAs(ImmutableIntArray.of());
     assertThat(reserialize(ImmutableIntArray.of(0, 1).subArray(1, 1)))
@@ -410,7 +406,7 @@ public class ImmutableIntArrayTest extends TestCase {
     assertThat(iia.trimmed()).isSameInstanceAs(iia);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Integer>> builders =
         ImmutableList.of(
@@ -441,7 +437,7 @@ public class ImmutableIntArrayTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static ImmutableIntArray makeArray(Integer[] values) {
     return ImmutableIntArray.copyOf(Arrays.asList(values));
   }
@@ -449,7 +445,7 @@ public class ImmutableIntArrayTest extends TestCase {
   // Test generators.  To let the GWT test suite generator access them, they need to be public named
   // classes with a public default constructor (not that we run these suites under GWT yet).
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableIntArrayAsListGenerator extends TestIntegerListGenerator {
     @Override
     protected List<Integer> create(Integer[] elements) {
@@ -457,7 +453,7 @@ public class ImmutableIntArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableIntArrayHeadSubListAsListGenerator
       extends TestIntegerListGenerator {
     @Override
@@ -468,7 +464,7 @@ public class ImmutableIntArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableIntArrayTailSubListAsListGenerator
       extends TestIntegerListGenerator {
     @Override
@@ -479,7 +475,7 @@ public class ImmutableIntArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableIntArrayMiddleSubListAsListGenerator
       extends TestIntegerListGenerator {
     @Override
@@ -491,12 +487,12 @@ public class ImmutableIntArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static Integer[] concat(Integer[] a, Integer[] b) {
     return ObjectArrays.concat(a, b, Integer.class);
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public abstract static class TestIntegerListGenerator implements TestListGenerator<Integer> {
     @Override
     public SampleElements<Integer> samples() {
@@ -531,7 +527,7 @@ public class ImmutableIntArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static class SampleIntegers extends SampleElements<Integer> {
     public SampleIntegers() {
       super(1, 3, 6, 10, 15);
diff --git a/android/guava-tests/test/com/google/common/primitives/ImmutableLongArrayTest.java b/android/guava-tests/test/com/google/common/primitives/ImmutableLongArrayTest.java
index ff879ec..5c0be21 100644
--- a/android/guava-tests/test/com/google/common/primitives/ImmutableLongArrayTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/ImmutableLongArrayTest.java
@@ -18,9 +18,6 @@ import static com.google.common.primitives.TestPlatform.reduceIterationsIfGwt;
 import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ObjectArrays;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
@@ -41,7 +38,6 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 /** @author Kevin Bourrillion */
-@GwtCompatible(emulated = true)
 public class ImmutableLongArrayTest extends TestCase {
   // Test all creation paths very lazily: by assuming asList() works
 
@@ -388,7 +384,7 @@ public class ImmutableLongArrayTest extends TestCase {
     assertActuallyTrims(underSized);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     assertThat(reserialize(ImmutableLongArray.of())).isSameInstanceAs(ImmutableLongArray.of());
     assertThat(reserialize(ImmutableLongArray.of(0, 1).subArray(1, 1)))
@@ -412,7 +408,7 @@ public class ImmutableLongArrayTest extends TestCase {
     assertThat(iia.trimmed()).isSameInstanceAs(iia);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Long>> builders =
         ImmutableList.of(
@@ -443,7 +439,7 @@ public class ImmutableLongArrayTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static ImmutableLongArray makeArray(Long[] values) {
     return ImmutableLongArray.copyOf(Arrays.asList(values));
   }
@@ -451,7 +447,7 @@ public class ImmutableLongArrayTest extends TestCase {
   // Test generators.  To let the GWT test suite generator access them, they need to be public named
   // classes with a public default constructor (not that we run these suites under GWT yet).
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableLongArrayAsListGenerator extends TestLongListGenerator {
     @Override
     protected List<Long> create(Long[] elements) {
@@ -459,7 +455,7 @@ public class ImmutableLongArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableLongArrayHeadSubListAsListGenerator
       extends TestLongListGenerator {
     @Override
@@ -470,7 +466,7 @@ public class ImmutableLongArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableLongArrayTailSubListAsListGenerator
       extends TestLongListGenerator {
     @Override
@@ -481,7 +477,7 @@ public class ImmutableLongArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableLongArrayMiddleSubListAsListGenerator
       extends TestLongListGenerator {
     @Override
@@ -493,12 +489,12 @@ public class ImmutableLongArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static Long[] concat(Long[] a, Long[] b) {
     return ObjectArrays.concat(a, b, Long.class);
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public abstract static class TestLongListGenerator implements TestListGenerator<Long> {
     @Override
     public SampleElements<Long> samples() {
@@ -533,7 +529,7 @@ public class ImmutableLongArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static class SampleLongs extends SampleElements<Long> {
     public SampleLongs() {
       super(1L << 31, 1L << 33, 1L << 36, 1L << 40, 1L << 45);
diff --git a/android/guava-tests/test/com/google/common/primitives/IntArrayAsListTest.java b/android/guava-tests/test/com/google/common/primitives/IntArrayAsListTest.java
index e02d1aa..8eae19b 100644
--- a/android/guava-tests/test/com/google/common/primitives/IntArrayAsListTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/IntArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class IntArrayAsListTest extends TestCase {
 
@@ -49,7 +45,7 @@ public class IntArrayAsListTest extends TestCase {
     return Ints.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Integer>> builders =
         ImmutableList.of(
diff --git a/android/guava-tests/test/com/google/common/primitives/IntsTest.java b/android/guava-tests/test/com/google/common/primitives/IntsTest.java
index 7215422..5a2d18e 100644
--- a/android/guava-tests/test/com/google/common/primitives/IntsTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/IntsTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
@@ -35,7 +33,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class IntsTest extends TestCase {
   private static final int[] EMPTY = {};
@@ -155,7 +152,6 @@ public class IntsTest extends TestCase {
     assertEquals(3, Ints.lastIndexOf(new int[] {(int) 2, (int) 3, (int) 2, (int) 3}, (int) 3));
   }
 
-  @GwtIncompatible
   public void testMax_noArgs() {
     try {
       Ints.max();
@@ -170,7 +166,6 @@ public class IntsTest extends TestCase {
     assertEquals((int) 9, Ints.max((int) 8, (int) 6, (int) 7, (int) 5, (int) 3, (int) 0, (int) 9));
   }
 
-  @GwtIncompatible
   public void testMin_noArgs() {
     try {
       Ints.min();
@@ -300,7 +295,7 @@ public class IntsTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<int[]> comparator = Ints.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -365,7 +360,7 @@ public class IntsTest extends TestCase {
     testSortDescending(new int[] {-1, -2, 1, 2}, 1, 3, new int[] {-1, 1, -2, 2});
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testStringConverterSerialization() {
     SerializableTester.reserializeAndAssert(Ints.stringConverter());
   }
@@ -461,7 +456,7 @@ public class IntsTest extends TestCase {
     assertSame(Collections.emptyList(), Ints.asList(EMPTY));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Ints.class);
   }
@@ -502,7 +497,7 @@ public class IntsTest extends TestCase {
     assertEquals("438", converter.reverse().convert(0666));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(Ints.stringConverter());
diff --git a/android/guava-tests/test/com/google/common/primitives/LongArrayAsListTest.java b/android/guava-tests/test/com/google/common/primitives/LongArrayAsListTest.java
index 1c51e7e..98a9b41 100644
--- a/android/guava-tests/test/com/google/common/primitives/LongArrayAsListTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/LongArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class LongArrayAsListTest extends TestCase {
 
   private static List<Long> asList(Long[] values) {
@@ -48,7 +44,7 @@ public class LongArrayAsListTest extends TestCase {
     return Longs.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Long>> builders =
         ImmutableList.of(
diff --git a/android/guava-tests/test/com/google/common/primitives/LongsTest.java b/android/guava-tests/test/com/google/common/primitives/LongsTest.java
index 236d461..ec31882 100644
--- a/android/guava-tests/test/com/google/common/primitives/LongsTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/LongsTest.java
@@ -19,8 +19,6 @@ package com.google.common.primitives;
 import static java.lang.Long.MAX_VALUE;
 import static java.lang.Long.MIN_VALUE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
@@ -39,7 +37,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class LongsTest extends TestCase {
   private static final long[] EMPTY = {};
@@ -48,7 +45,7 @@ public class LongsTest extends TestCase {
 
   private static final long[] VALUES = {MIN_VALUE, (long) -1, (long) 0, (long) 1, MAX_VALUE};
 
-  @GwtIncompatible // Long.hashCode returns different values in GWT.
+  // Long.hashCode returns different values in GWT.
   public void testHashCode() {
     for (long value : VALUES) {
       assertEquals("hashCode for " + value, ((Long) value).hashCode(), Longs.hashCode(value));
@@ -312,7 +309,7 @@ public class LongsTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<long[]> comparator = Longs.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -377,7 +374,7 @@ public class LongsTest extends TestCase {
     testSortDescending(new long[] {-1, -2, 1, 2}, 1, 3, new long[] {-1, 1, -2, 2});
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testStringConverterSerialization() {
     SerializableTester.reserializeAndAssert(Longs.stringConverter());
   }
@@ -473,7 +470,7 @@ public class LongsTest extends TestCase {
     assertSame(Collections.emptyList(), Longs.asList(EMPTY));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Longs.class);
   }
@@ -514,7 +511,7 @@ public class LongsTest extends TestCase {
     assertEquals("438", converter.reverse().convert(0666L));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(Longs.stringConverter());
diff --git a/android/guava-tests/test/com/google/common/primitives/PrimitivesTest.java b/android/guava-tests/test/com/google/common/primitives/PrimitivesTest.java
index 1e09743..d602cd2 100644
--- a/android/guava-tests/test/com/google/common/primitives/PrimitivesTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/PrimitivesTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.NullPointerTester;
 import java.util.Set;
 import junit.framework.TestCase;
diff --git a/android/guava-tests/test/com/google/common/primitives/ShortArrayAsListTest.java b/android/guava-tests/test/com/google/common/primitives/ShortArrayAsListTest.java
index 9a1fada..3808e05 100644
--- a/android/guava-tests/test/com/google/common/primitives/ShortArrayAsListTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/ShortArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class ShortArrayAsListTest extends TestCase {
 
   private static List<Short> asList(Short[] values) {
@@ -48,7 +44,7 @@ public class ShortArrayAsListTest extends TestCase {
     return Shorts.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Short>> builders =
         ImmutableList.of(
diff --git a/android/guava-tests/test/com/google/common/primitives/ShortsTest.java b/android/guava-tests/test/com/google/common/primitives/ShortsTest.java
index 0816c69..d1590c2 100644
--- a/android/guava-tests/test/com/google/common/primitives/ShortsTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/ShortsTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
@@ -35,7 +33,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class ShortsTest extends TestCase {
   private static final short[] EMPTY = {};
@@ -175,7 +172,6 @@ public class ShortsTest extends TestCase {
         3, Shorts.lastIndexOf(new short[] {(short) 2, (short) 3, (short) 2, (short) 3}, (short) 3));
   }
 
-  @GwtIncompatible
   public void testMax_noArgs() {
     try {
       Shorts.max();
@@ -192,7 +188,6 @@ public class ShortsTest extends TestCase {
         Shorts.max((short) 8, (short) 6, (short) 7, (short) 5, (short) 3, (short) 0, (short) 9));
   }
 
-  @GwtIncompatible
   public void testMin_noArgs() {
     try {
       Shorts.min();
@@ -238,20 +233,20 @@ public class ShortsTest extends TestCase {
             Shorts.concat(ARRAY1, ARRAY234)));
   }
 
-  @GwtIncompatible // Shorts.toByteArray
+  // Shorts.toByteArray
   public void testToByteArray() {
     assertTrue(Arrays.equals(new byte[] {0x23, 0x45}, Shorts.toByteArray((short) 0x2345)));
     assertTrue(
         Arrays.equals(new byte[] {(byte) 0xFE, (byte) 0xDC}, Shorts.toByteArray((short) 0xFEDC)));
   }
 
-  @GwtIncompatible // Shorts.fromByteArray
+  // Shorts.fromByteArray
   public void testFromByteArray() {
     assertEquals((short) 0x2345, Shorts.fromByteArray(new byte[] {0x23, 0x45}));
     assertEquals((short) 0xFEDC, Shorts.fromByteArray(new byte[] {(byte) 0xFE, (byte) 0xDC}));
   }
 
-  @GwtIncompatible // Shorts.fromByteArray
+  // Shorts.fromByteArray
   public void testFromByteArrayFails() {
     try {
       Shorts.fromByteArray(new byte[] {0x01});
@@ -260,13 +255,13 @@ public class ShortsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Shorts.fromBytes
+  // Shorts.fromBytes
   public void testFromBytes() {
     assertEquals((short) 0x2345, Shorts.fromBytes((byte) 0x23, (byte) 0x45));
     assertEquals((short) 0xFEDC, Shorts.fromBytes((byte) 0xFE, (byte) 0xDC));
   }
 
-  @GwtIncompatible // Shorts.fromByteArray, Shorts.toByteArray
+  // Shorts.fromByteArray, Shorts.toByteArray
   public void testByteArrayRoundTrips() {
     Random r = new Random(5);
     byte[] b = new byte[Shorts.BYTES];
@@ -328,7 +323,7 @@ public class ShortsTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<short[]> comparator = Shorts.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -394,7 +389,7 @@ public class ShortsTest extends TestCase {
     testSortDescending(new short[] {-1, -2, 1, 2}, 1, 3, new short[] {-1, 1, -2, 2});
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testStringConverterSerialization() {
     SerializableTester.reserializeAndAssert(Shorts.stringConverter());
   }
@@ -491,7 +486,7 @@ public class ShortsTest extends TestCase {
     assertSame(Collections.emptyList(), Shorts.asList(EMPTY));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Shorts.class);
   }
@@ -532,7 +527,7 @@ public class ShortsTest extends TestCase {
     assertEquals("438", converter.reverse().convert((short) 0666));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(Shorts.stringConverter());
diff --git a/android/guava-tests/test/com/google/common/primitives/SignedBytesTest.java b/android/guava-tests/test/com/google/common/primitives/SignedBytesTest.java
index 86c2ce6..a7351ac 100644
--- a/android/guava-tests/test/com/google/common/primitives/SignedBytesTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/SignedBytesTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -31,7 +29,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class SignedBytesTest extends TestCase {
   private static final byte[] EMPTY = {};
@@ -147,7 +144,7 @@ public class SignedBytesTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<byte[]> comparator = SignedBytes.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -183,7 +180,7 @@ public class SignedBytesTest extends TestCase {
     testSortDescending(new byte[] {-1, -2, 1, 2}, 1, 3, new byte[] {-1, 1, -2, 2});
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(SignedBytes.class);
   }
diff --git a/android/guava-tests/test/com/google/common/primitives/TestPlatform.java b/android/guava-tests/test/com/google/common/primitives/TestPlatform.java
index 094c9d7..e980bf0 100644
--- a/android/guava-tests/test/com/google/common/primitives/TestPlatform.java
+++ b/android/guava-tests/test/com/google/common/primitives/TestPlatform.java
@@ -16,9 +16,7 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
-@GwtCompatible(emulated = true)
 class TestPlatform {
   static int reduceIterationsIfGwt(int iterations) {
     return iterations;
diff --git a/android/guava-tests/test/com/google/common/primitives/UnsignedIntegerTest.java b/android/guava-tests/test/com/google/common/primitives/UnsignedIntegerTest.java
index 04bf27d..f9f344f 100644
--- a/android/guava-tests/test/com/google/common/primitives/UnsignedIntegerTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/UnsignedIntegerTest.java
@@ -14,9 +14,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -28,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class UnsignedIntegerTest extends TestCase {
   private static final ImmutableSet<Integer> TEST_INTS;
   private static final ImmutableSet<Long> TEST_LONGS;
@@ -106,7 +102,7 @@ public class UnsignedIntegerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testToStringRadix() {
     for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX; radix++) {
       for (int l : TEST_INTS) {
@@ -165,7 +161,7 @@ public class UnsignedIntegerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // multiply
+  // multiply
   public void testTimes() {
     for (int a : TEST_INTS) {
       for (int b : TEST_INTS) {
@@ -239,7 +235,7 @@ public class UnsignedIntegerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testEquals() {
     EqualsTester equalsTester = new EqualsTester();
     for (int a : TEST_INTS) {
@@ -261,14 +257,14 @@ public class UnsignedIntegerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   public void testSerialization() {
     for (int a : TEST_INTS) {
       SerializableTester.reserializeAndAssert(UnsignedInteger.fromIntBits(a));
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(UnsignedInteger.class);
   }
diff --git a/android/guava-tests/test/com/google/common/primitives/UnsignedIntsTest.java b/android/guava-tests/test/com/google/common/primitives/UnsignedIntsTest.java
index 0d0b380..9f8c750 100644
--- a/android/guava-tests/test/com/google/common/primitives/UnsignedIntsTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/UnsignedIntsTest.java
@@ -16,8 +16,6 @@ package com.google.common.primitives;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import java.util.Arrays;
@@ -31,7 +29,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class UnsignedIntsTest extends TestCase {
   private static final long[] UNSIGNED_INTS = {
     0L,
@@ -245,7 +242,7 @@ public class UnsignedIntsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Too slow in GWT (~3min fully optimized)
+  // Too slow in GWT (~3min fully optimized)
   public void testDivideRemainderEuclideanProperty() {
     // Use a seed so that the test is deterministic:
     Random r = new Random(0L);
@@ -383,7 +380,7 @@ public class UnsignedIntsTest extends TestCase {
     return UnsignedInts.join(",", values);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(UnsignedInts.class);
   }
diff --git a/android/guava-tests/test/com/google/common/primitives/UnsignedLongTest.java b/android/guava-tests/test/com/google/common/primitives/UnsignedLongTest.java
index cfa2862..0867f04 100644
--- a/android/guava-tests/test/com/google/common/primitives/UnsignedLongTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/UnsignedLongTest.java
@@ -14,9 +14,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -28,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class UnsignedLongTest extends TestCase {
   private static final ImmutableSet<Long> TEST_LONGS;
   private static final ImmutableSet<BigInteger> TEST_BIG_INTEGERS;
@@ -120,7 +116,7 @@ public class UnsignedLongTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testToStringRadix() {
     for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX; radix++) {
       for (long l : TEST_LONGS) {
@@ -263,7 +259,7 @@ public class UnsignedLongTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testEquals() {
     EqualsTester equalsTester = new EqualsTester();
     for (long a : TEST_LONGS) {
@@ -286,14 +282,14 @@ public class UnsignedLongTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   public void testSerialization() {
     for (long a : TEST_LONGS) {
       SerializableTester.reserializeAndAssert(UnsignedLong.fromLongBits(a));
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(UnsignedLong.class);
   }
diff --git a/android/guava-tests/test/com/google/common/primitives/UnsignedLongsTest.java b/android/guava-tests/test/com/google/common/primitives/UnsignedLongsTest.java
index a8b7995..e98c303 100644
--- a/android/guava-tests/test/com/google/common/primitives/UnsignedLongsTest.java
+++ b/android/guava-tests/test/com/google/common/primitives/UnsignedLongsTest.java
@@ -16,8 +16,6 @@ package com.google.common.primitives;
 
 import static java.math.BigInteger.ONE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import java.math.BigInteger;
@@ -33,7 +31,6 @@ import junit.framework.TestCase;
  * @author Brian Milch
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class UnsignedLongsTest extends TestCase {
   private static final long LEAST = 0L;
   private static final long GREATEST = 0xffffffffffffffffL;
@@ -193,7 +190,7 @@ public class UnsignedLongsTest extends TestCase {
     assertEquals(4, UnsignedLongs.remainder(0xfffffffffffffffeL, 5));
   }
 
-  @GwtIncompatible // Too slow in GWT (~3min fully optimized)
+  // Too slow in GWT (~3min fully optimized)
   public void testDivideRemainderEuclideanProperty() {
     // Use a seed so that the test is deterministic:
     Random r = new Random(0L);
@@ -353,7 +350,7 @@ public class UnsignedLongsTest extends TestCase {
         "184467440737095516159223372036854775808", UnsignedLongs.join("", -1, Long.MIN_VALUE));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(UnsignedLongs.class);
   }
diff --git a/android/guava-tests/test/com/google/common/reflect/AbstractInvocationHandlerTest.java b/android/guava-tests/test/com/google/common/reflect/AbstractInvocationHandlerTest.java
index 56b20bd..8cb71b4 100644
--- a/android/guava-tests/test/com/google/common/reflect/AbstractInvocationHandlerTest.java
+++ b/android/guava-tests/test/com/google/common/reflect/AbstractInvocationHandlerTest.java
@@ -18,7 +18,6 @@ package com.google.common.reflect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.SerializableTester;
 import java.io.Serializable;
diff --git a/android/guava-tests/test/com/google/common/reflect/AndroidIncompatible.java b/android/guava-tests/test/com/google/common/reflect/AndroidIncompatible.java
index 7dae25d..a6916f0 100644
--- a/android/guava-tests/test/com/google/common/reflect/AndroidIncompatible.java
+++ b/android/guava-tests/test/com/google/common/reflect/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-tests/test/com/google/common/reflect/ClassPathTest.java b/android/guava-tests/test/com/google/common/reflect/ClassPathTest.java
index d199d1f..5426f44 100644
--- a/android/guava-tests/test/com/google/common/reflect/ClassPathTest.java
+++ b/android/guava-tests/test/com/google/common/reflect/ClassPathTest.java
@@ -21,8 +21,6 @@ import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.io.Closer;
 import com.google.common.io.Files;
 import com.google.common.io.Resources;
diff --git a/android/guava-tests/test/com/google/common/reflect/ImmutableTypeToInstanceMapTest.java b/android/guava-tests/test/com/google/common/reflect/ImmutableTypeToInstanceMapTest.java
index 064c4b5..16113ab 100644
--- a/android/guava-tests/test/com/google/common/reflect/ImmutableTypeToInstanceMapTest.java
+++ b/android/guava-tests/test/com/google/common/reflect/ImmutableTypeToInstanceMapTest.java
@@ -19,7 +19,6 @@ package com.google.common.reflect;
 import static com.google.common.collect.Maps.immutableEntry;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.MapTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestMapGenerator;
diff --git a/android/guava-tests/test/com/google/common/reflect/InvokableTest.java b/android/guava-tests/test/com/google/common/reflect/InvokableTest.java
index f116ee2..8a352ba 100644
--- a/android/guava-tests/test/com/google/common/reflect/InvokableTest.java
+++ b/android/guava-tests/test/com/google/common/reflect/InvokableTest.java
@@ -18,8 +18,6 @@ package com.google.common.reflect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
@@ -33,7 +31,6 @@ import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.TypeVariable;
 import java.util.Collections;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Unit tests for {@link Invokable}.
diff --git a/android/guava-tests/test/com/google/common/reflect/MutableTypeToInstanceMapTest.java b/android/guava-tests/test/com/google/common/reflect/MutableTypeToInstanceMapTest.java
index cea81e3..8c632e9 100644
--- a/android/guava-tests/test/com/google/common/reflect/MutableTypeToInstanceMapTest.java
+++ b/android/guava-tests/test/com/google/common/reflect/MutableTypeToInstanceMapTest.java
@@ -19,13 +19,10 @@ package com.google.common.reflect;
 import static com.google.common.collect.Maps.immutableEntry;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.testing.MapTestSuiteBuilder;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
-import com.google.common.reflect.ImmutableTypeToInstanceMapTest.TestTypeToInstanceMapGenerator;
 import java.util.Map;
 import java.util.Map.Entry;
 import junit.framework.Test;
diff --git a/android/guava-tests/test/com/google/common/reflect/TypeTokenTest.java b/android/guava-tests/test/com/google/common/reflect/TypeTokenTest.java
index 171ef49..b45d8ff 100644
--- a/android/guava-tests/test/com/google/common/reflect/TypeTokenTest.java
+++ b/android/guava-tests/test/com/google/common/reflect/TypeTokenTest.java
@@ -19,16 +19,12 @@ package com.google.common.reflect;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.primitives.Primitives;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
 import com.google.common.truth.IterableSubject;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
@@ -1860,7 +1856,6 @@ public class TypeTokenTest extends TestCase {
     }
   }
 
-  @CanIgnoreReturnValue
   private static <T> T reserialize(T object) {
     T copy = SerializableTester.reserialize(object);
     new EqualsTester().addEqualityGroup(object, copy).testEquals();
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/AbstractAbstractFutureTest.java b/android/guava-tests/test/com/google/common/util/concurrent/AbstractAbstractFutureTest.java
index f49b962..f2d6125 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/AbstractAbstractFutureTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/AbstractAbstractFutureTest.java
@@ -27,8 +27,6 @@ import static com.google.common.util.concurrent.TestPlatform.verifyTimedGetOnPen
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.util.concurrent.AbstractFutureTest.TimedWaiterThread;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
@@ -39,7 +37,6 @@ import junit.framework.TestCase;
  * Base class for tests for emulated {@link AbstractFuture} that allow subclasses to swap in a
  * different "source Future" for {@link AbstractFuture#setFuture} calls.
  */
-@GwtCompatible(emulated = true)
 abstract class AbstractAbstractFutureTest extends TestCase {
   private TestedFuture<Integer> future;
   private AbstractFuture<Integer> delegate;
@@ -358,7 +355,7 @@ abstract class AbstractAbstractFutureTest extends TestCase {
     assertEquals(1, future.get(-1, SECONDS).intValue());
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testOverflowTimeout() throws Exception {
     // First, sanity check that naive multiplication would really overflow to a negative number:
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureBenchmarks.java b/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureBenchmarks.java
index bf70aac..cbbca9e 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureBenchmarks.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureBenchmarks.java
@@ -18,35 +18,29 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.locks.AbstractQueuedSynchronizer;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /** Utilities for the AbstractFutureBenchmarks */
 final class AbstractFutureBenchmarks {
   private AbstractFutureBenchmarks() {}
 
   interface Facade<T> extends ListenableFuture<T> {
-    @CanIgnoreReturnValue
     boolean set(T t);
 
-    @CanIgnoreReturnValue
     boolean setException(Throwable t);
   }
 
   private static class NewAbstractFutureFacade<T> extends AbstractFuture<T> implements Facade<T> {
-    @CanIgnoreReturnValue
     @Override
     public boolean set(T t) {
       return super.set(t);
     }
 
-    @CanIgnoreReturnValue
     @Override
     public boolean setException(Throwable t) {
       return super.setException(t);
@@ -55,13 +49,11 @@ final class AbstractFutureBenchmarks {
 
   private static class OldAbstractFutureFacade<T> extends OldAbstractFuture<T>
       implements Facade<T> {
-    @CanIgnoreReturnValue
     @Override
     public boolean set(T t) {
       return super.set(t);
     }
 
-    @CanIgnoreReturnValue
     @Override
     public boolean setException(Throwable t) {
       return super.setException(t);
@@ -127,7 +119,6 @@ final class AbstractFutureBenchmarks {
      *     (optional but recommended).
      * @throws CancellationException {@inheritDoc}
      */
-    @CanIgnoreReturnValue
     @Override
     public V get(long timeout, TimeUnit unit)
         throws InterruptedException, TimeoutException, ExecutionException {
@@ -149,7 +140,6 @@ final class AbstractFutureBenchmarks {
      *     (optional but recommended).
      * @throws CancellationException {@inheritDoc}
      */
-    @CanIgnoreReturnValue
     @Override
     public V get() throws InterruptedException, ExecutionException {
       return sync.get();
@@ -165,7 +155,6 @@ final class AbstractFutureBenchmarks {
       return sync.isCancelled();
     }
 
-    @CanIgnoreReturnValue
     @Override
     public boolean cancel(boolean mayInterruptIfRunning) {
       if (!sync.cancel(mayInterruptIfRunning)) {
@@ -217,7 +206,6 @@ final class AbstractFutureBenchmarks {
      * @param value the value that was the result of the task.
      * @return true if the state was successfully changed.
      */
-    @CanIgnoreReturnValue
     protected boolean set(@NullableDecl V value) {
       boolean result = sync.set(value);
       if (result) {
@@ -234,7 +222,6 @@ final class AbstractFutureBenchmarks {
      * @param throwable the exception that the task failed with.
      * @return true if the state was successfully changed.
      */
-    @CanIgnoreReturnValue
     protected boolean setException(Throwable throwable) {
       boolean result = sync.setException(checkNotNull(throwable));
       if (result) {
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureCancellationCauseTest.java b/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureCancellationCauseTest.java
index 6c921b5..d9121bf 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureCancellationCauseTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureCancellationCauseTest.java
@@ -26,7 +26,6 @@ import java.util.concurrent.CancellationException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
-import javax.annotation.concurrent.GuardedBy;
 import junit.framework.TestCase;
 
 /** Tests for {@link AbstractFuture} with the cancellation cause system property set */
@@ -49,7 +48,6 @@ public class AbstractFutureCancellationCauseTest extends TestCase {
     final String concurrentPackage = SettableFuture.class.getPackage().getName();
     classReloader =
         new URLClassLoader(ClassPathUtil.getClassPathUrls()) {
-          @GuardedBy("loadedClasses")
           final Map<String, Class<?>> loadedClasses = new HashMap<>();
 
           @Override
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureFallbackAtomicHelperTest.java b/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureFallbackAtomicHelperTest.java
index 208cf24..3f2bf91 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureFallbackAtomicHelperTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureFallbackAtomicHelperTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.collect.ImmutableSet;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureTest.java b/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureTest.java
index e55a31e..6108732 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/AbstractFutureTest.java
@@ -19,7 +19,6 @@ package com.google.common.util.concurrent;
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Range;
 import com.google.common.collect.Sets;
@@ -839,7 +838,6 @@ public class AbstractFutureTest extends TestCase {
 
   // Verify that StackOverflowError in a long chain of SetFuture doesn't cause the entire toString
   // call to fail
-  @GwtIncompatible
   @AndroidIncompatible
   public void testSetFutureToString_stackOverflow() {
     SettableFuture<String> orig = SettableFuture.create();
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/AbstractListeningExecutorServiceTest.java b/android/guava-tests/test/com/google/common/util/concurrent/AbstractListeningExecutorServiceTest.java
index 139581f..7571746 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/AbstractListeningExecutorServiceTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/AbstractListeningExecutorServiceTest.java
@@ -18,7 +18,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
 import java.util.List;
 import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/AbstractServiceTest.java b/android/guava-tests/test/com/google/common/util/concurrent/AbstractServiceTest.java
index e3c22a8..30f09c6 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/AbstractServiceTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/AbstractServiceTest.java
@@ -21,12 +21,10 @@ import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static java.lang.Thread.currentThread;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.Service.Listener;
 import com.google.common.util.concurrent.Service.State;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
@@ -831,7 +829,6 @@ public class AbstractServiceTest extends TestCase {
       this.service = service;
     }
 
-    @GuardedBy("this")
     final List<State> stateHistory = Lists.newArrayList();
 
     final CountDownLatch completionLatch = new CountDownLatch(1);
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/AggregateFutureStateFallbackAtomicHelperTest.java b/android/guava-tests/test/com/google/common/util/concurrent/AggregateFutureStateFallbackAtomicHelperTest.java
index fec9394..ec40dbb 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/AggregateFutureStateFallbackAtomicHelperTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/AggregateFutureStateFallbackAtomicHelperTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.collect.ImmutableSet;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/AndroidIncompatible.java b/android/guava-tests/test/com/google/common/util/concurrent/AndroidIncompatible.java
index b18a153..f0cfe2b 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/AndroidIncompatible.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapBasherTest.java b/android/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapBasherTest.java
index 4765825..b87b680 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapBasherTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapBasherTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Random;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -30,7 +29,7 @@ import junit.framework.TestCase;
  *
  * @author mike nonemacher
  */
-@GwtIncompatible // threads
+// threads
 
 public class AtomicLongMapBasherTest extends TestCase {
   private final Random random = new Random(301);
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapTest.java b/android/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapTest.java
index 587a4ec..926a309 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapTest.java
@@ -16,9 +16,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Sets;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -32,14 +29,13 @@ import junit.framework.TestCase;
  *
  * @author mike nonemacher
  */
-@GwtCompatible(emulated = true)
 public class AtomicLongMapTest extends TestCase {
   private static final int ITERATIONS = 100;
   private static final int MAX_ADDEND = 100;
 
   private final Random random = new Random(301);
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicConstructors(AtomicLongMap.class);
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/CallablesTest.java b/android/guava-tests/test/com/google/common/util/concurrent/CallablesTest.java
index 5bc92dc..861b664 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/CallablesTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/CallablesTest.java
@@ -18,8 +18,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Supplier;
 import com.google.common.base.Suppliers;
 import java.security.Permission;
@@ -32,7 +30,6 @@ import junit.framework.TestCase;
  *
  * @author Isaac Shum
  */
-@GwtCompatible(emulated = true)
 public class CallablesTest extends TestCase {
 
   public void testReturning() throws Exception {
@@ -45,7 +42,6 @@ public class CallablesTest extends TestCase {
     assertSame(value, callable.call());
   }
 
-  @GwtIncompatible
   public void testAsAsyncCallable() throws Exception {
     final String expected = "MyCallableString";
     Callable<String> callable =
@@ -63,7 +59,6 @@ public class CallablesTest extends TestCase {
     assertSame(expected, future.get());
   }
 
-  @GwtIncompatible
   public void testAsAsyncCallable_exception() throws Exception {
     final Exception expected = new IllegalArgumentException();
     Callable<String> callable =
@@ -86,7 +81,7 @@ public class CallablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
   public void testRenaming() throws Exception {
     String oldName = Thread.currentThread().getName();
     final Supplier<String> newName = Suppliers.ofInstance("MyCrazyThreadName");
@@ -102,7 +97,7 @@ public class CallablesTest extends TestCase {
     assertEquals(oldName, Thread.currentThread().getName());
   }
 
-  @GwtIncompatible // threads
+  // threads
   public void testRenaming_exceptionalReturn() throws Exception {
     String oldName = Thread.currentThread().getName();
     final Supplier<String> newName = Suppliers.ofInstance("MyCrazyThreadName");
@@ -123,7 +118,7 @@ public class CallablesTest extends TestCase {
     assertEquals(oldName, Thread.currentThread().getName());
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testRenaming_noPermissions() throws Exception {
     System.setSecurityManager(
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/ClassPathUtil.java b/android/guava-tests/test/com/google/common/util/concurrent/ClassPathUtil.java
index a36aa34..9642270 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/ClassPathUtil.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/ClassPathUtil.java
@@ -18,7 +18,6 @@ import static com.google.common.base.StandardSystemProperty.JAVA_CLASS_PATH;
 import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR;
 
 import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableList;
 import java.io.File;
 import java.net.MalformedURLException;
 import java.net.URL;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/ClosingFutureTest.java b/android/guava-tests/test/com/google/common/util/concurrent/ClosingFutureTest.java
index f5f12db..ba85262 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/ClosingFutureTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/ClosingFutureTest.java
@@ -34,7 +34,6 @@ import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.verify;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.reflect.Reflection;
 import com.google.common.truth.FailureStrategy;
 import com.google.common.truth.StandardSubjectBuilder;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/ExecutionSequencerTest.java b/android/guava-tests/test/com/google/common/util/concurrent/ExecutionSequencerTest.java
index 1c03f5a..6055c54 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/ExecutionSequencerTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/ExecutionSequencerTest.java
@@ -20,12 +20,9 @@ import static com.google.common.util.concurrent.Futures.getDone;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.testing.GcFinalization;
 import com.google.common.testing.TestLogHandler;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
-import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -149,8 +146,7 @@ public class ExecutionSequencerTest extends TestCase {
     assertThat(getDone(future2)).isFalse();
   }
 
-  @GwtIncompatible
-  @J2ObjCIncompatible // gc
+  // gc
   @AndroidIncompatible
   public void testCancellationWithReferencedObject() throws Exception {
     Object toBeGCed = new Object();
@@ -326,7 +322,7 @@ public class ExecutionSequencerTest extends TestCase {
   private static final int ITERATION_COUNT = 50_000;
   private static final int DIRECT_EXECUTIONS_PER_THREAD = 100;
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testAvoidsStackOverflow_multipleThreads() throws Exception {
     final LongHolder holder = new LongHolder();
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/FluentFutureTest.java b/android/guava-tests/test/com/google/common/util/concurrent/FluentFutureTest.java
index cc4751d..e7ff42b 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/FluentFutureTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/FluentFutureTest.java
@@ -24,8 +24,6 @@ import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static java.util.concurrent.Executors.newScheduledThreadPool;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture;
 import java.util.concurrent.ExecutionException;
@@ -37,7 +35,6 @@ import junit.framework.TestCase;
  * Tests for {@link FluentFuture}. The tests cover only the basics for the API. The actual logic is
  * tested in {@link FuturesTest}.
  */
-@GwtCompatible(emulated = true)
 public class FluentFutureTest extends TestCase {
   public void testFromFluentFuture() {
     FluentFuture<String> f = FluentFuture.from(SettableFuture.<String>create());
@@ -133,7 +130,7 @@ public class FluentFutureTest extends TestCase {
   }
 
 
-  @GwtIncompatible // withTimeout
+  // withTimeout
   public void testWithTimeout() throws Exception {
     ScheduledExecutorService executor = newScheduledThreadPool(1);
     try {
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/FutureCallbackTest.java b/android/guava-tests/test/com/google/common/util/concurrent/FutureCallbackTest.java
index 4febc5a..fa2fdd6 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/FutureCallbackTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/FutureCallbackTest.java
@@ -20,12 +20,9 @@ import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.util.concurrent.Futures.addCallback;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.Executor;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 import org.mockito.Mockito;
 
 /**
@@ -33,7 +30,6 @@ import org.mockito.Mockito;
  *
  * @author Anthony Zana
  */
-@GwtCompatible(emulated = true)
 public class FutureCallbackTest extends TestCase {
   public void testSameThreadSuccess() {
     SettableFuture<String> f = SettableFuture.create();
@@ -96,7 +92,7 @@ public class FutureCallbackTest extends TestCase {
     addCallback(f, callback, directExecutor());
   }
 
-  @GwtIncompatible // Mockito
+  // Mockito
   public void testOnSuccessThrowsRuntimeException() throws Exception {
     RuntimeException exception = new RuntimeException();
     String result = "result";
@@ -111,7 +107,7 @@ public class FutureCallbackTest extends TestCase {
     Mockito.verifyNoMoreInteractions(callback);
   }
 
-  @GwtIncompatible // Mockito
+  // Mockito
   public void testOnSuccessThrowsError() throws Exception {
     class TestError extends Error {}
     TestError error = new TestError();
@@ -157,8 +153,8 @@ public class FutureCallbackTest extends TestCase {
   }
 
   private final class MockCallback implements FutureCallback<String> {
-    @NullableDecl private String value = null;
-    @NullableDecl private Throwable failure = null;
+    private String value = null;
+    private Throwable failure = null;
     private boolean wasCalled = false;
 
     MockCallback(String expectedValue) {
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedInputs.java b/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedInputs.java
index 27916d8..a569330 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedInputs.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedInputs.java
@@ -16,13 +16,11 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.util.concurrent.Futures.immediateFailedFuture;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.Future;
 
 /**
  * Classes and futures used in {@link FuturesGetCheckedTest} and {@link FuturesGetUncheckedTest}.
  */
-@GwtCompatible
 final class FuturesGetCheckedInputs {
   static final Exception CHECKED_EXCEPTION = new Exception("mymessage");
   static final Future<String> FAILED_FUTURE_CHECKED_EXCEPTION =
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedTest.java b/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedTest.java
index 3bc69bd..e2f1ff7 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedTest.java
@@ -41,7 +41,6 @@ import com.google.common.util.concurrent.FuturesGetCheckedInputs.ExceptionWithWr
 import com.google.common.util.concurrent.FuturesGetCheckedInputs.ExceptionWithoutThrowableConstructor;
 import com.google.common.util.concurrent.FuturesGetCheckedInputs.TwoArgConstructorException;
 import com.google.common.util.concurrent.FuturesGetCheckedInputs.TwoArgConstructorRuntimeException;
-import java.lang.ref.WeakReference;
 import java.net.URLClassLoader;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.Future;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetDoneTest.java b/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetDoneTest.java
index cf9cb9d..8ab42a4 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetDoneTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetDoneTest.java
@@ -20,13 +20,11 @@ import static com.google.common.util.concurrent.Futures.immediateCancelledFuture
 import static com.google.common.util.concurrent.Futures.immediateFailedFuture;
 import static com.google.common.util.concurrent.Futures.immediateFuture;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import junit.framework.TestCase;
 
 /** Unit tests for {@link Futures#getDone}. */
-@GwtCompatible
 public class FuturesGetDoneTest extends TestCase {
   public void testSuccessful() throws ExecutionException {
     assertThat(getDone(immediateFuture("a"))).isEqualTo("a");
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetUncheckedTest.java b/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetUncheckedTest.java
index 93baaf6..ab31320 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetUncheckedTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/FuturesGetUncheckedTest.java
@@ -28,20 +28,17 @@ import static com.google.common.util.concurrent.FuturesGetCheckedInputs.RUNTIME_
 import static com.google.common.util.concurrent.FuturesGetCheckedInputs.RUNTIME_EXCEPTION_FUTURE;
 import static com.google.common.util.concurrent.FuturesGetCheckedInputs.UNCHECKED_EXCEPTION;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.Future;
 import junit.framework.TestCase;
 
 /** Unit tests for {@link Futures#getUnchecked(Future)}. */
-@GwtCompatible(emulated = true)
 public class FuturesGetUncheckedTest extends TestCase {
   public void testGetUnchecked_success() {
     assertEquals("foo", getUnchecked(immediateFuture("foo")));
   }
 
-  @GwtIncompatible // Thread.interrupt
+  // Thread.interrupt
   public void testGetUnchecked_interrupted() {
     Thread.currentThread().interrupt();
     try {
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/FuturesTest.java b/android/guava-tests/test/com/google/common/util/concurrent/FuturesTest.java
index fa3b14a..08dc841 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/FuturesTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/FuturesTest.java
@@ -55,21 +55,15 @@ import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
 import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.testing.ClassSanityTester;
 import com.google.common.testing.GcFinalization;
 import com.google.common.testing.TestLogHandler;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.lang.ref.WeakReference;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.Callable;
@@ -89,14 +83,12 @@ import java.util.logging.LogRecord;
 import java.util.logging.Logger;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Unit tests for {@link Futures}.
  *
  * @author Nishant Thakkar
  */
-@GwtCompatible(emulated = true)
 public class FuturesTest extends TestCase {
   private static final Logger aggregateFutureLogger =
       Logger.getLogger(AggregateFuture.class.getName());
@@ -193,7 +185,6 @@ public class FuturesTest extends TestCase {
     assertTrue(future.isCancelled());
   }
 
-  @GwtIncompatible
   public void testImmediateCancelledFutureStack() throws Exception {
     ListenableFuture<String> future = CallerClass1.makeImmediateCancelledFuture();
     assertTrue(future.isCancelled());
@@ -214,7 +205,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static Predicate<StackTraceElement> hasClassName(final Class<?> clazz) {
     return new Predicate<StackTraceElement>() {
       @Override
@@ -231,7 +222,6 @@ public class FuturesTest extends TestCase {
   }
 
   private static final class CallerClass2 {
-    @CanIgnoreReturnValue
     static <V> V get(ListenableFuture<V> future) throws ExecutionException, InterruptedException {
       return getDone(future);
     }
@@ -273,7 +263,7 @@ public class FuturesTest extends TestCase {
    * stack-overflow tests work. It must depend on the exact place the error occurs.
    */
   @AndroidIncompatible
-  @GwtIncompatible // StackOverflowError
+  // StackOverflowError
   public void testTransform_StackOverflow() throws Exception {
     {
       /*
@@ -409,7 +399,7 @@ public class FuturesTest extends TestCase {
     assertTrue(input.wasInterrupted());
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testTransformAsync_interruptPropagatesToTransformingThread() throws Exception {
     SettableFuture<String> input = SettableFuture.create();
@@ -504,7 +494,7 @@ public class FuturesTest extends TestCase {
    * stack-overflow tests work. It must depend on the exact place the error occurs.
    */
   @AndroidIncompatible
-  @GwtIncompatible // StackOverflowError
+  // StackOverflowError
   public void testTransformAsync_StackOverflow() throws Exception {
     {
       /*
@@ -695,7 +685,7 @@ public class FuturesTest extends TestCase {
    * Test that the function is invoked only once, even if it throws an exception. Also, test that
    * that function's result is wrapped in an ExecutionException.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public void testTransformExceptionRemainsMemoized() throws Throwable {
     // We need to test with two input futures since ExecutionList.execute
     // doesn't catch Errors and we cannot depend on the order that our
@@ -727,7 +717,7 @@ public class FuturesTest extends TestCase {
     runGetIdempotencyTest(errorComposedFuture, MyError.class);
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static void runGetIdempotencyTest(
       Future<Integer> transformedFuture, Class<? extends Throwable> expectedExceptionClass)
       throws Throwable {
@@ -743,7 +733,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static Function<Integer, Integer> newOneTimeExceptionThrower() {
     return new Function<Integer, Integer>() {
       int calls = 0;
@@ -758,7 +748,7 @@ public class FuturesTest extends TestCase {
     };
   }
 
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static Function<Integer, Integer> newOneTimeErrorThrower() {
     return new Function<Integer, Integer>() {
       int calls = 0;
@@ -802,7 +792,7 @@ public class FuturesTest extends TestCase {
     assertTrue(spy.wasExecuted);
   }
 
-  @GwtIncompatible // Threads
+  // Threads
 
   public void testTransformAsync_functionToString() throws Exception {
     final CountDownLatch functionCalled = new CountDownLatch(1);
@@ -831,7 +821,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // lazyTransform
+  // lazyTransform
   public void testLazyTransform() throws Exception {
     FunctionSpy<Object, String> spy = new FunctionSpy<>(constant("bar"));
     Future<String> input = immediateFuture("foo");
@@ -843,7 +833,7 @@ public class FuturesTest extends TestCase {
     spy.verifyCallCount(2);
   }
 
-  @GwtIncompatible // lazyTransform
+  // lazyTransform
   public void testLazyTransform_exception() throws Exception {
     final RuntimeException exception = new RuntimeException("deliberate");
     Function<Integer, String> function =
@@ -967,7 +957,7 @@ public class FuturesTest extends TestCase {
     fallback.verifyCallCount(1);
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatchingAsync_inputCancelledWithoutFallback() throws Exception {
     AsyncFunction<Throwable, Integer> fallback = unexpectedAsyncFunction();
     ListenableFuture<Integer> originalFuture = immediateCancelledFuture();
@@ -1078,7 +1068,7 @@ public class FuturesTest extends TestCase {
     assertFalse(primary.wasInterrupted());
   }
 
-  @GwtIncompatible // mocks
+  // mocks
   // TODO(cpovirk): eliminate use of mocks
   @SuppressWarnings("unchecked")
   public void testCatchingAsync_resultCancelledAfterFallback() throws Exception {
@@ -1131,7 +1121,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testCatchingAsync_interruptPropagatesToTransformingThread() throws Exception {
     SettableFuture<String> input = SettableFuture.create();
@@ -1171,7 +1161,7 @@ public class FuturesTest extends TestCase {
     // gotException.await();
   }
 
-  @GwtIncompatible // Threads
+  // Threads
 
   public void testCatchingAsync_functionToString() throws Exception {
     final CountDownLatch functionCalled = new CountDownLatch(1);
@@ -1250,7 +1240,7 @@ public class FuturesTest extends TestCase {
     fallback.verifyCallCount(1);
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatching_inputCancelledWithoutFallback() throws Exception {
     Function<IOException, Integer> fallback = unexpectedFunction();
     ListenableFuture<Integer> originalFuture = immediateCancelledFuture();
@@ -1352,7 +1342,7 @@ public class FuturesTest extends TestCase {
     assertEquals(1, (int) getDone(faultTolerantFuture));
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatching_customTypeMatch() throws Exception {
     Function<IOException, Integer> fallback = functionReturningOne();
     ListenableFuture<Integer> originalFuture = immediateFailedFuture(new FileNotFoundException());
@@ -1361,7 +1351,7 @@ public class FuturesTest extends TestCase {
     assertEquals(1, (int) getDone(faultTolerantFuture));
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatching_customTypeNoMatch() throws Exception {
     Function<IOException, Integer> fallback = functionReturningOne();
     ListenableFuture<Integer> originalFuture = immediateFailedFuture(new RuntimeException());
@@ -1375,7 +1365,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // StackOverflowError
+  // StackOverflowError
   public void testCatching_StackOverflow() throws Exception {
     {
       /*
@@ -1487,7 +1477,7 @@ public class FuturesTest extends TestCase {
     assertEquals(1, (int) getDone(faultTolerantFuture));
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatchingAsync_customTypeMatch() throws Exception {
     AsyncFunction<IOException, Integer> fallback = asyncFunctionReturningOne();
     ListenableFuture<Integer> originalFuture = immediateFailedFuture(new FileNotFoundException());
@@ -1496,7 +1486,7 @@ public class FuturesTest extends TestCase {
     assertEquals(1, (int) getDone(faultTolerantFuture));
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatchingAsync_customTypeNoMatch() throws Exception {
     AsyncFunction<IOException, Integer> fallback = asyncFunctionReturningOne();
     ListenableFuture<Integer> originalFuture = immediateFailedFuture(new RuntimeException());
@@ -1510,7 +1500,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // StackOverflowError
+  // StackOverflowError
   public void testCatchingAsync_StackOverflow() throws Exception {
     {
       /*
@@ -1697,7 +1687,7 @@ public class FuturesTest extends TestCase {
     assertSame(barChild, bar);
   }
 
-  @GwtIncompatible // get() timeout
+  // get() timeout
   public void testTransformAsync_asyncFunction_timeout()
       throws InterruptedException, ExecutionException {
     AsyncFunction<String, Integer> function = constantAsyncFunction(immediateFuture(1));
@@ -1748,7 +1738,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testTransformAsync_asyncFunction_cancelledWhileApplyingFunction()
       throws InterruptedException, ExecutionException {
@@ -1783,7 +1773,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testTransformAsync_asyncFunction_cancelledBeforeApplyingFunction()
       throws InterruptedException {
@@ -1857,7 +1847,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testSubmitAsync_asyncCallable_cancelledWhileApplyingFunction()
       throws InterruptedException, ExecutionException {
@@ -1891,7 +1881,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testSubmitAsync_asyncCallable_cancelledBeforeApplyingFunction()
       throws InterruptedException {
@@ -1925,7 +1915,7 @@ public class FuturesTest extends TestCase {
     assertFalse(callableCalled.get());
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testSubmitAsync_asyncCallable_returnsInterruptedFuture() throws InterruptedException {
     assertThat(Thread.interrupted()).isFalse();
@@ -2014,7 +2004,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testScheduleAsync_asyncCallable_error() throws InterruptedException {
     final Error error = new Error("deliberate");
@@ -2036,7 +2026,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testScheduleAsync_asyncCallable_nullInsteadOfFuture() throws Exception {
     ListenableFuture<?> chainedFuture =
@@ -2058,7 +2048,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testScheduleAsync_asyncCallable_cancelledWhileApplyingFunction()
       throws InterruptedException, ExecutionException {
@@ -2091,7 +2081,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testScheduleAsync_asyncCallable_cancelledBeforeCallingFunction()
       throws InterruptedException {
@@ -2546,7 +2536,7 @@ public class FuturesTest extends TestCase {
     return "-" + i + "-" + b;
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllComplete_noLeakInterruption() throws Exception {
     final SettableFuture<String> stringFuture = SettableFuture.create();
@@ -2590,7 +2580,7 @@ public class FuturesTest extends TestCase {
     unused = whenAllComplete(asList(futures)).call(combiner, directExecutor());
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllComplete_asyncResult() throws Exception {
     SettableFuture<Integer> futureInteger = SettableFuture.create();
@@ -2682,7 +2672,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllComplete_cancelledNotInterrupted() throws Exception {
     SettableFuture<String> stringFuture = SettableFuture.create();
@@ -2721,7 +2711,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllComplete_interrupted() throws Exception {
     SettableFuture<String> stringFuture = SettableFuture.create();
@@ -2814,7 +2804,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllCompleteRunnable_resultCanceledWithoutInterrupt_doesNotInterruptRunnable()
       throws Exception {
@@ -2855,7 +2845,7 @@ public class FuturesTest extends TestCase {
     combinerCompletedWithoutInterrupt.await();
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllCompleteRunnable_resultCanceledWithInterrupt_InterruptsRunnable()
       throws Exception {
@@ -2921,7 +2911,6 @@ public class FuturesTest extends TestCase {
   }
 
   @AndroidIncompatible
-  @GwtIncompatible
   public void testWhenAllSucceed_releasesInputFuturesUponSubmission() throws Exception {
     SettableFuture<Long> future1 = SettableFuture.create();
     SettableFuture<Long> future2 = SettableFuture.create();
@@ -2956,7 +2945,6 @@ public class FuturesTest extends TestCase {
   }
 
   @AndroidIncompatible
-  @GwtIncompatible
   public void testWhenAllComplete_releasesInputFuturesUponCancellation() throws Exception {
     SettableFuture<Long> future = SettableFuture.create();
     WeakReference<SettableFuture<Long>> futureRef = new WeakReference<>(future);
@@ -2979,7 +2967,6 @@ public class FuturesTest extends TestCase {
   }
 
   @AndroidIncompatible
-  @GwtIncompatible
   public void testWhenAllSucceed_releasesCallable() throws Exception {
     AsyncCallable<Long> combiner =
         new AsyncCallable<Long>() {
@@ -3008,7 +2995,7 @@ public class FuturesTest extends TestCase {
    * finisher}, a task that will complete the future in some fashion when it is called, allowing for
    * testing both before and after the completion of the future.
    */
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static final class TestFuture {
 
     final ListenableFuture<String> future;
@@ -3030,7 +3017,7 @@ public class FuturesTest extends TestCase {
    * <p>Each test requires a new {@link TestFutureBatch} because we need new delayed futures each
    * time, as the old delayed futures were completed as part of the old test.
    */
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static final class TestFutureBatch {
 
     final ListenableFuture<String> doneSuccess = immediateFuture("a");
@@ -3215,7 +3202,7 @@ public class FuturesTest extends TestCase {
    * {@link Futures#allAsList(Iterable)} or {@link Futures#successfulAsList(Iterable)}, hidden
    * behind a common interface for testing.
    */
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private interface Merger {
 
     ListenableFuture<List<String>> merged(ListenableFuture<String> a, ListenableFuture<String> b);
@@ -3245,8 +3232,7 @@ public class FuturesTest extends TestCase {
    * <p>We need this to test the behavior of no-arg get methods without hanging the main test thread
    * forever in the case of failure.
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // threads
+  // threads
   static <V> V pseudoTimedGetUninterruptibly(final Future<V> input, long timeout, TimeUnit unit)
       throws ExecutionException, TimeoutException {
     ExecutorService executor = newSingleThreadExecutor();
@@ -3277,7 +3263,7 @@ public class FuturesTest extends TestCase {
    * before future completion, and untimed after future completion) return or throw the proper
    * values.
    */
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static void runExtensiveMergerTest(Merger merger) throws InterruptedException {
     int inputCount = new TestFutureBatch().allFutures.size();
 
@@ -3356,7 +3342,7 @@ public class FuturesTest extends TestCase {
    * that is expected to succeed; the fact that the numbers match is only a coincidence.) See the
    * comment below for how to restore the fast but hang-y version.
    */
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static List<String> conditionalPseudoTimedGetUninterruptibly(
       TestFutureBatch inputs,
       ListenableFuture<String> iFuture,
@@ -3376,13 +3362,13 @@ public class FuturesTest extends TestCase {
   }
 
 
-  @GwtIncompatible // threads
+  // threads
   public void testAllAsList_extensive() throws InterruptedException {
     runExtensiveMergerTest(Merger.allMerger);
   }
 
 
-  @GwtIncompatible // threads
+  // threads
   public void testSuccessfulAsList_extensive() throws InterruptedException {
     runExtensiveMergerTest(Merger.successMerger);
   }
@@ -3697,7 +3683,7 @@ public class FuturesTest extends TestCase {
     assertFalse(input.isDone());
   }
 
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static class TestException extends Exception {
 
     TestException(@NullableDecl Throwable cause) {
@@ -3705,7 +3691,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private interface MapperFunction extends Function<Throwable, Exception> {}
 
   public void testCompletionOrder() throws Exception {
@@ -3854,7 +3840,6 @@ public class FuturesTest extends TestCase {
   }
 
   @AndroidIncompatible // reference is never cleared under some versions of the emulator
-  @GwtIncompatible
   public void testInputGCedIfUnreferenced() throws Exception {
     SettableFuture<Long> future1 = SettableFuture.create();
     SettableFuture<Long> future2 = SettableFuture.create();
@@ -3896,7 +3881,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // ClassSanityTester
+  // ClassSanityTester
   public void testFutures_nullChecks() throws Exception {
     new ClassSanityTester()
         .forAllPublicStaticMethods(Futures.class)
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/GeneratedMonitorTest.java b/android/guava-tests/test/com/google/common/util/concurrent/GeneratedMonitorTest.java
index 872197b..fd3ced3 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/GeneratedMonitorTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/GeneratedMonitorTest.java
@@ -19,9 +19,7 @@ package com.google.common.util.concurrent;
 import static com.google.common.util.concurrent.Uninterruptibles.awaitUninterruptibly;
 
 import com.google.common.base.CaseFormat;
-import com.google.common.collect.ImmutableList;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Arrays;
@@ -697,7 +695,6 @@ public class GeneratedMonitorTest extends TestCase {
     awaitUninterruptibly(enteredLatch);
   }
 
-  @CanIgnoreReturnValue
   static Thread startThread(Runnable runnable) {
     Thread thread = new Thread(runnable);
     thread.setDaemon(true);
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/ListenableFutureTester.java b/android/guava-tests/test/com/google/common/util/concurrent/ListenableFutureTester.java
index 2dcccdb..939764f 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/ListenableFutureTester.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/ListenableFutureTester.java
@@ -29,7 +29,6 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Used to test listenable future implementations.
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/ListenerCallQueueTest.java b/android/guava-tests/test/com/google/common/util/concurrent/ListenerCallQueueTest.java
index 5fd9b95..0f437c0 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/ListenerCallQueueTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/ListenerCallQueueTest.java
@@ -19,8 +19,6 @@ package com.google.common.util.concurrent;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 
 import com.google.common.collect.ConcurrentHashMultiset;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultiset;
 import com.google.common.collect.Multiset;
 import com.google.common.testing.TestLogHandler;
 import java.util.Map;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/MoreExecutorsTest.java b/android/guava-tests/test/com/google/common/util/concurrent/MoreExecutorsTest.java
index fe4e7f5..7db2a17 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/MoreExecutorsTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/MoreExecutorsTest.java
@@ -45,7 +45,6 @@ import static org.mockito.Mockito.when;
 
 import com.google.common.base.Suppliers;
 import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.testing.ClassSanityTester;
 import com.google.common.util.concurrent.MoreExecutors.Application;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/RateLimiterTest.java b/android/guava-tests/test/com/google/common/util/concurrent/RateLimiterTest.java
index 4071354..30d1508 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/RateLimiterTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/RateLimiterTest.java
@@ -22,8 +22,6 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.collect.ImmutableClassToInstanceMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.NullPointerTester.Visibility;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/RunnablesTest.java b/android/guava-tests/test/com/google/common/util/concurrent/RunnablesTest.java
index c4bd1c7..6b07a64 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/RunnablesTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/RunnablesTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -24,7 +23,6 @@ import junit.framework.TestCase;
  *
  * @author Olivier Pernet
  */
-@GwtCompatible
 public class RunnablesTest extends TestCase {
   public void testDoNothingRunnableIsSingleton() {
     assertSame(Runnables.doNothing(), Runnables.doNothing());
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/SequentialExecutorTest.java b/android/guava-tests/test/com/google/common/util/concurrent/SequentialExecutorTest.java
index 20209e8..a675197 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/SequentialExecutorTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/SequentialExecutorTest.java
@@ -20,7 +20,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.util.concurrent.MoreExecutors.newSequentialExecutor;
 import static com.google.common.util.concurrent.Uninterruptibles.awaitUninterruptibly;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Queues;
 import java.util.List;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/ServiceManagerTest.java b/android/guava-tests/test/com/google/common/util/concurrent/ServiceManagerTest.java
index 20ed3de..514f6dd 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/ServiceManagerTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/ServiceManagerTest.java
@@ -21,8 +21,6 @@ import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static java.util.Arrays.asList;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import com.google.common.testing.NullPointerTester;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/StripedTest.java b/android/guava-tests/test/com/google/common/util/concurrent/StripedTest.java
index fa9d87f..5295a1e 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/StripedTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/StripedTest.java
@@ -20,14 +20,12 @@ import static com.google.common.collect.Iterables.concat;
 
 import com.google.common.base.Functions;
 import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.Sets;
 import com.google.common.testing.GcFinalization;
 import com.google.common.testing.NullPointerTester;
-import java.lang.ref.WeakReference;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/TestPlatform.java b/android/guava-tests/test/com/google/common/util/concurrent/TestPlatform.java
index 5c87fe5..fd22af5 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/TestPlatform.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/TestPlatform.java
@@ -26,14 +26,12 @@ import static java.util.concurrent.TimeUnit.SECONDS;
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.fail;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeoutException;
 import junit.framework.AssertionFailedError;
 
 /** Methods factored out so that they can be emulated differently in GWT. */
-@GwtCompatible(emulated = true)
 final class TestPlatform {
   static void verifyGetOnPendingFuture(Future<?> future) {
     checkNotNull(future);
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/TestThread.java b/android/guava-tests/test/com/google/common/util/concurrent/TestThread.java
index 1c3c888..abcc6a1 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/TestThread.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/TestThread.java
@@ -29,7 +29,6 @@ import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import junit.framework.AssertionFailedError;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * A helper for concurrency testing. One or more {@code TestThread} instances are instantiated in a
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/TrustedInputFutureTest.java b/android/guava-tests/test/com/google/common/util/concurrent/TrustedInputFutureTest.java
index 1f2ecca..263208e 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/TrustedInputFutureTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/TrustedInputFutureTest.java
@@ -17,14 +17,12 @@
 package com.google.common.util.concurrent;
 
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.util.concurrent.AbstractFuture.TrustedFuture;
 
 /**
  * Tests for {@link AbstractFuture} that use a {@link TrustedFuture} for {@link
  * AbstractFuture#setFuture} calls.
  */
-@GwtCompatible
 public class TrustedInputFutureTest extends AbstractAbstractFutureTest {
   @Override
   AbstractFuture<Integer> newDelegate() {
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/TrustedListenableFutureTaskTest.java b/android/guava-tests/test/com/google/common/util/concurrent/TrustedListenableFutureTaskTest.java
index 157afa7..4b0d324 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/TrustedListenableFutureTaskTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/TrustedListenableFutureTaskTest.java
@@ -21,8 +21,6 @@ import static com.google.common.util.concurrent.Callables.returning;
 import static com.google.common.util.concurrent.Futures.getDone;
 import static com.google.common.util.concurrent.TestPlatform.verifyThreadWasNotInterrupted;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.CountDownLatch;
@@ -35,7 +33,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import junit.framework.TestCase;
 
 /** Test case for {@link TrustedListenableFutureTask}. */
-@GwtCompatible(emulated = true)
 public class TrustedListenableFutureTaskTest extends TestCase {
 
   public void testSuccessful() throws Exception {
@@ -83,7 +80,7 @@ public class TrustedListenableFutureTaskTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // blocking wait
+  // blocking wait
 
   public void testCancel_interrupted() throws Exception {
     final AtomicBoolean interruptedExceptionThrown = new AtomicBoolean();
@@ -134,7 +131,7 @@ public class TrustedListenableFutureTaskTest extends TestCase {
     assertTrue(interruptedExceptionThrown.get());
   }
 
-  @GwtIncompatible // blocking wait
+  // blocking wait
 
   public void testRunIdempotency() throws Exception {
     final int numThreads = 10;
@@ -170,7 +167,7 @@ public class TrustedListenableFutureTaskTest extends TestCase {
     executor.shutdown();
   }
 
-  @GwtIncompatible // blocking wait
+  // blocking wait
 
   public void testToString() throws Exception {
     final CountDownLatch enterLatch = new CountDownLatch(1);
@@ -208,7 +205,7 @@ public class TrustedListenableFutureTaskTest extends TestCase {
     exitLatch.await();
   }
 
-  @GwtIncompatible // used only in GwtIncomaptible tests
+  // used only in GwtIncomaptible tests
   private void awaitUnchecked(CyclicBarrier barrier) {
     try {
       barrier.await();
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/UncheckedThrowingFuture.java b/android/guava-tests/test/com/google/common/util/concurrent/UncheckedThrowingFuture.java
index 4057722..26092b8 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/UncheckedThrowingFuture.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/UncheckedThrowingFuture.java
@@ -18,7 +18,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
@@ -33,7 +32,6 @@ import java.util.concurrent.TimeoutException;
  *
  * @author Anthony Zana
  */
-@GwtCompatible
 final class UncheckedThrowingFuture<V> extends AbstractFuture<V> {
 
   public static <V> ListenableFuture<V> throwingError(Error error) {
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/UninterruptiblesTest.java b/android/guava-tests/test/com/google/common/util/concurrent/UninterruptiblesTest.java
index e58cf6a..74dae76 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/UninterruptiblesTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/UninterruptiblesTest.java
@@ -33,7 +33,6 @@ import com.google.common.base.Stopwatch;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.TearDown;
 import com.google.common.testing.TearDownStack;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Date;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.BlockingQueue;
@@ -832,7 +831,6 @@ public class UninterruptiblesTest extends TestCase {
     InterruptionUtil.requestInterruptIn(millis, MILLISECONDS);
   }
 
-  @CanIgnoreReturnValue
   private static Thread acquireFor(final Lock lock, final long duration, final TimeUnit unit) {
     final CountDownLatch latch = new CountDownLatch(1);
     Thread thread =
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/UntrustedInputFutureTest.java b/android/guava-tests/test/com/google/common/util/concurrent/UntrustedInputFutureTest.java
index a6241d2..b2c6efe 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/UntrustedInputFutureTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/UntrustedInputFutureTest.java
@@ -17,14 +17,12 @@
 package com.google.common.util.concurrent;
 
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.util.concurrent.AbstractFuture.TrustedFuture;
 
 /**
  * Tests for {@link AbstractFuture} that use a non-{@link TrustedFuture} for {@link
  * AbstractFuture#setFuture} calls.
  */
-@GwtCompatible
 public class UntrustedInputFutureTest extends AbstractAbstractFutureTest {
   @Override
   AbstractFuture<Integer> newDelegate() {
diff --git a/android/guava-tests/test/com/google/common/util/concurrent/WrappingExecutorServiceTest.java b/android/guava-tests/test/com/google/common/util/concurrent/WrappingExecutorServiceTest.java
index fdb2c54..c74eee0 100644
--- a/android/guava-tests/test/com/google/common/util/concurrent/WrappingExecutorServiceTest.java
+++ b/android/guava-tests/test/com/google/common/util/concurrent/WrappingExecutorServiceTest.java
@@ -22,7 +22,6 @@ import static com.google.common.util.concurrent.Runnables.doNothing;
 
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import java.util.Collection;
diff --git a/android/guava-tests/test/com/google/common/xml/XmlEscapersTest.java b/android/guava-tests/test/com/google/common/xml/XmlEscapersTest.java
index 00b5cf1..0b2dc17 100644
--- a/android/guava-tests/test/com/google/common/xml/XmlEscapersTest.java
+++ b/android/guava-tests/test/com/google/common/xml/XmlEscapersTest.java
@@ -19,7 +19,6 @@ package com.google.common.xml;
 import static com.google.common.escape.testing.EscaperAsserts.assertEscaping;
 import static com.google.common.escape.testing.EscaperAsserts.assertUnescaped;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.CharEscaper;
 import junit.framework.TestCase;
 
@@ -29,7 +28,6 @@ import junit.framework.TestCase;
  * @author Alex Matevossian
  * @author David Beaumont
  */
-@GwtCompatible
 public class XmlEscapersTest extends TestCase {
 
   public void testXmlContentEscaper() throws Exception {
diff --git a/android/guava/src/com/google/common/annotations/Beta.java b/android/guava/src/com/google/common/annotations/Beta.java
index f71dc94..f5ff07d 100644
--- a/android/guava/src/com/google/common/annotations/Beta.java
+++ b/android/guava/src/com/google/common/annotations/Beta.java
@@ -42,5 +42,4 @@ import java.lang.annotation.Target;
   ElementType.TYPE
 })
 @Documented
-@GwtCompatible
 public @interface Beta {}
diff --git a/android/guava/src/com/google/common/annotations/GwtCompatible.java b/android/guava/src/com/google/common/annotations/GwtCompatible.java
index 4bf6efb..00395c0 100644
--- a/android/guava/src/com/google/common/annotations/GwtCompatible.java
+++ b/android/guava/src/com/google/common/annotations/GwtCompatible.java
@@ -60,7 +60,6 @@ import java.lang.annotation.Target;
 @Retention(RetentionPolicy.CLASS)
 @Target({ElementType.TYPE, ElementType.METHOD})
 @Documented
-@GwtCompatible
 public @interface GwtCompatible {
 
   /**
diff --git a/android/guava/src/com/google/common/annotations/GwtIncompatible.java b/android/guava/src/com/google/common/annotations/GwtIncompatible.java
index 4b7e4a9..2cf9708 100644
--- a/android/guava/src/com/google/common/annotations/GwtIncompatible.java
+++ b/android/guava/src/com/google/common/annotations/GwtIncompatible.java
@@ -33,7 +33,6 @@ import java.lang.annotation.Target;
 @Retention(RetentionPolicy.CLASS)
 @Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD})
 @Documented
-@GwtCompatible
 public @interface GwtIncompatible {
   /**
    * Describes why the annotated element is incompatible with GWT. Since this is generally due to a
diff --git a/android/guava/src/com/google/common/annotations/VisibleForTesting.java b/android/guava/src/com/google/common/annotations/VisibleForTesting.java
index e767afc..a5104c6 100644
--- a/android/guava/src/com/google/common/annotations/VisibleForTesting.java
+++ b/android/guava/src/com/google/common/annotations/VisibleForTesting.java
@@ -27,6 +27,5 @@ package com.google.common.annotations;
  *
  * @author Johannes Henkel
  */
-@GwtCompatible
 public @interface VisibleForTesting {
 }
diff --git a/android/guava/src/com/google/common/base/Absent.java b/android/guava/src/com/google/common/base/Absent.java
index f96136b..6331d23 100644
--- a/android/guava/src/com/google/common/base/Absent.java
+++ b/android/guava/src/com/google/common/base/Absent.java
@@ -16,13 +16,11 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.Set;
 import javax.annotation.CheckForNull;
 
 /** Implementation of an {@link Optional} not containing a reference. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class Absent<T> extends Optional<T> {
   static final Absent<Object> INSTANCE = new Absent<>();
diff --git a/android/guava/src/com/google/common/base/AbstractIterator.java b/android/guava/src/com/google/common/base/AbstractIterator.java
index bb0a1d3..5f83329 100644
--- a/android/guava/src/com/google/common/base/AbstractIterator.java
+++ b/android/guava/src/com/google/common/base/AbstractIterator.java
@@ -14,23 +14,18 @@
 
 package com.google.common.base;
 
-import static com.google.common.base.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Note this class is a copy of {@link com.google.common.collect.AbstractIterator} (for dependency
  * reasons).
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractIterator<T extends @Nullable Object> implements Iterator<T> {
+abstract class AbstractIterator<T extends Object> implements Iterator<T> {
   private State state = State.NOT_READY;
 
   protected AbstractIterator() {}
@@ -47,7 +42,6 @@ abstract class AbstractIterator<T extends @Nullable Object> implements Iterator<
   @CheckForNull
   protected abstract T computeNext();
 
-  @CanIgnoreReturnValue
   @CheckForNull
   protected final T endOfData() {
     state = State.DONE;
diff --git a/android/guava/src/com/google/common/base/Ascii.java b/android/guava/src/com/google/common/base/Ascii.java
index 0c651bb..81f5156 100644
--- a/android/guava/src/com/google/common/base/Ascii.java
+++ b/android/guava/src/com/google/common/base/Ascii.java
@@ -17,7 +17,6 @@ package com.google.common.base;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Static methods pertaining to ASCII characters (those in the range of values {@code 0x00} through
@@ -36,7 +35,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Gregory Kick
  * @since 7.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Ascii {
 
diff --git a/android/guava/src/com/google/common/base/CaseFormat.java b/android/guava/src/com/google/common/base/CaseFormat.java
index 7b393eb..9e2ad58 100644
--- a/android/guava/src/com/google/common/base/CaseFormat.java
+++ b/android/guava/src/com/google/common/base/CaseFormat.java
@@ -15,9 +15,7 @@
 package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -28,7 +26,6 @@ import javax.annotation.CheckForNull;
  * @author Mike Bostock
  * @since 1.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public enum CaseFormat {
   /** Hyphenated variable naming convention, e.g., "lower-hyphen". */
diff --git a/android/guava/src/com/google/common/base/CharMatcher.java b/android/guava/src/com/google/common/base/CharMatcher.java
index 7941883..bc49526 100644
--- a/android/guava/src/com/google/common/base/CharMatcher.java
+++ b/android/guava/src/com/google/common/base/CharMatcher.java
@@ -18,9 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndex;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.util.Arrays;
 import java.util.BitSet;
 
@@ -60,7 +57,6 @@ import java.util.BitSet;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public abstract class CharMatcher implements Predicate<Character> {
   /*
@@ -411,7 +407,7 @@ public abstract class CharMatcher implements Predicate<Character> {
    * constructs an eight-kilobyte bit array and queries that. In many situations this produces a
    * matcher which is faster to query than the original.
    */
-  @GwtIncompatible // SmallCharMatcher
+  // SmallCharMatcher
   CharMatcher precomputedInternal() {
     final BitSet table = new BitSet();
     setBits(table);
@@ -441,7 +437,7 @@ public abstract class CharMatcher implements Predicate<Character> {
   /**
    * Helper method for {@link #precomputedInternal} that doesn't test if the negation is cheaper.
    */
-  @GwtIncompatible // SmallCharMatcher
+  // SmallCharMatcher
   private static CharMatcher precomputedPositive(
       int totalCharacters, BitSet table, String description) {
     switch (totalCharacters) {
@@ -460,7 +456,7 @@ public abstract class CharMatcher implements Predicate<Character> {
     }
   }
 
-  @GwtIncompatible // SmallCharMatcher
+  // SmallCharMatcher
   private static boolean isSmall(int totalCharacters, int tableLength) {
     return totalCharacters <= SmallCharMatcher.MAX_SIZE
         && tableLength > (totalCharacters * 4 * Character.SIZE);
@@ -468,7 +464,7 @@ public abstract class CharMatcher implements Predicate<Character> {
   }
 
   /** Sets bits in {@code table} matched by this matcher. */
-  @GwtIncompatible // used only from other GwtIncompatible code
+  // used only from other GwtIncompatible code
   void setBits(BitSet table) {
     for (int c = Character.MAX_VALUE; c >= Character.MIN_VALUE; c--) {
       if (matches((char) c)) {
@@ -978,7 +974,7 @@ public abstract class CharMatcher implements Predicate<Character> {
   }
 
   /** Fast matcher using a {@link BitSet} table of matching characters. */
-  @GwtIncompatible // used only from other GwtIncompatible code
+  // used only from other GwtIncompatible code
   private static final class BitSetMatcher extends NamedFastMatcher {
 
     private final BitSet table;
@@ -1206,7 +1202,6 @@ public abstract class CharMatcher implements Predicate<Character> {
   }
 
   /** Implementation of {@link #whitespace()}. */
-  @VisibleForTesting
   static final class Whitespace extends NamedFastMatcher {
 
     // TABLE is a precomputed hashset of whitespace characters. MULTIPLIER serves as a hash function
@@ -1232,7 +1227,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return TABLE.charAt((MULTIPLIER * c) >>> SHIFT) == c;
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       for (int i = 0; i < TABLE.length(); i++) {
@@ -1518,7 +1513,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return sequence.length() - original.countIn(sequence);
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       BitSet tmp = new BitSet();
@@ -1554,7 +1549,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return first.matches(c) && second.matches(c);
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       BitSet tmp1 = new BitSet();
@@ -1582,7 +1577,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       second = checkNotNull(b);
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       first.setBits(table);
@@ -1636,7 +1631,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return isNot(match);
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       table.set(match);
@@ -1672,7 +1667,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return other.matches(match) ? any() : this;
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       table.set(0, match);
@@ -1710,7 +1705,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return c == match1 || c == match2;
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       table.set(match1);
@@ -1739,7 +1734,7 @@ public abstract class CharMatcher implements Predicate<Character> {
     }
 
     @Override
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     void setBits(BitSet table) {
       for (char c : chars) {
         table.set(c);
@@ -1774,7 +1769,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return startInclusive <= c && c <= endInclusive;
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       table.set(startInclusive, endInclusive + 1);
diff --git a/android/guava/src/com/google/common/base/Charsets.java b/android/guava/src/com/google/common/base/Charsets.java
index 7aebea8..33a431a 100644
--- a/android/guava/src/com/google/common/base/Charsets.java
+++ b/android/guava/src/com/google/common/base/Charsets.java
@@ -14,8 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.nio.charset.Charset;
 
 /**
@@ -30,7 +28,6 @@ import java.nio.charset.Charset;
  * @author Mike Bostock
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Charsets {
   private Charsets() {}
@@ -42,7 +39,7 @@ public final class Charsets {
    * java.nio.charset.StandardCharsets#US_ASCII} instead.
    *
    */
-  @GwtIncompatible // Charset not supported by GWT
+  // Charset not supported by GWT
   public static final Charset US_ASCII = Charset.forName("US-ASCII");
 
   /**
@@ -70,7 +67,7 @@ public final class Charsets {
    * java.nio.charset.StandardCharsets#UTF_16BE} instead.
    *
    */
-  @GwtIncompatible // Charset not supported by GWT
+  // Charset not supported by GWT
   public static final Charset UTF_16BE = Charset.forName("UTF-16BE");
 
   /**
@@ -80,7 +77,7 @@ public final class Charsets {
    * java.nio.charset.StandardCharsets#UTF_16LE} instead.
    *
    */
-  @GwtIncompatible // Charset not supported by GWT
+  // Charset not supported by GWT
   public static final Charset UTF_16LE = Charset.forName("UTF-16LE");
 
   /**
@@ -91,7 +88,7 @@ public final class Charsets {
    * java.nio.charset.StandardCharsets#UTF_16} instead.
    *
    */
-  @GwtIncompatible // Charset not supported by GWT
+  // Charset not supported by GWT
   public static final Charset UTF_16 = Charset.forName("UTF-16");
 
   /*
diff --git a/android/guava/src/com/google/common/base/CommonMatcher.java b/android/guava/src/com/google/common/base/CommonMatcher.java
index d63b46b..2702934 100644
--- a/android/guava/src/com/google/common/base/CommonMatcher.java
+++ b/android/guava/src/com/google/common/base/CommonMatcher.java
@@ -14,14 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * The subset of the {@link java.util.regex.Matcher} API which is used by this package, and also
  * shared with the {@code re2j} library. For internal use only. Please refer to the {@code Matcher}
  * javadoc for details.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class CommonMatcher {
   public abstract boolean matches();
diff --git a/android/guava/src/com/google/common/base/CommonPattern.java b/android/guava/src/com/google/common/base/CommonPattern.java
index c425d52..cdadb59 100644
--- a/android/guava/src/com/google/common/base/CommonPattern.java
+++ b/android/guava/src/com/google/common/base/CommonPattern.java
@@ -14,14 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * The subset of the {@link java.util.regex.Pattern} API which is used by this package, and also
  * shared with the {@code re2j} library. For internal use only. Please refer to the {@code Pattern}
  * javadoc for details.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class CommonPattern {
   public abstract CommonMatcher matcher(CharSequence t);
diff --git a/android/guava/src/com/google/common/base/Converter.java b/android/guava/src/com/google/common/base/Converter.java
index 208a032..bdc78d4 100644
--- a/android/guava/src/com/google/common/base/Converter.java
+++ b/android/guava/src/com/google/common/base/Converter.java
@@ -14,14 +14,8 @@
 
 package com.google.common.base;
 
-import static com.google.common.base.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.ForOverride;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
 import java.io.Serializable;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
@@ -113,7 +107,6 @@ import javax.annotation.CheckForNull;
  * @author Gregory Kick
  * @since 16.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 /*
  * 1. The type parameter is <T> rather than <T extends @Nullable> so that we can use T in the
@@ -143,7 +136,7 @@ public abstract class Converter<A, B> implements Function<A, B> {
   private final boolean handleNullAutomatically;
 
   // We lazily cache the reverse view to avoid allocating on every call to reverse().
-  @LazyInit @RetainedWith @CheckForNull private transient Converter<B, A> reverse;
+  @CheckForNull private transient Converter<B, A> reverse;
 
   /** Constructor for use by subclasses. */
   protected Converter() {
@@ -164,7 +157,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    * @param a the instance to convert; will never be null
    * @return the converted instance; <b>must not</b> be null
    */
-  @ForOverride
   protected abstract B doForward(A a);
 
   /**
@@ -179,7 +171,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    *     then this is not logically a {@code Converter} at all, and should just implement {@link
    *     Function}.
    */
-  @ForOverride
   protected abstract A doBackward(B b);
 
   // API (consumer-side) methods
@@ -189,7 +180,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    *
    * @return the converted value; is null <i>if and only if</i> {@code a} is null
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   public final B convert(@CheckForNull A a) {
     return correctedDoForward(a);
@@ -259,7 +249,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    * a successful {@code remove()} call, {@code fromIterable} no longer contains the corresponding
    * element.
    */
-  @CanIgnoreReturnValue
   /*
    * Just as Converter could implement `Function<@Nullable A, @Nullable B>` instead of `Function<A,
    * B>`, convertAll could accept and return iterables with nullable element types. In both cases,
@@ -307,7 +296,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    *
    * <p><b>Note:</b> you should not override this method. It is non-final for legacy reasons.
    */
-  @CanIgnoreReturnValue
   public Converter<B, A> reverse() {
     Converter<B, A> result = reverse;
     return (result == null) ? reverse = new ReverseConverter<>(this) : result;
@@ -459,7 +447,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    */
   @Deprecated
   @Override
-  @CanIgnoreReturnValue
   /*
    * Even though we implement `Function<A, B>` instead of `Function<@Nullable A, @Nullable B>` (as
    * discussed in a code comment at the top of the class), we declare our override of Function.apply
diff --git a/android/guava/src/com/google/common/base/Defaults.java b/android/guava/src/com/google/common/base/Defaults.java
index 5d12343..c5a9f97 100644
--- a/android/guava/src/com/google/common/base/Defaults.java
+++ b/android/guava/src/com/google/common/base/Defaults.java
@@ -16,7 +16,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -25,7 +24,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Defaults {
   private Defaults() {}
diff --git a/android/guava/src/com/google/common/base/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/base/ElementTypesAreNonnullByDefault.java
index 890e3a3..f5595b7 100644
--- a/android/guava/src/com/google/common/base/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/base/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/base/Enums.java b/android/guava/src/com/google/common/base/Enums.java
index 449b7e3..06969ed 100644
--- a/android/guava/src/com/google/common/base/Enums.java
+++ b/android/guava/src/com/google/common/base/Enums.java
@@ -16,15 +16,11 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
-import java.lang.ref.WeakReference;
 import java.lang.reflect.Field;
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.WeakHashMap;
 import javax.annotation.CheckForNull;
 
 /**
@@ -33,7 +29,6 @@ import javax.annotation.CheckForNull;
  * @author Steve McKay
  * @since 9.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Enums {
 
@@ -46,7 +41,7 @@ public final class Enums {
    *
    * @since 12.0
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Field getField(Enum<?> enumValue) {
     Class<?> clazz = enumValue.getDeclaringClass();
     try {
@@ -70,11 +65,11 @@ public final class Enums {
     return Platform.getEnumIfPresent(enumClass, value);
   }
 
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   private static final Map<Class<? extends Enum<?>>, Map<String, WeakReference<? extends Enum<?>>>>
       enumConstantCache = new WeakHashMap<>();
 
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   private static <T extends Enum<T>> Map<String, WeakReference<? extends Enum<?>>> populateCache(
       Class<T> enumClass) {
     Map<String, WeakReference<? extends Enum<?>>> result = new HashMap<>();
@@ -85,7 +80,7 @@ public final class Enums {
     return result;
   }
 
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   static <T extends Enum<T>> Map<String, WeakReference<? extends Enum<?>>> getEnumConstants(
       Class<T> enumClass) {
     synchronized (enumConstantCache) {
diff --git a/android/guava/src/com/google/common/base/Equivalence.java b/android/guava/src/com/google/common/base/Equivalence.java
index 0ce901f..3a96b04 100644
--- a/android/guava/src/com/google/common/base/Equivalence.java
+++ b/android/guava/src/com/google/common/base/Equivalence.java
@@ -16,11 +16,8 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.ForOverride;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A strategy for determining whether two instances are considered equivalent, and for computing
@@ -38,7 +35,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 10.0 (<a href="https://github.com/google/guava/wiki/Compatibility">mostly
  *     source-compatible</a> since 4.0)
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 /*
  * The type parameter is <T> rather than <T extends @Nullable> so that we can use T in the
@@ -79,7 +75,6 @@ public abstract class Equivalence<T> {
    *
    * @since 10.0 (previously, subclasses would override equivalent())
    */
-  @ForOverride
   protected abstract boolean doEquivalent(T a, T b);
 
   /**
@@ -115,7 +110,6 @@ public abstract class Equivalence<T> {
    *
    * @since 10.0 (previously, subclasses would override hash())
    */
-  @ForOverride
   protected abstract int doHash(T t);
 
   /**
@@ -152,7 +146,7 @@ public abstract class Equivalence<T> {
    *
    * @since 10.0
    */
-  public final <S extends @Nullable T> Wrapper<S> wrap(@ParametricNullness S reference) {
+  public final <S extends T> Wrapper<S> wrap(@ParametricNullness S reference) {
     return new Wrapper<S>(this, reference);
   }
 
@@ -176,7 +170,7 @@ public abstract class Equivalence<T> {
    *
    * @since 10.0
    */
-  public static final class Wrapper<T extends @Nullable Object> implements Serializable {
+  public static final class Wrapper<T extends Object> implements Serializable {
     private final Equivalence<? super T> equivalence;
     @ParametricNullness private final T reference;
 
@@ -246,8 +240,7 @@ public abstract class Equivalence<T> {
    *
    * @since 10.0
    */
-  @GwtCompatible(serializable = true)
-  public final <S extends @Nullable T> Equivalence<Iterable<S>> pairwise() {
+  public final <S extends T> Equivalence<Iterable<S>> pairwise() {
     // Ideally, the returned equivalence would support Iterable<? extends T>. However,
     // the need for this is so rare that it's not worth making callers deal with the ugly wildcard.
     return new PairwiseEquivalence<>(this);
@@ -259,12 +252,12 @@ public abstract class Equivalence<T> {
    *
    * @since 10.0
    */
-  public final Predicate<@Nullable T> equivalentTo(@CheckForNull T target) {
+  public final Predicate<T> equivalentTo(@CheckForNull T target) {
     return new EquivalentToPredicate<T>(this, target);
   }
 
   private static final class EquivalentToPredicate<T>
-      implements Predicate<@Nullable T>, Serializable {
+      implements Predicate<T>, Serializable {
 
     private final Equivalence<T> equivalence;
     @CheckForNull private final T target;
diff --git a/android/guava/src/com/google/common/base/ExtraObjectsMethodsForWeb.java b/android/guava/src/com/google/common/base/ExtraObjectsMethodsForWeb.java
index 6770755..a5aa8a2 100644
--- a/android/guava/src/com/google/common/base/ExtraObjectsMethodsForWeb.java
+++ b/android/guava/src/com/google/common/base/ExtraObjectsMethodsForWeb.java
@@ -14,12 +14,10 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Holder for extra methods of {@code Objects} only in web. Intended to be empty for regular
  * version.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ExtraObjectsMethodsForWeb {}
diff --git a/android/guava/src/com/google/common/base/FinalizablePhantomReference.java b/android/guava/src/com/google/common/base/FinalizablePhantomReference.java
index 4f93996..fa47907 100644
--- a/android/guava/src/com/google/common/base/FinalizablePhantomReference.java
+++ b/android/guava/src/com/google/common/base/FinalizablePhantomReference.java
@@ -14,7 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.lang.ref.PhantomReference;
 import java.lang.ref.ReferenceQueue;
 import javax.annotation.CheckForNull;
@@ -29,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Bob Lee
  * @since 2.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class FinalizablePhantomReference<T> extends PhantomReference<T>
     implements FinalizableReference {
diff --git a/android/guava/src/com/google/common/base/FinalizableReference.java b/android/guava/src/com/google/common/base/FinalizableReference.java
index 73753c9..ac0f6e7 100644
--- a/android/guava/src/com/google/common/base/FinalizableReference.java
+++ b/android/guava/src/com/google/common/base/FinalizableReference.java
@@ -14,8 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * Implemented by references that have code to run after garbage collection of their referents.
@@ -24,8 +22,6 @@ import com.google.errorprone.annotations.DoNotMock;
  * @author Bob Lee
  * @since 2.0
  */
-@DoNotMock("Use an instance of one of the Finalizable*Reference classes")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface FinalizableReference {
   /**
diff --git a/android/guava/src/com/google/common/base/FinalizableReferenceQueue.java b/android/guava/src/com/google/common/base/FinalizableReferenceQueue.java
index 5ce1d31..02d4de0 100644
--- a/android/guava/src/com/google/common/base/FinalizableReferenceQueue.java
+++ b/android/guava/src/com/google/common/base/FinalizableReferenceQueue.java
@@ -14,8 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.io.Closeable;
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -88,7 +86,6 @@ import javax.annotation.CheckForNull;
  * @author Bob Lee
  * @since 2.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public class FinalizableReferenceQueue implements Closeable {
   /*
@@ -240,7 +237,7 @@ public class FinalizableReferenceQueue implements Closeable {
   static class SystemLoader implements FinalizerLoader {
     // This is used by the ClassLoader-leak test in FinalizableReferenceQueueTest to disable
     // finding Finalizer on the system class path even if it is there.
-    @VisibleForTesting static boolean disabled;
+    static boolean disabled;
 
     @Override
     @CheckForNull
diff --git a/android/guava/src/com/google/common/base/FinalizableSoftReference.java b/android/guava/src/com/google/common/base/FinalizableSoftReference.java
index c0e9b6b..53c83a3 100644
--- a/android/guava/src/com/google/common/base/FinalizableSoftReference.java
+++ b/android/guava/src/com/google/common/base/FinalizableSoftReference.java
@@ -14,7 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.lang.ref.ReferenceQueue;
 import java.lang.ref.SoftReference;
 import javax.annotation.CheckForNull;
@@ -27,7 +26,6 @@ import javax.annotation.CheckForNull;
  * @author Bob Lee
  * @since 2.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class FinalizableSoftReference<T> extends SoftReference<T>
     implements FinalizableReference {
diff --git a/android/guava/src/com/google/common/base/FinalizableWeakReference.java b/android/guava/src/com/google/common/base/FinalizableWeakReference.java
index 9cca92e..5d44704 100644
--- a/android/guava/src/com/google/common/base/FinalizableWeakReference.java
+++ b/android/guava/src/com/google/common/base/FinalizableWeakReference.java
@@ -14,9 +14,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
 import javax.annotation.CheckForNull;
 
 /**
@@ -27,7 +25,6 @@ import javax.annotation.CheckForNull;
  * @author Bob Lee
  * @since 2.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class FinalizableWeakReference<T> extends WeakReference<T>
     implements FinalizableReference {
diff --git a/android/guava/src/com/google/common/base/Function.java b/android/guava/src/com/google/common/base/Function.java
index 7d633af..dc15105 100644
--- a/android/guava/src/com/google/common/base/Function.java
+++ b/android/guava/src/com/google/common/base/Function.java
@@ -14,10 +14,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Determines an output value based on an input value; a pre-Java-8 version of {@link
@@ -44,9 +41,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface Function<F extends @Nullable Object, T extends @Nullable Object> {
+public interface Function<F extends Object, T extends Object> {
   /**
    * Returns the result of applying this function to {@code input}. This method is <i>generally
    * expected</i>, but not absolutely required, to have the following properties:
@@ -61,7 +57,7 @@ public interface Function<F extends @Nullable Object, T extends @Nullable Object
    * @throws NullPointerException if {@code input} is null and this function does not accept null
    *     arguments
    */
-  @CanIgnoreReturnValue // TODO(kevinb): remove this
+  // TODO(kevinb): remove this
   @ParametricNullness
   T apply(@ParametricNullness F input);
 
diff --git a/android/guava/src/com/google/common/base/FunctionalEquivalence.java b/android/guava/src/com/google/common/base/FunctionalEquivalence.java
index 8bb67be..bd18c1d 100644
--- a/android/guava/src/com/google/common/base/FunctionalEquivalence.java
+++ b/android/guava/src/com/google/common/base/FunctionalEquivalence.java
@@ -16,8 +16,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -27,8 +25,6 @@ import javax.annotation.CheckForNull;
  * @author Bob Lee
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class FunctionalEquivalence<F, T> extends Equivalence<F> implements Serializable {
 
diff --git a/android/guava/src/com/google/common/base/Functions.java b/android/guava/src/com/google/common/base/Functions.java
index 5337d0e..046ca44 100644
--- a/android/guava/src/com/google/common/base/Functions.java
+++ b/android/guava/src/com/google/common/base/Functions.java
@@ -14,15 +14,12 @@
 
 package com.google.common.base;
 
-import static com.google.common.base.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@code com.google.common.base.Function} instances; see that
@@ -37,7 +34,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Functions {
   private Functions() {}
@@ -82,12 +78,12 @@ public final class Functions {
   /** Returns the identity function. */
   // implementation is "fully variant"; E has become a "pass-through" type
   @SuppressWarnings("unchecked")
-  public static <E extends @Nullable Object> Function<E, E> identity() {
+  public static <E extends Object> Function<E, E> identity() {
     return (Function<E, E>) IdentityFunction.INSTANCE;
   }
 
   // enum singleton pattern
-  private enum IdentityFunction implements Function<@Nullable Object, @Nullable Object> {
+  private enum IdentityFunction implements Function<Object, Object> {
     INSTANCE;
 
     @Override
@@ -115,7 +111,7 @@ public final class Functions {
    * key (instead of an exception being thrown), you can use the method reference {@code map::get}
    * instead.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Function<K, V> forMap(
+  public static <K extends Object, V extends Object> Function<K, V> forMap(
       Map<K, V> map) {
     return new FunctionForMapNoDefault<>(map);
   }
@@ -133,13 +129,13 @@ public final class Functions {
    * @return function that returns {@code map.get(a)} when {@code a} is a key, or {@code
    *     defaultValue} otherwise
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Function<K, V> forMap(
+  public static <K extends Object, V extends Object> Function<K, V> forMap(
       Map<K, ? extends V> map, @ParametricNullness V defaultValue) {
     return new ForMapWithDefault<>(map, defaultValue);
   }
 
   private static class FunctionForMapNoDefault<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       implements Function<K, V>, Serializable {
     final Map<K, V> map;
 
@@ -178,7 +174,7 @@ public final class Functions {
     private static final long serialVersionUID = 0;
   }
 
-  private static class ForMapWithDefault<K extends @Nullable Object, V extends @Nullable Object>
+  private static class ForMapWithDefault<K extends Object, V extends Object>
       implements Function<K, V>, Serializable {
     final Map<K, ? extends V> map;
     @ParametricNullness final V defaultValue;
@@ -233,13 +229,13 @@ public final class Functions {
    * @return the composition of {@code f} and {@code g}
    * @see <a href="//en.wikipedia.org/wiki/Function_composition">function composition</a>
    */
-  public static <A extends @Nullable Object, B extends @Nullable Object, C extends @Nullable Object>
+  public static <A extends Object, B extends Object, C extends Object>
       Function<A, C> compose(Function<B, C> g, Function<A, ? extends B> f) {
     return new FunctionComposition<>(g, f);
   }
 
   private static class FunctionComposition<
-          A extends @Nullable Object, B extends @Nullable Object, C extends @Nullable Object>
+          A extends Object, B extends Object, C extends Object>
       implements Function<A, C>, Serializable {
     private final Function<B, C> g;
     private final Function<A, ? extends B> f;
@@ -286,13 +282,13 @@ public final class Functions {
    *
    * <p><b>Java 8 users:</b> use the method reference {@code predicate::test} instead.
    */
-  public static <T extends @Nullable Object> Function<T, Boolean> forPredicate(
+  public static <T extends Object> Function<T, Boolean> forPredicate(
       Predicate<T> predicate) {
     return new PredicateFunction<T>(predicate);
   }
 
   /** @see Functions#forPredicate */
-  private static class PredicateFunction<T extends @Nullable Object>
+  private static class PredicateFunction<T extends Object>
       implements Function<T, Boolean>, Serializable {
     private final Predicate<T> predicate;
 
@@ -335,13 +331,13 @@ public final class Functions {
    * @param value the constant value for the function to return
    * @return a function that always returns {@code value}
    */
-  public static <E extends @Nullable Object> Function<@Nullable Object, E> constant(
+  public static <E extends Object> Function<Object, E> constant(
       @ParametricNullness E value) {
     return new ConstantFunction<>(value);
   }
 
-  private static class ConstantFunction<E extends @Nullable Object>
-      implements Function<@Nullable Object, E>, Serializable {
+  private static class ConstantFunction<E extends Object>
+      implements Function<Object, E>, Serializable {
     @ParametricNullness private final E value;
 
     public ConstantFunction(@ParametricNullness E value) {
@@ -383,13 +379,13 @@ public final class Functions {
    *
    * @since 10.0
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> Function<F, T> forSupplier(
+  public static <F extends Object, T extends Object> Function<F, T> forSupplier(
       Supplier<T> supplier) {
     return new SupplierFunction<>(supplier);
   }
 
   /** @see Functions#forSupplier */
-  private static class SupplierFunction<F extends @Nullable Object, T extends @Nullable Object>
+  private static class SupplierFunction<F extends Object, T extends Object>
       implements Function<F, T>, Serializable {
 
     private final Supplier<T> supplier;
diff --git a/android/guava/src/com/google/common/base/Java8Compatibility.java b/android/guava/src/com/google/common/base/Java8Compatibility.java
index edc8b73..2d2b5f3 100644
--- a/android/guava/src/com/google/common/base/Java8Compatibility.java
+++ b/android/guava/src/com/google/common/base/Java8Compatibility.java
@@ -14,14 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.nio.Buffer;
 
 /**
  * Wrappers around {@link Buffer} methods that are covariantly overridden in Java 9+. See
  * https://github.com/google/guava/issues/3990
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class Java8Compatibility {
   static void clear(Buffer b) {
diff --git a/android/guava/src/com/google/common/base/JdkPattern.java b/android/guava/src/com/google/common/base/JdkPattern.java
index 4788398..1d5a310 100644
--- a/android/guava/src/com/google/common/base/JdkPattern.java
+++ b/android/guava/src/com/google/common/base/JdkPattern.java
@@ -14,14 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /** A regex pattern implementation which is backed by the {@link Pattern}. */
 @ElementTypesAreNonnullByDefault
-@GwtIncompatible
 final class JdkPattern extends CommonPattern implements Serializable {
   private final Pattern pattern;
 
diff --git a/android/guava/src/com/google/common/base/Joiner.java b/android/guava/src/com/google/common/base/Joiner.java
index 0f3d6e4..3668f79 100644
--- a/android/guava/src/com/google/common/base/Joiner.java
+++ b/android/guava/src/com/google/common/base/Joiner.java
@@ -15,11 +15,7 @@
 package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -27,7 +23,6 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An object which joins pieces of text (specified as an array, {@link Iterable}, varargs or even a
@@ -64,7 +59,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class Joiner {
   /** Returns a joiner which automatically places {@code separator} between consecutive elements. */
@@ -97,7 +91,6 @@ public class Joiner {
    * Appends the string representation of each of {@code parts}, using the previously configured
    * separator between each, to {@code appendable}.
    */
-  @CanIgnoreReturnValue
   public <A extends Appendable> A appendTo(A appendable, Iterable<? extends @Nullable Object> parts)
       throws IOException {
     return appendTo(appendable, parts.iterator());
@@ -109,7 +102,6 @@ public class Joiner {
    *
    * @since 11.0
    */
-  @CanIgnoreReturnValue
   public <A extends Appendable> A appendTo(A appendable, Iterator<? extends @Nullable Object> parts)
       throws IOException {
     checkNotNull(appendable);
@@ -127,14 +119,12 @@ public class Joiner {
    * Appends the string representation of each of {@code parts}, using the previously configured
    * separator between each, to {@code appendable}.
    */
-  @CanIgnoreReturnValue
   public final <A extends Appendable> A appendTo(A appendable, @Nullable Object[] parts)
       throws IOException {
     return appendTo(appendable, Arrays.asList(parts));
   }
 
   /** Appends to {@code appendable} the string representation of each of the remaining arguments. */
-  @CanIgnoreReturnValue
   public final <A extends Appendable> A appendTo(
       A appendable,
       @CheckForNull Object first,
@@ -149,7 +139,6 @@ public class Joiner {
    * separator between each, to {@code builder}. Identical to {@link #appendTo(Appendable,
    * Iterable)}, except that it does not throw {@link IOException}.
    */
-  @CanIgnoreReturnValue
   public final StringBuilder appendTo(
       StringBuilder builder, Iterable<? extends @Nullable Object> parts) {
     return appendTo(builder, parts.iterator());
@@ -162,7 +151,6 @@ public class Joiner {
    *
    * @since 11.0
    */
-  @CanIgnoreReturnValue
   public final StringBuilder appendTo(
       StringBuilder builder, Iterator<? extends @Nullable Object> parts) {
     try {
@@ -178,7 +166,6 @@ public class Joiner {
    * separator between each, to {@code builder}. Identical to {@link #appendTo(Appendable,
    * Iterable)}, except that it does not throw {@link IOException}.
    */
-  @CanIgnoreReturnValue
   public final StringBuilder appendTo(StringBuilder builder, @Nullable Object[] parts) {
     return appendTo(builder, Arrays.asList(parts));
   }
@@ -188,7 +175,6 @@ public class Joiner {
    * Identical to {@link #appendTo(Appendable, Object, Object, Object...)}, except that it does not
    * throw {@link IOException}.
    */
-  @CanIgnoreReturnValue
   public final StringBuilder appendTo(
       StringBuilder builder,
       @CheckForNull Object first,
@@ -345,7 +331,6 @@ public class Joiner {
      * Appends the string representation of each entry of {@code map}, using the previously
      * configured separator and key-value separator, to {@code appendable}.
      */
-    @CanIgnoreReturnValue
     public <A extends Appendable> A appendTo(A appendable, Map<?, ?> map) throws IOException {
       return appendTo(appendable, map.entrySet());
     }
@@ -355,7 +340,6 @@ public class Joiner {
      * configured separator and key-value separator, to {@code builder}. Identical to {@link
      * #appendTo(Appendable, Map)}, except that it does not throw {@link IOException}.
      */
-    @CanIgnoreReturnValue
     public StringBuilder appendTo(StringBuilder builder, Map<?, ?> map) {
       return appendTo(builder, map.entrySet());
     }
@@ -366,8 +350,6 @@ public class Joiner {
      *
      * @since 10.0
      */
-    @Beta
-    @CanIgnoreReturnValue
     public <A extends Appendable> A appendTo(A appendable, Iterable<? extends Entry<?, ?>> entries)
         throws IOException {
       return appendTo(appendable, entries.iterator());
@@ -379,8 +361,6 @@ public class Joiner {
      *
      * @since 11.0
      */
-    @Beta
-    @CanIgnoreReturnValue
     public <A extends Appendable> A appendTo(A appendable, Iterator<? extends Entry<?, ?>> parts)
         throws IOException {
       checkNotNull(appendable);
@@ -407,8 +387,6 @@ public class Joiner {
      *
      * @since 10.0
      */
-    @Beta
-    @CanIgnoreReturnValue
     public StringBuilder appendTo(StringBuilder builder, Iterable<? extends Entry<?, ?>> entries) {
       return appendTo(builder, entries.iterator());
     }
@@ -420,8 +398,6 @@ public class Joiner {
      *
      * @since 11.0
      */
-    @Beta
-    @CanIgnoreReturnValue
     public StringBuilder appendTo(StringBuilder builder, Iterator<? extends Entry<?, ?>> entries) {
       try {
         appendTo((Appendable) builder, entries);
@@ -445,7 +421,6 @@ public class Joiner {
      *
      * @since 10.0
      */
-    @Beta
     public String join(Iterable<? extends Entry<?, ?>> entries) {
       return join(entries.iterator());
     }
@@ -456,7 +431,6 @@ public class Joiner {
      *
      * @since 11.0
      */
-    @Beta
     public String join(Iterator<? extends Entry<?, ?>> entries) {
       return appendTo(new StringBuilder(), entries).toString();
     }
@@ -492,12 +466,12 @@ public class Joiner {
     return (part instanceof CharSequence) ? (CharSequence) part : part.toString();
   }
 
-  private static Iterable<@Nullable Object> iterable(
+  private static Iterable<Object> iterable(
       @CheckForNull final Object first,
       @CheckForNull final Object second,
       final @Nullable Object[] rest) {
     checkNotNull(rest);
-    return new AbstractList<@Nullable Object>() {
+    return new AbstractList<Object>() {
       @Override
       public int size() {
         return rest.length + 2;
diff --git a/android/guava/src/com/google/common/base/MoreObjects.java b/android/guava/src/com/google/common/base/MoreObjects.java
index da97624..64fba53 100644
--- a/android/guava/src/com/google/common/base/MoreObjects.java
+++ b/android/guava/src/com/google/common/base/MoreObjects.java
@@ -16,8 +16,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.lang.reflect.Array;
 import java.util.Arrays;
 import java.util.Collection;
@@ -35,7 +33,6 @@ import javax.annotation.CheckForNull;
  * @author Laurence Gonsalves
  * @since 18.0 (since 2.0 as {@code Objects})
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class MoreObjects {
   /**
@@ -180,7 +177,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 12.0 as {@code Objects.ToStringHelper.omitNullValues()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper omitNullValues() {
       omitNullValues = true;
       return this;
@@ -191,7 +187,6 @@ public final class MoreObjects {
      * is {@code null}, the string {@code "null"} is used, unless {@link #omitNullValues()} is
      * called, in which case this name/value pair will not be added.
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, @CheckForNull Object value) {
       return addHolder(name, value);
     }
@@ -201,7 +196,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, boolean value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -211,7 +205,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, char value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -221,7 +214,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, double value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -231,7 +223,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, float value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -241,7 +232,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, int value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -251,7 +241,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, long value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -262,7 +251,6 @@ public final class MoreObjects {
      * <p>It is strongly encouraged to use {@link #add(String, Object)} instead and give value a
      * readable name.
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(@CheckForNull Object value) {
       return addHolder(value);
     }
@@ -275,7 +263,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(boolean value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
@@ -288,7 +275,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(char value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
@@ -301,7 +287,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(double value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
@@ -314,7 +299,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(float value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
@@ -327,7 +311,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(int value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
@@ -340,7 +323,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(long value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
diff --git a/android/guava/src/com/google/common/base/NullnessCasts.java b/android/guava/src/com/google/common/base/NullnessCasts.java
index 1ada6bf..3132e98 100644
--- a/android/guava/src/com/google/common/base/NullnessCasts.java
+++ b/android/guava/src/com/google/common/base/NullnessCasts.java
@@ -14,12 +14,9 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** A utility method to perform unchecked casts to suppress errors produced by nullness analyses. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class NullnessCasts {
   /**
@@ -52,7 +49,7 @@ final class NullnessCasts {
    */
   @ParametricNullness
   @SuppressWarnings("nullness")
-  static <T extends @Nullable Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
+  static <T extends Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
     return t;
   }
 
diff --git a/android/guava/src/com/google/common/base/Objects.java b/android/guava/src/com/google/common/base/Objects.java
index bd6b0d9..89c0641 100644
--- a/android/guava/src/com/google/common/base/Objects.java
+++ b/android/guava/src/com/google/common/base/Objects.java
@@ -14,10 +14,8 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Arrays;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Helper functions that can operate on any {@code Object}.
@@ -29,7 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Laurence Gonsalves
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Objects extends ExtraObjectsMethodsForWeb {
   private Objects() {}
diff --git a/android/guava/src/com/google/common/base/Optional.java b/android/guava/src/com/google/common/base/Optional.java
index a7a0b3d..489341a 100644
--- a/android/guava/src/com/google/common/base/Optional.java
+++ b/android/guava/src/com/google/common/base/Optional.java
@@ -16,9 +16,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.Serializable;
 import java.util.Iterator;
 import java.util.Set;
@@ -80,8 +77,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@DoNotMock("Use Optional.of(value) or Optional.absent()")
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 public abstract class Optional<T> implements Serializable {
   /**
@@ -197,7 +192,6 @@ public abstract class Optional<T> implements Serializable {
    * @throws NullPointerException if this optional's value is absent and the supplier returns {@code
    *     null}
    */
-  @Beta
   public abstract T or(Supplier<? extends T> supplier);
 
   /**
@@ -289,7 +283,6 @@ public abstract class Optional<T> implements Serializable {
    *
    * @since 11.0 (generics widened in 13.0)
    */
-  @Beta
   public static <T> Iterable<T> presentInstances(
       final Iterable<? extends Optional<? extends T>> optionals) {
     checkNotNull(optionals);
diff --git a/android/guava/src/com/google/common/base/PairwiseEquivalence.java b/android/guava/src/com/google/common/base/PairwiseEquivalence.java
index 74be27f..bf6b3d8 100644
--- a/android/guava/src/com/google/common/base/PairwiseEquivalence.java
+++ b/android/guava/src/com/google/common/base/PairwiseEquivalence.java
@@ -14,15 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class PairwiseEquivalence<E, T extends @Nullable E> extends Equivalence<Iterable<T>>
+final class PairwiseEquivalence<E, T extends E> extends Equivalence<Iterable<T>>
     implements Serializable {
   final Equivalence<E> elementEquivalence;
 
diff --git a/android/guava/src/com/google/common/base/ParametricNullness.java b/android/guava/src/com/google/common/base/ParametricNullness.java
index c736055..e147531 100644
--- a/android/guava/src/com/google/common/base/ParametricNullness.java
+++ b/android/guava/src/com/google/common/base/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/base/PatternCompiler.java b/android/guava/src/com/google/common/base/PatternCompiler.java
index 72a45fa..11e6e86 100644
--- a/android/guava/src/com/google/common/base/PatternCompiler.java
+++ b/android/guava/src/com/google/common/base/PatternCompiler.java
@@ -14,14 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 
 /**
  * Pluggable interface for compiling a regex pattern. By default this package uses the {@code
  * java.util.regex} library, but an alternate implementation can be supplied using the {@link
  * java.util.ServiceLoader} mechanism.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 interface PatternCompiler {
   /**
diff --git a/android/guava/src/com/google/common/base/Platform.java b/android/guava/src/com/google/common/base/Platform.java
index 703b860..9f3f896 100644
--- a/android/guava/src/com/google/common/base/Platform.java
+++ b/android/guava/src/com/google/common/base/Platform.java
@@ -14,8 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import java.lang.ref.WeakReference;
 import java.util.Locale;
 import java.util.ServiceConfigurationError;
 import java.util.logging.Level;
@@ -28,7 +26,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Jesse Wilson
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class Platform {
   private static final Logger logger = Logger.getLogger(Platform.class.getName());
diff --git a/android/guava/src/com/google/common/base/Preconditions.java b/android/guava/src/com/google/common/base/Preconditions.java
index 13ff77b..86c8190 100644
--- a/android/guava/src/com/google/common/base/Preconditions.java
+++ b/android/guava/src/com/google/common/base/Preconditions.java
@@ -16,10 +16,7 @@ package com.google.common.base;
 
 import static com.google.common.base.Strings.lenientFormat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static convenience methods that help a method or constructor check whether it was invoked
@@ -113,7 +110,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Preconditions {
   private Preconditions() {}
@@ -883,7 +879,6 @@ public final class Preconditions {
    * @throws NullPointerException if {@code reference} is null
    * @see Verify#verifyNotNull Verify.verifyNotNull()
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(@CheckForNull T reference) {
     if (reference == null) {
       throw new NullPointerException();
@@ -901,7 +896,6 @@ public final class Preconditions {
    * @throws NullPointerException if {@code reference} is null
    * @see Verify#verifyNotNull Verify.verifyNotNull()
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(@CheckForNull T reference, @CheckForNull Object errorMessage) {
     if (reference == null) {
       throw new NullPointerException(String.valueOf(errorMessage));
@@ -924,7 +918,6 @@ public final class Preconditions {
    * @throws NullPointerException if {@code reference} is null
    * @see Verify#verifyNotNull Verify.verifyNotNull()
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T reference,
       String errorMessageTemplate,
@@ -942,7 +935,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(@CheckForNull T obj, String errorMessageTemplate, char p1) {
     if (obj == null) {
       throw new NullPointerException(lenientFormat(errorMessageTemplate, p1));
@@ -957,7 +949,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(@CheckForNull T obj, String errorMessageTemplate, int p1) {
     if (obj == null) {
       throw new NullPointerException(lenientFormat(errorMessageTemplate, p1));
@@ -972,7 +963,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(@CheckForNull T obj, String errorMessageTemplate, long p1) {
     if (obj == null) {
       throw new NullPointerException(lenientFormat(errorMessageTemplate, p1));
@@ -987,7 +977,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, @CheckForNull Object p1) {
     if (obj == null) {
@@ -1003,7 +992,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, char p1, char p2) {
     if (obj == null) {
@@ -1019,7 +1007,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, char p1, int p2) {
     if (obj == null) {
@@ -1035,7 +1022,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, char p1, long p2) {
     if (obj == null) {
@@ -1051,7 +1037,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, char p1, @CheckForNull Object p2) {
     if (obj == null) {
@@ -1067,7 +1052,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, int p1, char p2) {
     if (obj == null) {
@@ -1083,7 +1067,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, int p1, int p2) {
     if (obj == null) {
@@ -1099,7 +1082,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, int p1, long p2) {
     if (obj == null) {
@@ -1115,7 +1097,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, int p1, @CheckForNull Object p2) {
     if (obj == null) {
@@ -1131,7 +1112,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, long p1, char p2) {
     if (obj == null) {
@@ -1147,7 +1127,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, long p1, int p2) {
     if (obj == null) {
@@ -1163,7 +1142,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, long p1, long p2) {
     if (obj == null) {
@@ -1179,7 +1157,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, long p1, @CheckForNull Object p2) {
     if (obj == null) {
@@ -1195,7 +1172,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, @CheckForNull Object p1, char p2) {
     if (obj == null) {
@@ -1211,7 +1187,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, @CheckForNull Object p1, int p2) {
     if (obj == null) {
@@ -1227,7 +1202,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, @CheckForNull Object p1, long p2) {
     if (obj == null) {
@@ -1243,7 +1217,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj,
       String errorMessageTemplate,
@@ -1262,7 +1235,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj,
       String errorMessageTemplate,
@@ -1282,7 +1254,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj,
       String errorMessageTemplate,
@@ -1332,7 +1303,6 @@ public final class Preconditions {
    * @throws IndexOutOfBoundsException if {@code index} is negative or is not less than {@code size}
    * @throws IllegalArgumentException if {@code size} is negative
    */
-  @CanIgnoreReturnValue
   public static int checkElementIndex(int index, int size) {
     return checkElementIndex(index, size, "index");
   }
@@ -1348,7 +1318,6 @@ public final class Preconditions {
    * @throws IndexOutOfBoundsException if {@code index} is negative or is not less than {@code size}
    * @throws IllegalArgumentException if {@code size} is negative
    */
-  @CanIgnoreReturnValue
   public static int checkElementIndex(int index, int size, String desc) {
     // Carefully optimized for execution by hotspot (explanatory comment above)
     if (index < 0 || index >= size) {
@@ -1377,7 +1346,6 @@ public final class Preconditions {
    * @throws IndexOutOfBoundsException if {@code index} is negative or is greater than {@code size}
    * @throws IllegalArgumentException if {@code size} is negative
    */
-  @CanIgnoreReturnValue
   public static int checkPositionIndex(int index, int size) {
     return checkPositionIndex(index, size, "index");
   }
@@ -1393,7 +1361,6 @@ public final class Preconditions {
    * @throws IndexOutOfBoundsException if {@code index} is negative or is greater than {@code size}
    * @throws IllegalArgumentException if {@code size} is negative
    */
-  @CanIgnoreReturnValue
   public static int checkPositionIndex(int index, int size, String desc) {
     // Carefully optimized for execution by hotspot (explanatory comment above)
     if (index < 0 || index > size) {
diff --git a/android/guava/src/com/google/common/base/Predicate.java b/android/guava/src/com/google/common/base/Predicate.java
index 35d57a6..1843ea4 100644
--- a/android/guava/src/com/google/common/base/Predicate.java
+++ b/android/guava/src/com/google/common/base/Predicate.java
@@ -14,10 +14,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Determines a true or false value for a given input; a pre-Java-8 version of {@link
@@ -45,9 +42,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface Predicate<T extends @Nullable Object> {
+public interface Predicate<T extends Object> {
   /**
    * Returns the result of applying this predicate to {@code input} (Java 8 users, see notes in the
    * class documentation above). This method is <i>generally expected</i>, but not absolutely
@@ -63,7 +59,6 @@ public interface Predicate<T extends @Nullable Object> {
    * @throws NullPointerException if {@code input} is null and this predicate does not accept null
    *     arguments
    */
-  @CanIgnoreReturnValue
   boolean apply(@ParametricNullness T input);
 
   /**
diff --git a/android/guava/src/com/google/common/base/Predicates.java b/android/guava/src/com/google/common/base/Predicates.java
index c3b5562..c8a5b1f 100644
--- a/android/guava/src/com/google/common/base/Predicates.java
+++ b/android/guava/src/com/google/common/base/Predicates.java
@@ -16,9 +16,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -26,7 +23,6 @@ import java.util.Collection;
 import java.util.List;
 import java.util.regex.Pattern;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@code Predicate} instances.
@@ -39,7 +35,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Predicates {
   private Predicates() {}
@@ -48,14 +43,12 @@ public final class Predicates {
   // interface which specifies an accept(PredicateVisitor) method.
 
   /** Returns a predicate that always evaluates to {@code true}. */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Predicate<T> alwaysTrue() {
+  public static <T extends Object> Predicate<T> alwaysTrue() {
     return ObjectPredicate.ALWAYS_TRUE.withNarrowedType();
   }
 
   /** Returns a predicate that always evaluates to {@code false}. */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Predicate<T> alwaysFalse() {
+  public static <T extends Object> Predicate<T> alwaysFalse() {
     return ObjectPredicate.ALWAYS_FALSE.withNarrowedType();
   }
 
@@ -63,8 +56,7 @@ public final class Predicates {
    * Returns a predicate that evaluates to {@code true} if the object reference being tested is
    * null.
    */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Predicate<T> isNull() {
+  public static <T extends Object> Predicate<T> isNull() {
     return ObjectPredicate.IS_NULL.withNarrowedType();
   }
 
@@ -72,8 +64,7 @@ public final class Predicates {
    * Returns a predicate that evaluates to {@code true} if the object reference being tested is not
    * null.
    */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Predicate<T> notNull() {
+  public static <T extends Object> Predicate<T> notNull() {
     return ObjectPredicate.NOT_NULL.withNarrowedType();
   }
 
@@ -81,7 +72,7 @@ public final class Predicates {
    * Returns a predicate that evaluates to {@code true} if the given predicate evaluates to {@code
    * false}.
    */
-  public static <T extends @Nullable Object> Predicate<T> not(Predicate<T> predicate) {
+  public static <T extends Object> Predicate<T> not(Predicate<T> predicate) {
     return new NotPredicate<T>(predicate);
   }
 
@@ -92,7 +83,7 @@ public final class Predicates {
    * changes to it won't alter the behavior of this predicate. If {@code components} is empty, the
    * returned predicate will always evaluate to {@code true}.
    */
-  public static <T extends @Nullable Object> Predicate<T> and(
+  public static <T extends Object> Predicate<T> and(
       Iterable<? extends Predicate<? super T>> components) {
     return new AndPredicate<T>(defensiveCopy(components));
   }
@@ -105,7 +96,7 @@ public final class Predicates {
    * returned predicate will always evaluate to {@code true}.
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> Predicate<T> and(Predicate<? super T>... components) {
+  public static <T extends Object> Predicate<T> and(Predicate<? super T>... components) {
     return new AndPredicate<T>(defensiveCopy(components));
   }
 
@@ -114,7 +105,7 @@ public final class Predicates {
    * true}. The components are evaluated in order, and evaluation will be "short-circuited" as soon
    * as a false predicate is found.
    */
-  public static <T extends @Nullable Object> Predicate<T> and(
+  public static <T extends Object> Predicate<T> and(
       Predicate<? super T> first, Predicate<? super T> second) {
     return new AndPredicate<T>(Predicates.<T>asList(checkNotNull(first), checkNotNull(second)));
   }
@@ -126,7 +117,7 @@ public final class Predicates {
    * changes to it won't alter the behavior of this predicate. If {@code components} is empty, the
    * returned predicate will always evaluate to {@code false}.
    */
-  public static <T extends @Nullable Object> Predicate<T> or(
+  public static <T extends Object> Predicate<T> or(
       Iterable<? extends Predicate<? super T>> components) {
     return new OrPredicate<T>(defensiveCopy(components));
   }
@@ -139,7 +130,7 @@ public final class Predicates {
    * returned predicate will always evaluate to {@code false}.
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> Predicate<T> or(Predicate<? super T>... components) {
+  public static <T extends Object> Predicate<T> or(Predicate<? super T>... components) {
     return new OrPredicate<T>(defensiveCopy(components));
   }
 
@@ -148,7 +139,7 @@ public final class Predicates {
    * {@code true}. The components are evaluated in order, and evaluation will be "short-circuited"
    * as soon as a true predicate is found.
    */
-  public static <T extends @Nullable Object> Predicate<T> or(
+  public static <T extends Object> Predicate<T> or(
       Predicate<? super T> first, Predicate<? super T> second) {
     return new OrPredicate<T>(Predicates.<T>asList(checkNotNull(first), checkNotNull(second)));
   }
@@ -157,7 +148,7 @@ public final class Predicates {
    * Returns a predicate that evaluates to {@code true} if the object being tested {@code equals()}
    * the given target or both are null.
    */
-  public static <T extends @Nullable Object> Predicate<T> equalTo(@ParametricNullness T target) {
+  public static <T extends Object> Predicate<T> equalTo(@ParametricNullness T target) {
     return (target == null)
         ? Predicates.<T>isNull()
         : new IsEqualToPredicate(target).withNarrowedType();
@@ -176,8 +167,8 @@ public final class Predicates {
    * example, {@code instanceOf(ArrayList.class)} will yield different results for the two equal
    * instances {@code Lists.newArrayList(1)} and {@code Arrays.asList(1)}.
    */
-  @GwtIncompatible // Class.isInstance
-  public static <T extends @Nullable Object> Predicate<T> instanceOf(Class<?> clazz) {
+  // Class.isInstance
+  public static <T extends Object> Predicate<T> instanceOf(Class<?> clazz) {
     return new InstanceOfPredicate<>(clazz);
   }
 
@@ -195,8 +186,7 @@ public final class Predicates {
    *
    * @since 20.0 (since 10.0 under the incorrect name {@code assignableFrom})
    */
-  @GwtIncompatible // Class.isAssignableFrom
-  @Beta
+  // Class.isAssignableFrom
   public static Predicate<Class<?>> subtypeOf(Class<?> clazz) {
     return new SubtypeOfPredicate(clazz);
   }
@@ -212,7 +202,7 @@ public final class Predicates {
    *
    * @param target the collection that may contain the function input
    */
-  public static <T extends @Nullable Object> Predicate<T> in(Collection<? extends T> target) {
+  public static <T extends Object> Predicate<T> in(Collection<? extends T> target) {
     return new InPredicate<T>(target);
   }
 
@@ -222,7 +212,7 @@ public final class Predicates {
    *
    * @return the composition of the provided function and predicate
    */
-  public static <A extends @Nullable Object, B extends @Nullable Object> Predicate<A> compose(
+  public static <A extends Object, B extends Object> Predicate<A> compose(
       Predicate<B> predicate, Function<A, ? extends B> function) {
     return new CompositionPredicate<>(predicate, function);
   }
@@ -235,7 +225,7 @@ public final class Predicates {
    * @throws IllegalArgumentException if the pattern is invalid
    * @since 3.0
    */
-  @GwtIncompatible // Only used by other GWT-incompatible code.
+  // Only used by other GWT-incompatible code.
   public static Predicate<CharSequence> containsPattern(String pattern) {
     return new ContainsPatternFromStringPredicate(pattern);
   }
@@ -247,7 +237,6 @@ public final class Predicates {
    *
    * @since 3.0
    */
-  @GwtIncompatible(value = "java.util.regex.Pattern")
   public static Predicate<CharSequence> contains(Pattern pattern) {
     return new ContainsPatternPredicate(new JdkPattern(pattern));
   }
@@ -255,7 +244,7 @@ public final class Predicates {
   // End public API, begin private implementation classes.
 
   // Package private for GWT serialization.
-  enum ObjectPredicate implements Predicate<@Nullable Object> {
+  enum ObjectPredicate implements Predicate<Object> {
     /** @see Predicates#alwaysTrue() */
     ALWAYS_TRUE {
       @Override
@@ -306,13 +295,13 @@ public final class Predicates {
     };
 
     @SuppressWarnings("unchecked") // safe contravariant cast
-    <T extends @Nullable Object> Predicate<T> withNarrowedType() {
+    <T extends Object> Predicate<T> withNarrowedType() {
       return (Predicate<T>) this;
     }
   }
 
   /** @see Predicates#not(Predicate) */
-  private static class NotPredicate<T extends @Nullable Object>
+  private static class NotPredicate<T extends Object>
       implements Predicate<T>, Serializable {
     final Predicate<T> predicate;
 
@@ -348,7 +337,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#and(Iterable) */
-  private static class AndPredicate<T extends @Nullable Object>
+  private static class AndPredicate<T extends Object>
       implements Predicate<T>, Serializable {
     private final List<? extends Predicate<? super T>> components;
 
@@ -391,7 +380,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#or(Iterable) */
-  private static class OrPredicate<T extends @Nullable Object>
+  private static class OrPredicate<T extends Object>
       implements Predicate<T>, Serializable {
     private final List<? extends Predicate<? super T>> components;
 
@@ -447,7 +436,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#equalTo(Object) */
-  private static class IsEqualToPredicate implements Predicate<@Nullable Object>, Serializable {
+  private static class IsEqualToPredicate implements Predicate<Object>, Serializable {
     private final Object target;
 
     private IsEqualToPredicate(Object target) {
@@ -481,14 +470,14 @@ public final class Predicates {
     private static final long serialVersionUID = 0;
 
     @SuppressWarnings("unchecked") // safe contravariant cast
-    <T extends @Nullable Object> Predicate<T> withNarrowedType() {
+    <T extends Object> Predicate<T> withNarrowedType() {
       return (Predicate<T>) this;
     }
   }
 
   /** @see Predicates#instanceOf(Class) */
-  @GwtIncompatible // Class.isInstance
-  private static class InstanceOfPredicate<T extends @Nullable Object>
+  // Class.isInstance
+  private static class InstanceOfPredicate<T extends Object>
       implements Predicate<T>, Serializable {
     private final Class<?> clazz;
 
@@ -524,7 +513,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#subtypeOf(Class) */
-  @GwtIncompatible // Class.isAssignableFrom
+  // Class.isAssignableFrom
   private static class SubtypeOfPredicate implements Predicate<Class<?>>, Serializable {
     private final Class<?> clazz;
 
@@ -560,7 +549,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#in(Collection) */
-  private static class InPredicate<T extends @Nullable Object>
+  private static class InPredicate<T extends Object>
       implements Predicate<T>, Serializable {
     private final Collection<?> target;
 
@@ -600,7 +589,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#compose(Predicate, Function) */
-  private static class CompositionPredicate<A extends @Nullable Object, B extends @Nullable Object>
+  private static class CompositionPredicate<A extends Object, B extends Object>
       implements Predicate<A>, Serializable {
     final Predicate<B> p;
     final Function<A, ? extends B> f;
@@ -639,7 +628,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#contains(Pattern) */
-  @GwtIncompatible // Only used by other GWT-incompatible code.
+  // Only used by other GWT-incompatible code.
   private static class ContainsPatternPredicate implements Predicate<CharSequence>, Serializable {
     final CommonPattern pattern;
 
@@ -687,7 +676,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#containsPattern(String) */
-  @GwtIncompatible // Only used by other GWT-incompatible code.
+  // Only used by other GWT-incompatible code.
   private static class ContainsPatternFromStringPredicate extends ContainsPatternPredicate {
 
     ContainsPatternFromStringPredicate(String string) {
@@ -702,7 +691,7 @@ public final class Predicates {
     private static final long serialVersionUID = 0;
   }
 
-  private static <T extends @Nullable Object> List<Predicate<? super T>> asList(
+  private static <T extends Object> List<Predicate<? super T>> asList(
       Predicate<? super T> first, Predicate<? super T> second) {
     // TODO(kevinb): understand why we still get a warning despite @SafeVarargs!
     return Arrays.<Predicate<? super T>>asList(first, second);
diff --git a/android/guava/src/com/google/common/base/Present.java b/android/guava/src/com/google/common/base/Present.java
index 59efebc..35d951e 100644
--- a/android/guava/src/com/google/common/base/Present.java
+++ b/android/guava/src/com/google/common/base/Present.java
@@ -16,13 +16,11 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.Set;
 import javax.annotation.CheckForNull;
 
 /** Implementation of an {@link Optional} containing a reference. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class Present<T> extends Optional<T> {
   private final T reference;
diff --git a/android/guava/src/com/google/common/base/SmallCharMatcher.java b/android/guava/src/com/google/common/base/SmallCharMatcher.java
index f0e801b..7bc52b0 100644
--- a/android/guava/src/com/google/common/base/SmallCharMatcher.java
+++ b/android/guava/src/com/google/common/base/SmallCharMatcher.java
@@ -14,8 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.CharMatcher.NamedFastMatcher;
 import java.util.BitSet;
 
@@ -25,7 +23,7 @@ import java.util.BitSet;
  *
  * @author Christopher Swenson
  */
-@GwtIncompatible // no precomputation is done in GWT
+// no precomputation is done in GWT
 @ElementTypesAreNonnullByDefault
 final class SmallCharMatcher extends NamedFastMatcher {
   static final int MAX_SIZE = 1023;
@@ -70,7 +68,6 @@ final class SmallCharMatcher extends NamedFastMatcher {
    * with linear probing in its implementation. The returned size is the smallest power of two that
    * can hold setSize elements with the desired load factor.
    */
-  @VisibleForTesting
   static int chooseTableSize(int setSize) {
     if (setSize == 1) {
       return 2;
diff --git a/android/guava/src/com/google/common/base/Splitter.java b/android/guava/src/com/google/common/base/Splitter.java
index bde2e0e..7f87b93 100644
--- a/android/guava/src/com/google/common/base/Splitter.java
+++ b/android/guava/src/com/google/common/base/Splitter.java
@@ -17,9 +17,6 @@ package com.google.common.base;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
@@ -97,7 +94,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Splitter {
   private final CharMatcher trimmer;
@@ -212,7 +208,7 @@ public final class Splitter {
    * @return a splitter, with default settings, that uses this pattern
    * @throws IllegalArgumentException if {@code separatorPattern} matches the empty string
    */
-  @GwtIncompatible // java.util.regex
+  // java.util.regex
   public static Splitter on(Pattern separatorPattern) {
     return on(new JdkPattern(separatorPattern));
   }
@@ -255,7 +251,7 @@ public final class Splitter {
    * @throws IllegalArgumentException if {@code separatorPattern} matches the empty string or is a
    *     malformed expression
    */
-  @GwtIncompatible // java.util.regex
+  // java.util.regex
   public static Splitter onPattern(String separatorPattern) {
     return on(Platform.compilePattern(separatorPattern));
   }
@@ -429,7 +425,6 @@ public final class Splitter {
    *
    * @since 10.0
    */
-  @Beta
   public MapSplitter withKeyValueSeparator(String separator) {
     return withKeyValueSeparator(on(separator));
   }
@@ -440,7 +435,6 @@ public final class Splitter {
    *
    * @since 14.0
    */
-  @Beta
   public MapSplitter withKeyValueSeparator(char separator) {
     return withKeyValueSeparator(on(separator));
   }
@@ -464,7 +458,6 @@ public final class Splitter {
    *
    * @since 10.0
    */
-  @Beta
   public MapSplitter withKeyValueSeparator(Splitter keyValueSplitter) {
     return new MapSplitter(this, keyValueSplitter);
   }
@@ -477,7 +470,6 @@ public final class Splitter {
    *
    * @since 10.0
    */
-  @Beta
   public static final class MapSplitter {
     private static final String INVALID_ENTRY_MESSAGE = "Chunk [%s] is not a valid entry";
     private final Splitter outerSplitter;
diff --git a/android/guava/src/com/google/common/base/StandardSystemProperty.java b/android/guava/src/com/google/common/base/StandardSystemProperty.java
index dc29792..e480500 100644
--- a/android/guava/src/com/google/common/base/StandardSystemProperty.java
+++ b/android/guava/src/com/google/common/base/StandardSystemProperty.java
@@ -14,7 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -23,7 +22,7 @@ import javax.annotation.CheckForNull;
  * @author Kurt Alfred Kluever
  * @since 15.0
  */
-@GwtIncompatible // java.lang.System#getProperty
+// java.lang.System#getProperty
 @ElementTypesAreNonnullByDefault
 public enum StandardSystemProperty {
 
diff --git a/android/guava/src/com/google/common/base/Stopwatch.java b/android/guava/src/com/google/common/base/Stopwatch.java
index f76c098..e59d637 100644
--- a/android/guava/src/com/google/common/base/Stopwatch.java
+++ b/android/guava/src/com/google/common/base/Stopwatch.java
@@ -24,8 +24,6 @@ import static java.util.concurrent.TimeUnit.MINUTES;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -85,7 +83,6 @@ import java.util.concurrent.TimeUnit;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("GoodTime") // lots of violations
 @ElementTypesAreNonnullByDefault
 public final class Stopwatch {
@@ -152,7 +149,6 @@ public final class Stopwatch {
    * @return this {@code Stopwatch} instance
    * @throws IllegalStateException if the stopwatch is already running.
    */
-  @CanIgnoreReturnValue
   public Stopwatch start() {
     checkState(!isRunning, "This stopwatch is already running.");
     isRunning = true;
@@ -167,7 +163,6 @@ public final class Stopwatch {
    * @return this {@code Stopwatch} instance
    * @throws IllegalStateException if the stopwatch is already stopped.
    */
-  @CanIgnoreReturnValue
   public Stopwatch stop() {
     long tick = ticker.read();
     checkState(isRunning, "This stopwatch is already stopped.");
@@ -181,7 +176,6 @@ public final class Stopwatch {
    *
    * @return this {@code Stopwatch} instance
    */
-  @CanIgnoreReturnValue
   public Stopwatch reset() {
     elapsedNanos = 0;
     isRunning = false;
diff --git a/android/guava/src/com/google/common/base/Strings.java b/android/guava/src/com/google/common/base/Strings.java
index fa36266..8834df5 100644
--- a/android/guava/src/com/google/common/base/Strings.java
+++ b/android/guava/src/com/google/common/base/Strings.java
@@ -18,11 +18,8 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.util.logging.Level.WARNING;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@code String} or {@code CharSequence} instances.
@@ -30,7 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 3.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Strings {
   private Strings() {}
@@ -218,7 +214,6 @@ public final class Strings {
    * True when a valid surrogate pair starts at the given {@code index} in the given {@code string}.
    * Out-of-range indexes return false.
    */
-  @VisibleForTesting
   static boolean validSurrogatePairAt(CharSequence string, int index) {
     return index >= 0
         && index <= (string.length() - 2)
diff --git a/android/guava/src/com/google/common/base/Supplier.java b/android/guava/src/com/google/common/base/Supplier.java
index f9e1e34..2c152e7 100644
--- a/android/guava/src/com/google/common/base/Supplier.java
+++ b/android/guava/src/com/google/common/base/Supplier.java
@@ -14,9 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A class that can supply objects of a single type; a pre-Java-8 version of {@link
@@ -45,16 +42,14 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Harry Heymann
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface Supplier<T extends @Nullable Object> {
+public interface Supplier<T extends Object> {
   /**
    * Retrieves an instance of the appropriate type. The returned object may or may not be a new
    * instance, depending on the implementation.
    *
    * @return an instance of the appropriate type
    */
-  @CanIgnoreReturnValue
   @ParametricNullness
   T get();
 }
diff --git a/android/guava/src/com/google/common/base/Suppliers.java b/android/guava/src/com/google/common/base/Suppliers.java
index 57d3486..5d7374b 100644
--- a/android/guava/src/com/google/common/base/Suppliers.java
+++ b/android/guava/src/com/google/common/base/Suppliers.java
@@ -14,17 +14,12 @@
 
 package com.google.common.base;
 
-import static com.google.common.base.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.io.Serializable;
 import java.util.concurrent.TimeUnit;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Useful suppliers.
@@ -35,7 +30,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Harry Heymann
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Suppliers {
   private Suppliers() {}
@@ -46,12 +40,12 @@ public final class Suppliers {
    * and then applying {@code function} to that value. Note that the resulting supplier will not
    * call {@code supplier} or invoke {@code function} until it is called.
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> Supplier<T> compose(
+  public static <F extends Object, T extends Object> Supplier<T> compose(
       Function<? super F, T> function, Supplier<F> supplier) {
     return new SupplierComposition<>(function, supplier);
   }
 
-  private static class SupplierComposition<F extends @Nullable Object, T extends @Nullable Object>
+  private static class SupplierComposition<F extends Object, T extends Object>
       implements Supplier<T>, Serializable {
     final Function<? super F, T> function;
     final Supplier<F> supplier;
@@ -105,7 +99,7 @@ public final class Suppliers {
    * <p>If {@code delegate} is an instance created by an earlier call to {@code memoize}, it is
    * returned directly.
    */
-  public static <T extends @Nullable Object> Supplier<T> memoize(Supplier<T> delegate) {
+  public static <T extends Object> Supplier<T> memoize(Supplier<T> delegate) {
     if (delegate instanceof NonSerializableMemoizingSupplier
         || delegate instanceof MemoizingSupplier) {
       return delegate;
@@ -115,8 +109,7 @@ public final class Suppliers {
         : new NonSerializableMemoizingSupplier<T>(delegate);
   }
 
-  @VisibleForTesting
-  static class MemoizingSupplier<T extends @Nullable Object> implements Supplier<T>, Serializable {
+  static class MemoizingSupplier<T extends Object> implements Supplier<T>, Serializable {
     final Supplier<T> delegate;
     transient volatile boolean initialized;
     // "value" does not need to be volatile; visibility piggy-backs
@@ -155,8 +148,7 @@ public final class Suppliers {
     private static final long serialVersionUID = 0;
   }
 
-  @VisibleForTesting
-  static class NonSerializableMemoizingSupplier<T extends @Nullable Object> implements Supplier<T> {
+  static class NonSerializableMemoizingSupplier<T extends Object> implements Supplier<T> {
     @CheckForNull volatile Supplier<T> delegate;
     volatile boolean initialized;
     // "value" does not need to be volatile; visibility piggy-backs
@@ -224,14 +216,13 @@ public final class Suppliers {
    * @since 2.0
    */
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
-  public static <T extends @Nullable Object> Supplier<T> memoizeWithExpiration(
+  public static <T extends Object> Supplier<T> memoizeWithExpiration(
       Supplier<T> delegate, long duration, TimeUnit unit) {
     return new ExpiringMemoizingSupplier<T>(delegate, duration, unit);
   }
 
-  @VisibleForTesting
   @SuppressWarnings("GoodTime") // lots of violations
-  static class ExpiringMemoizingSupplier<T extends @Nullable Object>
+  static class ExpiringMemoizingSupplier<T extends Object>
       implements Supplier<T>, Serializable {
     final Supplier<T> delegate;
     final long durationNanos;
@@ -284,12 +275,12 @@ public final class Suppliers {
   }
 
   /** Returns a supplier that always supplies {@code instance}. */
-  public static <T extends @Nullable Object> Supplier<T> ofInstance(
+  public static <T extends Object> Supplier<T> ofInstance(
       @ParametricNullness T instance) {
     return new SupplierOfInstance<T>(instance);
   }
 
-  private static class SupplierOfInstance<T extends @Nullable Object>
+  private static class SupplierOfInstance<T extends Object>
       implements Supplier<T>, Serializable {
     @ParametricNullness final T instance;
 
@@ -329,12 +320,12 @@ public final class Suppliers {
    * Returns a supplier whose {@code get()} method synchronizes on {@code delegate} before calling
    * it, making it thread-safe.
    */
-  public static <T extends @Nullable Object> Supplier<T> synchronizedSupplier(
+  public static <T extends Object> Supplier<T> synchronizedSupplier(
       Supplier<T> delegate) {
     return new ThreadSafeSupplier<T>(delegate);
   }
 
-  private static class ThreadSafeSupplier<T extends @Nullable Object>
+  private static class ThreadSafeSupplier<T extends Object>
       implements Supplier<T>, Serializable {
     final Supplier<T> delegate;
 
@@ -366,15 +357,15 @@ public final class Suppliers {
    *
    * @since 8.0
    */
-  public static <T extends @Nullable Object> Function<Supplier<T>, T> supplierFunction() {
+  public static <T extends Object> Function<Supplier<T>, T> supplierFunction() {
     @SuppressWarnings("unchecked") // implementation is "fully variant"
     SupplierFunction<T> sf = (SupplierFunction<T>) SupplierFunctionImpl.INSTANCE;
     return sf;
   }
 
-  private interface SupplierFunction<T extends @Nullable Object> extends Function<Supplier<T>, T> {}
+  private interface SupplierFunction<T extends Object> extends Function<Supplier<T>, T> {}
 
-  private enum SupplierFunctionImpl implements SupplierFunction<@Nullable Object> {
+  private enum SupplierFunctionImpl implements SupplierFunction<Object> {
     INSTANCE;
 
     // Note: This makes T a "pass-through type"
diff --git a/android/guava/src/com/google/common/base/Throwables.java b/android/guava/src/com/google/common/base/Throwables.java
index 7832d18..6b52bce 100644
--- a/android/guava/src/com/google/common/base/Throwables.java
+++ b/android/guava/src/com/google/common/base/Throwables.java
@@ -17,13 +17,7 @@ package com.google.common.base;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.util.Arrays.asList;
 import static java.util.Collections.unmodifiableList;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
@@ -45,7 +39,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Throwables {
   private Throwables() {}
@@ -70,7 +63,7 @@ public final class Throwables {
    *
    * @since 20.0
    */
-  @GwtIncompatible // Class.cast, Class.isInstance
+  // Class.cast, Class.isInstance
   public static <X extends Throwable> void throwIfInstanceOf(
       Throwable throwable, Class<X> declaredType) throws X {
     checkNotNull(throwable);
@@ -99,7 +92,7 @@ public final class Throwables {
    *     null}.
    */
   @Deprecated
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public static <X extends Throwable> void propagateIfInstanceOf(
       @CheckForNull Throwable throwable, Class<X> declaredType) throws X {
     if (throwable != null) {
@@ -155,7 +148,6 @@ public final class Throwables {
    *     null}.
    */
   @Deprecated
-  @GwtIncompatible
   public static void propagateIfPossible(@CheckForNull Throwable throwable) {
     if (throwable != null) {
       throwIfUnchecked(throwable);
@@ -180,7 +172,7 @@ public final class Throwables {
    * @param throwable the Throwable to possibly propagate
    * @param declaredType the single checked exception type declared by the calling method
    */
-  @GwtIncompatible // propagateIfInstanceOf
+  // propagateIfInstanceOf
   public static <X extends Throwable> void propagateIfPossible(
       @CheckForNull Throwable throwable, Class<X> declaredType) throws X {
     propagateIfInstanceOf(throwable, declaredType);
@@ -198,7 +190,7 @@ public final class Throwables {
    * @param declaredType1 any checked exception type declared by the calling method
    * @param declaredType2 any other checked exception type declared by the calling method
    */
-  @GwtIncompatible // propagateIfInstanceOf
+  // propagateIfInstanceOf
   public static <X1 extends Throwable, X2 extends Throwable> void propagateIfPossible(
       @CheckForNull Throwable throwable, Class<X1> declaredType1, Class<X2> declaredType2)
       throws X1, X2 {
@@ -235,8 +227,6 @@ public final class Throwables {
    *     background on the deprecation, read <a href="https://goo.gl/Ivn2kc">Why we deprecated
    *     {@code Throwables.propagate}</a>.
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible
   @Deprecated
   public static RuntimeException propagate(Throwable throwable) {
     throwIfUnchecked(throwable);
@@ -290,7 +280,7 @@ public final class Throwables {
    * @return an unmodifiable list containing the cause chain starting with {@code throwable}
    * @throws IllegalArgumentException if there is a loop in the causal chain
    */
-  @Beta // TODO(kevinb): decide best return type
+  // TODO(kevinb): decide best return type
   public static List<Throwable> getCausalChain(Throwable throwable) {
     checkNotNull(throwable);
     List<Throwable> causes = new ArrayList<>(4);
@@ -330,8 +320,7 @@ public final class Throwables {
    *     ClassCastException}'s cause is {@code throwable}.
    * @since 22.0
    */
-  @Beta
-  @GwtIncompatible // Class.cast(Object)
+  // Class.cast(Object)
   @CheckForNull
   public static <X extends Throwable> X getCauseAs(
       Throwable throwable, Class<X> expectedCauseType) {
@@ -349,7 +338,7 @@ public final class Throwables {
    * parsing the resulting string; if you need programmatic access to the stack frames, you can call
    * {@link Throwable#getStackTrace()}.
    */
-  @GwtIncompatible // java.io.PrintWriter, java.io.StringWriter
+  // java.io.PrintWriter, java.io.StringWriter
   public static String getStackTraceAsString(Throwable throwable) {
     StringWriter stringWriter = new StringWriter();
     throwable.printStackTrace(new PrintWriter(stringWriter));
@@ -384,8 +373,7 @@ public final class Throwables {
    * @since 19.0
    */
   // TODO(cpovirk): Say something about the possibility that List access could fail at runtime?
-  @Beta
-  @GwtIncompatible // lazyStackTraceIsLazy, jlaStackTrace
+  // lazyStackTraceIsLazy, jlaStackTrace
   // TODO(cpovirk): Consider making this available under GWT (slow implementation only).
   public static List<StackTraceElement> lazyStackTrace(Throwable throwable) {
     return lazyStackTraceIsLazy()
@@ -399,13 +387,12 @@ public final class Throwables {
    *
    * @since 19.0
    */
-  @Beta
-  @GwtIncompatible // getStackTraceElementMethod
+  // getStackTraceElementMethod
   public static boolean lazyStackTraceIsLazy() {
     return getStackTraceElementMethod != null && getStackTraceDepthMethod != null;
   }
 
-  @GwtIncompatible // invokeAccessibleNonThrowingMethod
+  // invokeAccessibleNonThrowingMethod
   private static List<StackTraceElement> jlaStackTrace(final Throwable t) {
     checkNotNull(t);
     /*
@@ -435,7 +422,7 @@ public final class Throwables {
     };
   }
 
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   private static Object invokeAccessibleNonThrowingMethod(
       Method method, Object receiver, Object... params) {
     try {
@@ -448,16 +435,15 @@ public final class Throwables {
   }
 
   /** JavaLangAccess class name to load using reflection */
-  @GwtIncompatible // not used by GWT emulation
+  // not used by GWT emulation
   private static final String JAVA_LANG_ACCESS_CLASSNAME = "sun.misc.JavaLangAccess";
 
   /** SharedSecrets class name to load using reflection */
-  @GwtIncompatible // not used by GWT emulation
-  @VisibleForTesting
+  // not used by GWT emulation
   static final String SHARED_SECRETS_CLASSNAME = "sun.misc.SharedSecrets";
 
   /** Access to some fancy internal JVM internals. */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static final Object jla = getJLA();
 
@@ -465,7 +451,7 @@ public final class Throwables {
    * The "getStackTraceElementMethod" method, only available on some JDKs so we use reflection to
    * find it when available. When this is null, use the slow way.
    */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static final Method getStackTraceElementMethod = (jla == null) ? null : getGetMethod();
 
@@ -473,7 +459,7 @@ public final class Throwables {
    * The "getStackTraceDepth" method, only available on some JDKs so we use reflection to find it
    * when available. When this is null, use the slow way.
    */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static final Method getStackTraceDepthMethod = (jla == null) ? null : getSizeMethod(jla);
 
@@ -481,7 +467,7 @@ public final class Throwables {
    * Returns the JavaLangAccess class that is present in all Sun JDKs. It is not allowed in
    * AppEngine, and not present in non-Sun JDKs.
    */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static Object getJLA() {
     try {
@@ -507,7 +493,7 @@ public final class Throwables {
    * Returns the Method that can be used to resolve an individual StackTraceElement, or null if that
    * method cannot be found (it is only to be found in fairly recent JDKs).
    */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static Method getGetMethod() {
     return getJlaMethod("getStackTraceElement", Throwable.class, int.class);
@@ -522,7 +508,7 @@ public final class Throwables {
    * <p>See <a href="https://github.com/google/guava/issues/2887">Throwables#lazyStackTrace throws
    * UnsupportedOperationException</a>.
    */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static Method getSizeMethod(Object jla) {
     try {
@@ -537,7 +523,7 @@ public final class Throwables {
     }
   }
 
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static Method getJlaMethod(String name, Class<?>... parameterTypes) throws ThreadDeath {
     try {
diff --git a/android/guava/src/com/google/common/base/Ticker.java b/android/guava/src/com/google/common/base/Ticker.java
index d898735..4a7d6f8 100644
--- a/android/guava/src/com/google/common/base/Ticker.java
+++ b/android/guava/src/com/google/common/base/Ticker.java
@@ -14,7 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A time source; returns a time value representing the number of nanoseconds elapsed since some
@@ -27,7 +26,6 @@ import com.google.common.annotations.GwtCompatible;
  * @since 10.0 (<a href="https://github.com/google/guava/wiki/Compatibility">mostly
  *     source-compatible</a> since 9.0)
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class Ticker {
   /** Constructor for use by subclasses. */
diff --git a/android/guava/src/com/google/common/base/Utf8.java b/android/guava/src/com/google/common/base/Utf8.java
index bb945a3..8851b0e 100644
--- a/android/guava/src/com/google/common/base/Utf8.java
+++ b/android/guava/src/com/google/common/base/Utf8.java
@@ -18,8 +18,6 @@ import static com.google.common.base.Preconditions.checkPositionIndexes;
 import static java.lang.Character.MAX_SURROGATE;
 import static java.lang.Character.MIN_SURROGATE;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Low-level, high-performance utility methods related to the {@linkplain Charsets#UTF_8 UTF-8}
@@ -36,8 +34,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Clément Roux
  * @since 16.0
  */
-@Beta
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Utf8 {
   /**
diff --git a/android/guava/src/com/google/common/base/Verify.java b/android/guava/src/com/google/common/base/Verify.java
index b2e9f5f..4ee01d2 100644
--- a/android/guava/src/com/google/common/base/Verify.java
+++ b/android/guava/src/com/google/common/base/Verify.java
@@ -16,10 +16,7 @@ package com.google.common.base;
 
 import static com.google.common.base.Strings.lenientFormat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static convenience methods that serve the same purpose as Java language <a
@@ -87,7 +84,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 17.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Verify {
   /**
@@ -474,7 +470,6 @@ public final class Verify {
    * @throws VerifyException if {@code reference} is {@code null}
    * @see Preconditions#checkNotNull Preconditions.checkNotNull()
    */
-  @CanIgnoreReturnValue
   public static <T> T verifyNotNull(@CheckForNull T reference) {
     return verifyNotNull(reference, "expected a non-null reference");
   }
@@ -494,7 +489,6 @@ public final class Verify {
    * @throws VerifyException if {@code reference} is {@code null}
    * @see Preconditions#checkNotNull Preconditions.checkNotNull()
    */
-  @CanIgnoreReturnValue
   public static <T> T verifyNotNull(
       @CheckForNull T reference,
       String errorMessageTemplate,
diff --git a/android/guava/src/com/google/common/base/VerifyException.java b/android/guava/src/com/google/common/base/VerifyException.java
index 10b99de..f1cb7ca 100644
--- a/android/guava/src/com/google/common/base/VerifyException.java
+++ b/android/guava/src/com/google/common/base/VerifyException.java
@@ -14,7 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -24,7 +23,6 @@ import javax.annotation.CheckForNull;
  *
  * @since 17.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class VerifyException extends RuntimeException {
   /** Constructs a {@code VerifyException} with no message. */
diff --git a/android/guava/src/com/google/common/base/internal/Finalizer.java b/android/guava/src/com/google/common/base/internal/Finalizer.java
index 0da2206..5de7bcb 100644
--- a/android/guava/src/com/google/common/base/internal/Finalizer.java
+++ b/android/guava/src/com/google/common/base/internal/Finalizer.java
@@ -17,13 +17,11 @@ package com.google.common.base.internal;
 import java.lang.ref.PhantomReference;
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * Thread that finalizes referents. All references should implement {@code
@@ -116,10 +114,8 @@ public class Finalizer implements Runnable {
   // By preference, we will use the Thread constructor that has an `inheritThreadLocals` parameter.
   // But before Java 9, our only way not to inherit ThreadLocals is to zap them after the thread
   // is created, by accessing a private field.
-  @NullableDecl
   private static final Constructor<Thread> bigThreadConstructor = getBigThreadConstructor();
 
-  @NullableDecl
   private static final Field inheritableThreadLocals =
       (bigThreadConstructor == null) ? getInheritableThreadLocalsField() : null;
 
@@ -192,7 +188,6 @@ public class Finalizer implements Runnable {
   }
 
   /** Looks up FinalizableReference.finalizeReferent() method. */
-  @NullableDecl
   private Method getFinalizeReferentMethod() {
     Class<?> finalizableReferenceClass = finalizableReferenceClassReference.get();
     if (finalizableReferenceClass == null) {
@@ -211,7 +206,6 @@ public class Finalizer implements Runnable {
     }
   }
 
-  @NullableDecl
   private static Field getInheritableThreadLocalsField() {
     try {
       Field inheritableThreadLocals = Thread.class.getDeclaredField("inheritableThreadLocals");
@@ -226,7 +220,6 @@ public class Finalizer implements Runnable {
     }
   }
 
-  @NullableDecl
   private static Constructor<Thread> getBigThreadConstructor() {
     try {
       return Thread.class.getConstructor(
diff --git a/android/guava/src/com/google/common/base/package-info.java b/android/guava/src/com/google/common/base/package-info.java
index f221856..f4e7d6a 100644
--- a/android/guava/src/com/google/common/base/package-info.java
+++ b/android/guava/src/com/google/common/base/package-info.java
@@ -55,9 +55,7 @@
  * </ul>
  *
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.base;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/cache/AbstractCache.java b/android/guava/src/com/google/common/cache/AbstractCache.java
index eec5fdc..a1f9d4c 100644
--- a/android/guava/src/com/google/common/cache/AbstractCache.java
+++ b/android/guava/src/com/google/common/cache/AbstractCache.java
@@ -14,8 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -37,7 +35,6 @@ import java.util.concurrent.ExecutionException;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractCache<K, V> implements Cache<K, V> {
 
diff --git a/android/guava/src/com/google/common/cache/AbstractLoadingCache.java b/android/guava/src/com/google/common/cache/AbstractLoadingCache.java
index 489597c..77d7935 100644
--- a/android/guava/src/com/google/common/cache/AbstractLoadingCache.java
+++ b/android/guava/src/com/google/common/cache/AbstractLoadingCache.java
@@ -14,8 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import java.util.Map;
@@ -37,7 +35,6 @@ import java.util.concurrent.ExecutionException;
  * @author Charles Fry
  * @since 11.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractLoadingCache<K, V> extends AbstractCache<K, V>
     implements LoadingCache<K, V> {
diff --git a/android/guava/src/com/google/common/cache/Cache.java b/android/guava/src/com/google/common/cache/Cache.java
index 1234bb6..d0dcbb9 100644
--- a/android/guava/src/com/google/common/cache/Cache.java
+++ b/android/guava/src/com/google/common/cache/Cache.java
@@ -14,13 +14,8 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.ExecutionError;
 import com.google.common.util.concurrent.UncheckedExecutionException;
-import com.google.errorprone.annotations.CheckReturnValue;
-import com.google.errorprone.annotations.CompatibleWith;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentMap;
@@ -40,8 +35,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 10.0
  */
-@DoNotMock("Use CacheBuilder.newBuilder().build()")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public interface Cache<K, V> {
 
@@ -150,7 +143,6 @@ public interface Cache<K, V> {
   void invalidateAll();
 
   /** Returns the approximate number of entries in this cache. */
-  @CheckReturnValue
   long size();
 
   /**
@@ -164,7 +156,6 @@ public interface Cache<K, V> {
    * all values is returned.
    *
    */
-  @CheckReturnValue
   CacheStats stats();
 
   /**
@@ -180,7 +171,6 @@ public interface Cache<K, V> {
    * {@code ConcurrentMap} documentation. They will not function correctly and it is impossible for
    * Guava to fix them until Guava is ready to <i>require</i> Java 8 for all users.
    */
-  @CheckReturnValue
   ConcurrentMap<K, V> asMap();
 
   /**
diff --git a/android/guava/src/com/google/common/cache/CacheBuilder.java b/android/guava/src/com/google/common/cache/CacheBuilder.java
index 227b2c2..067c085 100644
--- a/android/guava/src/com/google/common/cache/CacheBuilder.java
+++ b/android/guava/src/com/google/common/cache/CacheBuilder.java
@@ -18,8 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Equivalence;
 import com.google.common.base.MoreObjects;
@@ -29,9 +27,7 @@ import com.google.common.base.Ticker;
 import com.google.common.cache.AbstractCache.SimpleStatsCounter;
 import com.google.common.cache.AbstractCache.StatsCounter;
 import com.google.common.cache.LocalCache.Strength;
-import com.google.errorprone.annotations.CheckReturnValue;
 import java.lang.ref.SoftReference;
-import java.lang.ref.WeakReference;
 import java.util.ConcurrentModificationException;
 import java.util.IdentityHashMap;
 import java.util.Map;
@@ -39,7 +35,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A builder of {@link LoadingCache} and {@link Cache} instances.
@@ -190,7 +185,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class CacheBuilder<K, V> {
   private static final int DEFAULT_INITIAL_CAPACITY = 16;
@@ -271,10 +265,10 @@ public final class CacheBuilder<K, V> {
   int concurrencyLevel = UNSET_INT;
   long maximumSize = UNSET_INT;
   long maximumWeight = UNSET_INT;
-  @Nullable Weigher<? super K, ? super V> weigher;
+  Weigher<? super K, ? super V> weigher;
 
-  @Nullable Strength keyStrength;
-  @Nullable Strength valueStrength;
+  Strength keyStrength;
+  Strength valueStrength;
 
   @SuppressWarnings("GoodTime") // should be a java.time.Duration
   long expireAfterWriteNanos = UNSET_INT;
@@ -285,11 +279,11 @@ public final class CacheBuilder<K, V> {
   @SuppressWarnings("GoodTime") // should be a java.time.Duration
   long refreshNanos = UNSET_INT;
 
-  @Nullable Equivalence<Object> keyEquivalence;
-  @Nullable Equivalence<Object> valueEquivalence;
+  Equivalence<Object> keyEquivalence;
+  Equivalence<Object> valueEquivalence;
 
-  @Nullable RemovalListener<? super K, ? super V> removalListener;
-  @Nullable Ticker ticker;
+  RemovalListener<? super K, ? super V> removalListener;
+  Ticker ticker;
 
   Supplier<? extends StatsCounter> statsCounterSupplier = NULL_STATS_COUNTER;
 
@@ -302,7 +296,6 @@ public final class CacheBuilder<K, V> {
    * <p>Note that while this return type is {@code CacheBuilder<Object, Object>}, type parameters on
    * the {@link #build} methods allow you to create a cache of any key and value type desired.
    */
-  @CheckReturnValue
   public static CacheBuilder<Object, Object> newBuilder() {
     return new CacheBuilder<>();
   }
@@ -312,8 +305,7 @@ public final class CacheBuilder<K, V> {
    *
    * @since 12.0
    */
-  @GwtIncompatible // To be supported
-  @CheckReturnValue
+  // To be supported
   public static CacheBuilder<Object, Object> from(CacheBuilderSpec spec) {
     return spec.toCacheBuilder().lenientParsing();
   }
@@ -325,8 +317,7 @@ public final class CacheBuilder<K, V> {
    * @param spec a String in the format specified by {@link CacheBuilderSpec}
    * @since 12.0
    */
-  @GwtIncompatible // To be supported
-  @CheckReturnValue
+  // To be supported
   public static CacheBuilder<Object, Object> from(String spec) {
     return from(CacheBuilderSpec.parse(spec));
   }
@@ -336,7 +327,7 @@ public final class CacheBuilder<K, V> {
    *
    * @return this {@code CacheBuilder} instance (for chaining)
    */
-  @GwtIncompatible // To be supported
+  // To be supported
   CacheBuilder<K, V> lenientParsing() {
     strictParsing = false;
     return this;
@@ -350,7 +341,7 @@ public final class CacheBuilder<K, V> {
    *
    * @return this {@code CacheBuilder} instance (for chaining)
    */
-  @GwtIncompatible // To be supported
+  // To be supported
   CacheBuilder<K, V> keyEquivalence(Equivalence<Object> equivalence) {
     checkState(keyEquivalence == null, "key equivalence was already set to %s", keyEquivalence);
     keyEquivalence = checkNotNull(equivalence);
@@ -370,7 +361,7 @@ public final class CacheBuilder<K, V> {
    *
    * @return this {@code CacheBuilder} instance (for chaining)
    */
-  @GwtIncompatible // To be supported
+  // To be supported
   CacheBuilder<K, V> valueEquivalence(Equivalence<Object> equivalence) {
     checkState(
         valueEquivalence == null, "value equivalence was already set to %s", valueEquivalence);
@@ -513,7 +504,7 @@ public final class CacheBuilder<K, V> {
    * @throws IllegalStateException if a maximum weight or size was already set
    * @since 11.0
    */
-  @GwtIncompatible // To be supported
+  // To be supported
   public CacheBuilder<K, V> maximumWeight(long maximumWeight) {
     checkState(
         this.maximumWeight == UNSET_INT,
@@ -555,7 +546,7 @@ public final class CacheBuilder<K, V> {
    * @throws IllegalStateException if a maximum size was already set
    * @since 11.0
    */
-  @GwtIncompatible // To be supported
+  // To be supported
   public <K1 extends K, V1 extends V> CacheBuilder<K1, V1> weigher(
       Weigher<? super K1, ? super V1> weigher) {
     checkState(this.weigher == null);
@@ -602,7 +593,7 @@ public final class CacheBuilder<K, V> {
    * @return this {@code CacheBuilder} instance (for chaining)
    * @throws IllegalStateException if the key strength was already set
    */
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   public CacheBuilder<K, V> weakKeys() {
     return setKeyStrength(Strength.WEAK);
   }
@@ -634,7 +625,7 @@ public final class CacheBuilder<K, V> {
    * @return this {@code CacheBuilder} instance (for chaining)
    * @throws IllegalStateException if the value strength was already set
    */
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   public CacheBuilder<K, V> weakValues() {
     return setValueStrength(Strength.WEAK);
   }
@@ -659,7 +650,7 @@ public final class CacheBuilder<K, V> {
    * @return this {@code CacheBuilder} instance (for chaining)
    * @throws IllegalStateException if the value strength was already set
    */
-  @GwtIncompatible // java.lang.ref.SoftReference
+  // java.lang.ref.SoftReference
   public CacheBuilder<K, V> softValues() {
     return setValueStrength(Strength.SOFT);
   }
@@ -778,7 +769,7 @@ public final class CacheBuilder<K, V> {
    * @throws IllegalStateException if {@link #refreshAfterWrite} was already set
    * @since 11.0
    */
-  @GwtIncompatible // To be supported (synchronously).
+  // To be supported (synchronously).
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public CacheBuilder<K, V> refreshAfterWrite(long duration, TimeUnit unit) {
     checkNotNull(unit);
@@ -837,7 +828,6 @@ public final class CacheBuilder<K, V> {
    * @return this {@code CacheBuilder} instance (for chaining)
    * @throws IllegalStateException if a removal listener was already set
    */
-  @CheckReturnValue
   public <K1 extends K, V1 extends V> CacheBuilder<K1, V1> removalListener(
       RemovalListener<? super K1, ? super V1> listener) {
     checkState(this.removalListener == null);
@@ -890,7 +880,6 @@ public final class CacheBuilder<K, V> {
    * @param loader the cache loader used to obtain new values
    * @return a cache having the requested features
    */
-  @CheckReturnValue
   public <K1 extends K, V1 extends V> LoadingCache<K1, V1> build(
       CacheLoader<? super K1, V1> loader) {
     checkWeightWithWeigher();
@@ -909,7 +898,6 @@ public final class CacheBuilder<K, V> {
    * @return a cache having the requested features
    * @since 11.0
    */
-  @CheckReturnValue
   public <K1 extends K, V1 extends V> Cache<K1, V1> build() {
     checkWeightWithWeigher();
     checkNonLoadingCache();
diff --git a/android/guava/src/com/google/common/cache/CacheBuilderSpec.java b/android/guava/src/com/google/common/cache/CacheBuilderSpec.java
index 64b5ad2..ad6c1fe 100644
--- a/android/guava/src/com/google/common/cache/CacheBuilderSpec.java
+++ b/android/guava/src/com/google/common/cache/CacheBuilderSpec.java
@@ -17,19 +17,14 @@ package com.google.common.cache;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Strings.isNullOrEmpty;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Splitter;
 import com.google.common.cache.LocalCache.Strength;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.concurrent.TimeUnit;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A specification of a {@link CacheBuilder} configuration.
@@ -79,7 +74,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 12.0
  */
 @SuppressWarnings("GoodTime") // lots of violations (nanosecond math)
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class CacheBuilderSpec {
   /** Parses a single value. */
@@ -110,19 +104,19 @@ public final class CacheBuilderSpec {
           .put("refreshInterval", new RefreshDurationParser())
           .build();
 
-  @VisibleForTesting @CheckForNull Integer initialCapacity;
-  @VisibleForTesting @CheckForNull Long maximumSize;
-  @VisibleForTesting @CheckForNull Long maximumWeight;
-  @VisibleForTesting @CheckForNull Integer concurrencyLevel;
-  @VisibleForTesting @CheckForNull Strength keyStrength;
-  @VisibleForTesting @CheckForNull Strength valueStrength;
-  @VisibleForTesting @CheckForNull Boolean recordStats;
-  @VisibleForTesting long writeExpirationDuration;
-  @VisibleForTesting @CheckForNull TimeUnit writeExpirationTimeUnit;
-  @VisibleForTesting long accessExpirationDuration;
-  @VisibleForTesting @CheckForNull TimeUnit accessExpirationTimeUnit;
-  @VisibleForTesting long refreshDuration;
-  @VisibleForTesting @CheckForNull TimeUnit refreshTimeUnit;
+  @CheckForNull Integer initialCapacity;
+  @CheckForNull Long maximumSize;
+  @CheckForNull Long maximumWeight;
+  @CheckForNull Integer concurrencyLevel;
+  @CheckForNull Strength keyStrength;
+  @CheckForNull Strength valueStrength;
+  @CheckForNull Boolean recordStats;
+  long writeExpirationDuration;
+  @CheckForNull TimeUnit writeExpirationTimeUnit;
+  long accessExpirationDuration;
+  @CheckForNull TimeUnit accessExpirationTimeUnit;
+  long refreshDuration;
+  @CheckForNull TimeUnit refreshTimeUnit;
   /** Specification; used for toParseableString(). */
   private final String specification;
 
diff --git a/android/guava/src/com/google/common/cache/CacheLoader.java b/android/guava/src/com/google/common/cache/CacheLoader.java
index bb544cd..0cd1422 100644
--- a/android/guava/src/com/google/common/cache/CacheLoader.java
+++ b/android/guava/src/com/google/common/cache/CacheLoader.java
@@ -16,14 +16,11 @@ package com.google.common.cache;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Supplier;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListenableFutureTask;
-import com.google.errorprone.annotations.CheckReturnValue;
 import java.io.Serializable;
 import java.util.Map;
 import java.util.concurrent.Callable;
@@ -56,7 +53,6 @@ import java.util.concurrent.Executor;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public abstract class CacheLoader<K, V> {
   /** Constructor for use by subclasses. */
@@ -95,7 +91,7 @@ public abstract class CacheLoader<K, V> {
    *     the thread's interrupt status is set
    * @since 11.0
    */
-  @GwtIncompatible // Futures
+  // Futures
   public ListenableFuture<V> reload(K key, V oldValue) throws Exception {
     checkNotNull(key);
     checkNotNull(oldValue);
@@ -138,7 +134,6 @@ public abstract class CacheLoader<K, V> {
    * @param function the function to be used for loading values; must never return {@code null}
    * @return a cache loader that loads values by passing each key to {@code function}
    */
-  @CheckReturnValue
   public static <K, V> CacheLoader<K, V> from(Function<K, V> function) {
     return new FunctionToCacheLoader<>(function);
   }
@@ -152,7 +147,6 @@ public abstract class CacheLoader<K, V> {
    * @return a cache loader that loads values by calling {@link Supplier#get}, irrespective of the
    *     key
    */
-  @CheckReturnValue
   public static <V> CacheLoader<Object, V> from(Supplier<V> supplier) {
     return new SupplierToCacheLoader<V>(supplier);
   }
@@ -182,8 +176,7 @@ public abstract class CacheLoader<K, V> {
    *
    * @since 17.0
    */
-  @CheckReturnValue
-  @GwtIncompatible // Executor + Futures
+  // Executor + Futures
   public static <K, V> CacheLoader<K, V> asyncReloading(
       final CacheLoader<K, V> loader, final Executor executor) {
     checkNotNull(loader);
diff --git a/android/guava/src/com/google/common/cache/CacheStats.java b/android/guava/src/com/google/common/cache/CacheStats.java
index 8307e94..b41ad6c 100644
--- a/android/guava/src/com/google/common/cache/CacheStats.java
+++ b/android/guava/src/com/google/common/cache/CacheStats.java
@@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.math.LongMath.saturatedAdd;
 import static com.google.common.math.LongMath.saturatedSubtract;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import java.util.concurrent.Callable;
@@ -56,7 +55,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class CacheStats {
   private final long hitCount;
diff --git a/android/guava/src/com/google/common/cache/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/cache/ElementTypesAreNonnullByDefault.java
index bcf0fce..2cc8bd2 100644
--- a/android/guava/src/com/google/common/cache/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/cache/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/cache/ForwardingCache.java b/android/guava/src/com/google/common/cache/ForwardingCache.java
index f118977..ee86545 100644
--- a/android/guava/src/com/google/common/cache/ForwardingCache.java
+++ b/android/guava/src/com/google/common/cache/ForwardingCache.java
@@ -14,10 +14,8 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ForwardingObject;
-import com.google.common.collect.ImmutableMap;
 import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentMap;
@@ -32,7 +30,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingCache<K, V> extends ForwardingObject implements Cache<K, V> {
 
diff --git a/android/guava/src/com/google/common/cache/ForwardingLoadingCache.java b/android/guava/src/com/google/common/cache/ForwardingLoadingCache.java
index ecd44ca..7d4ae02 100644
--- a/android/guava/src/com/google/common/cache/ForwardingLoadingCache.java
+++ b/android/guava/src/com/google/common/cache/ForwardingLoadingCache.java
@@ -14,9 +14,7 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
 import java.util.concurrent.ExecutionException;
 
 /**
@@ -30,7 +28,6 @@ import java.util.concurrent.ExecutionException;
  * @author Charles Fry
  * @since 11.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingLoadingCache<K, V> extends ForwardingCache<K, V>
     implements LoadingCache<K, V> {
diff --git a/android/guava/src/com/google/common/cache/LoadingCache.java b/android/guava/src/com/google/common/cache/LoadingCache.java
index e338ac4..509d6ac 100644
--- a/android/guava/src/com/google/common/cache/LoadingCache.java
+++ b/android/guava/src/com/google/common/cache/LoadingCache.java
@@ -14,9 +14,7 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.ExecutionError;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import java.util.concurrent.ConcurrentMap;
@@ -38,7 +36,6 @@ import java.util.concurrent.ExecutionException;
  * @author Charles Fry
  * @since 11.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public interface LoadingCache<K, V> extends Cache<K, V>, Function<K, V> {
 
diff --git a/android/guava/src/com/google/common/cache/LocalCache.java b/android/guava/src/com/google/common/cache/LocalCache.java
index f61f68e..bf3854c 100644
--- a/android/guava/src/com/google/common/cache/LocalCache.java
+++ b/android/guava/src/com/google/common/cache/LocalCache.java
@@ -23,9 +23,6 @@ import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
 import com.google.common.base.Stopwatch;
@@ -37,8 +34,6 @@ import com.google.common.cache.CacheBuilder.OneWeigher;
 import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
 import com.google.common.cache.CacheLoader.UnsupportedLoadingOperationException;
 import com.google.common.collect.AbstractSequentialIterator;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
@@ -49,16 +44,12 @@ import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import com.google.common.util.concurrent.Uninterruptibles;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.Weak;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.Serializable;
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
 import java.lang.ref.SoftReference;
-import java.lang.ref.WeakReference;
 import java.util.AbstractCollection;
 import java.util.AbstractMap;
 import java.util.AbstractQueue;
@@ -81,7 +72,6 @@ import java.util.concurrent.atomic.AtomicReferenceArray;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * The concurrent hash map implementation built by {@link CacheBuilder}.
@@ -97,7 +87,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
   "GoodTime", // lots of violations (nanosecond math)
   "nullness", // too much trouble for the payoff
 })
-@GwtCompatible(emulated = true)
 // TODO(cpovirk): Annotate for nullness.
 class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V> {
 
@@ -230,7 +219,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
   final StatsCounter globalStatsCounter;
 
   /** The default cache loader to use on loading operations. */
-  @NullableDecl final CacheLoader<? super K, V> defaultLoader;
+  final CacheLoader<? super K, V> defaultLoader;
 
   /**
    * Creates a new, empty map with the specified strategy, initial capacity and concurrency level.
@@ -622,7 +611,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
   /** A reference to a value. */
   interface ValueReference<K, V> {
     /** Returns the value. Does not block or throw exceptions. */
-    @NullableDecl
     V get();
 
     /**
@@ -641,7 +629,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * Returns the entry associated with this value reference, or {@code null} if this value
      * reference is independent of any entry.
      */
-    @NullableDecl
     ReferenceEntry<K, V> getEntry();
 
     /**
@@ -953,7 +940,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     // The code below is exactly the same for each entry type.
 
     final int hash;
-    @NullableDecl final ReferenceEntry<K, V> next;
+    final ReferenceEntry<K, V> next;
     volatile ValueReference<K, V> valueReference = unset();
 
     @Override
@@ -997,7 +984,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
+    ReferenceEntry<K, V> nextAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1010,7 +997,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
+    ReferenceEntry<K, V> previousAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1043,7 +1030,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
+    ReferenceEntry<K, V> nextWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1056,7 +1043,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
+    ReferenceEntry<K, V> previousWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1089,7 +1076,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
+    ReferenceEntry<K, V> nextAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1102,7 +1089,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
+    ReferenceEntry<K, V> previousAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1129,7 +1116,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
+    ReferenceEntry<K, V> nextWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1142,7 +1129,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
+    ReferenceEntry<K, V> previousWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1240,7 +1227,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     // The code below is exactly the same for each entry type.
 
     final int hash;
-    @NullableDecl final ReferenceEntry<K, V> next;
+    final ReferenceEntry<K, V> next;
     volatile ValueReference<K, V> valueReference = unset();
 
     @Override
@@ -1285,7 +1272,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
+    ReferenceEntry<K, V> nextAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1298,7 +1285,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
+    ReferenceEntry<K, V> previousAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1332,7 +1319,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
+    ReferenceEntry<K, V> nextWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1345,7 +1332,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
+    ReferenceEntry<K, V> previousWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1379,7 +1366,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
+    ReferenceEntry<K, V> nextAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1392,7 +1379,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
+    ReferenceEntry<K, V> previousAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1419,7 +1406,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
+    ReferenceEntry<K, V> nextWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1432,7 +1419,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
+    ReferenceEntry<K, V> previousWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1663,7 +1650,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
   /**
    * This method is a convenience for testing. Code should call {@link Segment#newEntry} directly.
    */
-  @VisibleForTesting
   ReferenceEntry<K, V> newEntry(K key, int hash, @NullableDecl ReferenceEntry<K, V> next) {
     Segment<K, V> segment = segmentFor(hash);
     segment.lock();
@@ -1679,7 +1665,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
    */
   // Guarded By Segment.this
   @SuppressWarnings("GuardedBy")
-  @VisibleForTesting
   ReferenceEntry<K, V> copyEntry(ReferenceEntry<K, V> original, ReferenceEntry<K, V> newNext) {
     int hash = original.getHash();
     return segmentFor(hash).copyEntry(original, newNext);
@@ -1689,7 +1674,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
    * This method is a convenience for testing. Code should call {@link Segment#setValue} instead.
    */
   // Guarded By Segment.this
-  @VisibleForTesting
   ValueReference<K, V> newValueReference(ReferenceEntry<K, V> entry, V value, int weight) {
     int hash = entry.getHash();
     return valueStrength.referenceValue(segmentFor(hash), entry, checkNotNull(value), weight);
@@ -1715,7 +1699,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
    * This method is a convenience for testing. Code should call {@link Segment#getLiveValue}
    * instead.
    */
-  @VisibleForTesting
   boolean isLive(ReferenceEntry<K, V> entry, long now) {
     return segmentFor(entry.getHash()).getLiveValue(entry, now) != null;
   }
@@ -1742,7 +1725,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
    * cleanup stale entries. As such it should only be called outside of a segment context, such as
    * during iteration.
    */
-  @NullableDecl
   V getLiveValue(ReferenceEntry<K, V> entry, long now) {
     if (entry.getKey() == null) {
       return null;
@@ -1863,13 +1845,12 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * comments.
      */
 
-    @Weak final LocalCache<K, V> map;
+    final LocalCache<K, V> map;
 
     /** The number of live elements in this segment's region. */
     volatile int count;
 
     /** The weight of the live elements in this segment's region. */
-    @GuardedBy("this")
     long totalWeight;
 
     /**
@@ -1887,7 +1868,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     int threshold;
 
     /** The per-segment table. */
-    @NullableDecl volatile AtomicReferenceArray<ReferenceEntry<K, V>> table;
+    volatile AtomicReferenceArray<ReferenceEntry<K, V>> table;
 
     /** The maximum weight of this segment. UNSET_INT if there is no maximum. */
     final long maxSegmentWeight;
@@ -1896,13 +1877,13 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * The key reference queue contains entries whose keys have been garbage collected, and which
      * need to be cleaned up internally.
      */
-    @NullableDecl final ReferenceQueue<K> keyReferenceQueue;
+    final ReferenceQueue<K> keyReferenceQueue;
 
     /**
      * The value reference queue contains value references whose values have been garbage collected,
      * and which need to be cleaned up internally.
      */
-    @NullableDecl final ReferenceQueue<V> valueReferenceQueue;
+    final ReferenceQueue<V> valueReferenceQueue;
 
     /**
      * The recency queue is used to record which entries were accessed for updating the access
@@ -1921,14 +1902,12 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * A queue of elements currently in the map, ordered by write time. Elements are added to the
      * tail of the queue on write.
      */
-    @GuardedBy("this")
     final Queue<ReferenceEntry<K, V>> writeQueue;
 
     /**
      * A queue of elements currently in the map, ordered by access time. Elements are added to the
      * tail of the queue on access (note that writes count as accesses).
      */
-    @GuardedBy("this")
     final Queue<ReferenceEntry<K, V>> accessQueue;
 
     /** Accumulates cache statistics. */
@@ -1977,7 +1956,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       this.table = newTable;
     }
 
-    @GuardedBy("this")
     ReferenceEntry<K, V> newEntry(K key, int hash, @NullableDecl ReferenceEntry<K, V> next) {
       return map.entryFactory.newEntry(this, checkNotNull(key), hash, next);
     }
@@ -1986,7 +1964,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * Copies {@code original} into a new entry chained to {@code newNext}. Returns the new entry,
      * or {@code null} if {@code original} was already garbage collected.
      */
-    @GuardedBy("this")
     ReferenceEntry<K, V> copyEntry(ReferenceEntry<K, V> original, ReferenceEntry<K, V> newNext) {
       if (original.getKey() == null) {
         // key collected
@@ -2006,7 +1983,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     /** Sets a new value of an entry. Adds newly created entries at the end of the access queue. */
-    @GuardedBy("this")
     void setValue(ReferenceEntry<K, V> entry, K key, V value, long now) {
       ValueReference<K, V> previous = entry.getValueReference();
       int weight = map.weigher.weigh(key, value);
@@ -2058,7 +2034,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @NullableDecl
     V get(Object key, int hash) {
       try {
         if (count != 0) { // read-volatile
@@ -2269,7 +2244,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * {@code null} if another thread is performing the refresh or if an error occurs during
      * refresh.
      */
-    @NullableDecl
     V refresh(K key, int hash, CacheLoader<? super K, V> loader, boolean checkTime) {
       final LoadingValueReference<K, V> loadingValueReference =
           insertLoadingValueReference(key, hash, checkTime);
@@ -2292,7 +2266,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * Returns a newly inserted {@code LoadingValueReference}, or null if the live value reference
      * is already loading.
      */
-    @NullableDecl
     LoadingValueReference<K, V> insertLoadingValueReference(
         final K key, final int hash, boolean checkTime) {
       ReferenceEntry<K, V> e = null;
@@ -2360,7 +2333,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * Drain the key and value reference queues, cleaning up internal entries containing garbage
      * collected keys or values.
      */
-    @GuardedBy("this")
     void drainReferenceQueues() {
       if (map.usesKeyReferences()) {
         drainKeyReferenceQueue();
@@ -2370,7 +2342,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @GuardedBy("this")
     void drainKeyReferenceQueue() {
       Reference<? extends K> ref;
       int i = 0;
@@ -2384,7 +2355,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @GuardedBy("this")
     void drainValueReferenceQueue() {
       Reference<? extends V> ref;
       int i = 0;
@@ -2439,7 +2409,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * <p>Note: this method should only be called under lock, as it directly manipulates the
      * eviction queues. Unlocked reads should use {@link #recordRead}.
      */
-    @GuardedBy("this")
     void recordLockedRead(ReferenceEntry<K, V> entry, long now) {
       if (map.recordsAccess()) {
         entry.setAccessTime(now);
@@ -2451,7 +2420,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * Updates eviction metadata that {@code entry} was just written. This currently amounts to
      * adding {@code entry} to relevant eviction lists.
      */
-    @GuardedBy("this")
     void recordWrite(ReferenceEntry<K, V> entry, int weight, long now) {
       // we are already under lock, so drain the recency queue immediately
       drainRecencyQueue();
@@ -2473,7 +2441,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * lists (accounting for the fact that they could have been removed from the map since being
      * added to the recency queue).
      */
-    @GuardedBy("this")
     void drainRecencyQueue() {
       ReferenceEntry<K, V> e;
       while ((e = recencyQueue.poll()) != null) {
@@ -2501,7 +2468,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @GuardedBy("this")
     void expireEntries(long now) {
       drainRecencyQueue();
 
@@ -2520,7 +2486,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
 
     // eviction
 
-    @GuardedBy("this")
     void enqueueNotification(
         @NullableDecl K key, int hash, @NullableDecl V value, int weight, RemovalCause cause) {
       totalWeight -= weight;
@@ -2539,7 +2504,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      *
      * @param newest the most recently added entry
      */
-    @GuardedBy("this")
     void evictEntries(ReferenceEntry<K, V> newest) {
       if (!map.evictsBySize()) {
         return;
@@ -2564,7 +2528,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // TODO(fry): instead implement this with an eviction head
-    @GuardedBy("this")
     ReferenceEntry<K, V> getNextEvictable() {
       for (ReferenceEntry<K, V> e : accessQueue) {
         int weight = e.getValueReference().getWeight();
@@ -2584,7 +2547,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
 
     // Specialized implementations of map methods
 
-    @NullableDecl
     ReferenceEntry<K, V> getEntry(Object key, int hash) {
       for (ReferenceEntry<K, V> e = getFirst(hash); e != null; e = e.getNext()) {
         if (e.getHash() != hash) {
@@ -2605,7 +2567,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       return null;
     }
 
-    @NullableDecl
     ReferenceEntry<K, V> getLiveEntry(Object key, int hash, long now) {
       ReferenceEntry<K, V> e = getEntry(key, hash);
       if (e == null) {
@@ -2660,7 +2621,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * This method is a convenience for testing. Code should call {@link LocalCache#containsValue}
      * directly.
      */
-    @VisibleForTesting
     boolean containsValue(Object value) {
       try {
         if (count != 0) { // read-volatile
@@ -2686,7 +2646,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @NullableDecl
     V put(K key, int hash, V value, boolean onlyIfAbsent) {
       lock();
       try {
@@ -2762,7 +2721,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     /** Expands the table if possible. */
-    @GuardedBy("this")
     void expand() {
       AtomicReferenceArray<ReferenceEntry<K, V>> oldTable = table;
       int oldCapacity = oldTable.length();
@@ -2892,7 +2850,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @NullableDecl
     V replace(K key, int hash, V newValue) {
       lock();
       try {
@@ -2947,7 +2904,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @NullableDecl
     V remove(Object key, int hash) {
       lock();
       try {
@@ -3138,8 +3094,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @GuardedBy("this")
-    @NullableDecl
     ReferenceEntry<K, V> removeValueFromChain(
         ReferenceEntry<K, V> first,
         ReferenceEntry<K, V> entry,
@@ -3160,8 +3114,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @GuardedBy("this")
-    @NullableDecl
     ReferenceEntry<K, V> removeEntryFromChain(
         ReferenceEntry<K, V> first, ReferenceEntry<K, V> entry) {
       int newCount = count;
@@ -3179,7 +3131,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       return newFirst;
     }
 
-    @GuardedBy("this")
     void removeCollectedEntry(ReferenceEntry<K, V> entry) {
       enqueueNotification(
           entry.getKey(),
@@ -3303,8 +3254,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @VisibleForTesting
-    @GuardedBy("this")
     boolean removeEntry(ReferenceEntry<K, V> entry, int hash, RemovalCause cause) {
       int newCount = this.count - 1;
       AtomicReferenceArray<ReferenceEntry<K, V>> table = this.table;
@@ -3349,7 +3298,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      *
      * <p>Post-condition: expireEntries has been run.
      */
-    @GuardedBy("this")
     void preWriteCleanup(long now) {
       runLockedCleanup(now);
     }
@@ -3529,7 +3477,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
           @Override
           public void setWriteTime(long time) {}
 
-          @Weak ReferenceEntry<K, V> nextWrite = this;
+          ReferenceEntry<K, V> nextWrite = this;
 
           @Override
           public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -3541,7 +3489,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
             this.nextWrite = next;
           }
 
-          @Weak ReferenceEntry<K, V> previousWrite = this;
+          ReferenceEntry<K, V> previousWrite = this;
 
           @Override
           public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -3668,7 +3616,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
           @Override
           public void setAccessTime(long time) {}
 
-          @Weak ReferenceEntry<K, V> nextAccess = this;
+          ReferenceEntry<K, V> nextAccess = this;
 
           @Override
           public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -3680,7 +3628,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
             this.nextAccess = next;
           }
 
-          @Weak ReferenceEntry<K, V> previousAccess = this;
+          ReferenceEntry<K, V> previousAccess = this;
 
           @Override
           public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -3839,7 +3787,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
   }
 
   @Override
-  @NullableDecl
   public V get(@NullableDecl Object key) {
     if (key == null) {
       return null;
@@ -3853,7 +3800,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     return segmentFor(hash).get(key, hash, loader);
   }
 
-  @NullableDecl
   public V getIfPresent(Object key) {
     int hash = hash(checkNotNull(key));
     V value = segmentFor(hash).get(key, hash);
@@ -3866,7 +3812,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
   }
 
   @SuppressWarnings("MissingOverride") // Supermethod will not exist if we build with --release 7.
-  @NullableDecl
   public V getOrDefault(@NullableDecl Object key, @NullableDecl V defaultValue) {
     V result = get(key);
     return (result != null) ? result : defaultValue;
@@ -3947,7 +3892,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
    * Returns the result of calling {@link CacheLoader#loadAll}, or null if {@code loader} doesn't
    * implement {@code loadAll}.
    */
-  @NullableDecl
   Map<K, V> loadAll(Set<? extends K> keys, CacheLoader<? super K, V> loader)
       throws ExecutionException {
     checkNotNull(loader);
@@ -4149,7 +4093,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
   }
 
-  @RetainedWith @NullableDecl Set<K> keySet;
+  Set<K> keySet;
 
   @Override
   public Set<K> keySet() {
@@ -4158,7 +4102,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     return (ks != null) ? ks : (keySet = new KeySet());
   }
 
-  @RetainedWith @NullableDecl Collection<V> values;
+  Collection<V> values;
 
   @Override
   public Collection<V> values() {
@@ -4167,10 +4111,10 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     return (vs != null) ? vs : (values = new Values());
   }
 
-  @RetainedWith @NullableDecl Set<Entry<K, V>> entrySet;
+  Set<Entry<K, V>> entrySet;
 
   @Override
-  @GwtIncompatible // Not supported.
+  // Not supported.
   public Set<Entry<K, V>> entrySet() {
     // does not impact recency ordering
     Set<Entry<K, V>> es = entrySet;
@@ -4183,11 +4127,11 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
 
     int nextSegmentIndex;
     int nextTableIndex;
-    @NullableDecl Segment<K, V> currentSegment;
-    @NullableDecl AtomicReferenceArray<ReferenceEntry<K, V>> currentTable;
-    @NullableDecl ReferenceEntry<K, V> nextEntry;
-    @NullableDecl WriteThroughEntry nextExternal;
-    @NullableDecl WriteThroughEntry lastReturned;
+    Segment<K, V> currentSegment;
+    AtomicReferenceArray<ReferenceEntry<K, V>> currentTable;
+    ReferenceEntry<K, V> nextEntry;
+    WriteThroughEntry nextExternal;
+    WriteThroughEntry lastReturned;
 
     HashIterator() {
       nextSegmentIndex = segments.length - 1;
@@ -4516,10 +4460,10 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     final Weigher<K, V> weigher;
     final int concurrencyLevel;
     final RemovalListener<? super K, ? super V> removalListener;
-    @NullableDecl final Ticker ticker;
+    final Ticker ticker;
     final CacheLoader<? super K, V> loader;
 
-    @NullableDecl transient Cache<K, V> delegate;
+    transient Cache<K, V> delegate;
 
     ManualSerializationProxy(LocalCache<K, V> cache) {
       this(
@@ -4624,7 +4568,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       implements LoadingCache<K, V>, Serializable {
     private static final long serialVersionUID = 1;
 
-    @NullableDecl transient LoadingCache<K, V> autoDelegate;
+    transient LoadingCache<K, V> autoDelegate;
 
     LoadingSerializationProxy(LocalCache<K, V> cache) {
       super(cache);
@@ -4680,7 +4624,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     // Cache methods
 
     @Override
-    @NullableDecl
     public V getIfPresent(Object key) {
       return localCache.getIfPresent(key);
     }
diff --git a/android/guava/src/com/google/common/cache/LongAddable.java b/android/guava/src/com/google/common/cache/LongAddable.java
index 9851052..ae150aa 100644
--- a/android/guava/src/com/google/common/cache/LongAddable.java
+++ b/android/guava/src/com/google/common/cache/LongAddable.java
@@ -14,14 +14,12 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Abstract interface for objects that can concurrently add longs.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 interface LongAddable {
   void increment();
diff --git a/android/guava/src/com/google/common/cache/LongAddables.java b/android/guava/src/com/google/common/cache/LongAddables.java
index b0f9e2b..16df509 100644
--- a/android/guava/src/com/google/common/cache/LongAddables.java
+++ b/android/guava/src/com/google/common/cache/LongAddables.java
@@ -14,7 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Supplier;
 import java.util.concurrent.atomic.AtomicLong;
 
@@ -23,7 +22,6 @@ import java.util.concurrent.atomic.AtomicLong;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class LongAddables {
   private static final Supplier<LongAddable> SUPPLIER;
diff --git a/android/guava/src/com/google/common/cache/LongAdder.java b/android/guava/src/com/google/common/cache/LongAdder.java
index 7ead7e8..088b4ae 100644
--- a/android/guava/src/com/google/common/cache/LongAdder.java
+++ b/android/guava/src/com/google/common/cache/LongAdder.java
@@ -11,7 +11,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -39,7 +38,6 @@ import java.util.concurrent.atomic.AtomicLong;
  * @since 1.8
  * @author Doug Lea
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class LongAdder extends Striped64 implements Serializable, LongAddable {
   private static final long serialVersionUID = 7249069246863182397L;
diff --git a/android/guava/src/com/google/common/cache/ParametricNullness.java b/android/guava/src/com/google/common/cache/ParametricNullness.java
index 19305a6..4c0df9f 100644
--- a/android/guava/src/com/google/common/cache/ParametricNullness.java
+++ b/android/guava/src/com/google/common/cache/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/cache/ReferenceEntry.java b/android/guava/src/com/google/common/cache/ReferenceEntry.java
index 8ff2e6c..89936c2 100644
--- a/android/guava/src/com/google/common/cache/ReferenceEntry.java
+++ b/android/guava/src/com/google/common/cache/ReferenceEntry.java
@@ -14,7 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.cache.LocalCache.ValueReference;
 import javax.annotation.CheckForNull;
 
@@ -38,7 +37,6 @@ import javax.annotation.CheckForNull;
  *   <li>Unset: marked as unset, awaiting cleanup or reuse
  * </ul>
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 interface ReferenceEntry<K, V> {
   /** Returns the value reference from this entry. */
diff --git a/android/guava/src/com/google/common/cache/RemovalCause.java b/android/guava/src/com/google/common/cache/RemovalCause.java
index 2e68e68..aed3352 100644
--- a/android/guava/src/com/google/common/cache/RemovalCause.java
+++ b/android/guava/src/com/google/common/cache/RemovalCause.java
@@ -14,7 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.concurrent.ConcurrentMap;
@@ -25,7 +24,6 @@ import java.util.concurrent.ConcurrentMap;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public enum RemovalCause {
   /**
diff --git a/android/guava/src/com/google/common/cache/RemovalListener.java b/android/guava/src/com/google/common/cache/RemovalListener.java
index a7472d7..5be7664 100644
--- a/android/guava/src/com/google/common/cache/RemovalListener.java
+++ b/android/guava/src/com/google/common/cache/RemovalListener.java
@@ -14,7 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * An object that can receive a notification when an entry is removed from a cache. The removal
@@ -32,7 +31,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public interface RemovalListener<K, V> {
   /**
diff --git a/android/guava/src/com/google/common/cache/RemovalListeners.java b/android/guava/src/com/google/common/cache/RemovalListeners.java
index d0623e7..bc0f7c0 100644
--- a/android/guava/src/com/google/common/cache/RemovalListeners.java
+++ b/android/guava/src/com/google/common/cache/RemovalListeners.java
@@ -16,7 +16,6 @@ package com.google.common.cache;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.Executor;
 
 /**
@@ -25,7 +24,6 @@ import java.util.concurrent.Executor;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class RemovalListeners {
 
diff --git a/android/guava/src/com/google/common/cache/RemovalNotification.java b/android/guava/src/com/google/common/cache/RemovalNotification.java
index dab7fe5..6b81a29 100644
--- a/android/guava/src/com/google/common/cache/RemovalNotification.java
+++ b/android/guava/src/com/google/common/cache/RemovalNotification.java
@@ -16,10 +16,7 @@ package com.google.common.cache;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import java.util.AbstractMap.SimpleImmutableEntry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A notification of the removal of a single entry. The key and/or value may be null if they were
@@ -32,10 +29,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class RemovalNotification<K, V>
-    extends SimpleImmutableEntry<@Nullable K, @Nullable V> {
+    extends SimpleImmutableEntry<K, V> {
   private final RemovalCause cause;
 
   /**
diff --git a/android/guava/src/com/google/common/cache/Striped64.java b/android/guava/src/com/google/common/cache/Striped64.java
index 0d2d75b..d4544ca 100644
--- a/android/guava/src/com/google/common/cache/Striped64.java
+++ b/android/guava/src/com/google/common/cache/Striped64.java
@@ -11,17 +11,14 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Random;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A package-local class holding common representation and mechanics for classes supporting dynamic
  * striping on 64bit values. The class extends Number so that concrete subclasses must publicly do
  * so.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class Striped64 extends Number {
   /*
@@ -127,7 +124,7 @@ abstract class Striped64 extends Number {
    * class, we use a suboptimal int[] representation to avoid introducing a new type that can impede
    * class-unloading when ThreadLocals are not removed.
    */
-  static final ThreadLocal<int @Nullable []> threadHashCode = new ThreadLocal<>();
+  static final ThreadLocal<int []> threadHashCode = new ThreadLocal<>();
 
   /** Generator of new random hash codes */
   static final Random rng = new Random();
diff --git a/android/guava/src/com/google/common/cache/Weigher.java b/android/guava/src/com/google/common/cache/Weigher.java
index d5bcd5b..33ef57a 100644
--- a/android/guava/src/com/google/common/cache/Weigher.java
+++ b/android/guava/src/com/google/common/cache/Weigher.java
@@ -14,7 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Calculates the weights of cache entries.
@@ -22,7 +21,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Charles Fry
  * @since 11.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public interface Weigher<K, V> {
 
diff --git a/android/guava/src/com/google/common/collect/AbstractBiMap.java b/android/guava/src/com/google/common/collect/AbstractBiMap.java
index 151764b..b6a37df 100644
--- a/android/guava/src/com/google/common/collect/AbstractBiMap.java
+++ b/android/guava/src/com/google/common/collect/AbstractBiMap.java
@@ -18,14 +18,8 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -35,7 +29,6 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A general-purpose bimap implementation using any two backing {@code Map} instances.
@@ -46,13 +39,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractBiMap<K extends Object, V extends Object>
     extends ForwardingMap<K, V> implements BiMap<K, V>, Serializable {
 
   private transient Map<K, V> delegate;
-  @RetainedWith transient AbstractBiMap<V, K> inverse;
+  transient AbstractBiMap<V, K> inverse;
 
   /** Package-private constructor for creating a map-backed bimap. */
   AbstractBiMap(Map<K, V> forward, Map<V, K> backward) {
@@ -71,14 +63,12 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
   }
 
   /** Returns its input, or throws an exception if this is not a valid key. */
-  @CanIgnoreReturnValue
   @ParametricNullness
   K checkKey(@ParametricNullness K key) {
     return key;
   }
 
   /** Returns its input, or throws an exception if this is not a valid value. */
-  @CanIgnoreReturnValue
   @ParametricNullness
   V checkValue(@ParametricNullness V value) {
     return value;
@@ -115,14 +105,12 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
 
   // Modification Operations
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(@ParametricNullness K key, @ParametricNullness V value) {
     return putInBothMaps(key, value, false);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V forcePut(@ParametricNullness K key, @ParametricNullness V value) {
@@ -159,14 +147,12 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     inverse.delegate.put(newValue, key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V remove(@CheckForNull Object key) {
     return containsKey(key) ? removeFromBothMaps(key) : null;
   }
 
-  @CanIgnoreReturnValue
   @ParametricNullness
   private V removeFromBothMaps(@CheckForNull Object key) {
     // The cast is safe because the callers of this method first check that the key is present.
@@ -209,7 +195,6 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     return (result == null) ? keySet = new KeySet() : result;
   }
 
-  @WeakOuter
   private class KeySet extends ForwardingSet<K> {
     @Override
     protected Set<K> delegate() {
@@ -258,7 +243,6 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     return (result == null) ? valueSet = new ValueSet() : result;
   }
 
-  @WeakOuter
   private class ValueSet extends ForwardingSet<V> {
     final Set<V> valuesDelegate = inverse.keySet();
 
@@ -273,13 +257,13 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       return standardToArray();
     }
 
     @Override
     @SuppressWarnings("nullness") // bug in our checker's handling of toArray signatures
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return standardToArray(array);
     }
 
@@ -355,7 +339,6 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     };
   }
 
-  @WeakOuter
   private class EntrySet extends ForwardingSet<Entry<K, V>> {
     final Set<Entry<K, V>> esDelegate = delegate.entrySet();
 
@@ -411,7 +394,7 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
 
     @Override
     @SuppressWarnings("nullness") // bug in our checker's handling of toArray signatures
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return standardToArray(array);
     }
 
@@ -437,7 +420,7 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
   }
 
   /** The inverse of any other {@code AbstractBiMap} subclass. */
-  static class Inverse<K extends @Nullable Object, V extends @Nullable Object>
+  static class Inverse<K extends Object, V extends Object>
       extends AbstractBiMap<K, V> {
     Inverse(Map<K, V> backward, AbstractBiMap<V, K> forward) {
       super(backward, forward);
@@ -465,28 +448,28 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     }
 
     /** @serialData the forward bimap */
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       stream.defaultWriteObject();
       stream.writeObject(inverse());
     }
 
-    @GwtIncompatible // java.io.ObjectInputStream
+    // java.io.ObjectInputStream
     @SuppressWarnings("unchecked") // reading data stored by writeObject
     private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
       stream.defaultReadObject();
       setInverse((AbstractBiMap<V, K>) stream.readObject());
     }
 
-    @GwtIncompatible // Not needed in the emulated source.
+    // Not needed in the emulated source.
     Object readResolve() {
       return inverse().inverse();
     }
 
-    @GwtIncompatible // Not needed in emulated source.
+    // Not needed in emulated source.
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // Not needed in emulated source.
+  // Not needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/AbstractIndexedListIterator.java b/android/guava/src/com/google/common/collect/AbstractIndexedListIterator.java
index abb3960..025f9ab 100644
--- a/android/guava/src/com/google/common/collect/AbstractIndexedListIterator.java
+++ b/android/guava/src/com/google/common/collect/AbstractIndexedListIterator.java
@@ -18,10 +18,8 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkPositionIndex;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ListIterator;
 import java.util.NoSuchElementException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * This class provides a skeletal implementation of the {@link ListIterator} interface across a
@@ -30,9 +28,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractIndexedListIterator<E extends @Nullable Object>
+abstract class AbstractIndexedListIterator<E extends Object>
     extends UnmodifiableListIterator<E> {
   private final int size;
   private int position;
diff --git a/android/guava/src/com/google/common/collect/AbstractIterator.java b/android/guava/src/com/google/common/collect/AbstractIterator.java
index 66273f4..584723f 100644
--- a/android/guava/src/com/google/common/collect/AbstractIterator.java
+++ b/android/guava/src/com/google/common/collect/AbstractIterator.java
@@ -17,13 +17,9 @@
 package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.NoSuchElementException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * This class provides a skeletal implementation of the {@code Iterator} interface, to make this
@@ -62,9 +58,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  */
 // When making changes to this class, please also update the copy at
 // com.google.common.base.AbstractIterator
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class AbstractIterator<T extends @Nullable Object> extends UnmodifiableIterator<T> {
+public abstract class AbstractIterator<T extends Object> extends UnmodifiableIterator<T> {
   private State state = State.NOT_READY;
 
   /** Constructor for use by subclasses. */
@@ -120,14 +115,13 @@ public abstract class AbstractIterator<T extends @Nullable Object> extends Unmod
    * @return {@code null}; a convenience so your {@code computeNext} implementation can use the
    *     simple statement {@code return endOfData();}
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   protected final T endOfData() {
     state = State.DONE;
     return null;
   }
 
-  @CanIgnoreReturnValue // TODO(kak): Should we remove this? Some people are using it to prefetch?
+  // TODO(kak): Should we remove this? Some people are using it to prefetch?
   @Override
   public final boolean hasNext() {
     checkState(state != State.FAILED);
@@ -151,7 +145,7 @@ public abstract class AbstractIterator<T extends @Nullable Object> extends Unmod
     return false;
   }
 
-  @CanIgnoreReturnValue // TODO(kak): Should we remove this?
+  // TODO(kak): Should we remove this?
   @Override
   @ParametricNullness
   public final T next() {
diff --git a/android/guava/src/com/google/common/collect/AbstractListMultimap.java b/android/guava/src/com/google/common/collect/AbstractListMultimap.java
index 46c4ee2..809c8f7 100644
--- a/android/guava/src/com/google/common/collect/AbstractListMultimap.java
+++ b/android/guava/src/com/google/common/collect/AbstractListMultimap.java
@@ -16,14 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of the {@link ListMultimap} interface. It's a wrapper around {@link
@@ -33,9 +30,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractListMultimap<K extends Object, V extends Object>
     extends AbstractMapBasedMultimap<K, V> implements ListMultimap<K, V> {
   /**
    * Creates a new multimap that uses the provided map.
@@ -55,7 +51,7 @@ abstract class AbstractListMultimap<K extends @Nullable Object, V extends @Nulla
   }
 
   @Override
-  <E extends @Nullable Object> Collection<E> unmodifiableCollectionSubclass(
+  <E extends Object> Collection<E> unmodifiableCollectionSubclass(
       Collection<E> collection) {
     return Collections.unmodifiableList((List<E>) collection);
   }
@@ -86,7 +82,6 @@ abstract class AbstractListMultimap<K extends @Nullable Object, V extends @Nulla
    * this method returns a {@link List}, instead of the {@link Collection} specified in the {@link
    * Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   public List<V> removeAll(@CheckForNull Object key) {
     return (List<V>) super.removeAll(key);
@@ -99,7 +94,6 @@ abstract class AbstractListMultimap<K extends @Nullable Object, V extends @Nulla
    * this method returns a {@link List}, instead of the {@link Collection} specified in the {@link
    * Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   public List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return (List<V>) super.replaceValues(key, values);
@@ -112,7 +106,6 @@ abstract class AbstractListMultimap<K extends @Nullable Object, V extends @Nulla
    * @param value value to store in the multimap
    * @return {@code true} always
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean put(@ParametricNullness K key, @ParametricNullness V value) {
     return super.put(key, value);
diff --git a/android/guava/src/com/google/common/collect/AbstractMapBasedMultimap.java b/android/guava/src/com/google/common/collect/AbstractMapBasedMultimap.java
index 72cf8f1..407113a 100644
--- a/android/guava/src/com/google/common/collect/AbstractMapBasedMultimap.java
+++ b/android/guava/src/com/google/common/collect/AbstractMapBasedMultimap.java
@@ -19,12 +19,8 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Maps.ViewCachingAbstractMap;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.Serializable;
 import java.util.AbstractCollection;
 import java.util.Collection;
@@ -43,7 +39,6 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of the {@link Multimap} interface. This class represents a multimap as a map
@@ -83,9 +78,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractMapBasedMultimap<K extends Object, V extends Object>
     extends AbstractMultimap<K, V> implements Serializable {
   /*
    * Here's an outline of the overall design.
@@ -262,7 +256,7 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     return unmodifiableCollectionSubclass(output);
   }
 
-  <E extends @Nullable Object> Collection<E> unmodifiableCollectionSubclass(
+  <E extends Object> Collection<E> unmodifiableCollectionSubclass(
       Collection<E> collection) {
     return Collections.unmodifiableCollection(collection);
   }
@@ -323,7 +317,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
    * subcollection {@code refreshIfEmpty}, {@code removeIfEmpty}, and {@code addToMap} methods call
    * the corresponding methods of the full wrapped collection.
    */
-  @WeakOuter
   class WrappedCollection extends AbstractCollection<V> {
     @ParametricNullness final K key;
     Collection<V> delegate;
@@ -579,7 +572,7 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  private static <E extends @Nullable Object> Iterator<E> iteratorOrListIterator(
+  private static <E extends Object> Iterator<E> iteratorOrListIterator(
       Collection<E> collection) {
     return (collection instanceof List)
         ? ((List<E>) collection).listIterator()
@@ -587,7 +580,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
   }
 
   /** Set decorator that stays in sync with the multimap values for a key. */
-  @WeakOuter
   class WrappedSet extends WrappedCollection implements Set<V> {
     WrappedSet(@ParametricNullness K key, Set<V> delegate) {
       super(key, delegate, null);
@@ -614,7 +606,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
   }
 
   /** SortedSet decorator that stays in sync with the multimap values for a key. */
-  @WeakOuter
   class WrappedSortedSet extends WrappedCollection implements SortedSet<V> {
     WrappedSortedSet(
         @ParametricNullness K key,
@@ -675,7 +666,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   class WrappedNavigableSet extends WrappedSortedSet implements NavigableSet<V> {
     WrappedNavigableSet(
         @ParametricNullness K key,
@@ -761,7 +751,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
   }
 
   /** List decorator that stays in sync with the multimap values for a key. */
-  @WeakOuter
   class WrappedList extends WrappedCollection implements List<V> {
     WrappedList(
         @ParametricNullness K key, List<V> delegate, @CheckForNull WrappedCollection ancestor) {
@@ -933,7 +922,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   private class KeySet extends Maps.KeySet<K, Collection<V>> {
     KeySet(final Map<K, Collection<V>> subMap) {
       super(subMap);
@@ -1004,7 +992,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   private class SortedKeySet extends KeySet implements SortedSet<K> {
 
     SortedKeySet(SortedMap<K, Collection<V>> subMap) {
@@ -1049,7 +1036,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   class NavigableKeySet extends SortedKeySet implements NavigableSet<K> {
     NavigableKeySet(NavigableMap<K, Collection<V>> subMap) {
       super(subMap);
@@ -1154,7 +1140,7 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  private abstract class Itr<T extends @Nullable Object> implements Iterator<T> {
+  private abstract class Itr<T extends Object> implements Iterator<T> {
     final Iterator<Entry<K, Collection<V>>> keyIterator;
     @CheckForNull K key;
     @CheckForNull Collection<V> collection;
@@ -1297,7 +1283,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   private class AsMap extends ViewCachingAbstractMap<K, Collection<V>> {
     /**
      * Usually the same as map, but smaller for the headMap(), tailMap(), or subMap() of a
@@ -1387,7 +1372,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
       return Maps.immutableEntry(key, wrapCollection(key, entry.getValue()));
     }
 
-    @WeakOuter
     class AsMapEntries extends Maps.EntrySet<K, Collection<V>> {
       @Override
       Map<K, Collection<V>> map() {
@@ -1446,7 +1430,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   private class SortedAsMap extends AsMap implements SortedMap<K, Collection<V>> {
     SortedAsMap(SortedMap<K, Collection<V>> submap) {
       super(submap);
diff --git a/android/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java b/android/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java
index 8c71e68..30ef60d 100644
--- a/android/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java
+++ b/android/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java
@@ -20,10 +20,7 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -32,7 +29,6 @@ import java.util.ConcurrentModificationException;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of {@code Multiset<E>} backed by an instance of {@code
@@ -43,9 +39,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends AbstractMultiset<E>
+abstract class AbstractMapBasedMultiset<E extends Object> extends AbstractMultiset<E>
     implements Serializable {
 
   transient ObjectCountHashMap<E> backingMap;
@@ -70,7 +65,6 @@ abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends Abst
    * @throws IllegalArgumentException if the call would result in more than {@link
    *     Integer#MAX_VALUE} occurrences of {@code element} in this multiset.
    */
-  @CanIgnoreReturnValue
   @Override
   public final int add(@ParametricNullness E element, int occurrences) {
     if (occurrences == 0) {
@@ -91,7 +85,6 @@ abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends Abst
     return oldCount;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public final int remove(@CheckForNull Object element, int occurrences) {
     if (occurrences == 0) {
@@ -115,7 +108,6 @@ abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends Abst
     return oldCount;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public final int setCount(@ParametricNullness E element, int count) {
     checkNonnegative(count, "count");
@@ -163,7 +155,7 @@ abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends Abst
    * Skeleton of per-entry iterators. We could push this down and win a few bytes, but it's complex
    * enough it's not especially worth it.
    */
-  abstract class Itr<T extends @Nullable Object> implements Iterator<T> {
+  abstract class Itr<T extends Object> implements Iterator<T> {
     int entryIndex = backingMap.firstIndex();
     int toRemove = -1;
     int expectedModCount = backingMap.modCount;
@@ -254,13 +246,13 @@ abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends Abst
    * @serialData the number of distinct elements, the first element, its count, the second element,
    *     its count, and so on
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     Serialization.writeMultiset(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     int distinctElements = Serialization.readCount(stream);
@@ -268,6 +260,6 @@ abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends Abst
     Serialization.populateMultiset(this, stream, distinctElements);
   }
 
-  @GwtIncompatible // Not needed in emulated source.
+  // Not needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/AbstractMapEntry.java b/android/guava/src/com/google/common/collect/AbstractMapEntry.java
index e9accf0..9ef13e5 100644
--- a/android/guava/src/com/google/common/collect/AbstractMapEntry.java
+++ b/android/guava/src/com/google/common/collect/AbstractMapEntry.java
@@ -16,11 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code
@@ -28,9 +26,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractMapEntry<K extends Object, V extends Object>
     implements Entry<K, V> {
 
   @Override
diff --git a/android/guava/src/com/google/common/collect/AbstractMultimap.java b/android/guava/src/com/google/common/collect/AbstractMultimap.java
index 17e84a6..d747e4c 100644
--- a/android/guava/src/com/google/common/collect/AbstractMultimap.java
+++ b/android/guava/src/com/google/common/collect/AbstractMultimap.java
@@ -18,10 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.AbstractCollection;
 import java.util.Collection;
 import java.util.Iterator;
@@ -29,16 +25,14 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A skeleton {@code Multimap} implementation, not necessarily in terms of a {@code Map}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractMultimap<K extends Object, V extends Object>
     implements Multimap<K, V> {
   @Override
   public boolean isEmpty() {
@@ -62,20 +56,17 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     return collection != null && collection.contains(value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@CheckForNull Object key, @CheckForNull Object value) {
     Collection<V> collection = asMap().get(key);
     return collection != null && collection.remove(value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean put(@ParametricNullness K key, @ParametricNullness V value) {
     return get(key).add(value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean putAll(@ParametricNullness K key, Iterable<? extends V> values) {
     checkNotNull(values);
@@ -90,7 +81,6 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     }
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean putAll(Multimap<? extends K, ? extends V> multimap) {
     boolean changed = false;
@@ -100,7 +90,6 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     return changed;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public Collection<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     checkNotNull(values);
@@ -109,7 +98,7 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     return result;
   }
 
-  @LazyInit @CheckForNull private transient Collection<Entry<K, V>> entries;
+  @CheckForNull private transient Collection<Entry<K, V>> entries;
 
   @Override
   public Collection<Entry<K, V>> entries() {
@@ -119,7 +108,6 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
 
   abstract Collection<Entry<K, V>> createEntries();
 
-  @WeakOuter
   class Entries extends Multimaps.Entries<K, V> {
     @Override
     Multimap<K, V> multimap() {
@@ -132,7 +120,6 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     }
   }
 
-  @WeakOuter
   class EntrySet extends Entries implements Set<Entry<K, V>> {
     @Override
     public int hashCode() {
@@ -147,7 +134,7 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
 
   abstract Iterator<Entry<K, V>> entryIterator();
 
-  @LazyInit @CheckForNull private transient Set<K> keySet;
+  @CheckForNull private transient Set<K> keySet;
 
   @Override
   public Set<K> keySet() {
@@ -157,7 +144,7 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
 
   abstract Set<K> createKeySet();
 
-  @LazyInit @CheckForNull private transient Multiset<K> keys;
+  @CheckForNull private transient Multiset<K> keys;
 
   @Override
   public Multiset<K> keys() {
@@ -167,7 +154,7 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
 
   abstract Multiset<K> createKeys();
 
-  @LazyInit @CheckForNull private transient Collection<V> values;
+  @CheckForNull private transient Collection<V> values;
 
   @Override
   public Collection<V> values() {
@@ -177,7 +164,6 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
 
   abstract Collection<V> createValues();
 
-  @WeakOuter
   class Values extends AbstractCollection<V> {
     @Override
     public Iterator<V> iterator() {
@@ -204,7 +190,7 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     return Maps.valueIterator(entries().iterator());
   }
 
-  @LazyInit @CheckForNull private transient Map<K, Collection<V>> asMap;
+  @CheckForNull private transient Map<K, Collection<V>> asMap;
 
   @Override
   public Map<K, Collection<V>> asMap() {
diff --git a/android/guava/src/com/google/common/collect/AbstractMultiset.java b/android/guava/src/com/google/common/collect/AbstractMultiset.java
index 8203e44..c3132d2 100644
--- a/android/guava/src/com/google/common/collect/AbstractMultiset.java
+++ b/android/guava/src/com/google/common/collect/AbstractMultiset.java
@@ -18,16 +18,11 @@ package com.google.common.collect;
 
 import static com.google.common.collect.Multisets.setCountImpl;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.AbstractCollection;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * This class provides a skeletal implementation of the {@link Multiset} interface. A new multiset
@@ -42,9 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractCollection<E>
+abstract class AbstractMultiset<E extends Object> extends AbstractCollection<E>
     implements Multiset<E> {
   // Query Operations
 
@@ -59,38 +53,32 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
   }
 
   // Modification Operations
-  @CanIgnoreReturnValue
   @Override
   public final boolean add(@ParametricNullness E element) {
     add(element, 1);
     return true;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int add(@ParametricNullness E element, int occurrences) {
     throw new UnsupportedOperationException();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public final boolean remove(@CheckForNull Object element) {
     return remove(element, 1) > 0;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int remove(@CheckForNull Object element, int occurrences) {
     throw new UnsupportedOperationException();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int setCount(@ParametricNullness E element, int count) {
     return setCountImpl(this, element, count);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean setCount(@ParametricNullness E element, int oldCount, int newCount) {
     return setCountImpl(this, element, oldCount, newCount);
@@ -104,19 +92,16 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
    * <p>This implementation is highly efficient when {@code elementsToAdd} is itself a {@link
    * Multiset}.
    */
-  @CanIgnoreReturnValue
   @Override
   public final boolean addAll(Collection<? extends E> elementsToAdd) {
     return Multisets.addAllImpl(this, elementsToAdd);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public final boolean removeAll(Collection<?> elementsToRemove) {
     return Multisets.removeAllImpl(this, elementsToRemove);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public final boolean retainAll(Collection<?> elementsToRetain) {
     return Multisets.retainAllImpl(this, elementsToRetain);
@@ -127,7 +112,7 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
 
   // Views
 
-  @LazyInit @CheckForNull private transient Set<E> elementSet;
+  @CheckForNull private transient Set<E> elementSet;
 
   @Override
   public Set<E> elementSet() {
@@ -146,7 +131,6 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
     return new ElementSet();
   }
 
-  @WeakOuter
   class ElementSet extends Multisets.ElementSet<E> {
     @Override
     Multiset<E> multiset() {
@@ -161,7 +145,7 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
 
   abstract Iterator<E> elementIterator();
 
-  @LazyInit @CheckForNull private transient Set<Entry<E>> entrySet;
+  @CheckForNull private transient Set<Entry<E>> entrySet;
 
   @Override
   public Set<Entry<E>> entrySet() {
@@ -172,7 +156,6 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
     return result;
   }
 
-  @WeakOuter
   class EntrySet extends Multisets.EntrySet<E> {
     @Override
     Multiset<E> multiset() {
diff --git a/android/guava/src/com/google/common/collect/AbstractNavigableMap.java b/android/guava/src/com/google/common/collect/AbstractNavigableMap.java
index 47048d0..d08ec66 100644
--- a/android/guava/src/com/google/common/collect/AbstractNavigableMap.java
+++ b/android/guava/src/com/google/common/collect/AbstractNavigableMap.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Maps.IteratorBasedAbstractMap;
 import java.util.Iterator;
 import java.util.NavigableMap;
@@ -25,16 +24,14 @@ import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.SortedMap;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Skeletal implementation of {@link NavigableMap}.
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractNavigableMap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractNavigableMap<K extends Object, V extends Object>
     extends IteratorBasedAbstractMap<K, V> implements NavigableMap<K, V> {
 
   @Override
diff --git a/android/guava/src/com/google/common/collect/AbstractRangeSet.java b/android/guava/src/com/google/common/collect/AbstractRangeSet.java
index 032be3d..c2e558b 100644
--- a/android/guava/src/com/google/common/collect/AbstractRangeSet.java
+++ b/android/guava/src/com/google/common/collect/AbstractRangeSet.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -22,7 +21,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class AbstractRangeSet<C extends Comparable> implements RangeSet<C> {
   AbstractRangeSet() {}
diff --git a/android/guava/src/com/google/common/collect/AbstractSequentialIterator.java b/android/guava/src/com/google/common/collect/AbstractSequentialIterator.java
index 172fe35..db1ab50 100644
--- a/android/guava/src/com/google/common/collect/AbstractSequentialIterator.java
+++ b/android/guava/src/com/google/common/collect/AbstractSequentialIterator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.NoSuchElementException;
 import javax.annotation.CheckForNull;
 
@@ -39,7 +38,6 @@ import javax.annotation.CheckForNull;
  * @author Chris Povirk
  * @since 12.0 (in Guava as {@code AbstractLinkedIterator} since 8.0)
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractSequentialIterator<T> extends UnmodifiableIterator<T> {
   @CheckForNull private T nextOrNull;
diff --git a/android/guava/src/com/google/common/collect/AbstractSetMultimap.java b/android/guava/src/com/google/common/collect/AbstractSetMultimap.java
index 90aa9dc..a642da1 100644
--- a/android/guava/src/com/google/common/collect/AbstractSetMultimap.java
+++ b/android/guava/src/com/google/common/collect/AbstractSetMultimap.java
@@ -16,15 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of the {@link SetMultimap} interface. It's a wrapper around {@link
@@ -33,9 +30,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractSetMultimap<K extends Object, V extends Object>
     extends AbstractMapBasedMultimap<K, V> implements SetMultimap<K, V> {
   /**
    * Creates a new multimap that uses the provided map.
@@ -55,7 +51,7 @@ abstract class AbstractSetMultimap<K extends @Nullable Object, V extends @Nullab
   }
 
   @Override
-  <E extends @Nullable Object> Collection<E> unmodifiableCollectionSubclass(
+  <E extends Object> Collection<E> unmodifiableCollectionSubclass(
       Collection<E> collection) {
     return Collections.unmodifiableSet((Set<E>) collection);
   }
@@ -95,7 +91,6 @@ abstract class AbstractSetMultimap<K extends @Nullable Object, V extends @Nullab
    * <p>Because a {@code SetMultimap} has unique values for a given key, this method returns a
    * {@link Set}, instead of the {@link Collection} specified in the {@link Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   public Set<V> removeAll(@CheckForNull Object key) {
     return (Set<V>) super.removeAll(key);
@@ -109,7 +104,6 @@ abstract class AbstractSetMultimap<K extends @Nullable Object, V extends @Nullab
    *
    * <p>Any duplicates in {@code values} will be stored in the multimap once.
    */
-  @CanIgnoreReturnValue
   @Override
   public Set<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return (Set<V>) super.replaceValues(key, values);
@@ -134,7 +128,6 @@ abstract class AbstractSetMultimap<K extends @Nullable Object, V extends @Nullab
    * @return {@code true} if the method increased the size of the multimap, or {@code false} if the
    *     multimap already contained the key-value pair
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean put(@ParametricNullness K key, @ParametricNullness V value) {
     return super.put(key, value);
diff --git a/android/guava/src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java b/android/guava/src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java
index 676936f..a170b45 100644
--- a/android/guava/src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java
+++ b/android/guava/src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java
@@ -16,12 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of a {@link SortedSetMultimap} with a sorted key set.
@@ -31,10 +29,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class AbstractSortedKeySortedSetMultimap<
-        K extends @Nullable Object, V extends @Nullable Object>
+        K extends Object, V extends Object>
     extends AbstractSortedSetMultimap<K, V> {
 
   AbstractSortedKeySortedSetMultimap(SortedMap<K, Collection<V>> map) {
diff --git a/android/guava/src/com/google/common/collect/AbstractSortedMultiset.java b/android/guava/src/com/google/common/collect/AbstractSortedMultiset.java
index fd4fce2..c76a5b7 100644
--- a/android/guava/src/com/google/common/collect/AbstractSortedMultiset.java
+++ b/android/guava/src/com/google/common/collect/AbstractSortedMultiset.java
@@ -16,13 +16,10 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * This class provides a skeletal implementation of the {@link SortedMultiset} interface.
@@ -33,9 +30,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class AbstractSortedMultiset<E extends @Nullable Object> extends AbstractMultiset<E>
+abstract class AbstractSortedMultiset<E extends Object> extends AbstractMultiset<E>
     implements SortedMultiset<E> {
   @GwtTransient final Comparator<? super E> comparator;
 
@@ -131,7 +127,6 @@ abstract class AbstractSortedMultiset<E extends @Nullable Object> extends Abstra
   }
 
   SortedMultiset<E> createDescendingMultiset() {
-    @WeakOuter
     class DescendingMultisetImpl extends DescendingMultiset<E> {
       @Override
       SortedMultiset<E> forwardMultiset() {
diff --git a/android/guava/src/com/google/common/collect/AbstractSortedSetMultimap.java b/android/guava/src/com/google/common/collect/AbstractSortedSetMultimap.java
index 3231613..a075ad1 100644
--- a/android/guava/src/com/google/common/collect/AbstractSortedSetMultimap.java
+++ b/android/guava/src/com/google/common/collect/AbstractSortedSetMultimap.java
@@ -16,15 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 import java.util.NavigableSet;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of the {@link SortedSetMultimap} interface. It's a wrapper around {@link
@@ -33,9 +30,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractSortedSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractSortedSetMultimap<K extends Object, V extends Object>
     extends AbstractSetMultimap<K, V> implements SortedSetMultimap<K, V> {
   /**
    * Creates a new multimap that uses the provided map.
@@ -55,7 +51,7 @@ abstract class AbstractSortedSetMultimap<K extends @Nullable Object, V extends @
   }
 
   @Override
-  <E extends @Nullable Object> SortedSet<E> unmodifiableCollectionSubclass(
+  <E extends Object> SortedSet<E> unmodifiableCollectionSubclass(
       Collection<E> collection) {
     if (collection instanceof NavigableSet) {
       return Sets.unmodifiableNavigableSet((NavigableSet<E>) collection);
@@ -97,7 +93,6 @@ abstract class AbstractSortedSetMultimap<K extends @Nullable Object, V extends @
    * returns a {@link SortedSet}, instead of the {@link Collection} specified in the {@link
    * Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   public SortedSet<V> removeAll(@CheckForNull Object key) {
     return (SortedSet<V>) super.removeAll(key);
@@ -113,7 +108,6 @@ abstract class AbstractSortedSetMultimap<K extends @Nullable Object, V extends @
    *
    * <p>Any duplicates in {@code values} will be stored in the multimap once.
    */
-  @CanIgnoreReturnValue
   @Override
   public SortedSet<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return (SortedSet<V>) super.replaceValues(key, values);
diff --git a/android/guava/src/com/google/common/collect/AbstractTable.java b/android/guava/src/com/google/common/collect/AbstractTable.java
index fe1d4e7..eb96eff 100644
--- a/android/guava/src/com/google/common/collect/AbstractTable.java
+++ b/android/guava/src/com/google/common/collect/AbstractTable.java
@@ -14,10 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.AbstractCollection;
 import java.util.AbstractSet;
 import java.util.Collection;
@@ -25,17 +21,15 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Skeletal, implementation-agnostic implementation of the {@link Table} interface.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class AbstractTable<
-        R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+        R extends Object, C extends Object, V extends Object>
     implements Table<R, C, V> {
 
   @Override
@@ -91,7 +85,6 @@ abstract class AbstractTable<
     Iterators.clear(cellSet().iterator());
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V remove(@CheckForNull Object rowKey, @CheckForNull Object columnKey) {
@@ -99,7 +92,6 @@ abstract class AbstractTable<
     return (row == null) ? null : Maps.safeRemove(row, columnKey);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(
@@ -114,7 +106,7 @@ abstract class AbstractTable<
     }
   }
 
-  @LazyInit @CheckForNull private transient Set<Cell<R, C, V>> cellSet;
+  @CheckForNull private transient Set<Cell<R, C, V>> cellSet;
 
   @Override
   public Set<Cell<R, C, V>> cellSet() {
@@ -128,7 +120,6 @@ abstract class AbstractTable<
 
   abstract Iterator<Table.Cell<R, C, V>> cellIterator();
 
-  @WeakOuter
   class CellSet extends AbstractSet<Cell<R, C, V>> {
     @Override
     public boolean contains(@CheckForNull Object o) {
@@ -170,7 +161,7 @@ abstract class AbstractTable<
     }
   }
 
-  @LazyInit @CheckForNull private transient Collection<V> values;
+  @CheckForNull private transient Collection<V> values;
 
   @Override
   public Collection<V> values() {
@@ -192,7 +183,6 @@ abstract class AbstractTable<
     };
   }
 
-  @WeakOuter
   class Values extends AbstractCollection<V> {
     @Override
     public Iterator<V> iterator() {
diff --git a/android/guava/src/com/google/common/collect/AllEqualOrdering.java b/android/guava/src/com/google/common/collect/AllEqualOrdering.java
index f6ca6fa..9a0ded5 100644
--- a/android/guava/src/com/google/common/collect/AllEqualOrdering.java
+++ b/android/guava/src/com/google/common/collect/AllEqualOrdering.java
@@ -16,20 +16,17 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An ordering that treats all references as equals, even nulls.
  *
  * @author Emily Soldal
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class AllEqualOrdering extends Ordering<@Nullable Object> implements Serializable {
+final class AllEqualOrdering extends Ordering<Object> implements Serializable {
   static final AllEqualOrdering INSTANCE = new AllEqualOrdering();
 
   @Override
@@ -38,19 +35,19 @@ final class AllEqualOrdering extends Ordering<@Nullable Object> implements Seria
   }
 
   @Override
-  public <E extends @Nullable Object> List<E> sortedCopy(Iterable<E> iterable) {
+  public <E extends Object> List<E> sortedCopy(Iterable<E> iterable) {
     return Lists.newArrayList(iterable);
   }
 
   @Override
   @SuppressWarnings("nullness") // unsafe: see supertype
-  public <E extends @Nullable Object> ImmutableList<E> immutableSortedCopy(Iterable<E> iterable) {
+  public <E extends Object> ImmutableList<E> immutableSortedCopy(Iterable<E> iterable) {
     return ImmutableList.copyOf(iterable);
   }
 
   @SuppressWarnings("unchecked")
   @Override
-  public <S extends @Nullable Object> Ordering<S> reverse() {
+  public <S extends Object> Ordering<S> reverse() {
     return (Ordering<S>) this;
   }
 
diff --git a/android/guava/src/com/google/common/collect/ArrayListMultimap.java b/android/guava/src/com/google/common/collect/ArrayListMultimap.java
index 33f4c75..9f8a693 100644
--- a/android/guava/src/com/google/common/collect/ArrayListMultimap.java
+++ b/android/guava/src/com/google/common/collect/ArrayListMultimap.java
@@ -18,9 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -29,7 +26,6 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@code Multimap} that uses an {@code ArrayList} to store the values for a given
@@ -59,14 +55,13 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class ArrayListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public final class ArrayListMultimap<K extends Object, V extends Object>
     extends ArrayListMultimapGwtSerializationDependencies<K, V> {
   // Default from ArrayList
   private static final int DEFAULT_VALUES_PER_KEY = 3;
 
-  @VisibleForTesting transient int expectedValuesPerKey;
+  transient int expectedValuesPerKey;
 
   /**
    * Creates a new, empty {@code ArrayListMultimap} with the default initial capacities.
@@ -74,7 +69,7 @@ public final class ArrayListMultimap<K extends @Nullable Object, V extends @Null
    * <p>This method will soon be deprecated in favor of {@code
    * MultimapBuilder.hashKeys().arrayListValues().build()}.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ArrayListMultimap<K, V> create() {
     return new ArrayListMultimap<>();
   }
@@ -91,7 +86,7 @@ public final class ArrayListMultimap<K extends @Nullable Object, V extends @Null
    * @throws IllegalArgumentException if {@code expectedKeys} or {@code expectedValuesPerKey} is
    *     negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ArrayListMultimap<K, V> create(int expectedKeys, int expectedValuesPerKey) {
     return new ArrayListMultimap<>(expectedKeys, expectedValuesPerKey);
   }
@@ -104,7 +99,7 @@ public final class ArrayListMultimap<K extends @Nullable Object, V extends @Null
    *
    * @param multimap the multimap whose contents are copied to this multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ArrayListMultimap<K, V> create(Multimap<? extends K, ? extends V> multimap) {
     return new ArrayListMultimap<>(multimap);
   }
@@ -155,13 +150,13 @@ public final class ArrayListMultimap<K extends @Nullable Object, V extends @Null
    * @serialData expectedValuesPerKey, number of distinct keys, and then for each distinct key: the
    *     key, number of values for that key, and the key's values
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     Serialization.writeMultimap(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     expectedValuesPerKey = DEFAULT_VALUES_PER_KEY;
@@ -171,6 +166,6 @@ public final class ArrayListMultimap<K extends @Nullable Object, V extends @Null
     Serialization.populateMultimap(this, stream, distinctKeys);
   }
 
-  @GwtIncompatible // Not needed in emulated source.
+  // Not needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java b/android/guava/src/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java
index 9a8cdfb..15220cf 100644
--- a/android/guava/src/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java
+++ b/android/guava/src/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Map;
 
@@ -29,7 +28,6 @@ import java.util.Map;
  *
  * <p>TODO(cpovirk): Consider applying this subclass approach to our other types.
  */
-@GwtCompatible(emulated = true)
 abstract class ArrayListMultimapGwtSerializationDependencies<K, V>
     extends AbstractListMultimap<K, V> {
   ArrayListMultimapGwtSerializationDependencies(Map<K, Collection<V>> map) {
diff --git a/android/guava/src/com/google/common/collect/ArrayTable.java b/android/guava/src/com/google/common/collect/ArrayTable.java
index ebc9fa0..267522e 100644
--- a/android/guava/src/com/google/common/collect/ArrayTable.java
+++ b/android/guava/src/com/google/common/collect/ArrayTable.java
@@ -21,14 +21,8 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.util.Collections.emptyMap;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.collect.Maps.IteratorBasedAbstractMap;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.Serializable;
 import java.lang.reflect.Array;
 import java.util.Arrays;
@@ -37,7 +31,6 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Fixed-size {@link Table} implementation backed by a two-dimensional array.
@@ -88,10 +81,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 10.0
  */
-@Beta
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
+public final class ArrayTable<R, C, V> extends AbstractTable<R, C, V>
     implements Serializable {
 
   /**
@@ -144,7 +135,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
   // TODO(jlevy): Add getters returning rowKeyToIndex and columnKeyToIndex?
   private final ImmutableMap<R, Integer> rowKeyToIndex;
   private final ImmutableMap<C, Integer> columnKeyToIndex;
-  private final @Nullable V[][] array;
+  private final V[][] array;
 
   private ArrayTable(Iterable<? extends R> rowKeys, Iterable<? extends C> columnKeys) {
     this.rowList = ImmutableList.copyOf(rowKeys);
@@ -161,7 +152,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     columnKeyToIndex = Maps.indexMap(columnList);
 
     @SuppressWarnings("unchecked")
-    @Nullable
     V[][] tmpArray = (@Nullable V[][]) new Object[rowList.size()][columnList.size()];
     array = tmpArray;
     // Necessary because in GWT the arrays are initialized with "undefined" instead of null.
@@ -179,7 +169,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     rowKeyToIndex = table.rowKeyToIndex;
     columnKeyToIndex = table.columnKeyToIndex;
     @SuppressWarnings("unchecked")
-    @Nullable
     V[][] copy = (@Nullable V[][]) new Object[rowList.size()][columnList.size()];
     array = copy;
     for (int i = 0; i < rowList.size(); i++) {
@@ -187,7 +176,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     }
   }
 
-  private abstract static class ArrayMap<K, V extends @Nullable Object>
+  private abstract static class ArrayMap<K, V extends Object>
       extends IteratorBasedAbstractMap<K, V> {
     private final ImmutableMap<K, Integer> keyIndex;
 
@@ -344,7 +333,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    *     or equal to the number of allowed row keys, or {@code columnIndex} is greater than or equal
    *     to the number of allowed column keys
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   public V set(int rowIndex, int columnIndex, @CheckForNull V value) {
     // In GWT array access never throws IndexOutOfBoundsException.
@@ -364,10 +352,9 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    *
    * @param valueClass class of values stored in the returned array
    */
-  @GwtIncompatible // reflection
-  public @Nullable V[][] toArray(Class<V> valueClass) {
+  // reflection
+  public V[][] toArray(Class<V> valueClass) {
     @SuppressWarnings("unchecked") // TODO: safe?
-    @Nullable
     V[][] copy = (@Nullable V[][]) Array.newInstance(valueClass, rowList.size(), columnList.size());
     for (int i = 0; i < rowList.size(); i++) {
       System.arraycopy(array[i], 0, copy[i], 0, array[i].length);
@@ -381,7 +368,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link #eraseAll}
    */
-  @DoNotCall("Always throws UnsupportedOperationException")
   @Override
   @Deprecated
   public void clear() {
@@ -456,7 +442,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @throws IllegalArgumentException if {@code rowKey} is not in {@link #rowKeySet()} or {@code
    *     columnKey} is not in {@link #columnKeySet()}.
    */
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(R rowKey, C columnKey, @CheckForNull V value) {
@@ -495,8 +480,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link #erase}
    */
-  @DoNotCall("Always throws UnsupportedOperationException")
-  @CanIgnoreReturnValue
   @Override
   @Deprecated
   @CheckForNull
@@ -517,7 +500,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @return the value previously associated with the keys, or {@code null} if no mapping existed
    *     for the keys
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   public V erase(@CheckForNull Object rowKey, @CheckForNull Object columnKey) {
     Integer rowIndex = rowKeyToIndex.get(rowKey);
@@ -547,22 +529,22 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @return set of table cells consisting of row key / column key / value triplets
    */
   @Override
-  public Set<Cell<R, C, @Nullable V>> cellSet() {
+  public Set<Cell<R, C, V>> cellSet() {
     return super.cellSet();
   }
 
   @Override
-  Iterator<Cell<R, C, @Nullable V>> cellIterator() {
-    return new AbstractIndexedListIterator<Cell<R, C, @Nullable V>>(size()) {
+  Iterator<Cell<R, C, V>> cellIterator() {
+    return new AbstractIndexedListIterator<Cell<R, C, V>>(size()) {
       @Override
-      protected Cell<R, C, @Nullable V> get(final int index) {
+      protected Cell<R, C, V> get(final int index) {
         return getCell(index);
       }
     };
   }
 
-  private Cell<R, C, @Nullable V> getCell(final int index) {
-    return new Tables.AbstractCell<R, C, @Nullable V>() {
+  private Cell<R, C, V> getCell(final int index) {
+    return new Tables.AbstractCell<R, C, V>() {
       final int rowIndex = index / columnList.size();
       final int columnIndex = index % columnList.size();
 
@@ -603,7 +585,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @return the corresponding map from row keys to values
    */
   @Override
-  public Map<R, @Nullable V> column(C columnKey) {
+  public Map<R, V> column(C columnKey) {
     checkNotNull(columnKey);
     Integer columnIndex = columnKeyToIndex.get(columnKey);
     if (columnIndex == null) {
@@ -613,7 +595,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     }
   }
 
-  private class Column extends ArrayMap<R, @Nullable V> {
+  private class Column extends ArrayMap<R, V> {
     final int columnIndex;
 
     Column(int columnIndex) {
@@ -653,13 +635,12 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
   @CheckForNull private transient ColumnMap columnMap;
 
   @Override
-  public Map<C, Map<R, @Nullable V>> columnMap() {
+  public Map<C, Map<R, V>> columnMap() {
     ColumnMap map = columnMap;
     return (map == null) ? columnMap = new ColumnMap() : map;
   }
 
-  @WeakOuter
-  private class ColumnMap extends ArrayMap<C, Map<R, @Nullable V>> {
+  private class ColumnMap extends ArrayMap<C, Map<R, V>> {
     private ColumnMap() {
       super(columnKeyToIndex);
     }
@@ -670,18 +651,18 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     }
 
     @Override
-    Map<R, @Nullable V> getValue(int index) {
+    Map<R, V> getValue(int index) {
       return new Column(index);
     }
 
     @Override
-    Map<R, @Nullable V> setValue(int index, Map<R, @Nullable V> newValue) {
+    Map<R, V> setValue(int index, Map<R, @Nullable V> newValue) {
       throw new UnsupportedOperationException();
     }
 
     @Override
     @CheckForNull
-    public Map<R, @Nullable V> put(C key, Map<R, @Nullable V> value) {
+    public Map<R, V> put(C key, Map<R, @Nullable V> value) {
       throw new UnsupportedOperationException();
     }
   }
@@ -698,7 +679,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @return the corresponding map from column keys to values
    */
   @Override
-  public Map<C, @Nullable V> row(R rowKey) {
+  public Map<C, V> row(R rowKey) {
     checkNotNull(rowKey);
     Integer rowIndex = rowKeyToIndex.get(rowKey);
     if (rowIndex == null) {
@@ -708,7 +689,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     }
   }
 
-  private class Row extends ArrayMap<C, @Nullable V> {
+  private class Row extends ArrayMap<C, V> {
     final int rowIndex;
 
     Row(int rowIndex) {
@@ -748,13 +729,12 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
   @CheckForNull private transient RowMap rowMap;
 
   @Override
-  public Map<R, Map<C, @Nullable V>> rowMap() {
+  public Map<R, Map<C, V>> rowMap() {
     RowMap map = rowMap;
     return (map == null) ? rowMap = new RowMap() : map;
   }
 
-  @WeakOuter
-  private class RowMap extends ArrayMap<R, Map<C, @Nullable V>> {
+  private class RowMap extends ArrayMap<R, Map<C, V>> {
     private RowMap() {
       super(rowKeyToIndex);
     }
@@ -765,18 +745,18 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     }
 
     @Override
-    Map<C, @Nullable V> getValue(int index) {
+    Map<C, V> getValue(int index) {
       return new Row(index);
     }
 
     @Override
-    Map<C, @Nullable V> setValue(int index, Map<C, @Nullable V> newValue) {
+    Map<C, V> setValue(int index, Map<C, @Nullable V> newValue) {
       throw new UnsupportedOperationException();
     }
 
     @Override
     @CheckForNull
-    public Map<C, @Nullable V> put(R key, Map<C, @Nullable V> value) {
+    public Map<C, V> put(R key, Map<C, @Nullable V> value) {
       throw new UnsupportedOperationException();
     }
   }
@@ -791,13 +771,13 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @return collection of values
    */
   @Override
-  public Collection<@Nullable V> values() {
+  public Collection<V> values() {
     return super.values();
   }
 
   @Override
-  Iterator<@Nullable V> valuesIterator() {
-    return new AbstractIndexedListIterator<@Nullable V>(size()) {
+  Iterator<V> valuesIterator() {
+    return new AbstractIndexedListIterator<V>(size()) {
       @Override
       @CheckForNull
       protected V get(int index) {
diff --git a/android/guava/src/com/google/common/collect/BaseImmutableMultimap.java b/android/guava/src/com/google/common/collect/BaseImmutableMultimap.java
index 2e69c2a..d212bf4 100644
--- a/android/guava/src/com/google/common/collect/BaseImmutableMultimap.java
+++ b/android/guava/src/com/google/common/collect/BaseImmutableMultimap.java
@@ -15,12 +15,10 @@
  */
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A dummy superclass of {@link ImmutableMultimap} that can be instanceof'd without ProGuard
  * retaining additional implementation details of {@link ImmutableMultimap}.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class BaseImmutableMultimap<K, V> extends AbstractMultimap<K, V> {}
diff --git a/android/guava/src/com/google/common/collect/BiMap.java b/android/guava/src/com/google/common/collect/BiMap.java
index 12eb4e3..eb7d891 100644
--- a/android/guava/src/com/google/common/collect/BiMap.java
+++ b/android/guava/src/com/google/common/collect/BiMap.java
@@ -16,12 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A bimap (or "bidirectional map") is a map that preserves the uniqueness of its values as well as
@@ -34,9 +31,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface BiMap<K extends @Nullable Object, V extends @Nullable Object> extends Map<K, V> {
+public interface BiMap<K extends Object, V extends Object> extends Map<K, V> {
   // Modification Operations
 
   /**
@@ -46,7 +42,6 @@ public interface BiMap<K extends @Nullable Object, V extends @Nullable Object> e
    *     bimap. The bimap will remain unmodified in this event. To avoid this exception, call {@link
    *     #forcePut} instead.
    */
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   V put(@ParametricNullness K key, @ParametricNullness V value);
@@ -69,7 +64,6 @@ public interface BiMap<K extends @Nullable Object, V extends @Nullable Object> e
    *     put}, returns {@code null} both if the key is absent and if it is present with a null
    *     value.)
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V forcePut(@ParametricNullness K key, @ParametricNullness V value);
 
diff --git a/android/guava/src/com/google/common/collect/BoundType.java b/android/guava/src/com/google/common/collect/BoundType.java
index 00ac08c..1387a45 100644
--- a/android/guava/src/com/google/common/collect/BoundType.java
+++ b/android/guava/src/com/google/common/collect/BoundType.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Indicates whether an endpoint of some range is contained in the range itself ("closed") or not
@@ -23,7 +22,6 @@ import com.google.common.annotations.GwtCompatible;
  *
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public enum BoundType {
   /** The endpoint value <i>is not</i> considered part of the set ("exclusive"). */
diff --git a/android/guava/src/com/google/common/collect/ByFunctionOrdering.java b/android/guava/src/com/google/common/collect/ByFunctionOrdering.java
index 43ebddd..82cff0d 100644
--- a/android/guava/src/com/google/common/collect/ByFunctionOrdering.java
+++ b/android/guava/src/com/google/common/collect/ByFunctionOrdering.java
@@ -18,20 +18,17 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An ordering that orders elements by applying an order to the result of a function on those
  * elements.
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class ByFunctionOrdering<F extends @Nullable Object, T extends @Nullable Object>
+final class ByFunctionOrdering<F extends Object, T extends Object>
     extends Ordering<F> implements Serializable {
   final Function<F, ? extends T> function;
   final Ordering<T> ordering;
diff --git a/android/guava/src/com/google/common/collect/CartesianList.java b/android/guava/src/com/google/common/collect/CartesianList.java
index 475b3f2..bf290a0 100644
--- a/android/guava/src/com/google/common/collect/CartesianList.java
+++ b/android/guava/src/com/google/common/collect/CartesianList.java
@@ -16,7 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkElementIndex;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.math.IntMath;
 import java.util.AbstractList;
 import java.util.List;
@@ -29,7 +28,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class CartesianList<E> extends AbstractList<List<E>> implements RandomAccess {
 
diff --git a/android/guava/src/com/google/common/collect/ClassToInstanceMap.java b/android/guava/src/com/google/common/collect/ClassToInstanceMap.java
index 9bd826f..c6b0da4 100644
--- a/android/guava/src/com/google/common/collect/ClassToInstanceMap.java
+++ b/android/guava/src/com/google/common/collect/ClassToInstanceMap.java
@@ -16,9 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Map;
 import javax.annotation.CheckForNull;
 
@@ -52,8 +49,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@DoNotMock("Use ImmutableClassToInstanceMap or MutableClassToInstanceMap")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 // If we ever support non-null projections (https://github.com/jspecify/jspecify/issues/86), we
 // we might annotate this as...
@@ -75,7 +70,6 @@ public interface ClassToInstanceMap<B> extends Map<Class<? extends B>, B> {
    * @return the value previously associated with this class (possibly {@code null}), or {@code
    *     null} if there was no previous entry.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   <T extends B> T putInstance(Class<T> type, T value);
 }
diff --git a/android/guava/src/com/google/common/collect/CollectPreconditions.java b/android/guava/src/com/google/common/collect/CollectPreconditions.java
index c649b03..a9fa1cd 100644
--- a/android/guava/src/com/google/common/collect/CollectPreconditions.java
+++ b/android/guava/src/com/google/common/collect/CollectPreconditions.java
@@ -18,11 +18,8 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 
 /** Precondition checks useful in collection implementations. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class CollectPreconditions {
 
@@ -34,7 +31,6 @@ final class CollectPreconditions {
     }
   }
 
-  @CanIgnoreReturnValue
   static int checkNonnegative(int value, String name) {
     if (value < 0) {
       throw new IllegalArgumentException(name + " cannot be negative but was: " + value);
@@ -42,7 +38,6 @@ final class CollectPreconditions {
     return value;
   }
 
-  @CanIgnoreReturnValue
   static long checkNonnegative(long value, String name) {
     if (value < 0) {
       throw new IllegalArgumentException(name + " cannot be negative but was: " + value);
diff --git a/android/guava/src/com/google/common/collect/Collections2.java b/android/guava/src/com/google/common/collect/Collections2.java
index 1e651b5..1e5e13c 100644
--- a/android/guava/src/com/google/common/collect/Collections2.java
+++ b/android/guava/src/com/google/common/collect/Collections2.java
@@ -19,10 +19,7 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
@@ -37,7 +34,6 @@ import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static methods for working with {@code Collection} instances.
@@ -52,7 +48,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Collections2 {
   private Collections2() {}
@@ -84,7 +79,7 @@ public final class Collections2 {
    */
   // TODO(kevinb): how can we omit that Iterables link when building gwt
   // javadoc?
-  public static <E extends @Nullable Object> Collection<E> filter(
+  public static <E extends Object> Collection<E> filter(
       Collection<E> unfiltered, Predicate<? super E> predicate) {
     if (unfiltered instanceof FilteredCollection) {
       // Support clear(), removeAll(), and retainAll() when filtering a filtered
@@ -121,7 +116,7 @@ public final class Collections2 {
     }
   }
 
-  static class FilteredCollection<E extends @Nullable Object> extends AbstractCollection<E> {
+  static class FilteredCollection<E extends Object> extends AbstractCollection<E> {
     final Collection<E> unfiltered;
     final Predicate<? super E> predicate;
 
@@ -224,14 +219,14 @@ public final class Collections2 {
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       // creating an ArrayList so filtering happens once
       return Lists.newArrayList(iterator()).toArray();
     }
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return Lists.newArrayList(iterator()).toArray(array);
     }
   }
@@ -255,12 +250,12 @@ public final class Collections2 {
    *
    * <p><b>{@code Stream} equivalent:</b> {@link java.util.stream.Stream#map Stream.map}.
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> Collection<T> transform(
+  public static <F extends Object, T extends Object> Collection<T> transform(
       Collection<F> fromCollection, Function<? super F, T> function) {
     return new TransformedCollection<>(fromCollection, function);
   }
 
-  static class TransformedCollection<F extends @Nullable Object, T extends @Nullable Object>
+  static class TransformedCollection<F extends Object, T extends Object>
       extends AbstractCollection<T> {
     final Collection<F> fromCollection;
     final Function<? super F, ? extends T> function;
@@ -357,7 +352,6 @@ public final class Collections2 {
    * @throws NullPointerException if the specified iterable is null or has any null elements.
    * @since 12.0
    */
-  @Beta
   public static <E extends Comparable<? super E>> Collection<List<E>> orderedPermutations(
       Iterable<E> elements) {
     return orderedPermutations(elements, Ordering.natural());
@@ -409,7 +403,6 @@ public final class Collections2 {
    *     the specified comparator is null.
    * @since 12.0
    */
-  @Beta
   public static <E> Collection<List<E>> orderedPermutations(
       Iterable<E> elements, Comparator<? super E> comparator) {
     return new OrderedPermutationCollection<E>(elements, comparator);
@@ -571,7 +564,6 @@ public final class Collections2 {
    * @throws NullPointerException if the specified collection is null or has any null elements.
    * @since 12.0
    */
-  @Beta
   public static <E> Collection<List<E>> permutations(Collection<E> elements) {
     return new PermutationCollection<E>(ImmutableList.copyOf(elements));
   }
diff --git a/android/guava/src/com/google/common/collect/CompactHashMap.java b/android/guava/src/com/google/common/collect/CompactHashMap.java
index e70596d..ec07054 100644
--- a/android/guava/src/com/google/common/collect/CompactHashMap.java
+++ b/android/guava/src/com/google/common/collect/CompactHashMap.java
@@ -19,17 +19,11 @@ package com.google.common.collect;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 import static com.google.common.collect.CompactHashing.UNSET;
 import static com.google.common.collect.Hashing.smearedHash;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.collect.NullnessCasts.unsafeNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
@@ -47,7 +41,6 @@ import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * CompactHashMap is an implementation of a Map. All optional operations (put and remove) are
@@ -75,9 +68,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @author Jon Noack
  */
-@GwtIncompatible // not worth using in GWT for now
+// not worth using in GWT for now
 @ElementTypesAreNonnullByDefault
-class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
+class CompactHashMap<K extends Object, V extends Object>
     extends AbstractMap<K, V> implements Serializable {
   /*
    * TODO: Make this a drop-in replacement for j.u. versions, actually drop them in, and test the
@@ -88,7 +81,7 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
    */
 
   /** Creates an empty {@code CompactHashMap} instance. */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       CompactHashMap<K, V> create() {
     return new CompactHashMap<>();
   }
@@ -102,7 +95,7 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
    *     elements without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       CompactHashMap<K, V> createWithExpectedSize(int expectedSize) {
     return new CompactHashMap<>(expectedSize);
   }
@@ -113,8 +106,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
    * Maximum allowed false positive probability of detecting a hash flooding attack given random
    * input.
    */
-  @VisibleForTesting(
-      )
   static final double HASH_FLOODING_FPP = 0.001;
 
   /**
@@ -199,19 +190,19 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
    *
    * <p>The pointers in [size(), entries.length) are all "null" (UNSET).
    */
-  @VisibleForTesting @CheckForNull transient int[] entries;
+  @CheckForNull transient int[] entries;
 
   /**
    * The keys of the entries in the map, in the range of [0, size()). The keys in [size(),
    * keys.length) are all {@code null}.
    */
-  @VisibleForTesting @CheckForNull transient @Nullable Object[] keys;
+  @CheckForNull transient Object[] keys;
 
   /**
    * The values of the entries in the map, in the range of [0, size()). The values in [size(),
    * values.length) are all {@code null}.
    */
-  @VisibleForTesting @CheckForNull transient @Nullable Object[] values;
+  @CheckForNull transient Object[] values;
 
   /**
    * Keeps track of metadata like the number of hash table bits and modifications of this data
@@ -253,13 +244,11 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
   }
 
   /** Returns whether arrays need to be allocated. */
-  @VisibleForTesting
   boolean needsAllocArrays() {
     return table == null;
   }
 
   /** Handle lazy allocation of arrays. */
-  @CanIgnoreReturnValue
   int allocArrays() {
     Preconditions.checkState(needsAllocArrays(), "Arrays already allocated");
 
@@ -276,7 +265,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
   }
 
   @SuppressWarnings("unchecked")
-  @VisibleForTesting
   @CheckForNull
   Map<K, V> delegateOrNull() {
     if (table instanceof Map) {
@@ -289,8 +277,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return new LinkedHashMap<>(tableSize, 1.0f);
   }
 
-  @VisibleForTesting
-  @CanIgnoreReturnValue
   Map<K, V> convertToHashFloodingResistantImplementation() {
     Map<K, V> newDelegate = createHashFloodingResistantDelegate(hashTableMask() + 1);
     for (int i = firstEntryIndex(); i >= 0; i = getSuccessor(i)) {
@@ -328,7 +314,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     // no-op by default
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(@ParametricNullness K key, @ParametricNullness V value) {
@@ -340,8 +325,8 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
       return delegate.put(key, value);
     }
     int[] entries = requireEntries();
-    @Nullable Object[] keys = requireKeys();
-    @Nullable Object[] values = requireValues();
+    Object[] keys = requireKeys();
+    Object[] values = requireValues();
 
     int newEntryIndex = this.size; // current size, and pointer to the entry to be appended
     int newSize = newEntryIndex + 1;
@@ -428,7 +413,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     this.values = Arrays.copyOf(requireValues(), newCapacity);
   }
 
-  @CanIgnoreReturnValue
   private int resizeTable(int oldMask, int newCapacity, int targetHash, int targetEntryIndex) {
     Object newTable = CompactHashing.createTable(newCapacity);
     int newMask = newCapacity - 1;
@@ -519,7 +503,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return value(index);
   }
 
-  @CanIgnoreReturnValue
   @SuppressWarnings("unchecked") // known to be a V
   @Override
   @CheckForNull
@@ -532,7 +515,7 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return (oldValue == NOT_FOUND) ? null : (V) oldValue;
   }
 
-  private @Nullable Object removeHelper(@CheckForNull Object key) {
+  private Object removeHelper(@CheckForNull Object key) {
     if (needsAllocArrays()) {
       return NOT_FOUND;
     }
@@ -565,8 +548,8 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
   void moveLastEntry(int dstIndex, int mask) {
     Object table = requireTable();
     int[] entries = requireEntries();
-    @Nullable Object[] keys = requireKeys();
-    @Nullable Object[] values = requireValues();
+    Object[] keys = requireKeys();
+    Object[] values = requireValues();
     int srcIndex = size() - 1;
     if (dstIndex < srcIndex) {
       // move last entry to deleted spot
@@ -623,7 +606,7 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return indexBeforeRemove - 1;
   }
 
-  private abstract class Itr<T extends @Nullable Object> implements Iterator<T> {
+  private abstract class Itr<T extends Object> implements Iterator<T> {
     int expectedMetadata = metadata;
     int currentIndex = firstEntryIndex();
     int indexToRemove = -1;
@@ -681,7 +664,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return new KeySetView();
   }
 
-  @WeakOuter
   class KeySetView extends AbstractSet<K> {
     @Override
     public int size() {
@@ -737,7 +719,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return new EntrySetView();
   }
 
-  @WeakOuter
   class EntrySetView extends AbstractSet<Entry<K, V>> {
 
     @Override
@@ -917,7 +898,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return new ValuesView();
   }
 
-  @WeakOuter
   class ValuesView extends AbstractCollection<V> {
     @Override
     public int size() {
@@ -1043,11 +1023,11 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return requireNonNull(entries);
   }
 
-  private @Nullable Object[] requireKeys() {
+  private Object[] requireKeys() {
     return requireNonNull(keys);
   }
 
-  private @Nullable Object[] requireValues() {
+  private Object[] requireValues() {
     return requireNonNull(values);
   }
 
diff --git a/android/guava/src/com/google/common/collect/CompactHashSet.java b/android/guava/src/com/google/common/collect/CompactHashSet.java
index 08c7294..1f36a6a 100644
--- a/android/guava/src/com/google/common/collect/CompactHashSet.java
+++ b/android/guava/src/com/google/common/collect/CompactHashSet.java
@@ -19,14 +19,10 @@ package com.google.common.collect;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 import static com.google.common.collect.CompactHashing.UNSET;
 import static com.google.common.collect.Hashing.smearedHash;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
@@ -42,7 +38,6 @@ import java.util.LinkedHashSet;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * CompactHashSet is an implementation of a Set. All optional operations (adding and removing) are
@@ -71,13 +66,13 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Dimitris Andreou
  * @author Jon Noack
  */
-@GwtIncompatible // not worth using in GWT for now
+// not worth using in GWT for now
 @ElementTypesAreNonnullByDefault
-class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implements Serializable {
+class CompactHashSet<E extends Object> extends AbstractSet<E> implements Serializable {
   // TODO(user): cache all field accesses in local vars
 
   /** Creates an empty {@code CompactHashSet} instance. */
-  public static <E extends @Nullable Object> CompactHashSet<E> create() {
+  public static <E extends Object> CompactHashSet<E> create() {
     return new CompactHashSet<>();
   }
 
@@ -88,7 +83,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
    * @param collection the elements that the set should contain
    * @return a new {@code CompactHashSet} containing those elements (minus duplicates)
    */
-  public static <E extends @Nullable Object> CompactHashSet<E> create(
+  public static <E extends Object> CompactHashSet<E> create(
       Collection<? extends E> collection) {
     CompactHashSet<E> set = createWithExpectedSize(collection.size());
     set.addAll(collection);
@@ -103,7 +98,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
    * @return a new {@code CompactHashSet} containing those elements (minus duplicates)
    */
   @SafeVarargs
-  public static <E extends @Nullable Object> CompactHashSet<E> create(E... elements) {
+  public static <E extends Object> CompactHashSet<E> create(E... elements) {
     CompactHashSet<E> set = createWithExpectedSize(elements.length);
     Collections.addAll(set, elements);
     return set;
@@ -118,7 +113,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
    *     elements without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <E extends @Nullable Object> CompactHashSet<E> createWithExpectedSize(
+  public static <E extends Object> CompactHashSet<E> createWithExpectedSize(
       int expectedSize) {
     return new CompactHashSet<>(expectedSize);
   }
@@ -127,8 +122,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
    * Maximum allowed false positive probability of detecting a hash flooding attack given random
    * input.
    */
-  @VisibleForTesting(
-      )
   static final double HASH_FLOODING_FPP = 0.001;
 
   /**
@@ -183,7 +176,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
    * The elements contained in the set, in the range of [0, size()). The elements in [size(),
    * elements.length) are all {@code null}.
    */
-  @VisibleForTesting @CheckForNull transient @Nullable Object[] elements;
+  @CheckForNull transient Object[] elements;
 
   /**
    * Keeps track of metadata like the number of hash table bits and modifications of this data
@@ -219,13 +212,11 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
   }
 
   /** Returns whether arrays need to be allocated. */
-  @VisibleForTesting
   boolean needsAllocArrays() {
     return table == null;
   }
 
   /** Handle lazy allocation of arrays. */
-  @CanIgnoreReturnValue
   int allocArrays() {
     Preconditions.checkState(needsAllocArrays(), "Arrays already allocated");
 
@@ -241,7 +232,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
   }
 
   @SuppressWarnings("unchecked")
-  @VisibleForTesting
   @CheckForNull
   Set<E> delegateOrNull() {
     if (table instanceof Set) {
@@ -254,8 +244,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     return new LinkedHashSet<>(tableSize, 1.0f);
   }
 
-  @VisibleForTesting
-  @CanIgnoreReturnValue
   Set<E> convertToHashFloodingResistantImplementation() {
     Set<E> newDelegate = createHashFloodingResistantDelegate(hashTableMask() + 1);
     for (int i = firstEntryIndex(); i >= 0; i = getSuccessor(i)) {
@@ -268,7 +256,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     return newDelegate;
   }
 
-  @VisibleForTesting
   boolean isUsingHashFloodingResistance() {
     return delegateOrNull() != null;
   }
@@ -289,7 +276,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     metadata += CompactHashing.MODIFICATION_COUNT_INCREMENT;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean add(@ParametricNullness E object) {
     if (needsAllocArrays()) {
@@ -300,7 +286,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
       return delegate.add(object);
     }
     int[] entries = requireEntries();
-    @Nullable Object[] elements = requireElements();
+    Object[] elements = requireElements();
 
     int newEntryIndex = this.size; // current size, and pointer to the entry to be appended
     int newSize = newEntryIndex + 1;
@@ -379,7 +365,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     this.elements = Arrays.copyOf(requireElements(), newCapacity);
   }
 
-  @CanIgnoreReturnValue
   private int resizeTable(int oldMask, int newCapacity, int targetHash, int targetEntryIndex) {
     Object newTable = CompactHashing.createTable(newCapacity);
     int newMask = newCapacity - 1;
@@ -444,7 +429,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     return false;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@CheckForNull Object object) {
     if (needsAllocArrays()) {
@@ -481,7 +465,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
   void moveLastEntry(int dstIndex, int mask) {
     Object table = requireTable();
     int[] entries = requireEntries();
-    @Nullable Object[] elements = requireElements();
+    Object[] elements = requireElements();
     int srcIndex = size() - 1;
     if (dstIndex < srcIndex) {
       // move last entry to deleted spot
@@ -598,7 +582,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
   }
 
   @Override
-  public @Nullable Object[] toArray() {
+  public Object[] toArray() {
     if (needsAllocArrays()) {
       return new Object[0];
     }
@@ -606,10 +590,9 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     return (delegate != null) ? delegate.toArray() : Arrays.copyOf(requireElements(), size);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-  public <T extends @Nullable Object> T[] toArray(T[] a) {
+  public <T extends Object> T[] toArray(T[] a) {
     if (needsAllocArrays()) {
       if (a.length > 0) {
         a[0] = null;
@@ -704,7 +687,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     return requireNonNull(entries);
   }
 
-  private @Nullable Object[] requireElements() {
+  private Object[] requireElements() {
     return requireNonNull(elements);
   }
 
diff --git a/android/guava/src/com/google/common/collect/CompactHashing.java b/android/guava/src/com/google/common/collect/CompactHashing.java
index a8fe902..c1b4003 100644
--- a/android/guava/src/com/google/common/collect/CompactHashing.java
+++ b/android/guava/src/com/google/common/collect/CompactHashing.java
@@ -16,19 +16,16 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.primitives.Ints;
 import java.util.Arrays;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Helper classes and static methods for implementing compact hash-based collections.
  *
  * @author Jon Noack
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class CompactHashing {
   private CompactHashing() {}
diff --git a/android/guava/src/com/google/common/collect/CompactLinkedHashMap.java b/android/guava/src/com/google/common/collect/CompactLinkedHashMap.java
index fb648a7..7f5c5d4 100644
--- a/android/guava/src/com/google/common/collect/CompactLinkedHashMap.java
+++ b/android/guava/src/com/google/common/collect/CompactLinkedHashMap.java
@@ -16,16 +16,11 @@
 
 package com.google.common.collect;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * CompactLinkedHashMap is an implementation of a Map with insertion or LRU iteration order,
@@ -47,14 +42,14 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // not worth using in GWT for now
+// not worth using in GWT for now
 @ElementTypesAreNonnullByDefault
-class CompactLinkedHashMap<K extends @Nullable Object, V extends @Nullable Object>
+class CompactLinkedHashMap<K extends Object, V extends Object>
     extends CompactHashMap<K, V> {
   // TODO(lowasser): implement removeEldestEntry so this can be used as a drop-in replacement
 
   /** Creates an empty {@code CompactLinkedHashMap} instance. */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       CompactLinkedHashMap<K, V> create() {
     return new CompactLinkedHashMap<>();
   }
@@ -68,7 +63,7 @@ class CompactLinkedHashMap<K extends @Nullable Object, V extends @Nullable Objec
    *     expectedSize} elements without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       CompactLinkedHashMap<K, V> createWithExpectedSize(int expectedSize) {
     return new CompactLinkedHashMap<>(expectedSize);
   }
@@ -84,7 +79,7 @@ class CompactLinkedHashMap<K extends @Nullable Object, V extends @Nullable Objec
    * <p>A node with "prev" pointer equal to {@code ENDPOINT} is the first node in the linked list,
    * and a node with "next" pointer equal to {@code ENDPOINT} is the last node.
    */
-  @CheckForNull @VisibleForTesting transient long[] links;
+  @CheckForNull transient long[] links;
 
   /** Pointer to the first node in the linked list, or {@code ENDPOINT} if there are no entries. */
   private transient int firstEntry;
@@ -127,7 +122,6 @@ class CompactLinkedHashMap<K extends @Nullable Object, V extends @Nullable Objec
   }
 
   @Override
-  @CanIgnoreReturnValue
   Map<K, V> convertToHashFloodingResistantImplementation() {
     Map<K, V> result = super.convertToHashFloodingResistantImplementation();
     links = null;
diff --git a/android/guava/src/com/google/common/collect/CompactLinkedHashSet.java b/android/guava/src/com/google/common/collect/CompactLinkedHashSet.java
index 21d4805..533d6bb 100644
--- a/android/guava/src/com/google/common/collect/CompactLinkedHashSet.java
+++ b/android/guava/src/com/google/common/collect/CompactLinkedHashSet.java
@@ -16,16 +16,12 @@
 
 package com.google.common.collect;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * CompactLinkedHashSet is an implementation of a Set, which a predictable iteration order that
@@ -48,12 +44,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // not worth using in GWT for now
+// not worth using in GWT for now
 @ElementTypesAreNonnullByDefault
-class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E> {
+class CompactLinkedHashSet<E extends Object> extends CompactHashSet<E> {
 
   /** Creates an empty {@code CompactLinkedHashSet} instance. */
-  public static <E extends @Nullable Object> CompactLinkedHashSet<E> create() {
+  public static <E extends Object> CompactLinkedHashSet<E> create() {
     return new CompactLinkedHashSet<>();
   }
 
@@ -64,7 +60,7 @@ class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E>
    * @param collection the elements that the set should contain
    * @return a new {@code CompactLinkedHashSet} containing those elements (minus duplicates)
    */
-  public static <E extends @Nullable Object> CompactLinkedHashSet<E> create(
+  public static <E extends Object> CompactLinkedHashSet<E> create(
       Collection<? extends E> collection) {
     CompactLinkedHashSet<E> set = createWithExpectedSize(collection.size());
     set.addAll(collection);
@@ -79,7 +75,7 @@ class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E>
    * @return a new {@code CompactLinkedHashSet} containing those elements (minus duplicates)
    */
   @SafeVarargs
-  public static <E extends @Nullable Object> CompactLinkedHashSet<E> create(E... elements) {
+  public static <E extends Object> CompactLinkedHashSet<E> create(E... elements) {
     CompactLinkedHashSet<E> set = createWithExpectedSize(elements.length);
     Collections.addAll(set, elements);
     return set;
@@ -94,7 +90,7 @@ class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E>
    *     expectedSize} elements without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <E extends @Nullable Object> CompactLinkedHashSet<E> createWithExpectedSize(
+  public static <E extends Object> CompactLinkedHashSet<E> createWithExpectedSize(
       int expectedSize) {
     return new CompactLinkedHashSet<>(expectedSize);
   }
@@ -147,7 +143,6 @@ class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E>
   }
 
   @Override
-  @CanIgnoreReturnValue
   Set<E> convertToHashFloodingResistantImplementation() {
     Set<E> result = super.convertToHashFloodingResistantImplementation();
     this.predecessor = null;
@@ -231,13 +226,13 @@ class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E>
   }
 
   @Override
-  public @Nullable Object[] toArray() {
+  public Object[] toArray() {
     return ObjectArrays.toArrayImpl(this);
   }
 
   @Override
   @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-  public <T extends @Nullable Object> T[] toArray(T[] a) {
+  public <T extends Object> T[] toArray(T[] a) {
     return ObjectArrays.toArrayImpl(this, a);
   }
 
diff --git a/android/guava/src/com/google/common/collect/ComparatorOrdering.java b/android/guava/src/com/google/common/collect/ComparatorOrdering.java
index 8b34070..83dabe8 100644
--- a/android/guava/src/com/google/common/collect/ComparatorOrdering.java
+++ b/android/guava/src/com/google/common/collect/ComparatorOrdering.java
@@ -18,16 +18,13 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Comparator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering for a pre-existing comparator. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class ComparatorOrdering<T extends @Nullable Object> extends Ordering<T>
+final class ComparatorOrdering<T extends Object> extends Ordering<T>
     implements Serializable {
   final Comparator<T> comparator;
 
diff --git a/android/guava/src/com/google/common/collect/Comparators.java b/android/guava/src/com/google/common/collect/Comparators.java
index 6a5670c..b123f08 100644
--- a/android/guava/src/com/google/common/collect/Comparators.java
+++ b/android/guava/src/com/google/common/collect/Comparators.java
@@ -18,11 +18,8 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static methods for working with {@link Comparator} instances. For many other helpful
@@ -39,8 +36,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 21.0
  * @author Louis Wasserman
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Comparators {
   private Comparators() {}
@@ -59,7 +54,7 @@ public final class Comparators {
   // Note: 90% of the time we don't add type parameters or wildcards that serve only to "tweak" the
   // desired return type. However, *nested* generics introduce a special class of problems that we
   // think tip it over into being worthwhile.
-  public static <T extends @Nullable Object, S extends T> Comparator<Iterable<S>> lexicographical(
+  public static <T extends Object, S extends T> Comparator<Iterable<S>> lexicographical(
       Comparator<T> comparator) {
     return new LexicographicalOrdering<S>(checkNotNull(comparator));
   }
@@ -69,7 +64,7 @@ public final class Comparators {
    * equal to the element that preceded it, according to the specified comparator. Note that this is
    * always true when the iterable has fewer than two elements.
    */
-  public static <T extends @Nullable Object> boolean isInOrder(
+  public static <T extends Object> boolean isInOrder(
       Iterable<? extends T> iterable, Comparator<T> comparator) {
     checkNotNull(comparator);
     Iterator<? extends T> it = iterable.iterator();
@@ -91,7 +86,7 @@ public final class Comparators {
    * greater than the element that preceded it, according to the specified comparator. Note that
    * this is always true when the iterable has fewer than two elements.
    */
-  public static <T extends @Nullable Object> boolean isInStrictOrder(
+  public static <T extends Object> boolean isInStrictOrder(
       Iterable<? extends T> iterable, Comparator<T> comparator) {
     checkNotNull(comparator);
     Iterator<? extends T> it = iterable.iterator();
@@ -121,7 +116,6 @@ public final class Comparators {
    * @throws ClassCastException if the parameters are not <i>mutually comparable</i>.
    * @since 30.0
    */
-  @Beta
   public static <T extends Comparable<? super T>> T min(T a, T b) {
     return (a.compareTo(b) <= 0) ? a : b;
   }
@@ -141,9 +135,8 @@ public final class Comparators {
    *     comparator.
    * @since 30.0
    */
-  @Beta
   @ParametricNullness
-  public static <T extends @Nullable Object> T min(
+  public static <T extends Object> T min(
       @ParametricNullness T a, @ParametricNullness T b, Comparator<T> comparator) {
     return (comparator.compare(a, b) <= 0) ? a : b;
   }
@@ -161,7 +154,6 @@ public final class Comparators {
    * @throws ClassCastException if the parameters are not <i>mutually comparable</i>.
    * @since 30.0
    */
-  @Beta
   public static <T extends Comparable<? super T>> T max(T a, T b) {
     return (a.compareTo(b) >= 0) ? a : b;
   }
@@ -181,9 +173,8 @@ public final class Comparators {
    *     comparator.
    * @since 30.0
    */
-  @Beta
   @ParametricNullness
-  public static <T extends @Nullable Object> T max(
+  public static <T extends Object> T max(
       @ParametricNullness T a, @ParametricNullness T b, Comparator<T> comparator) {
     return (comparator.compare(a, b) >= 0) ? a : b;
   }
diff --git a/android/guava/src/com/google/common/collect/ComparisonChain.java b/android/guava/src/com/google/common/collect/ComparisonChain.java
index 32aeb4d..b7937f0 100644
--- a/android/guava/src/com/google/common/collect/ComparisonChain.java
+++ b/android/guava/src/com/google/common/collect/ComparisonChain.java
@@ -16,12 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.primitives.Booleans;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.Longs;
 import java.util.Comparator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A utility for performing a chained comparison statement. For example:
@@ -56,7 +54,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ComparisonChain {
   private ComparisonChain() {}
@@ -75,7 +72,7 @@ public abstract class ComparisonChain {
         }
 
         @Override
-        public <T extends @Nullable Object> ComparisonChain compare(
+        public <T extends Object> ComparisonChain compare(
             @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {
           return classify(comparator.compare(left, right));
         }
@@ -137,7 +134,7 @@ public abstract class ComparisonChain {
     }
 
     @Override
-    public <T extends @Nullable Object> ComparisonChain compare(
+    public <T extends Object> ComparisonChain compare(
         @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {
       return this;
     }
@@ -200,7 +197,7 @@ public abstract class ComparisonChain {
    * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not
    * already been determined.
    */
-  public abstract <T extends @Nullable Object> ComparisonChain compare(
+  public abstract <T extends Object> ComparisonChain compare(
       @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);
 
   /**
diff --git a/android/guava/src/com/google/common/collect/CompoundOrdering.java b/android/guava/src/com/google/common/collect/CompoundOrdering.java
index 42feed3..22f3c59 100644
--- a/android/guava/src/com/google/common/collect/CompoundOrdering.java
+++ b/android/guava/src/com/google/common/collect/CompoundOrdering.java
@@ -16,17 +16,14 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Comparator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering that tries several comparators in order. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class CompoundOrdering<T extends @Nullable Object> extends Ordering<T>
+final class CompoundOrdering<T extends Object> extends Ordering<T>
     implements Serializable {
   final Comparator<? super T>[] comparators;
 
diff --git a/android/guava/src/com/google/common/collect/ComputationException.java b/android/guava/src/com/google/common/collect/ComputationException.java
index b05577c..101d25b 100644
--- a/android/guava/src/com/google/common/collect/ComputationException.java
+++ b/android/guava/src/com/google/common/collect/ComputationException.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -33,7 +32,6 @@ import javax.annotation.CheckForNull;
  *     from Guava.)
  */
 @Deprecated
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class ComputationException extends RuntimeException {
   /** Creates a new instance with the given cause. */
diff --git a/android/guava/src/com/google/common/collect/ConcurrentHashMultiset.java b/android/guava/src/com/google/common/collect/ConcurrentHashMultiset.java
index ab03ead..435e819 100644
--- a/android/guava/src/com/google/common/collect/ConcurrentHashMultiset.java
+++ b/android/guava/src/com/google/common/collect/ConcurrentHashMultiset.java
@@ -21,14 +21,9 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Serialization.FieldSetter;
 import com.google.common.math.IntMath;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -42,7 +37,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A multiset that supports concurrent modifications and that provides atomic versions of most
@@ -56,7 +50,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author mike nonemacher
  * @since 2.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> implements Serializable {
 
@@ -119,12 +112,10 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    * @throws IllegalArgumentException if {@code countMap} is not empty
    * @since 20.0
    */
-  @Beta
   public static <E> ConcurrentHashMultiset<E> create(ConcurrentMap<E, AtomicInteger> countMap) {
     return new ConcurrentHashMultiset<E>(countMap);
   }
 
-  @VisibleForTesting
   ConcurrentHashMultiset(ConcurrentMap<E, AtomicInteger> countMap) {
     checkArgument(countMap.isEmpty(), "the backing map (%s) must be empty", countMap);
     this.countMap = countMap;
@@ -171,7 +162,7 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
 
   @Override
   @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-  public <T extends @Nullable Object> T[] toArray(T[] array) {
+  public <T extends Object> T[] toArray(T[] array) {
     return snapshot().toArray(array);
   }
 
@@ -201,7 +192,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    * @throws IllegalArgumentException if {@code occurrences} is negative, or if the resulting amount
    *     would exceed {@link Integer#MAX_VALUE}
    */
-  @CanIgnoreReturnValue
   @Override
   public int add(E element, int occurrences) {
     checkNotNull(element);
@@ -268,7 +258,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    * we'll want to remove @Nullable, add an eager checkNotNull, and loosen up
    * testRemove_nullAllowed.
    */
-  @CanIgnoreReturnValue
   @Override
   public int remove(@CheckForNull Object element, int occurrences) {
     if (occurrences == 0) {
@@ -310,7 +299,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    * @return {@code true} if the removal was possible (including if {@code occurrences} is zero)
    * @throws IllegalArgumentException if {@code occurrences} is negative
    */
-  @CanIgnoreReturnValue
   public boolean removeExactly(@CheckForNull Object element, int occurrences) {
     if (occurrences == 0) {
       return true;
@@ -345,7 +333,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    * @return the count of {@code element} in the multiset before this call
    * @throws IllegalArgumentException if {@code count} is negative
    */
-  @CanIgnoreReturnValue
   @Override
   public int setCount(E element, int count) {
     checkNotNull(element);
@@ -401,7 +388,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    *     method will return {@code true} if the condition was met.
    * @throws IllegalArgumentException if {@code expectedOldCount} or {@code newCount} is negative
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean setCount(E element, int expectedOldCount, int newCount) {
     checkNotNull(element);
@@ -558,7 +544,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
     countMap.clear();
   }
 
-  @WeakOuter
   private class EntrySet extends AbstractMultiset<E>.EntrySet {
     @Override
     ConcurrentHashMultiset<E> multiset() {
@@ -577,7 +562,7 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return snapshot().toArray(array);
     }
 
diff --git a/android/guava/src/com/google/common/collect/ConsumingQueueIterator.java b/android/guava/src/com/google/common/collect/ConsumingQueueIterator.java
index 7721e12..39e44f9 100644
--- a/android/guava/src/com/google/common/collect/ConsumingQueueIterator.java
+++ b/android/guava/src/com/google/common/collect/ConsumingQueueIterator.java
@@ -16,18 +16,15 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Queue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An Iterator implementation which draws elements from a queue, removing them from the queue as it
  * iterates.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class ConsumingQueueIterator<T extends @Nullable Object> extends AbstractIterator<T> {
+final class ConsumingQueueIterator<T extends Object> extends AbstractIterator<T> {
   private final Queue<T> queue;
 
   ConsumingQueueIterator(Queue<T> queue) {
diff --git a/android/guava/src/com/google/common/collect/ContiguousSet.java b/android/guava/src/com/google/common/collect/ContiguousSet.java
index cd77042..e230e75 100644
--- a/android/guava/src/com/google/common/collect/ContiguousSet.java
+++ b/android/guava/src/com/google/common/collect/ContiguousSet.java
@@ -16,12 +16,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.Collections;
 import java.util.NoSuchElementException;
 import java.util.Set;
@@ -48,7 +43,6 @@ import java.util.Set;
  * @author Gregory Kick
  * @since 10.0
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("rawtypes") // allow ungenerified Comparable types
 @ElementTypesAreNonnullByDefault
 public abstract class ContiguousSet<C extends Comparable> extends ImmutableSortedSet<C> {
@@ -103,7 +97,6 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
    * @throws IllegalArgumentException if {@code lower} is greater than {@code upper}
    * @since 23.0
    */
-  @Beta
   public static ContiguousSet<Integer> closed(int lower, int upper) {
     return create(Range.closed(lower, upper), DiscreteDomain.integers());
   }
@@ -116,7 +109,6 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
    * @throws IllegalArgumentException if {@code lower} is greater than {@code upper}
    * @since 23.0
    */
-  @Beta
   public static ContiguousSet<Long> closed(long lower, long upper) {
     return create(Range.closed(lower, upper), DiscreteDomain.longs());
   }
@@ -129,7 +121,6 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
    * @throws IllegalArgumentException if {@code lower} is greater than {@code upper}
    * @since 23.0
    */
-  @Beta
   public static ContiguousSet<Integer> closedOpen(int lower, int upper) {
     return create(Range.closedOpen(lower, upper), DiscreteDomain.integers());
   }
@@ -142,7 +133,6 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
    * @throws IllegalArgumentException if {@code lower} is greater than {@code upper}
    * @since 23.0
    */
-  @Beta
   public static ContiguousSet<Long> closedOpen(long lower, long upper) {
     return create(Range.closedOpen(lower, upper), DiscreteDomain.longs());
   }
@@ -160,7 +150,7 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
   }
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public ContiguousSet<C> headSet(C toElement, boolean inclusive) {
     return headSetImpl(checkNotNull(toElement), inclusive);
@@ -175,7 +165,7 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
   }
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public ContiguousSet<C> subSet(
       C fromElement, boolean fromInclusive, C toElement, boolean toInclusive) {
@@ -191,7 +181,7 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
   }
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public ContiguousSet<C> tailSet(C fromElement, boolean inclusive) {
     return tailSetImpl(checkNotNull(fromElement), inclusive);
@@ -240,7 +230,7 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
   public abstract Range<C> range(BoundType lowerBoundType, BoundType upperBoundType);
 
   @Override
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   ImmutableSortedSet<C> createDescendingSet() {
     return new DescendingImmutableSortedSet<C>(this);
   }
@@ -260,7 +250,6 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
    * @deprecated Use {@link #create}.
    */
   @Deprecated
-  @DoNotCall("Always throws UnsupportedOperationException")
   public static <E> ImmutableSortedSet.Builder<E> builder() {
     throw new UnsupportedOperationException();
   }
diff --git a/android/guava/src/com/google/common/collect/Count.java b/android/guava/src/com/google/common/collect/Count.java
index 7aa5550..9b1e17d 100644
--- a/android/guava/src/com/google/common/collect/Count.java
+++ b/android/guava/src/com/google/common/collect/Count.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -23,7 +22,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class Count implements Serializable {
   private int value;
diff --git a/android/guava/src/com/google/common/collect/Cut.java b/android/guava/src/com/google/common/collect/Cut.java
index 4a8d4c7..3aff92c 100644
--- a/android/guava/src/com/google/common/collect/Cut.java
+++ b/android/guava/src/com/google/common/collect/Cut.java
@@ -16,7 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.primitives.Booleans;
 import java.io.Serializable;
 import java.util.NoSuchElementException;
@@ -31,7 +30,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class Cut<C extends Comparable> implements Comparable<Cut<C>>, Serializable {
   final C endpoint;
diff --git a/android/guava/src/com/google/common/collect/DenseImmutableTable.java b/android/guava/src/com/google/common/collect/DenseImmutableTable.java
index 9de77c5..0f27ecc 100644
--- a/android/guava/src/com/google/common/collect/DenseImmutableTable.java
+++ b/android/guava/src/com/google/common/collect/DenseImmutableTable.java
@@ -14,19 +14,11 @@
 
 package com.google.common.collect;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap.IteratorBasedImmutableMap;
-import com.google.errorprone.annotations.Immutable;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** A {@code RegularImmutableTable} optimized for dense data. */
-@GwtCompatible
-@Immutable(containerOf = {"R", "C", "V"})
 @ElementTypesAreNonnullByDefault
 final class DenseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V> {
   private final ImmutableMap<R, Integer> rowKeyToIndex;
@@ -41,7 +33,7 @@ final class DenseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V>
   private final int[] columnCounts;
 
   @SuppressWarnings("Immutable") // We don't modify this after construction.
-  private final @Nullable V[][] values;
+  private final V[][] values;
 
   // For each cell in iteration order, the index of that cell's row key in the row key list.
   @SuppressWarnings("Immutable") // We don't modify this after construction.
@@ -56,7 +48,6 @@ final class DenseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V>
       ImmutableSet<R> rowSpace,
       ImmutableSet<C> columnSpace) {
     @SuppressWarnings("unchecked")
-    @Nullable
     V[][] array = (@Nullable V[][]) new Object[rowSpace.size()][columnSpace.size()];
     this.values = array;
     this.rowKeyToIndex = Maps.indexMap(rowSpace);
@@ -196,7 +187,6 @@ final class DenseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V>
     }
   }
 
-  @WeakOuter
   private final class RowMap extends ImmutableArrayMap<R, ImmutableMap<C, V>> {
     private RowMap() {
       super(rowCounts.length);
@@ -218,7 +208,6 @@ final class DenseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V>
     }
   }
 
-  @WeakOuter
   private final class ColumnMap extends ImmutableArrayMap<C, ImmutableMap<R, V>> {
     private ColumnMap() {
       super(columnCounts.length);
diff --git a/android/guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java b/android/guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java
index 181731c..26c3e8f 100644
--- a/android/guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java
+++ b/android/guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -23,7 +22,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  */
 @SuppressWarnings("serial") // uses writeReplace, not default serialization
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class DescendingImmutableSortedMultiset<E> extends ImmutableSortedMultiset<E> {
   private final transient ImmutableSortedMultiset<E> forward;
diff --git a/android/guava/src/com/google/common/collect/DescendingImmutableSortedSet.java b/android/guava/src/com/google/common/collect/DescendingImmutableSortedSet.java
index 88c7d6b..75d4bb8 100644
--- a/android/guava/src/com/google/common/collect/DescendingImmutableSortedSet.java
+++ b/android/guava/src/com/google/common/collect/DescendingImmutableSortedSet.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -24,7 +23,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class DescendingImmutableSortedSet<E> extends ImmutableSortedSet<E> {
   private final ImmutableSortedSet<E> forward;
@@ -66,19 +64,16 @@ final class DescendingImmutableSortedSet<E> extends ImmutableSortedSet<E> {
   }
 
   @Override
-  @GwtIncompatible("NavigableSet")
   public ImmutableSortedSet<E> descendingSet() {
     return forward;
   }
 
   @Override
-  @GwtIncompatible("NavigableSet")
   public UnmodifiableIterator<E> descendingIterator() {
     return forward.iterator();
   }
 
   @Override
-  @GwtIncompatible("NavigableSet")
   ImmutableSortedSet<E> createDescendingSet() {
     throw new AssertionError("should never be called");
   }
diff --git a/android/guava/src/com/google/common/collect/DescendingMultiset.java b/android/guava/src/com/google/common/collect/DescendingMultiset.java
index ec5a1d0..264dc95 100644
--- a/android/guava/src/com/google/common/collect/DescendingMultiset.java
+++ b/android/guava/src/com/google/common/collect/DescendingMultiset.java
@@ -16,14 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and
@@ -31,9 +28,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>
+abstract class DescendingMultiset<E extends Object> extends ForwardingMultiset<E>
     implements SortedMultiset<E> {
   abstract SortedMultiset<E> forwardMultiset();
 
@@ -125,7 +121,6 @@ abstract class DescendingMultiset<E extends @Nullable Object> extends Forwarding
   }
 
   Set<Entry<E>> createEntrySet() {
-    @WeakOuter
     class EntrySetImpl extends Multisets.EntrySet<E> {
       @Override
       Multiset<E> multiset() {
@@ -151,13 +146,13 @@ abstract class DescendingMultiset<E extends @Nullable Object> extends Forwarding
   }
 
   @Override
-  public @Nullable Object[] toArray() {
+  public Object[] toArray() {
     return standardToArray();
   }
 
   @Override
   @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-  public <T extends @Nullable Object> T[] toArray(T[] array) {
+  public <T extends Object> T[] toArray(T[] array) {
     return standardToArray(array);
   }
 
diff --git a/android/guava/src/com/google/common/collect/DiscreteDomain.java b/android/guava/src/com/google/common/collect/DiscreteDomain.java
index bce7062..c829d0b 100644
--- a/android/guava/src/com/google/common/collect/DiscreteDomain.java
+++ b/android/guava/src/com/google/common/collect/DiscreteDomain.java
@@ -19,9 +19,7 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.math.BigInteger;
 import java.util.NoSuchElementException;
@@ -43,7 +41,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class DiscreteDomain<C extends Comparable> {
 
@@ -312,7 +309,6 @@ public abstract class DiscreteDomain<C extends Comparable> {
    * @throws NoSuchElementException if the type has no (practical) minimum value; for example,
    *     {@link java.math.BigInteger}
    */
-  @CanIgnoreReturnValue
   public C minValue() {
     throw new NoSuchElementException();
   }
@@ -328,7 +324,6 @@ public abstract class DiscreteDomain<C extends Comparable> {
    * @throws NoSuchElementException if the type has no (practical) maximum value; for example,
    *     {@link java.math.BigInteger}
    */
-  @CanIgnoreReturnValue
   public C maxValue() {
     throw new NoSuchElementException();
   }
diff --git a/android/guava/src/com/google/common/collect/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/collect/ElementTypesAreNonnullByDefault.java
index e1c640f..f69d83e 100644
--- a/android/guava/src/com/google/common/collect/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/collect/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/collect/EmptyContiguousSet.java b/android/guava/src/com/google/common/collect/EmptyContiguousSet.java
index f4fe33c..1e37912 100644
--- a/android/guava/src/com/google/common/collect/EmptyContiguousSet.java
+++ b/android/guava/src/com/google/common/collect/EmptyContiguousSet.java
@@ -13,8 +13,6 @@
  */
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.NoSuchElementException;
 import java.util.Set;
@@ -25,7 +23,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("rawtypes") // allow ungenerified Comparable types
 @ElementTypesAreNonnullByDefault
 final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
@@ -84,7 +81,7 @@ final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
     return false;
   }
 
-  @GwtIncompatible // not used by GWT emulation
+  // not used by GWT emulation
   @Override
   int indexOf(@CheckForNull Object target) {
     return -1;
@@ -95,7 +92,7 @@ final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
     return Iterators.emptyIterator();
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public UnmodifiableIterator<C> descendingIterator() {
     return Iterators.emptyIterator();
@@ -130,7 +127,7 @@ final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
     return false;
   }
 
-  @GwtIncompatible // not used in GWT
+  // not used in GWT
   @Override
   boolean isHashCodeFast() {
     return true;
@@ -141,7 +138,7 @@ final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
     return 0;
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static final class SerializedForm<C extends Comparable> implements Serializable {
     private final DiscreteDomain<C> domain;
 
@@ -156,13 +153,13 @@ final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   @Override
   Object writeReplace() {
     return new SerializedForm<C>(domain);
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   ImmutableSortedSet<C> createDescendingSet() {
     return ImmutableSortedSet.emptySet(Ordering.natural().reverse());
diff --git a/android/guava/src/com/google/common/collect/EmptyImmutableListMultimap.java b/android/guava/src/com/google/common/collect/EmptyImmutableListMultimap.java
index 10d030f..afd40c3 100644
--- a/android/guava/src/com/google/common/collect/EmptyImmutableListMultimap.java
+++ b/android/guava/src/com/google/common/collect/EmptyImmutableListMultimap.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Implementation of {@link ImmutableListMultimap} with no entries.
  *
  * @author Jared Levy
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 class EmptyImmutableListMultimap extends ImmutableListMultimap<Object, Object> {
   static final EmptyImmutableListMultimap INSTANCE = new EmptyImmutableListMultimap();
diff --git a/android/guava/src/com/google/common/collect/EmptyImmutableSetMultimap.java b/android/guava/src/com/google/common/collect/EmptyImmutableSetMultimap.java
index bd0a67a..cc4afdb 100644
--- a/android/guava/src/com/google/common/collect/EmptyImmutableSetMultimap.java
+++ b/android/guava/src/com/google/common/collect/EmptyImmutableSetMultimap.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Implementation of {@link ImmutableListMultimap} with no entries.
  *
  * @author Mike Ward
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 class EmptyImmutableSetMultimap extends ImmutableSetMultimap<Object, Object> {
   static final EmptyImmutableSetMultimap INSTANCE = new EmptyImmutableSetMultimap();
diff --git a/android/guava/src/com/google/common/collect/EnumBiMap.java b/android/guava/src/com/google/common/collect/EnumBiMap.java
index 82aa052..e1598a7 100644
--- a/android/guava/src/com/google/common/collect/EnumBiMap.java
+++ b/android/guava/src/com/google/common/collect/EnumBiMap.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -37,7 +35,6 @@ import java.util.Map;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class EnumBiMap<K extends Enum<K>, V extends Enum<V>> extends AbstractBiMap<K, V> {
   private transient Class<K> keyType;
@@ -118,7 +115,7 @@ public final class EnumBiMap<K extends Enum<K>, V extends Enum<V>> extends Abstr
    * @serialData the key class, value class, number of entries, first key, first value, second key,
    *     second value, and so on.
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(keyType);
@@ -127,7 +124,7 @@ public final class EnumBiMap<K extends Enum<K>, V extends Enum<V>> extends Abstr
   }
 
   @SuppressWarnings("unchecked") // reading fields populated by writeObject
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     keyType = (Class<K>) stream.readObject();
@@ -136,6 +133,6 @@ public final class EnumBiMap<K extends Enum<K>, V extends Enum<V>> extends Abstr
     Serialization.populateMap(this, stream);
   }
 
-  @GwtIncompatible // not needed in emulated source.
+  // not needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/EnumHashBiMap.java b/android/guava/src/com/google/common/collect/EnumHashBiMap.java
index f68bc4c..cf3b633 100644
--- a/android/guava/src/com/google/common/collect/EnumHashBiMap.java
+++ b/android/guava/src/com/google/common/collect/EnumHashBiMap.java
@@ -18,9 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -28,7 +25,6 @@ import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@code BiMap} backed by an {@code EnumMap} instance for keys-to-values, and a {@code HashMap}
@@ -41,9 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
+public final class EnumHashBiMap<K extends Enum<K>, V extends Object>
     extends AbstractBiMap<K, V> {
   private transient Class<K> keyType;
 
@@ -52,7 +47,7 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
    *
    * @param keyType the key type
    */
-  public static <K extends Enum<K>, V extends @Nullable Object> EnumHashBiMap<K, V> create(
+  public static <K extends Enum<K>, V extends Object> EnumHashBiMap<K, V> create(
       Class<K> keyType) {
     return new EnumHashBiMap<>(keyType);
   }
@@ -67,7 +62,7 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
    * @throws IllegalArgumentException if map is not an {@code EnumBiMap} or an {@code EnumHashBiMap}
    *     instance and contains no mappings
    */
-  public static <K extends Enum<K>, V extends @Nullable Object> EnumHashBiMap<K, V> create(
+  public static <K extends Enum<K>, V extends Object> EnumHashBiMap<K, V> create(
       Map<K, ? extends V> map) {
     EnumHashBiMap<K, V> bimap = create(EnumBiMap.inferKeyType(map));
     bimap.putAll(map);
@@ -88,7 +83,6 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
     return checkNotNull(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @SuppressWarnings("RedundantOverride") // b/192446478: RedundantOverride ignores some annotations.
   // TODO(b/192446998): Remove this override after tools understand nullness better.
@@ -97,7 +91,6 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
     return super.put(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @SuppressWarnings("RedundantOverride") // b/192446478: RedundantOverride ignores some annotations.
   // TODO(b/192446998): Remove this override after tools understand nullness better.
@@ -115,7 +108,7 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
    * @serialData the key class, number of entries, first key, first value, second key, second value,
    *     and so on.
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(keyType);
@@ -123,7 +116,7 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
   }
 
   @SuppressWarnings("unchecked") // reading field populated by writeObject
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     keyType = (Class<K>) stream.readObject();
@@ -132,6 +125,6 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
     Serialization.populateMap(this, stream);
   }
 
-  @GwtIncompatible // only needed in emulated source.
+  // only needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/EnumMultiset.java b/android/guava/src/com/google/common/collect/EnumMultiset.java
index 0fed4ad..95e47f9 100644
--- a/android/guava/src/com/google/common/collect/EnumMultiset.java
+++ b/android/guava/src/com/google/common/collect/EnumMultiset.java
@@ -19,10 +19,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -43,7 +40,6 @@ import javax.annotation.CheckForNull;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
     implements Serializable {
@@ -135,7 +131,6 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
   }
 
   // Modification Operations
-  @CanIgnoreReturnValue
   @Override
   public int add(E element, int occurrences) {
     checkIsE(element);
@@ -156,7 +151,6 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
   }
 
   // Modification Operations
-  @CanIgnoreReturnValue
   @Override
   public int remove(@CheckForNull Object element, int occurrences) {
     // isActuallyE checks for null, but we check explicitly to help nullness checkers.
@@ -184,7 +178,6 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
   }
 
   // Modification Operations
-  @CanIgnoreReturnValue
   @Override
   public int setCount(E element, int count) {
     checkIsE(element);
@@ -282,7 +275,7 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
     return Multisets.iteratorImpl(this);
   }
 
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(type);
@@ -293,7 +286,7 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
    * @serialData the {@code Class<E>} for the enum type, the number of distinct elements, the first
    *     element, its count, the second element, its count, and so on
    */
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     @SuppressWarnings("unchecked") // reading data stored by writeObject
@@ -304,6 +297,6 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
     Serialization.populateMultiset(this, stream);
   }
 
-  @GwtIncompatible // Not needed in emulated source
+  // Not needed in emulated source
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/EvictingQueue.java b/android/guava/src/com/google/common/collect/EvictingQueue.java
index 45f59f3..ab5e384 100644
--- a/android/guava/src/com/google/common/collect/EvictingQueue.java
+++ b/android/guava/src/com/google/common/collect/EvictingQueue.java
@@ -19,10 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.util.ArrayDeque;
 import java.util.Collection;
@@ -43,14 +39,12 @@ import java.util.Queue;
  * @author Kurt Alfred Kluever
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class EvictingQueue<E> extends ForwardingQueue<E> implements Serializable {
 
   private final Queue<E> delegate;
 
-  @VisibleForTesting final int maxSize;
+  final int maxSize;
 
   private EvictingQueue(int maxSize) {
     checkArgument(maxSize >= 0, "maxSize (%s) must >= 0", maxSize);
@@ -90,7 +84,6 @@ public final class EvictingQueue<E> extends ForwardingQueue<E> implements Serial
    * @return {@code true} always
    */
   @Override
-  @CanIgnoreReturnValue
   public boolean offer(E e) {
     return add(e);
   }
@@ -102,7 +95,6 @@ public final class EvictingQueue<E> extends ForwardingQueue<E> implements Serial
    * @return {@code true} always
    */
   @Override
-  @CanIgnoreReturnValue
   public boolean add(E e) {
     checkNotNull(e); // check before removing
     if (maxSize == 0) {
@@ -116,7 +108,6 @@ public final class EvictingQueue<E> extends ForwardingQueue<E> implements Serial
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean addAll(Collection<? extends E> collection) {
     int size = collection.size();
     if (size >= maxSize) {
diff --git a/android/guava/src/com/google/common/collect/ExplicitOrdering.java b/android/guava/src/com/google/common/collect/ExplicitOrdering.java
index 383318a..36ae7a7 100644
--- a/android/guava/src/com/google/common/collect/ExplicitOrdering.java
+++ b/android/guava/src/com/google/common/collect/ExplicitOrdering.java
@@ -16,13 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.List;
 import javax.annotation.CheckForNull;
 
 /** An ordering that compares objects according to a given order. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 final class ExplicitOrdering<T> extends Ordering<T> implements Serializable {
   final ImmutableMap<T, Integer> rankMap;
diff --git a/android/guava/src/com/google/common/collect/FilteredEntryMultimap.java b/android/guava/src/com/google/common/collect/FilteredEntryMultimap.java
index 3ff00b7..eac25eb 100644
--- a/android/guava/src/com/google/common/collect/FilteredEntryMultimap.java
+++ b/android/guava/src/com/google/common/collect/FilteredEntryMultimap.java
@@ -21,11 +21,9 @@ import static com.google.common.base.Predicates.in;
 import static com.google.common.base.Predicates.not;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Maps.ViewCachingAbstractMap;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
@@ -34,7 +32,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimaps#filterEntries(Multimap, Predicate)}.
@@ -42,9 +39,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Object>
+class FilteredEntryMultimap<K extends Object, V extends Object>
     extends AbstractMultimap<K, V> implements FilteredMultimap<K, V> {
   final Multimap<K, V> unfiltered;
   final Predicate<? super Entry<K, V>> predicate;
@@ -86,7 +82,7 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
     }
   }
 
-  static <E extends @Nullable Object> Collection<E> filterCollection(
+  static <E extends Object> Collection<E> filterCollection(
       Collection<E> collection, Predicate<? super E> predicate) {
     if (collection instanceof Set) {
       return Sets.filter((Set<E>) collection, predicate);
@@ -166,7 +162,6 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
     return changed;
   }
 
-  @WeakOuter
   class AsMap extends ViewCachingAbstractMap<K, Collection<V>> {
     @Override
     public boolean containsKey(@CheckForNull Object key) {
@@ -220,7 +215,6 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
 
     @Override
     Set<K> createKeySet() {
-      @WeakOuter
       class KeySetImpl extends Maps.KeySet<K, Collection<V>> {
         KeySetImpl() {
           super(AsMap.this);
@@ -246,7 +240,6 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
 
     @Override
     Set<Entry<K, Collection<V>>> createEntrySet() {
-      @WeakOuter
       class EntrySetImpl extends Maps.EntrySet<K, Collection<V>> {
         @Override
         Map<K, Collection<V>> map() {
@@ -296,7 +289,6 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
 
     @Override
     Collection<Collection<V>> createValues() {
-      @WeakOuter
       class ValuesImpl extends Maps.Values<K, Collection<V>> {
         ValuesImpl() {
           super(AsMap.this);
@@ -345,7 +337,6 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
     return new Keys();
   }
 
-  @WeakOuter
   class Keys extends Multimaps.Keys<K, V> {
     Keys() {
       super(FilteredEntryMultimap.this);
diff --git a/android/guava/src/com/google/common/collect/FilteredEntrySetMultimap.java b/android/guava/src/com/google/common/collect/FilteredEntrySetMultimap.java
index 20413f8..0f14d3a 100644
--- a/android/guava/src/com/google/common/collect/FilteredEntrySetMultimap.java
+++ b/android/guava/src/com/google/common/collect/FilteredEntrySetMultimap.java
@@ -16,21 +16,18 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Predicate;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimaps#filterEntries(SetMultimap, Predicate)}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class FilteredEntrySetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+final class FilteredEntrySetMultimap<K extends Object, V extends Object>
     extends FilteredEntryMultimap<K, V> implements FilteredSetMultimap<K, V> {
 
   FilteredEntrySetMultimap(SetMultimap<K, V> unfiltered, Predicate<? super Entry<K, V>> predicate) {
diff --git a/android/guava/src/com/google/common/collect/FilteredKeyListMultimap.java b/android/guava/src/com/google/common/collect/FilteredKeyListMultimap.java
index c82c8da..e4db0ec 100644
--- a/android/guava/src/com/google/common/collect/FilteredKeyListMultimap.java
+++ b/android/guava/src/com/google/common/collect/FilteredKeyListMultimap.java
@@ -16,20 +16,17 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Predicate;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimaps#filterKeys(ListMultimap, Predicate)}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class FilteredKeyListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+final class FilteredKeyListMultimap<K extends Object, V extends Object>
     extends FilteredKeyMultimap<K, V> implements ListMultimap<K, V> {
   FilteredKeyListMultimap(ListMultimap<K, V> unfiltered, Predicate<? super K> keyPredicate) {
     super(unfiltered, keyPredicate);
diff --git a/android/guava/src/com/google/common/collect/FilteredKeyMultimap.java b/android/guava/src/com/google/common/collect/FilteredKeyMultimap.java
index 68fad75..e3e81eb 100644
--- a/android/guava/src/com/google/common/collect/FilteredKeyMultimap.java
+++ b/android/guava/src/com/google/common/collect/FilteredKeyMultimap.java
@@ -19,10 +19,7 @@ import static com.google.common.base.Preconditions.checkPositionIndex;
 import static java.util.Collections.emptyList;
 import static java.util.Collections.emptySet;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Predicate;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
@@ -31,16 +28,14 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimaps#filterKeys(Multimap, Predicate)}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-class FilteredKeyMultimap<K extends @Nullable Object, V extends @Nullable Object>
+class FilteredKeyMultimap<K extends Object, V extends Object>
     extends AbstractMultimap<K, V> implements FilteredMultimap<K, V> {
   final Multimap<K, V> unfiltered;
   final Predicate<? super K> keyPredicate;
@@ -113,7 +108,7 @@ class FilteredKeyMultimap<K extends @Nullable Object, V extends @Nullable Object
     }
   }
 
-  static class AddRejectingSet<K extends @Nullable Object, V extends @Nullable Object>
+  static class AddRejectingSet<K extends Object, V extends Object>
       extends ForwardingSet<V> {
     @ParametricNullness final K key;
 
@@ -138,7 +133,7 @@ class FilteredKeyMultimap<K extends @Nullable Object, V extends @Nullable Object
     }
   }
 
-  static class AddRejectingList<K extends @Nullable Object, V extends @Nullable Object>
+  static class AddRejectingList<K extends Object, V extends Object>
       extends ForwardingList<V> {
     @ParametricNullness final K key;
 
@@ -164,7 +159,6 @@ class FilteredKeyMultimap<K extends @Nullable Object, V extends @Nullable Object
       return true;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public boolean addAll(int index, Collection<? extends V> elements) {
       checkNotNull(elements);
@@ -188,7 +182,6 @@ class FilteredKeyMultimap<K extends @Nullable Object, V extends @Nullable Object
     return new Entries();
   }
 
-  @WeakOuter
   class Entries extends ForwardingCollection<Entry<K, V>> {
     @Override
     protected Collection<Entry<K, V>> delegate() {
diff --git a/android/guava/src/com/google/common/collect/FilteredKeySetMultimap.java b/android/guava/src/com/google/common/collect/FilteredKeySetMultimap.java
index e492a5c..ae9c335 100644
--- a/android/guava/src/com/google/common/collect/FilteredKeySetMultimap.java
+++ b/android/guava/src/com/google/common/collect/FilteredKeySetMultimap.java
@@ -16,21 +16,18 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Predicate;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimaps#filterKeys(SetMultimap, Predicate)}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class FilteredKeySetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+final class FilteredKeySetMultimap<K extends Object, V extends Object>
     extends FilteredKeyMultimap<K, V> implements FilteredSetMultimap<K, V> {
 
   FilteredKeySetMultimap(SetMultimap<K, V> unfiltered, Predicate<? super K> keyPredicate) {
diff --git a/android/guava/src/com/google/common/collect/FilteredMultimap.java b/android/guava/src/com/google/common/collect/FilteredMultimap.java
index 4e1fa06..cd5d07c 100644
--- a/android/guava/src/com/google/common/collect/FilteredMultimap.java
+++ b/android/guava/src/com/google/common/collect/FilteredMultimap.java
@@ -16,19 +16,16 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Predicate;
 import java.util.Map.Entry;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An interface for all filtered multimap types.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-interface FilteredMultimap<K extends @Nullable Object, V extends @Nullable Object>
+interface FilteredMultimap<K extends Object, V extends Object>
     extends Multimap<K, V> {
   Multimap<K, V> unfiltered();
 
diff --git a/android/guava/src/com/google/common/collect/FilteredMultimapValues.java b/android/guava/src/com/google/common/collect/FilteredMultimapValues.java
index ecbfab2..73db1ea 100644
--- a/android/guava/src/com/google/common/collect/FilteredMultimapValues.java
+++ b/android/guava/src/com/google/common/collect/FilteredMultimapValues.java
@@ -16,28 +16,24 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
-import com.google.j2objc.annotations.Weak;
 import java.util.AbstractCollection;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation for {@link FilteredMultimap#values()}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class FilteredMultimapValues<K extends @Nullable Object, V extends @Nullable Object>
+final class FilteredMultimapValues<K extends Object, V extends Object>
     extends AbstractCollection<V> {
-  @Weak private final FilteredMultimap<K, V> multimap;
+  private final FilteredMultimap<K, V> multimap;
 
   FilteredMultimapValues(FilteredMultimap<K, V> multimap) {
     this.multimap = checkNotNull(multimap);
diff --git a/android/guava/src/com/google/common/collect/FilteredSetMultimap.java b/android/guava/src/com/google/common/collect/FilteredSetMultimap.java
index 8e2ff7c..2f03d1d 100644
--- a/android/guava/src/com/google/common/collect/FilteredSetMultimap.java
+++ b/android/guava/src/com/google/common/collect/FilteredSetMultimap.java
@@ -16,17 +16,14 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A supertype for filtered {@link SetMultimap} implementations.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-interface FilteredSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+interface FilteredSetMultimap<K extends Object, V extends Object>
     extends FilteredMultimap<K, V>, SetMultimap<K, V> {
   @Override
   SetMultimap<K, V> unfiltered();
diff --git a/android/guava/src/com/google/common/collect/FluentIterable.java b/android/guava/src/com/google/common/collect/FluentIterable.java
index 72401d7..2160dd1 100644
--- a/android/guava/src/com/google/common/collect/FluentIterable.java
+++ b/android/guava/src/com/google/common/collect/FluentIterable.java
@@ -16,15 +16,10 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.InlineMe;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -33,7 +28,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An expanded {@code Iterable} API, providing functionality similar to Java 8's powerful <a href=
@@ -111,9 +105,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Marcin Mikosik
  * @since 12.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public abstract class FluentIterable<E extends @Nullable Object> implements Iterable<E> {
+public abstract class FluentIterable<E extends Object> implements Iterable<E> {
   // We store 'iterable' and use it instead of 'this' to allow Iterables to perform instanceof
   // checks on the _original_ iterable when FluentIterable.from is used.
   // To avoid a self retain cycle under j2objc, we store Optional.absent() instead of
@@ -141,7 +134,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    * <p><b>{@code Stream} equivalent:</b> {@code iterable.stream()} if {@code iterable} is a {@link
    * Collection}; {@code StreamSupport.stream(iterable.spliterator(), false)} otherwise.
    */
-  public static <E extends @Nullable Object> FluentIterable<E> from(final Iterable<E> iterable) {
+  public static <E extends Object> FluentIterable<E> from(final Iterable<E> iterable) {
     return (iterable instanceof FluentIterable)
         ? (FluentIterable<E>) iterable
         : new FluentIterable<E>(iterable) {
@@ -162,8 +155,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0 (since 18.0 as an overload of {@code of})
    */
-  @Beta
-  public static <E extends @Nullable Object> FluentIterable<E> from(E[] elements) {
+  public static <E extends Object> FluentIterable<E> from(E[] elements) {
     return from(Arrays.asList(elements));
   }
 
@@ -176,10 +168,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *     FluentIterable}
    */
   @Deprecated
-  @InlineMe(
-      replacement = "checkNotNull(iterable)",
-      staticImports = {"com.google.common.base.Preconditions.checkNotNull"})
-  public static <E extends @Nullable Object> FluentIterable<E> from(FluentIterable<E> iterable) {
+  public static <E extends Object> FluentIterable<E> from(FluentIterable<E> iterable) {
     return checkNotNull(iterable);
   }
 
@@ -195,8 +184,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <T extends @Nullable Object> FluentIterable<T> concat(
+  public static <T extends Object> FluentIterable<T> concat(
       Iterable<? extends T> a, Iterable<? extends T> b) {
     return concatNoDefensiveCopy(a, b);
   }
@@ -214,8 +202,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <T extends @Nullable Object> FluentIterable<T> concat(
+  public static <T extends Object> FluentIterable<T> concat(
       Iterable<? extends T> a, Iterable<? extends T> b, Iterable<? extends T> c) {
     return concatNoDefensiveCopy(a, b, c);
   }
@@ -234,8 +221,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <T extends @Nullable Object> FluentIterable<T> concat(
+  public static <T extends Object> FluentIterable<T> concat(
       Iterable<? extends T> a,
       Iterable<? extends T> b,
       Iterable<? extends T> c,
@@ -258,8 +244,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    * @throws NullPointerException if any of the provided iterables is {@code null}
    * @since 20.0
    */
-  @Beta
-  public static <T extends @Nullable Object> FluentIterable<T> concat(
+  public static <T extends Object> FluentIterable<T> concat(
       Iterable<? extends T>... inputs) {
     return concatNoDefensiveCopy(Arrays.copyOf(inputs, inputs.length));
   }
@@ -278,8 +263,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <T extends @Nullable Object> FluentIterable<T> concat(
+  public static <T extends Object> FluentIterable<T> concat(
       final Iterable<? extends Iterable<? extends T>> inputs) {
     checkNotNull(inputs);
     return new FluentIterable<T>() {
@@ -291,7 +275,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
   }
 
   /** Concatenates a varargs array of iterables without making a defensive copy of the array. */
-  private static <T extends @Nullable Object> FluentIterable<T> concatNoDefensiveCopy(
+  private static <T extends Object> FluentIterable<T> concatNoDefensiveCopy(
       final Iterable<? extends T>... inputs) {
     for (Iterable<? extends T> input : inputs) {
       checkNotNull(input);
@@ -318,8 +302,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <E extends @Nullable Object> FluentIterable<E> of() {
+  public static <E extends Object> FluentIterable<E> of() {
     return FluentIterable.from(Collections.<E>emptyList());
   }
 
@@ -331,8 +314,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <E extends @Nullable Object> FluentIterable<E> of(
+  public static <E extends Object> FluentIterable<E> of(
       @ParametricNullness E element, E... elements) {
     return from(Lists.asList(element, elements));
   }
@@ -400,7 +382,6 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 18.0
    */
-  @Beta
   public final FluentIterable<E> append(Iterable<? extends E> other) {
     return FluentIterable.concat(getDelegate(), other);
   }
@@ -413,7 +394,6 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 18.0
    */
-  @Beta
   public final FluentIterable<E> append(E... elements) {
     return FluentIterable.concat(getDelegate(), Arrays.asList(elements));
   }
@@ -441,7 +421,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *     (ImmutableList) stream.filter(NewType.class::isInstance).collect(toImmutableList());}
    * </pre>
    */
-  @GwtIncompatible // Class.isInstance
+  // Class.isInstance
   public final <T> FluentIterable<T> filter(Class<T> type) {
     return from(Iterables.filter(getDelegate(), type));
   }
@@ -489,7 +469,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * <p><b>{@code Stream} equivalent:</b> {@link Stream#map}.
    */
-  public final <T extends @Nullable Object> FluentIterable<T> transform(
+  public final <T extends Object> FluentIterable<T> transform(
       Function<? super E, T> function) {
     return from(Iterables.transform(getDelegate(), function));
   }
@@ -507,7 +487,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 13.0 (required {@code Function<E, Iterable<T>>} until 14.0)
    */
-  public <T extends @Nullable Object> FluentIterable<T> transformAndConcat(
+  public <T extends Object> FluentIterable<T> transformAndConcat(
       Function<? super E, ? extends Iterable<? extends T>> function) {
     return FluentIterable.concat(transform(function));
   }
@@ -794,7 +774,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    * @return a newly-allocated array into which all the elements of this fluent iterable have been
    *     copied
    */
-  @GwtIncompatible // Array.newArray(Class, int)
+  // Array.newArray(Class, int)
   /*
    * Both the declaration of our Class<E> parameter and its usage in a call to Iterables.toArray
    * produce a nullness error: E may be a nullable type, and our nullness checker has Class's type
@@ -803,7 +783,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    * FluentIterable support null elements, and most of the other produce outright unsoundness.)
    */
   @SuppressWarnings("nullness")
-  public final @Nullable E[] toArray(Class<E> type) {
+  public final E[] toArray(Class<E> type) {
     return Iterables.toArray(getDelegate(), type);
   }
 
@@ -818,7 +798,6 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    * @return {@code collection}, for convenience
    * @since 14.0
    */
-  @CanIgnoreReturnValue
   public final <C extends Collection<? super E>> C copyInto(C collection) {
     checkNotNull(collection);
     Iterable<E> iterable = getDelegate();
@@ -842,7 +821,6 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 18.0
    */
-  @Beta
   public final String join(Joiner joiner) {
     return joiner.join(this);
   }
@@ -865,7 +843,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
   }
 
   /** Function that transforms {@code Iterable<E>} into a fluent iterable. */
-  private static class FromIterableFunction<E extends @Nullable Object>
+  private static class FromIterableFunction<E extends Object>
       implements Function<Iterable<E>, FluentIterable<E>> {
     @Override
     public FluentIterable<E> apply(Iterable<E> fromObject) {
diff --git a/android/guava/src/com/google/common/collect/ForwardingBlockingDeque.java b/android/guava/src/com/google/common/collect/ForwardingBlockingDeque.java
index 49d4bcf..b2fada9 100644
--- a/android/guava/src/com/google/common/collect/ForwardingBlockingDeque.java
+++ b/android/guava/src/com/google/common/collect/ForwardingBlockingDeque.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Collection;
 import java.util.concurrent.BlockingDeque;
 import java.util.concurrent.TimeUnit;
@@ -46,7 +45,6 @@ import javax.annotation.CheckForNull;
  *     com.google.common.util.concurrent.ForwardingBlockingDeque} instead.
  */
 @Deprecated
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingBlockingDeque<E> extends ForwardingDeque<E>
     implements BlockingDeque<E> {
diff --git a/android/guava/src/com/google/common/collect/ForwardingCollection.java b/android/guava/src/com/google/common/collect/ForwardingCollection.java
index ca1edc1..38881ac 100644
--- a/android/guava/src/com/google/common/collect/ForwardingCollection.java
+++ b/android/guava/src/com/google/common/collect/ForwardingCollection.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A collection which forwards all its method calls to another collection. Subclasses should
@@ -46,9 +43,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingCollection<E extends @Nullable Object> extends ForwardingObject
+public abstract class ForwardingCollection<E extends Object> extends ForwardingObject
     implements Collection<E> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
@@ -68,7 +64,6 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
     return delegate().size();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean removeAll(Collection<?> collection) {
     return delegate().removeAll(collection);
@@ -84,13 +79,11 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
     return delegate().contains(object);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean add(@ParametricNullness E element) {
     return delegate().add(element);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@CheckForNull Object object) {
     return delegate().remove(object);
@@ -101,13 +94,11 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
     return delegate().containsAll(collection);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean addAll(Collection<? extends E> collection) {
     return delegate().addAll(collection);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean retainAll(Collection<?> collection) {
     return delegate().retainAll(collection);
@@ -119,14 +110,13 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
   }
 
   @Override
-  public @Nullable Object[] toArray() {
+  public Object[] toArray() {
     return delegate().toArray();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-  public <T extends @Nullable Object> T[] toArray(T[] array) {
+  public <T extends Object> T[] toArray(T[] array) {
     return delegate().toArray(array);
   }
 
@@ -242,8 +232,8 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
    *
    * @since 7.0
    */
-  protected @Nullable Object[] standardToArray() {
-    @Nullable Object[] newArray = new @Nullable Object[size()];
+  protected Object[] standardToArray() {
+    Object[] newArray = new Object[size()];
     return toArray(newArray);
   }
 
@@ -254,7 +244,7 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
    *
    * @since 7.0
    */
-  protected <T extends @Nullable Object> T[] standardToArray(T[] array) {
+  protected <T extends Object> T[] standardToArray(T[] array) {
     return ObjectArrays.toArrayImpl(this, array);
   }
 }
diff --git a/android/guava/src/com/google/common/collect/ForwardingConcurrentMap.java b/android/guava/src/com/google/common/collect/ForwardingConcurrentMap.java
index b662b07..0aed837 100644
--- a/android/guava/src/com/google/common/collect/ForwardingConcurrentMap.java
+++ b/android/guava/src/com/google/common/collect/ForwardingConcurrentMap.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.ConcurrentMap;
 import javax.annotation.CheckForNull;
 
@@ -36,7 +34,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingConcurrentMap<K, V> extends ForwardingMap<K, V>
     implements ConcurrentMap<K, V> {
@@ -47,27 +44,23 @@ public abstract class ForwardingConcurrentMap<K, V> extends ForwardingMap<K, V>
   @Override
   protected abstract ConcurrentMap<K, V> delegate();
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V putIfAbsent(K key, V value) {
     return delegate().putIfAbsent(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@CheckForNull Object key, @CheckForNull Object value) {
     return delegate().remove(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V replace(K key, V value) {
     return delegate().replace(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean replace(K key, V oldValue, V newValue) {
     return delegate().replace(key, oldValue, newValue);
diff --git a/android/guava/src/com/google/common/collect/ForwardingDeque.java b/android/guava/src/com/google/common/collect/ForwardingDeque.java
index 571535c..6f0a56b 100644
--- a/android/guava/src/com/google/common/collect/ForwardingDeque.java
+++ b/android/guava/src/com/google/common/collect/ForwardingDeque.java
@@ -16,12 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Deque;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A deque which forwards all its method calls to another deque. Subclasses should override one or
@@ -40,9 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 12.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingDeque<E extends @Nullable Object> extends ForwardingQueue<E>
+public abstract class ForwardingDeque<E extends Object> extends ForwardingQueue<E>
     implements Deque<E> {
 
   /** Constructor for use by subclasses. */
@@ -78,13 +74,13 @@ public abstract class ForwardingDeque<E extends @Nullable Object> extends Forwar
     return delegate().getLast();
   }
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   public boolean offerFirst(@ParametricNullness E e) {
     return delegate().offerFirst(e);
   }
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   public boolean offerLast(@ParametricNullness E e) {
     return delegate().offerLast(e);
@@ -102,21 +98,20 @@ public abstract class ForwardingDeque<E extends @Nullable Object> extends Forwar
     return delegate().peekLast();
   }
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   @CheckForNull
   public E pollFirst() {
     return delegate().pollFirst();
   }
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   @CheckForNull
   public E pollLast() {
     return delegate().pollLast();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E pop() {
@@ -128,27 +123,23 @@ public abstract class ForwardingDeque<E extends @Nullable Object> extends Forwar
     delegate().push(e);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E removeFirst() {
     return delegate().removeFirst();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E removeLast() {
     return delegate().removeLast();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean removeFirstOccurrence(@CheckForNull Object o) {
     return delegate().removeFirstOccurrence(o);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean removeLastOccurrence(@CheckForNull Object o) {
     return delegate().removeLastOccurrence(o);
diff --git a/android/guava/src/com/google/common/collect/ForwardingImmutableCollection.java b/android/guava/src/com/google/common/collect/ForwardingImmutableCollection.java
index 043fe58..df64ca2 100644
--- a/android/guava/src/com/google/common/collect/ForwardingImmutableCollection.java
+++ b/android/guava/src/com/google/common/collect/ForwardingImmutableCollection.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Dummy class that makes the GWT serialization policy happy. It isn't used on the server-side.
  *
  * @author Hayward Chan
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 class ForwardingImmutableCollection {
   private ForwardingImmutableCollection() {}
diff --git a/android/guava/src/com/google/common/collect/ForwardingImmutableList.java b/android/guava/src/com/google/common/collect/ForwardingImmutableList.java
index bd5480d..f1aeba7 100644
--- a/android/guava/src/com/google/common/collect/ForwardingImmutableList.java
+++ b/android/guava/src/com/google/common/collect/ForwardingImmutableList.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Unused stub class, unreferenced under Java and manually emulated under GWT.
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ForwardingImmutableList<E> {
   private ForwardingImmutableList() {}
diff --git a/android/guava/src/com/google/common/collect/ForwardingImmutableMap.java b/android/guava/src/com/google/common/collect/ForwardingImmutableMap.java
index 22cc9ff..84c4fb8 100644
--- a/android/guava/src/com/google/common/collect/ForwardingImmutableMap.java
+++ b/android/guava/src/com/google/common/collect/ForwardingImmutableMap.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Unused stub class, unreferenced under Java and manually emulated under GWT.
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ForwardingImmutableMap<K, V> {
   private ForwardingImmutableMap() {}
diff --git a/android/guava/src/com/google/common/collect/ForwardingImmutableSet.java b/android/guava/src/com/google/common/collect/ForwardingImmutableSet.java
index 047d5fd..e4ae397 100644
--- a/android/guava/src/com/google/common/collect/ForwardingImmutableSet.java
+++ b/android/guava/src/com/google/common/collect/ForwardingImmutableSet.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Unused stub class, unreferenced under Java and manually emulated under GWT.
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ForwardingImmutableSet<E> {
   private ForwardingImmutableSet() {}
diff --git a/android/guava/src/com/google/common/collect/ForwardingIterator.java b/android/guava/src/com/google/common/collect/ForwardingIterator.java
index 1f5a8f1..a063f8e 100644
--- a/android/guava/src/com/google/common/collect/ForwardingIterator.java
+++ b/android/guava/src/com/google/common/collect/ForwardingIterator.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An iterator which forwards all its method calls to another iterator. Subclasses should override
@@ -36,9 +33,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingIterator<T extends @Nullable Object> extends ForwardingObject
+public abstract class ForwardingIterator<T extends Object> extends ForwardingObject
     implements Iterator<T> {
 
   /** Constructor for use by subclasses. */
@@ -52,7 +48,6 @@ public abstract class ForwardingIterator<T extends @Nullable Object> extends For
     return delegate().hasNext();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public T next() {
diff --git a/android/guava/src/com/google/common/collect/ForwardingList.java b/android/guava/src/com/google/common/collect/ForwardingList.java
index 4b4551e..5e51833 100644
--- a/android/guava/src/com/google/common/collect/ForwardingList.java
+++ b/android/guava/src/com/google/common/collect/ForwardingList.java
@@ -16,15 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A list which forwards all its method calls to another list. Subclasses should override one or
@@ -51,9 +47,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingList<E extends @Nullable Object> extends ForwardingCollection<E>
+public abstract class ForwardingList<E extends Object> extends ForwardingCollection<E>
     implements List<E> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
@@ -68,7 +63,6 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
     delegate().add(index, element);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean addAll(int index, Collection<? extends E> elements) {
     return delegate().addAll(index, elements);
@@ -100,14 +94,12 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
     return delegate().listIterator(index);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E remove(int index) {
     return delegate().remove(index);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E set(int index, @ParametricNullness E element) {
@@ -204,7 +196,6 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
    *
    * @since 7.0
    */
-  @Beta
   protected ListIterator<E> standardListIterator(int start) {
     return Lists.listIteratorImpl(this, start);
   }
@@ -215,7 +206,6 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
    *
    * @since 7.0
    */
-  @Beta
   protected List<E> standardSubList(int fromIndex, int toIndex) {
     return Lists.subListImpl(this, fromIndex, toIndex);
   }
@@ -227,7 +217,6 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
    *
    * @since 7.0
    */
-  @Beta
   protected boolean standardEquals(@CheckForNull Object object) {
     return Lists.equalsImpl(this, object);
   }
@@ -239,7 +228,6 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
    *
    * @since 7.0
    */
-  @Beta
   protected int standardHashCode() {
     return Lists.hashCodeImpl(this);
   }
diff --git a/android/guava/src/com/google/common/collect/ForwardingListIterator.java b/android/guava/src/com/google/common/collect/ForwardingListIterator.java
index a2ac32b..6f440c6 100644
--- a/android/guava/src/com/google/common/collect/ForwardingListIterator.java
+++ b/android/guava/src/com/google/common/collect/ForwardingListIterator.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ListIterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A list iterator which forwards all its method calls to another list iterator. Subclasses should
@@ -36,9 +33,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingListIterator<E extends @Nullable Object>
+public abstract class ForwardingListIterator<E extends Object>
     extends ForwardingIterator<E> implements ListIterator<E> {
 
   /** Constructor for use by subclasses. */
@@ -62,7 +58,6 @@ public abstract class ForwardingListIterator<E extends @Nullable Object>
     return delegate().nextIndex();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E previous() {
diff --git a/android/guava/src/com/google/common/collect/ForwardingListMultimap.java b/android/guava/src/com/google/common/collect/ForwardingListMultimap.java
index 11779c0..4ebcdc3 100644
--- a/android/guava/src/com/google/common/collect/ForwardingListMultimap.java
+++ b/android/guava/src/com/google/common/collect/ForwardingListMultimap.java
@@ -16,11 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A list multimap which forwards all its method calls to another list multimap. Subclasses should
@@ -34,9 +31,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 3.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingListMultimap<K extends Object, V extends Object>
     extends ForwardingMultimap<K, V> implements ListMultimap<K, V> {
 
   /** Constructor for use by subclasses. */
@@ -50,13 +46,11 @@ public abstract class ForwardingListMultimap<K extends @Nullable Object, V exten
     return delegate().get(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public List<V> removeAll(@CheckForNull Object key) {
     return delegate().removeAll(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return delegate().replaceValues(key, values);
diff --git a/android/guava/src/com/google/common/collect/ForwardingMap.java b/android/guava/src/com/google/common/collect/ForwardingMap.java
index 315a4fa..58449f5 100644
--- a/android/guava/src/com/google/common/collect/ForwardingMap.java
+++ b/android/guava/src/com/google/common/collect/ForwardingMap.java
@@ -16,16 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A map which forwards all its method calls to another map. Subclasses should override one or more
@@ -55,9 +51,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingMap<K extends Object, V extends Object>
     extends ForwardingObject implements Map<K, V> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
@@ -77,7 +72,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
     return delegate().isEmpty();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V remove(@CheckForNull Object key) {
@@ -105,7 +99,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
     return delegate().get(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(@ParametricNullness K key, @ParametricNullness V value) {
@@ -163,7 +156,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
    *
    * @since 7.0
    */
-  @Beta
   @CheckForNull
   protected V standardRemove(@CheckForNull Object key) {
     Iterator<Entry<K, V>> entryIterator = entrySet().iterator();
@@ -198,7 +190,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
    *
    * @since 10.0
    */
-  @Beta
   protected class StandardKeySet extends Maps.KeySet<K, V> {
     /** Constructor for use by subclasses. */
     public StandardKeySet() {
@@ -213,7 +204,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
    *
    * @since 7.0
    */
-  @Beta
   protected boolean standardContainsKey(@CheckForNull Object key) {
     return Maps.containsKeyImpl(this, key);
   }
@@ -227,7 +217,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
    *
    * @since 10.0
    */
-  @Beta
   protected class StandardValues extends Maps.Values<K, V> {
     /** Constructor for use by subclasses. */
     public StandardValues() {
@@ -255,7 +244,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
    *
    * @since 10.0
    */
-  @Beta
   protected abstract class StandardEntrySet extends Maps.EntrySet<K, V> {
     /** Constructor for use by subclasses. */
     public StandardEntrySet() {}
diff --git a/android/guava/src/com/google/common/collect/ForwardingMapEntry.java b/android/guava/src/com/google/common/collect/ForwardingMapEntry.java
index 6816ccb..475a982 100644
--- a/android/guava/src/com/google/common/collect/ForwardingMapEntry.java
+++ b/android/guava/src/com/google/common/collect/ForwardingMapEntry.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
 import java.util.Map;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A map entry which forwards all its method calls to another map entry. Subclasses should override
@@ -47,9 +44,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingMapEntry<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingMapEntry<K extends Object, V extends Object>
     extends ForwardingObject implements Map.Entry<K, V> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
@@ -123,7 +119,6 @@ public abstract class ForwardingMapEntry<K extends @Nullable Object, V extends @
    *
    * @since 7.0
    */
-  @Beta
   protected String standardToString() {
     return getKey() + "=" + getValue();
   }
diff --git a/android/guava/src/com/google/common/collect/ForwardingMultimap.java b/android/guava/src/com/google/common/collect/ForwardingMultimap.java
index a3db061..e48c317 100644
--- a/android/guava/src/com/google/common/collect/ForwardingMultimap.java
+++ b/android/guava/src/com/google/common/collect/ForwardingMultimap.java
@@ -16,14 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A multimap which forwards all its method calls to another multimap. Subclasses should override
@@ -37,9 +34,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Robert Konigsberg
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingMultimap<K extends Object, V extends Object>
     extends ForwardingObject implements Multimap<K, V> {
 
   /** Constructor for use by subclasses. */
@@ -98,37 +94,31 @@ public abstract class ForwardingMultimap<K extends @Nullable Object, V extends @
     return delegate().keySet();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean put(@ParametricNullness K key, @ParametricNullness V value) {
     return delegate().put(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean putAll(@ParametricNullness K key, Iterable<? extends V> values) {
     return delegate().putAll(key, values);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean putAll(Multimap<? extends K, ? extends V> multimap) {
     return delegate().putAll(multimap);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@CheckForNull Object key, @CheckForNull Object value) {
     return delegate().remove(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public Collection<V> removeAll(@CheckForNull Object key) {
     return delegate().removeAll(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public Collection<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return delegate().replaceValues(key, values);
diff --git a/android/guava/src/com/google/common/collect/ForwardingMultiset.java b/android/guava/src/com/google/common/collect/ForwardingMultiset.java
index 857b9ae..987b051 100644
--- a/android/guava/src/com/google/common/collect/ForwardingMultiset.java
+++ b/android/guava/src/com/google/common/collect/ForwardingMultiset.java
@@ -16,15 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A multiset which forwards all its method calls to another multiset. Subclasses should override
@@ -48,9 +44,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingMultiset<E extends @Nullable Object> extends ForwardingCollection<E>
+public abstract class ForwardingMultiset<E extends Object> extends ForwardingCollection<E>
     implements Multiset<E> {
 
   /** Constructor for use by subclasses. */
@@ -64,13 +59,11 @@ public abstract class ForwardingMultiset<E extends @Nullable Object> extends For
     return delegate().count(element);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int add(@ParametricNullness E element, int occurrences) {
     return delegate().add(element, occurrences);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int remove(@CheckForNull Object element, int occurrences) {
     return delegate().remove(element, occurrences);
@@ -96,13 +89,11 @@ public abstract class ForwardingMultiset<E extends @Nullable Object> extends For
     return delegate().hashCode();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int setCount(@ParametricNullness E element, int count) {
     return delegate().setCount(element, count);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean setCount(@ParametricNullness E element, int oldCount, int newCount) {
     return delegate().setCount(element, oldCount, newCount);
@@ -138,7 +129,6 @@ public abstract class ForwardingMultiset<E extends @Nullable Object> extends For
    *
    * @since 7.0
    */
-  @Beta
   protected int standardCount(@CheckForNull Object object) {
     for (Entry<?> entry : this.entrySet()) {
       if (Objects.equal(entry.getElement(), object)) {
@@ -167,7 +157,6 @@ public abstract class ForwardingMultiset<E extends @Nullable Object> extends For
    *
    * @since 7.0
    */
-  @Beta
   @Override
   protected boolean standardAddAll(Collection<? extends E> elementsToAdd) {
     return Multisets.addAllImpl(this, elementsToAdd);
@@ -243,7 +232,6 @@ public abstract class ForwardingMultiset<E extends @Nullable Object> extends For
    *
    * @since 10.0
    */
-  @Beta
   protected class StandardElementSet extends Multisets.ElementSet<E> {
     /** Constructor for use by subclasses. */
     public StandardElementSet() {}
diff --git a/android/guava/src/com/google/common/collect/ForwardingNavigableMap.java b/android/guava/src/com/google/common/collect/ForwardingNavigableMap.java
index e0e1c39..8132621 100644
--- a/android/guava/src/com/google/common/collect/ForwardingNavigableMap.java
+++ b/android/guava/src/com/google/common/collect/ForwardingNavigableMap.java
@@ -18,15 +18,12 @@ package com.google.common.collect;
 
 import static com.google.common.collect.Maps.keyOrNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Iterator;
 import java.util.NavigableMap;
 import java.util.NavigableSet;
 import java.util.NoSuchElementException;
 import java.util.SortedMap;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A navigable map which forwards all its method calls to another navigable map. Subclasses should
@@ -54,9 +51,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 12.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingNavigableMap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingNavigableMap<K extends Object, V extends Object>
     extends ForwardingSortedMap<K, V> implements NavigableMap<K, V> {
 
   /** Constructor for use by subclasses. */
@@ -300,7 +296,6 @@ public abstract class ForwardingNavigableMap<K extends @Nullable Object, V exten
    *
    * @since 12.0
    */
-  @Beta
   protected class StandardDescendingMap extends Maps.DescendingMap<K, V> {
     /** Constructor for use by subclasses. */
     public StandardDescendingMap() {}
@@ -359,7 +354,6 @@ public abstract class ForwardingNavigableMap<K extends @Nullable Object, V exten
    *
    * @since 12.0
    */
-  @Beta
   protected class StandardNavigableKeySet extends Maps.NavigableKeySet<K, V> {
     /** Constructor for use by subclasses. */
     public StandardNavigableKeySet() {
@@ -379,7 +373,6 @@ public abstract class ForwardingNavigableMap<K extends @Nullable Object, V exten
    * descendingMap}, you may wish to override {@code descendingKeySet} to forward to this
    * implementation.
    */
-  @Beta
   protected NavigableSet<K> standardDescendingKeySet() {
     return descendingMap().navigableKeySet();
   }
diff --git a/android/guava/src/com/google/common/collect/ForwardingNavigableSet.java b/android/guava/src/com/google/common/collect/ForwardingNavigableSet.java
index 6822aa8..a72b0a3 100644
--- a/android/guava/src/com/google/common/collect/ForwardingNavigableSet.java
+++ b/android/guava/src/com/google/common/collect/ForwardingNavigableSet.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A navigable set which forwards all its method calls to another navigable set. Subclasses should
@@ -50,9 +47,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 12.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingNavigableSet<E extends @Nullable Object>
+public abstract class ForwardingNavigableSet<E extends Object>
     extends ForwardingSortedSet<E> implements NavigableSet<E> {
 
   /** Constructor for use by subclasses. */
@@ -181,7 +177,6 @@ public abstract class ForwardingNavigableSet<E extends @Nullable Object>
    *
    * @since 12.0
    */
-  @Beta
   protected class StandardDescendingSet extends Sets.DescendingSet<E> {
     /** Constructor for use by subclasses. */
     public StandardDescendingSet() {
@@ -208,7 +203,6 @@ public abstract class ForwardingNavigableSet<E extends @Nullable Object>
    * {@code headSet} and {@code tailSet} methods. In many cases, you may wish to override {@link
    * #subSet(Object, boolean, Object, boolean)} to forward to this implementation.
    */
-  @Beta
   protected NavigableSet<E> standardSubSet(
       @ParametricNullness E fromElement,
       boolean fromInclusive,
diff --git a/android/guava/src/com/google/common/collect/ForwardingObject.java b/android/guava/src/com/google/common/collect/ForwardingObject.java
index 64af908..e9195b3 100644
--- a/android/guava/src/com/google/common/collect/ForwardingObject.java
+++ b/android/guava/src/com/google/common/collect/ForwardingObject.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 
 /**
@@ -43,7 +42,6 @@ import java.io.Serializable;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingObject {
 
diff --git a/android/guava/src/com/google/common/collect/ForwardingQueue.java b/android/guava/src/com/google/common/collect/ForwardingQueue.java
index 43c2eaa..a16cc4b 100644
--- a/android/guava/src/com/google/common/collect/ForwardingQueue.java
+++ b/android/guava/src/com/google/common/collect/ForwardingQueue.java
@@ -16,12 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.NoSuchElementException;
 import java.util.Queue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A queue which forwards all its method calls to another queue. Subclasses should override one or
@@ -45,9 +42,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingQueue<E extends @Nullable Object> extends ForwardingCollection<E>
+public abstract class ForwardingQueue<E extends Object> extends ForwardingCollection<E>
     implements Queue<E> {
 
   /** Constructor for use by subclasses. */
@@ -56,20 +52,19 @@ public abstract class ForwardingQueue<E extends @Nullable Object> extends Forwar
   @Override
   protected abstract Queue<E> delegate();
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   public boolean offer(@ParametricNullness E o) {
     return delegate().offer(o);
   }
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   @CheckForNull
   public E poll() {
     return delegate().poll();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E remove() {
diff --git a/android/guava/src/com/google/common/collect/ForwardingSet.java b/android/guava/src/com/google/common/collect/ForwardingSet.java
index bc27272..2aa78c5 100644
--- a/android/guava/src/com/google/common/collect/ForwardingSet.java
+++ b/android/guava/src/com/google/common/collect/ForwardingSet.java
@@ -18,11 +18,9 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A set which forwards all its method calls to another set. Subclasses should override one or more
@@ -46,9 +44,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingSet<E extends @Nullable Object> extends ForwardingCollection<E>
+public abstract class ForwardingSet<E extends Object> extends ForwardingCollection<E>
     implements Set<E> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
diff --git a/android/guava/src/com/google/common/collect/ForwardingSetMultimap.java b/android/guava/src/com/google/common/collect/ForwardingSetMultimap.java
index 5077c68..4f5d1b6 100644
--- a/android/guava/src/com/google/common/collect/ForwardingSetMultimap.java
+++ b/android/guava/src/com/google/common/collect/ForwardingSetMultimap.java
@@ -16,12 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A set multimap which forwards all its method calls to another set multimap. Subclasses should
@@ -35,9 +32,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 3.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingSetMultimap<K extends Object, V extends Object>
     extends ForwardingMultimap<K, V> implements SetMultimap<K, V> {
 
   @Override
@@ -53,13 +49,11 @@ public abstract class ForwardingSetMultimap<K extends @Nullable Object, V extend
     return delegate().get(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public Set<V> removeAll(@CheckForNull Object key) {
     return delegate().removeAll(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public Set<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return delegate().replaceValues(key, values);
diff --git a/android/guava/src/com/google/common/collect/ForwardingSortedMap.java b/android/guava/src/com/google/common/collect/ForwardingSortedMap.java
index e0882ab..df2bc00 100644
--- a/android/guava/src/com/google/common/collect/ForwardingSortedMap.java
+++ b/android/guava/src/com/google/common/collect/ForwardingSortedMap.java
@@ -18,13 +18,10 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.NoSuchElementException;
 import java.util.SortedMap;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A sorted map which forwards all its method calls to another sorted map. Subclasses should
@@ -51,9 +48,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingSortedMap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingSortedMap<K extends Object, V extends Object>
     extends ForwardingMap<K, V> implements SortedMap<K, V> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
@@ -103,7 +99,6 @@ public abstract class ForwardingSortedMap<K extends @Nullable Object, V extends
    *
    * @since 15.0
    */
-  @Beta
   protected class StandardKeySet extends Maps.SortedKeySet<K, V> {
     /** Constructor for use by subclasses. */
     public StandardKeySet() {
@@ -130,12 +125,11 @@ public abstract class ForwardingSortedMap<K extends @Nullable Object, V extends
    * @since 7.0
    */
   @Override
-  @Beta
   protected boolean standardContainsKey(@CheckForNull Object key) {
     try {
       // any CCE or NPE will be caught
       @SuppressWarnings({"unchecked", "nullness"})
-      SortedMap<@Nullable Object, V> self = (SortedMap<@Nullable Object, V>) this;
+      SortedMap<Object, V> self = (SortedMap<@Nullable Object, V>) this;
       Object ceilingKey = self.tailMap(key).firstKey();
       return unsafeCompare(comparator(), ceilingKey, key) == 0;
     } catch (ClassCastException | NoSuchElementException | NullPointerException e) {
@@ -150,7 +144,6 @@ public abstract class ForwardingSortedMap<K extends @Nullable Object, V extends
    *
    * @since 7.0
    */
-  @Beta
   protected SortedMap<K, V> standardSubMap(K fromKey, K toKey) {
     checkArgument(unsafeCompare(comparator(), fromKey, toKey) <= 0, "fromKey must be <= toKey");
     return tailMap(fromKey).headMap(toKey);
diff --git a/android/guava/src/com/google/common/collect/ForwardingSortedMultiset.java b/android/guava/src/com/google/common/collect/ForwardingSortedMultiset.java
index 4626d31..d7b4adb 100644
--- a/android/guava/src/com/google/common/collect/ForwardingSortedMultiset.java
+++ b/android/guava/src/com/google/common/collect/ForwardingSortedMultiset.java
@@ -14,13 +14,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A sorted multiset which forwards all its method calls to another sorted multiset. Subclasses
@@ -44,10 +41,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 15.0
  */
-@Beta
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingSortedMultiset<E extends @Nullable Object>
+public abstract class ForwardingSortedMultiset<E extends Object>
     extends ForwardingMultiset<E> implements SortedMultiset<E> {
   /** Constructor for use by subclasses. */
   protected ForwardingSortedMultiset() {}
diff --git a/android/guava/src/com/google/common/collect/ForwardingSortedSet.java b/android/guava/src/com/google/common/collect/ForwardingSortedSet.java
index 32625af..383ef1a 100644
--- a/android/guava/src/com/google/common/collect/ForwardingSortedSet.java
+++ b/android/guava/src/com/google/common/collect/ForwardingSortedSet.java
@@ -18,14 +18,11 @@ package com.google.common.collect;
 
 import static com.google.common.collect.ForwardingSortedMap.unsafeCompare;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A sorted set which forwards all its method calls to another sorted set. Subclasses should
@@ -54,9 +51,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingSortedSet<E extends @Nullable Object> extends ForwardingSet<E>
+public abstract class ForwardingSortedSet<E extends Object> extends ForwardingSet<E>
     implements SortedSet<E> {
 
   /** Constructor for use by subclasses. */
@@ -106,12 +102,11 @@ public abstract class ForwardingSortedSet<E extends @Nullable Object> extends Fo
    * @since 7.0
    */
   @Override
-  @Beta
   protected boolean standardContains(@CheckForNull Object object) {
     try {
       // any ClassCastExceptions and NullPointerExceptions are caught
       @SuppressWarnings({"unchecked", "nullness"})
-      SortedSet<@Nullable Object> self = (SortedSet<@Nullable Object>) this;
+      SortedSet<Object> self = (SortedSet<@Nullable Object>) this;
       Object ceiling = self.tailSet(object).first();
       return unsafeCompare(comparator(), ceiling, object) == 0;
     } catch (ClassCastException | NoSuchElementException | NullPointerException e) {
@@ -127,12 +122,11 @@ public abstract class ForwardingSortedSet<E extends @Nullable Object> extends Fo
    * @since 7.0
    */
   @Override
-  @Beta
   protected boolean standardRemove(@CheckForNull Object object) {
     try {
       // any ClassCastExceptions and NullPointerExceptions are caught
       @SuppressWarnings({"unchecked", "nullness"})
-      SortedSet<@Nullable Object> self = (SortedSet<@Nullable Object>) this;
+      SortedSet<Object> self = (SortedSet<@Nullable Object>) this;
       Iterator<?> iterator = self.tailSet(object).iterator();
       if (iterator.hasNext()) {
         Object ceiling = iterator.next();
@@ -154,7 +148,6 @@ public abstract class ForwardingSortedSet<E extends @Nullable Object> extends Fo
    *
    * @since 7.0
    */
-  @Beta
   protected SortedSet<E> standardSubSet(
       @ParametricNullness E fromElement, @ParametricNullness E toElement) {
     return tailSet(fromElement).headSet(toElement);
diff --git a/android/guava/src/com/google/common/collect/ForwardingSortedSetMultimap.java b/android/guava/src/com/google/common/collect/ForwardingSortedSetMultimap.java
index b91a68b..9df7a46 100644
--- a/android/guava/src/com/google/common/collect/ForwardingSortedSetMultimap.java
+++ b/android/guava/src/com/google/common/collect/ForwardingSortedSetMultimap.java
@@ -16,11 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A sorted set multimap which forwards all its method calls to another sorted set multimap.
@@ -34,10 +32,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 3.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingSortedSetMultimap<
-        K extends @Nullable Object, V extends @Nullable Object>
+        K extends Object, V extends Object>
     extends ForwardingSetMultimap<K, V> implements SortedSetMultimap<K, V> {
 
   /** Constructor for use by subclasses. */
diff --git a/android/guava/src/com/google/common/collect/ForwardingTable.java b/android/guava/src/com/google/common/collect/ForwardingTable.java
index 4fcb858..4b67ed6 100644
--- a/android/guava/src/com/google/common/collect/ForwardingTable.java
+++ b/android/guava/src/com/google/common/collect/ForwardingTable.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A table which forwards all its method calls to another table. Subclasses should override one or
@@ -32,10 +29,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Gregory Kick
  * @since 7.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingTable<
-        R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+        R extends Object, C extends Object, V extends Object>
     extends ForwardingObject implements Table<R, C, V> {
   /** Constructor for use by subclasses. */
   protected ForwardingTable() {}
@@ -99,7 +95,6 @@ public abstract class ForwardingTable<
     return delegate().isEmpty();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(
@@ -112,7 +107,6 @@ public abstract class ForwardingTable<
     delegate().putAll(table);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V remove(@CheckForNull Object rowKey, @CheckForNull Object columnKey) {
diff --git a/android/guava/src/com/google/common/collect/GeneralRange.java b/android/guava/src/com/google/common/collect/GeneralRange.java
index 20cf4fb..6d34842 100644
--- a/android/guava/src/com/google/common/collect/GeneralRange.java
+++ b/android/guava/src/com/google/common/collect/GeneralRange.java
@@ -18,14 +18,11 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.BoundType.CLOSED;
 import static com.google.common.collect.BoundType.OPEN;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
 import java.io.Serializable;
 import java.util.Comparator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A generalized interval on any ordering, for internal use. Supports {@code null}. Unlike {@link
@@ -36,9 +33,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class GeneralRange<T extends @Nullable Object> implements Serializable {
+final class GeneralRange<T extends Object> implements Serializable {
   /** Converts a Range to a GeneralRange. */
   static <T extends Comparable> GeneralRange<T> from(Range<T> range) {
     T lowerEndpoint = range.hasLowerBound() ? range.lowerEndpoint() : null;
@@ -57,7 +53,7 @@ final class GeneralRange<T extends @Nullable Object> implements Serializable {
   }
 
   /** Returns the whole range relative to the specified comparator. */
-  static <T extends @Nullable Object> GeneralRange<T> all(Comparator<? super T> comparator) {
+  static <T extends Object> GeneralRange<T> all(Comparator<? super T> comparator) {
     return new GeneralRange<T>(comparator, false, null, OPEN, false, null, OPEN);
   }
 
@@ -65,7 +61,7 @@ final class GeneralRange<T extends @Nullable Object> implements Serializable {
    * Returns everything above the endpoint relative to the specified comparator, with the specified
    * endpoint behavior.
    */
-  static <T extends @Nullable Object> GeneralRange<T> downTo(
+  static <T extends Object> GeneralRange<T> downTo(
       Comparator<? super T> comparator, @ParametricNullness T endpoint, BoundType boundType) {
     return new GeneralRange<T>(comparator, true, endpoint, boundType, false, null, OPEN);
   }
@@ -74,7 +70,7 @@ final class GeneralRange<T extends @Nullable Object> implements Serializable {
    * Returns everything below the endpoint relative to the specified comparator, with the specified
    * endpoint behavior.
    */
-  static <T extends @Nullable Object> GeneralRange<T> upTo(
+  static <T extends Object> GeneralRange<T> upTo(
       Comparator<? super T> comparator, @ParametricNullness T endpoint, BoundType boundType) {
     return new GeneralRange<T>(comparator, false, null, OPEN, true, endpoint, boundType);
   }
@@ -83,7 +79,7 @@ final class GeneralRange<T extends @Nullable Object> implements Serializable {
    * Returns everything between the endpoints relative to the specified comparator, with the
    * specified endpoint behavior.
    */
-  static <T extends @Nullable Object> GeneralRange<T> range(
+  static <T extends Object> GeneralRange<T> range(
       Comparator<? super T> comparator,
       @ParametricNullness T lower,
       BoundType lowerType,
diff --git a/android/guava/src/com/google/common/collect/GwtTransient.java b/android/guava/src/com/google/common/collect/GwtTransient.java
index ce5ea48..1f5d2ce 100644
--- a/android/guava/src/com/google/common/collect/GwtTransient.java
+++ b/android/guava/src/com/google/common/collect/GwtTransient.java
@@ -19,7 +19,6 @@ package com.google.common.collect;
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
@@ -30,7 +29,6 @@ import java.lang.annotation.Target;
  * com.google.common.collect}.
  */
 @Documented
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(FIELD)
 @ElementTypesAreNonnullByDefault
diff --git a/android/guava/src/com/google/common/collect/HashBasedTable.java b/android/guava/src/com/google/common/collect/HashBasedTable.java
index c8ba50f..cfc0822 100644
--- a/android/guava/src/com/google/common/collect/HashBasedTable.java
+++ b/android/guava/src/com/google/common/collect/HashBasedTable.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Supplier;
 import java.io.Serializable;
 import java.util.LinkedHashMap;
@@ -46,7 +45,6 @@ import java.util.Map;
  * @author Jared Levy
  * @since 7.0
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 public class HashBasedTable<R, C, V> extends StandardTable<R, C, V> {
   private static class Factory<C, V> implements Supplier<Map<C, V>>, Serializable {
diff --git a/android/guava/src/com/google/common/collect/HashBiMap.java b/android/guava/src/com/google/common/collect/HashBiMap.java
index 010f73c..51276fb 100644
--- a/android/guava/src/com/google/common/collect/HashBiMap.java
+++ b/android/guava/src/com/google/common/collect/HashBiMap.java
@@ -15,15 +15,9 @@
 package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.collect.NullnessCasts.unsafeNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -37,7 +31,6 @@ import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link BiMap} backed by two hash tables. This implementation allows null keys and values. A
@@ -52,13 +45,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Object>
+public final class HashBiMap<K extends Object, V extends Object>
     extends AbstractMap<K, V> implements BiMap<K, V>, Serializable {
 
   /** Returns a new, empty {@code HashBiMap} with the default initial capacity (16). */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashBiMap<K, V> create() {
+  public static <K extends Object, V extends Object> HashBiMap<K, V> create() {
     return create(16);
   }
 
@@ -68,7 +60,7 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
    * @param expectedSize the expected number of entries
    * @throws IllegalArgumentException if the specified expected size is negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashBiMap<K, V> create(
+  public static <K extends Object, V extends Object> HashBiMap<K, V> create(
       int expectedSize) {
     return new HashBiMap<>(expectedSize);
   }
@@ -77,7 +69,7 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
    * Constructs a new bimap containing initial values from {@code map}. The bimap is created with an
    * initial capacity sufficient to hold the mappings in the specified map.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashBiMap<K, V> create(
+  public static <K extends Object, V extends Object> HashBiMap<K, V> create(
       Map<? extends K, ? extends V> map) {
     HashBiMap<K, V> bimap = create(map.size());
     bimap.putAll(map);
@@ -88,9 +80,9 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
   private static final int ENDPOINT = -2;
 
   /** Maps an "entry" to the key of that entry. */
-  transient @Nullable K[] keys;
+  transient K[] keys;
   /** Maps an "entry" to the value of that entry. */
-  transient @Nullable V[] values;
+  transient V[] values;
 
   transient int size;
   transient int modCount;
@@ -272,7 +264,6 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public V put(@ParametricNullness K key, @ParametricNullness V value) {
     return put(key, value, false);
@@ -317,13 +308,11 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public V forcePut(@ParametricNullness K key, @ParametricNullness V value) {
     return put(key, value, true);
   }
 
-  @CanIgnoreReturnValue
   @CheckForNull
   K putInverse(@ParametricNullness V value, @ParametricNullness K key, boolean force) {
     int valueHash = Hashing.smearedHash(value);
@@ -540,7 +529,6 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public V remove(@CheckForNull Object key) {
     int keyHash = Hashing.smearedHash(key);
@@ -677,7 +665,7 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
 
   /** Shared supertype of keySet, values, entrySet, and inverse.entrySet. */
   abstract static class View<
-          K extends @Nullable Object, V extends @Nullable Object, T extends @Nullable Object>
+          K extends Object, V extends Object, T extends Object>
       extends AbstractSet<T> {
     final HashBiMap<K, V> biMap;
 
@@ -851,7 +839,6 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
     }
 
     @Override
-    @CanIgnoreReturnValue
     public boolean remove(@CheckForNull Object o) {
       if (o instanceof Entry) {
         Entry<?, ?> e = (Entry<?, ?>) o;
@@ -942,7 +929,7 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
     }
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient BiMap<V, K> inverse;
+  @CheckForNull private transient BiMap<V, K> inverse;
 
   @Override
   public BiMap<V, K> inverse() {
@@ -950,7 +937,7 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
     return (result == null) ? inverse = new Inverse<K, V>(this) : result;
   }
 
-  static class Inverse<K extends @Nullable Object, V extends @Nullable Object>
+  static class Inverse<K extends Object, V extends Object>
       extends AbstractMap<V, K> implements BiMap<V, K>, Serializable {
     private final HashBiMap<K, V> forward;
 
@@ -980,14 +967,12 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
     }
 
     @Override
-    @CanIgnoreReturnValue
     @CheckForNull
     public K put(@ParametricNullness V value, @ParametricNullness K key) {
       return forward.putInverse(value, key, false);
     }
 
     @Override
-    @CanIgnoreReturnValue
     @CheckForNull
     public K forcePut(@ParametricNullness V value, @ParametricNullness K key) {
       return forward.putInverse(value, key, true);
@@ -999,7 +984,6 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
     }
 
     @Override
-    @CanIgnoreReturnValue
     @CheckForNull
     public K remove(@CheckForNull Object value) {
       return forward.removeInverse(value);
@@ -1028,14 +1012,13 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
       return (result == null) ? inverseEntrySet = new InverseEntrySet<K, V>(forward) : result;
     }
 
-    @GwtIncompatible("serialization")
     private void readObject(ObjectInputStream in) throws ClassNotFoundException, IOException {
       in.defaultReadObject();
       this.forward.inverse = this;
     }
   }
 
-  static class InverseEntrySet<K extends @Nullable Object, V extends @Nullable Object>
+  static class InverseEntrySet<K extends Object, V extends Object>
       extends View<K, V, Entry<V, K>> {
     InverseEntrySet(HashBiMap<K, V> biMap) {
       super(biMap);
@@ -1080,7 +1063,7 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
    * the value is moved, deleted, or reinserted, it will account for that -- while not doing any
    * extra work if the value has not moved.
    */
-  static final class EntryForValue<K extends @Nullable Object, V extends @Nullable Object>
+  static final class EntryForValue<K extends Object, V extends Object>
       extends AbstractMapEntry<V, K> {
     final HashBiMap<K, V> biMap;
     @ParametricNullness final V value;
@@ -1133,13 +1116,13 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
   /**
    * @serialData the number of entries, first key, first value, second key, second value, and so on.
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     Serialization.writeMap(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     int size = Serialization.readCount(stream);
diff --git a/android/guava/src/com/google/common/collect/HashMultimap.java b/android/guava/src/com/google/common/collect/HashMultimap.java
index 9e4c1c2..22bad0e 100644
--- a/android/guava/src/com/google/common/collect/HashMultimap.java
+++ b/android/guava/src/com/google/common/collect/HashMultimap.java
@@ -16,9 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import java.io.IOException;
 import java.io.ObjectInputStream;
@@ -26,7 +23,6 @@ import java.io.ObjectOutputStream;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimap} using hash tables.
@@ -48,13 +44,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class HashMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public final class HashMultimap<K extends Object, V extends Object>
     extends HashMultimapGwtSerializationDependencies<K, V> {
   private static final int DEFAULT_VALUES_PER_KEY = 2;
 
-  @VisibleForTesting transient int expectedValuesPerKey = DEFAULT_VALUES_PER_KEY;
+  transient int expectedValuesPerKey = DEFAULT_VALUES_PER_KEY;
 
   /**
    * Creates a new, empty {@code HashMultimap} with the default initial capacities.
@@ -62,7 +57,7 @@ public final class HashMultimap<K extends @Nullable Object, V extends @Nullable
    * <p>This method will soon be deprecated in favor of {@code
    * MultimapBuilder.hashKeys().hashSetValues().build()}.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       HashMultimap<K, V> create() {
     return new HashMultimap<>();
   }
@@ -79,7 +74,7 @@ public final class HashMultimap<K extends @Nullable Object, V extends @Nullable
    * @throws IllegalArgumentException if {@code expectedKeys} or {@code expectedValuesPerKey} is
    *     negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashMultimap<K, V> create(
+  public static <K extends Object, V extends Object> HashMultimap<K, V> create(
       int expectedKeys, int expectedValuesPerKey) {
     return new HashMultimap<>(expectedKeys, expectedValuesPerKey);
   }
@@ -94,7 +89,7 @@ public final class HashMultimap<K extends @Nullable Object, V extends @Nullable
    *
    * @param multimap the multimap whose contents are copied to this multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashMultimap<K, V> create(
+  public static <K extends Object, V extends Object> HashMultimap<K, V> create(
       Multimap<? extends K, ? extends V> multimap) {
     return new HashMultimap<>(multimap);
   }
@@ -130,13 +125,13 @@ public final class HashMultimap<K extends @Nullable Object, V extends @Nullable
    * @serialData expectedValuesPerKey, number of distinct keys, and then for each distinct key: the
    *     key, number of values for that key, and the key's values
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     Serialization.writeMultimap(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     expectedValuesPerKey = DEFAULT_VALUES_PER_KEY;
@@ -146,6 +141,6 @@ public final class HashMultimap<K extends @Nullable Object, V extends @Nullable
     Serialization.populateMultimap(this, stream, distinctKeys);
   }
 
-  @GwtIncompatible // Not needed in emulated source
+  // Not needed in emulated source
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/HashMultimapGwtSerializationDependencies.java b/android/guava/src/com/google/common/collect/HashMultimapGwtSerializationDependencies.java
index 0922c38..20a68ca 100644
--- a/android/guava/src/com/google/common/collect/HashMultimapGwtSerializationDependencies.java
+++ b/android/guava/src/com/google/common/collect/HashMultimapGwtSerializationDependencies.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Map;
 
@@ -29,7 +28,6 @@ import java.util.Map;
  *
  * <p>TODO(cpovirk): Consider applying this subclass approach to our other types.
  */
-@GwtCompatible(emulated = true)
 abstract class HashMultimapGwtSerializationDependencies<K, V> extends AbstractSetMultimap<K, V> {
   HashMultimapGwtSerializationDependencies(Map<K, Collection<V>> map) {
     super(map);
diff --git a/android/guava/src/com/google/common/collect/HashMultiset.java b/android/guava/src/com/google/common/collect/HashMultiset.java
index 0748e68..9b58515 100644
--- a/android/guava/src/com/google/common/collect/HashMultiset.java
+++ b/android/guava/src/com/google/common/collect/HashMultiset.java
@@ -16,9 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Multiset implementation that uses hashing for key and entry access.
@@ -27,12 +24,11 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class HashMultiset<E extends @Nullable Object> extends AbstractMapBasedMultiset<E> {
+public final class HashMultiset<E extends Object> extends AbstractMapBasedMultiset<E> {
 
   /** Creates a new, empty {@code HashMultiset} using the default initial capacity. */
-  public static <E extends @Nullable Object> HashMultiset<E> create() {
+  public static <E extends Object> HashMultiset<E> create() {
     return create(ObjectCountHashMap.DEFAULT_SIZE);
   }
 
@@ -43,7 +39,7 @@ public final class HashMultiset<E extends @Nullable Object> extends AbstractMapB
    * @param distinctElements the expected number of distinct elements
    * @throws IllegalArgumentException if {@code distinctElements} is negative
    */
-  public static <E extends @Nullable Object> HashMultiset<E> create(int distinctElements) {
+  public static <E extends Object> HashMultiset<E> create(int distinctElements) {
     return new HashMultiset<E>(distinctElements);
   }
 
@@ -54,7 +50,7 @@ public final class HashMultiset<E extends @Nullable Object> extends AbstractMapB
    *
    * @param elements the elements that the multiset should contain
    */
-  public static <E extends @Nullable Object> HashMultiset<E> create(
+  public static <E extends Object> HashMultiset<E> create(
       Iterable<? extends E> elements) {
     HashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));
     Iterables.addAll(multiset, elements);
@@ -70,6 +66,6 @@ public final class HashMultiset<E extends @Nullable Object> extends AbstractMapB
     return new ObjectCountHashMap<>(distinctElements);
   }
 
-  @GwtIncompatible // Not needed in emulated source.
+  // Not needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/Hashing.java b/android/guava/src/com/google/common/collect/Hashing.java
index 81ef67e..1a130f9 100644
--- a/android/guava/src/com/google/common/collect/Hashing.java
+++ b/android/guava/src/com/google/common/collect/Hashing.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.primitives.Ints;
 import javax.annotation.CheckForNull;
 
@@ -27,7 +26,6 @@ import javax.annotation.CheckForNull;
  * @author Jesse Wilson
  * @author Austin Appleby
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class Hashing {
   private Hashing() {}
diff --git a/android/guava/src/com/google/common/collect/ImmutableAsList.java b/android/guava/src/com/google/common/collect/ImmutableAsList.java
index c397479..aa1f821 100644
--- a/android/guava/src/com/google/common/collect/ImmutableAsList.java
+++ b/android/guava/src/com/google/common/collect/ImmutableAsList.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
 import java.io.Serializable;
@@ -30,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial")
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableAsList<E> extends ImmutableList<E> {
@@ -59,7 +56,7 @@ abstract class ImmutableAsList<E> extends ImmutableList<E> {
   }
 
   /** Serialized form that leads to the same performance as the original list. */
-  @GwtIncompatible // serialization
+  // serialization
   static class SerializedForm implements Serializable {
     final ImmutableCollection<?> collection;
 
@@ -74,12 +71,12 @@ abstract class ImmutableAsList<E> extends ImmutableList<E> {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private void readObject(ObjectInputStream stream) throws InvalidObjectException {
     throw new InvalidObjectException("Use SerializedForm");
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   @Override
   Object writeReplace() {
     return new SerializedForm(delegateCollection());
diff --git a/android/guava/src/com/google/common/collect/ImmutableBiMap.java b/android/guava/src/com/google/common/collect/ImmutableBiMap.java
index bbae036..a05230b 100644
--- a/android/guava/src/com/google/common/collect/ImmutableBiMap.java
+++ b/android/guava/src/com/google/common/collect/ImmutableBiMap.java
@@ -19,10 +19,6 @@ package com.google.common.collect;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Comparator;
@@ -36,7 +32,6 @@ import javax.annotation.CheckForNull;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableBiMap<K, V> extends ImmutableMap<K, V> implements BiMap<K, V> {
 
@@ -294,7 +289,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableMap<K, V> implements
    *
    * @since 23.1
    */
-  @Beta
   public static <K, V> Builder<K, V> builderWithExpectedSize(int expectedSize) {
     checkNonnegative(expectedSize, "expectedSize");
     return new Builder<>(expectedSize);
@@ -345,7 +339,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableMap<K, V> implements
      * Associates {@code key} with {@code value} in the built bimap. Duplicate keys or values are
      * not allowed, and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(K key, V value) {
       super.put(key, value);
@@ -358,7 +351,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableMap<K, V> implements
      *
      * @since 19.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       super.put(entry);
@@ -371,7 +363,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableMap<K, V> implements
      *
      * @throws NullPointerException if any key or value in {@code map} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(Map<? extends K, ? extends V> map) {
       super.putAll(map);
@@ -385,8 +376,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableMap<K, V> implements
      * @throws NullPointerException if any key, value, or entry is null
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       super.putAll(entries);
@@ -403,8 +392,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableMap<K, V> implements
      * @throws IllegalStateException if this method was already called
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     public Builder<K, V> orderEntriesByValue(Comparator<? super V> valueComparator) {
       super.orderEntriesByValue(valueComparator);
@@ -412,7 +399,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableMap<K, V> implements
     }
 
     @Override
-    @CanIgnoreReturnValue
     Builder<K, V> combine(ImmutableMap.Builder<K, V> builder) {
       super.combine(builder);
       return this;
@@ -492,7 +478,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableMap<K, V> implements
    * @throws NullPointerException if any key, value, or entry is null
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableBiMap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     int estimatedSize =
@@ -532,10 +517,8 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableMap<K, V> implements
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final V forcePut(K key, V value) {
     throw new UnsupportedOperationException();
diff --git a/android/guava/src/com/google/common/collect/ImmutableClassToInstanceMap.java b/android/guava/src/com/google/common/collect/ImmutableClassToInstanceMap.java
index aeabe5d..897aa7e 100644
--- a/android/guava/src/com/google/common/collect/ImmutableClassToInstanceMap.java
+++ b/android/guava/src/com/google/common/collect/ImmutableClassToInstanceMap.java
@@ -18,11 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Primitives;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.util.Map;
 import javax.annotation.CheckForNull;
@@ -34,8 +30,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@Immutable(containerOf = "B")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ImmutableClassToInstanceMap<B> extends ForwardingMap<Class<? extends B>, B>
     implements ClassToInstanceMap<B>, Serializable {
@@ -97,7 +91,6 @@ public final class ImmutableClassToInstanceMap<B> extends ForwardingMap<Class<?
      * Associates {@code key} with {@code value} in the built map. Duplicate keys are not allowed,
      * and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public <T extends B> Builder<B> put(Class<T> key, T value) {
       mapBuilder.put(key, value);
       return this;
@@ -110,7 +103,6 @@ public final class ImmutableClassToInstanceMap<B> extends ForwardingMap<Class<?
      * @throws NullPointerException if any key or value in {@code map} is null
      * @throws ClassCastException if any value is not an instance of the type specified by its key
      */
-    @CanIgnoreReturnValue
     public <T extends B> Builder<B> putAll(Map<? extends Class<? extends T>, ? extends T> map) {
       for (Entry<? extends Class<? extends T>, ? extends T> entry : map.entrySet()) {
         Class<? extends T> type = entry.getKey();
@@ -185,10 +177,8 @@ public final class ImmutableClassToInstanceMap<B> extends ForwardingMap<Class<?
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public <T extends B> T putInstance(Class<T> type, T value) {
     throw new UnsupportedOperationException();
diff --git a/android/guava/src/com/google/common/collect/ImmutableCollection.java b/android/guava/src/com/google/common/collect/ImmutableCollection.java
index b5ac2a1..9374e1a 100644
--- a/android/guava/src/com/google/common/collect/ImmutableCollection.java
+++ b/android/guava/src/com/google/common/collect/ImmutableCollection.java
@@ -20,10 +20,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.ObjectArrays.checkElementsNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.Serializable;
 import java.util.AbstractCollection;
 import java.util.Arrays;
@@ -33,7 +29,6 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Collection} whose contents will never change, and which offers a few additional
@@ -160,8 +155,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 2.0
  */
-@DoNotMock("Use ImmutableList.of or another implementation")
-@GwtCompatible(emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 // TODO(kevinb): I think we should push everything down to "BaseImmutableCollection" or something,
@@ -181,7 +174,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
     return toArray(EMPTY_ARRAY);
   }
 
-  @CanIgnoreReturnValue
   @Override
   /*
    * This suppression is here for two reasons:
@@ -196,7 +188,7 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * nullness perspective. The signature below at least has the virtue of being relatively simple.
    */
   @SuppressWarnings("nullness")
-  public final <T extends @Nullable Object> T[] toArray(T[] other) {
+  public final <T extends Object> T[] toArray(T[] other) {
     checkNotNull(other);
     int size = size();
 
@@ -215,7 +207,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
 
   /** If this collection is backed by an array of its elements in insertion order, returns it. */
   @CheckForNull
-  @Nullable
   Object[] internalArray() {
     return null;
   }
@@ -245,10 +236,8 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean add(E e) {
     throw new UnsupportedOperationException();
   }
@@ -259,10 +248,8 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean remove(@CheckForNull Object object) {
     throw new UnsupportedOperationException();
   }
@@ -273,10 +260,8 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean addAll(Collection<? extends E> newElements) {
     throw new UnsupportedOperationException();
   }
@@ -287,10 +272,8 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean removeAll(Collection<?> oldElements) {
     throw new UnsupportedOperationException();
   }
@@ -301,10 +284,8 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean retainAll(Collection<?> elementsToKeep) {
     throw new UnsupportedOperationException();
   }
@@ -317,7 +298,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void clear() {
     throw new UnsupportedOperationException();
   }
@@ -348,7 +328,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * Copies the contents of this immutable collection into the specified array at the specified
    * offset. Returns {@code offset + size()}.
    */
-  @CanIgnoreReturnValue
   int copyIntoArray(@Nullable Object[] dst, int offset) {
     for (E e : this) {
       dst[offset++] = e;
@@ -366,7 +345,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    *
    * @since 10.0
    */
-  @DoNotMock
   public abstract static class Builder<E> {
     static final int DEFAULT_INITIAL_CAPACITY = 4;
 
@@ -397,7 +375,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
      * @return this {@code Builder} instance
      * @throws NullPointerException if {@code element} is null
      */
-    @CanIgnoreReturnValue
     public abstract Builder<E> add(E element);
 
     /**
@@ -410,7 +387,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
      * @return this {@code Builder} instance
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     public Builder<E> add(E... elements) {
       for (E element : elements) {
         add(element);
@@ -428,7 +404,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
      * @return this {@code Builder} instance
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     public Builder<E> addAll(Iterable<? extends E> elements) {
       for (E element : elements) {
         add(element);
@@ -446,7 +421,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
      * @return this {@code Builder} instance
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     public Builder<E> addAll(Iterator<? extends E> elements) {
       while (elements.hasNext()) {
         add(elements.next());
@@ -466,13 +440,13 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
 
   abstract static class ArrayBasedBuilder<E> extends ImmutableCollection.Builder<E> {
     // The first `size` elements are non-null.
-    @Nullable Object[] contents;
+    Object[] contents;
     int size;
     boolean forceCopy;
 
     ArrayBasedBuilder(int initialCapacity) {
       checkNonnegative(initialCapacity, "initialCapacity");
-      this.contents = new @Nullable Object[initialCapacity];
+      this.contents = new Object[initialCapacity];
       this.size = 0;
     }
 
@@ -492,7 +466,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
       }
     }
 
-    @CanIgnoreReturnValue
     @Override
     public ArrayBasedBuilder<E> add(E element) {
       checkNotNull(element);
@@ -501,7 +474,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E... elements) {
       addAll(elements, elements.length);
@@ -523,7 +495,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
       size += n;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterable<? extends E> elements) {
       if (elements instanceof Collection) {
diff --git a/android/guava/src/com/google/common/collect/ImmutableEntry.java b/android/guava/src/com/google/common/collect/ImmutableEntry.java
index edc25f4..a844223 100644
--- a/android/guava/src/com/google/common/collect/ImmutableEntry.java
+++ b/android/guava/src/com/google/common/collect/ImmutableEntry.java
@@ -16,14 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** @see com.google.common.collect.Maps#immutableEntry(Object, Object) */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-class ImmutableEntry<K extends @Nullable Object, V extends @Nullable Object>
+class ImmutableEntry<K extends Object, V extends Object>
     extends AbstractMapEntry<K, V> implements Serializable {
   @ParametricNullness final K key;
   @ParametricNullness final V value;
diff --git a/android/guava/src/com/google/common/collect/ImmutableEnumMap.java b/android/guava/src/com/google/common/collect/ImmutableEnumMap.java
index 66680f0..88aa97f 100644
--- a/android/guava/src/com/google/common/collect/ImmutableEnumMap.java
+++ b/android/guava/src/com/google/common/collect/ImmutableEnumMap.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap.IteratorBasedImmutableMap;
 import java.io.Serializable;
 import java.util.EnumMap;
 import javax.annotation.CheckForNull;
@@ -29,7 +27,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 final class ImmutableEnumMap<K extends Enum<K>, V> extends IteratorBasedImmutableMap<K, V> {
diff --git a/android/guava/src/com/google/common/collect/ImmutableEnumSet.java b/android/guava/src/com/google/common/collect/ImmutableEnumSet.java
index 90787e5..6d5460d 100644
--- a/android/guava/src/com/google/common/collect/ImmutableEnumSet.java
+++ b/android/guava/src/com/google/common/collect/ImmutableEnumSet.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.EnumSet;
@@ -28,7 +26,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Jared Levy
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 final class ImmutableEnumSet<E extends Enum<E>> extends ImmutableSet<E> {
@@ -107,7 +104,7 @@ final class ImmutableEnumSet<E extends Enum<E>> extends ImmutableSet<E> {
     return true;
   }
 
-  @LazyInit private transient int hashCode;
+  private transient int hashCode;
 
   @Override
   public int hashCode() {
diff --git a/android/guava/src/com/google/common/collect/ImmutableList.java b/android/guava/src/com/google/common/collect/ImmutableList.java
index 6ebd733..b6ab310 100644
--- a/android/guava/src/com/google/common/collect/ImmutableList.java
+++ b/android/guava/src/com/google/common/collect/ImmutableList.java
@@ -23,13 +23,7 @@ import static com.google.common.base.Preconditions.checkPositionIndex;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.ObjectArrays.checkElementsNotNull;
-import static com.google.common.collect.RegularImmutableList.EMPTY;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.InlineMe;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
 import java.io.Serializable;
@@ -41,7 +35,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.RandomAccess;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link List} whose contents will never change, with many other important properties detailed at
@@ -55,7 +48,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableList<E> extends ImmutableCollection<E>
@@ -451,7 +443,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
 
     @Override
     @CheckForNull
-    @Nullable
     Object[] internalArray() {
       return ImmutableList.this.internalArray();
     }
@@ -490,10 +481,8 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean addAll(int index, Collection<? extends E> newElements) {
     throw new UnsupportedOperationException();
   }
@@ -504,10 +493,8 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final E set(int index, E element) {
     throw new UnsupportedOperationException();
   }
@@ -520,7 +507,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void add(int index, E element) {
     throw new UnsupportedOperationException();
   }
@@ -531,10 +517,8 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final E remove(int index) {
     throw new UnsupportedOperationException();
   }
@@ -545,7 +529,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    * @since 2.0
    * @deprecated There is no reason to use this; it always returns {@code this}.
    */
-  @InlineMe(replacement = "this")
   @Deprecated
   @Override
   public final ImmutableList<E> asList() {
@@ -698,7 +681,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    *
    * @since 23.1
    */
-  @Beta
   public static <E> Builder<E> builderWithExpectedSize(int expectedSize) {
     checkNonnegative(expectedSize, "expectedSize");
     return new ImmutableList.Builder<E>(expectedSize);
@@ -744,7 +726,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code element} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E element) {
       super.add(element);
@@ -758,7 +739,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E... elements) {
       super.add(elements);
@@ -772,7 +752,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterable<? extends E> elements) {
       super.addAll(elements);
@@ -786,14 +765,12 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterator<? extends E> elements) {
       super.addAll(elements);
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<E> combine(Builder<E> other) {
       addAll(other.contents, other.size);
       return this;
diff --git a/android/guava/src/com/google/common/collect/ImmutableListMultimap.java b/android/guava/src/com/google/common/collect/ImmutableListMultimap.java
index cc0a910..4f6ea22 100644
--- a/android/guava/src/com/google/common/collect/ImmutableListMultimap.java
+++ b/android/guava/src/com/google/common/collect/ImmutableListMultimap.java
@@ -16,13 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
@@ -32,7 +25,6 @@ import java.util.Comparator;
 import java.util.Map;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link ListMultimap} whose contents will never change, with many other important properties
@@ -44,7 +36,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
 public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
     implements ListMultimap<K, V> {
@@ -143,7 +134,6 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
      */
     public Builder() {}
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(K key, V value) {
       super.put(key, value);
@@ -155,7 +145,6 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 11.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       super.put(entry);
@@ -167,29 +156,24 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       super.putAll(entries);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(K key, Iterable<? extends V> values) {
       super.putAll(key, values);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(K key, V... values) {
       super.putAll(key, values);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(Multimap<? extends K, ? extends V> multimap) {
       super.putAll(multimap);
@@ -201,7 +185,6 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 8.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> orderKeysBy(Comparator<? super K> keyComparator) {
       super.orderKeysBy(keyComparator);
@@ -213,14 +196,12 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 8.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> orderValuesBy(Comparator<? super V> valueComparator) {
       super.orderValuesBy(valueComparator);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     Builder<K, V> combine(ImmutableMultimap.Builder<K, V> other) {
       super.combine(other);
@@ -271,7 +252,6 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws NullPointerException if any key, value, or entry is null
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableListMultimap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     return new Builder<K, V>().putAll(entries).build();
@@ -322,7 +302,7 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
     return (list == null) ? ImmutableList.<V>of() : list;
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableListMultimap<V, K> inverse;
+  @CheckForNull private transient ImmutableListMultimap<V, K> inverse;
 
   /**
    * {@inheritDoc}
@@ -355,10 +335,8 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final ImmutableList<V> removeAll(@CheckForNull Object key) {
     throw new UnsupportedOperationException();
   }
@@ -369,10 +347,8 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final ImmutableList<V> replaceValues(K key, Iterable<? extends V> values) {
     throw new UnsupportedOperationException();
   }
@@ -381,13 +357,13 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
    * @serialData number of distinct keys, and then for each distinct key: the key, the number of
    *     values for that key, and the key's values
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     Serialization.writeMultimap(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     int keyCount = stream.readInt();
@@ -423,6 +399,6 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
     FieldSettersHolder.SIZE_FIELD_SETTER.set(this, tmpSize);
   }
 
-  @GwtIncompatible // Not needed in emulated source
+  // Not needed in emulated source
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/ImmutableMap.java b/android/guava/src/com/google/common/collect/ImmutableMap.java
index fd87e0b..9825f43 100644
--- a/android/guava/src/com/google/common/collect/ImmutableMap.java
+++ b/android/guava/src/com/google/common/collect/ImmutableMap.java
@@ -20,16 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.DoNotMock;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.WeakOuter;
+
 import java.io.Serializable;
 import java.util.AbstractMap;
 import java.util.Arrays;
@@ -41,7 +32,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.SortedMap;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Map} whose contents will never change, with many other important properties detailed at
@@ -54,8 +44,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@DoNotMock("Use ImmutableMap.of or another implementation")
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
@@ -330,7 +318,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    *
    * @since 23.1
    */
-  @Beta
   public static <K, V> Builder<K, V> builderWithExpectedSize(int expectedSize) {
     checkNonnegative(expectedSize, "expectedSize");
     return new Builder<>(expectedSize);
@@ -378,10 +365,9 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    *
    * @since 2.0
    */
-  @DoNotMock
   public static class Builder<K, V> {
     @CheckForNull Comparator<? super V> valueComparator;
-    @Nullable Object[] alternatingKeysAndValues;
+    Object[] alternatingKeysAndValues;
     int size;
     boolean entriesUsed;
 
@@ -395,7 +381,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
 
     @SuppressWarnings({"unchecked", "rawtypes"})
     Builder(int initialCapacity) {
-      this.alternatingKeysAndValues = new @Nullable Object[2 * initialCapacity];
+      this.alternatingKeysAndValues = new Object[2 * initialCapacity];
       this.size = 0;
       this.entriesUsed = false;
     }
@@ -415,7 +401,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
      * Associates {@code key} with {@code value} in the built map. Duplicate keys are not allowed,
      * and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> put(K key, V value) {
       ensureCapacity(size + 1);
       checkEntryNotNull(key, value);
@@ -431,7 +416,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
      *
      * @since 11.0
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       return put(entry.getKey(), entry.getValue());
     }
@@ -442,7 +426,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
      *
      * @throws NullPointerException if any key or value in {@code map} is null
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> putAll(Map<? extends K, ? extends V> map) {
       return putAll(map.entrySet());
     }
@@ -454,8 +437,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
      * @throws NullPointerException if any key, value, or entry is null
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       if (entries instanceof Collection) {
         ensureCapacity(size + ((Collection<?>) entries).size());
@@ -476,15 +457,12 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
      * @throws IllegalStateException if this method was already called
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     public Builder<K, V> orderEntriesByValue(Comparator<? super V> valueComparator) {
       checkState(this.valueComparator == null, "valueComparator was already set");
       this.valueComparator = checkNotNull(valueComparator, "valueComparator");
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<K, V> combine(Builder<K, V> other) {
       checkNotNull(other);
       ensureCapacity(this.size + other.size);
@@ -595,7 +573,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    * @throws IllegalArgumentException if two entries have the same key
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableMap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     int initialCapacity =
@@ -647,10 +624,8 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final V put(K k, V v) {
     throw new UnsupportedOperationException();
@@ -662,7 +637,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
   @CheckForNull
@@ -678,7 +652,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void putAll(Map<? extends K, ? extends V> map) {
     throw new UnsupportedOperationException();
   }
@@ -691,7 +664,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void clear() {
     throw new UnsupportedOperationException();
   }
@@ -739,7 +711,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
     }
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableSet<Entry<K, V>> entrySet;
+  @CheckForNull private transient ImmutableSet<Entry<K, V>> entrySet;
 
   /**
    * Returns an immutable set of the mappings in this map. The iteration order is specified by the
@@ -753,7 +725,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
 
   abstract ImmutableSet<Entry<K, V>> createEntrySet();
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableSet<K> keySet;
+  @CheckForNull private transient ImmutableSet<K> keySet;
 
   /**
    * Returns an immutable set of the keys in this map, in the same order that they appear in {@link
@@ -787,7 +759,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
     };
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableCollection<V> values;
+  @CheckForNull private transient ImmutableCollection<V> values;
 
   /**
    * Returns an immutable collection of the values in this map, in the same order that they appear
@@ -807,7 +779,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
   abstract ImmutableCollection<V> createValues();
 
   // cached so that this.multimapView().inverse() only computes inverse once
-  @LazyInit @CheckForNull private transient ImmutableSetMultimap<K, V> multimapView;
+  @CheckForNull private transient ImmutableSetMultimap<K, V> multimapView;
 
   /**
    * Returns a multimap view of the map.
@@ -825,7 +797,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
         : result;
   }
 
-  @WeakOuter
   private final class MapViewOfValuesAsSingletonSets
       extends IteratorBasedImmutableMap<K, ImmutableSet<V>> {
 
diff --git a/android/guava/src/com/google/common/collect/ImmutableMapEntrySet.java b/android/guava/src/com/google/common/collect/ImmutableMapEntrySet.java
index 7ae6422..e21900b 100644
--- a/android/guava/src/com/google/common/collect/ImmutableMapEntrySet.java
+++ b/android/guava/src/com/google/common/collect/ImmutableMapEntrySet.java
@@ -16,12 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * {@code entrySet()} implementation for {@link ImmutableMap}.
@@ -29,7 +26,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jesse Wilson
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableMapEntrySet<K, V> extends ImmutableSet<Entry<K, V>> {
   static final class RegularEntrySet<K, V> extends ImmutableMapEntrySet<K, V> {
@@ -51,7 +47,6 @@ abstract class ImmutableMapEntrySet<K, V> extends ImmutableSet<Entry<K, V>> {
     }
 
     @Override
-    @GwtIncompatible("not used in GWT")
     int copyIntoArray(@Nullable Object[] dst, int offset) {
       return entries.copyIntoArray(dst, offset);
     }
@@ -92,7 +87,7 @@ abstract class ImmutableMapEntrySet<K, V> extends ImmutableSet<Entry<K, V>> {
   }
 
   @Override
-  @GwtIncompatible // not used in GWT
+  // not used in GWT
   boolean isHashCodeFast() {
     return map().isHashCodeFast();
   }
@@ -102,13 +97,13 @@ abstract class ImmutableMapEntrySet<K, V> extends ImmutableSet<Entry<K, V>> {
     return map().hashCode();
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   @Override
   Object writeReplace() {
     return new EntrySetSerializedForm<>(map());
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static class EntrySetSerializedForm<K, V> implements Serializable {
     final ImmutableMap<K, V> map;
 
diff --git a/android/guava/src/com/google/common/collect/ImmutableMapKeySet.java b/android/guava/src/com/google/common/collect/ImmutableMapKeySet.java
index 9bd1d43..7728220 100644
--- a/android/guava/src/com/google/common/collect/ImmutableMapKeySet.java
+++ b/android/guava/src/com/google/common/collect/ImmutableMapKeySet.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -27,7 +25,6 @@ import javax.annotation.CheckForNull;
  * @author Jesse Wilson
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class ImmutableMapKeySet<K, V> extends IndexedImmutableSet<K> {
   private final ImmutableMap<K, V> map;
@@ -61,13 +58,13 @@ final class ImmutableMapKeySet<K, V> extends IndexedImmutableSet<K> {
     return true;
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   @Override
   Object writeReplace() {
     return new KeySetSerializedForm<K>(map);
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static class KeySetSerializedForm<K> implements Serializable {
     final ImmutableMap<K, ?> map;
 
diff --git a/android/guava/src/com/google/common/collect/ImmutableMapValues.java b/android/guava/src/com/google/common/collect/ImmutableMapValues.java
index 8b7284d..8cabf30 100644
--- a/android/guava/src/com/google/common/collect/ImmutableMapValues.java
+++ b/android/guava/src/com/google/common/collect/ImmutableMapValues.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
@@ -28,7 +26,6 @@ import javax.annotation.CheckForNull;
  * @author Jesse Wilson
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class ImmutableMapValues<K, V> extends ImmutableCollection<V> {
   private final ImmutableMap<K, V> map;
@@ -90,13 +87,13 @@ final class ImmutableMapValues<K, V> extends ImmutableCollection<V> {
     };
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   @Override
   Object writeReplace() {
     return new SerializedForm<V>(map);
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static class SerializedForm<V> implements Serializable {
     final ImmutableMap<?, V> map;
 
diff --git a/android/guava/src/com/google/common/collect/ImmutableMultimap.java b/android/guava/src/com/google/common/collect/ImmutableMultimap.java
index 04a6c4a..430a6e3 100644
--- a/android/guava/src/com/google/common/collect/ImmutableMultimap.java
+++ b/android/guava/src/com/google/common/collect/ImmutableMultimap.java
@@ -19,16 +19,7 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
 import static com.google.common.collect.Maps.immutableEntry;
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.DoNotMock;
-import com.google.j2objc.annotations.Weak;
-import com.google.j2objc.annotations.WeakOuter;
+
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -39,7 +30,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Multimap} whose contents will never change, with many other important properties
@@ -67,7 +57,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V>
     implements Serializable {
@@ -145,7 +134,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    *
    * @since 2.0
    */
-  @DoNotMock
   public static class Builder<K, V> {
     final Map<K, Collection<V>> builderMap;
     @CheckForNull Comparator<? super K> keyComparator;
@@ -164,7 +152,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
     }
 
     /** Adds a key-value mapping to the built multimap. */
-    @CanIgnoreReturnValue
     public Builder<K, V> put(K key, V value) {
       checkEntryNotNull(key, value);
       Collection<V> valueCollection = builderMap.get(key);
@@ -180,7 +167,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      *
      * @since 11.0
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       return put(entry.getKey(), entry.getValue());
     }
@@ -190,8 +176,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      *
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       for (Entry<? extends K, ? extends V> entry : entries) {
         put(entry);
@@ -205,7 +189,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      * @throws NullPointerException if {@code key}, {@code values}, or any element in {@code values}
      *     is null. The builder is left in an invalid state.
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> putAll(K key, Iterable<? extends V> values) {
       if (key == null) {
         throw new NullPointerException("null key in entry: null=" + Iterables.toString(values));
@@ -238,7 +221,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      * @throws NullPointerException if the key or any value is null. The builder is left in an
      *     invalid state.
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> putAll(K key, V... values) {
       return putAll(key, Arrays.asList(values));
     }
@@ -251,7 +233,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      * @throws NullPointerException if any key or value in {@code multimap} is null. The builder is
      *     left in an invalid state.
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> putAll(Multimap<? extends K, ? extends V> multimap) {
       for (Entry<? extends K, ? extends Collection<? extends V>> entry :
           multimap.asMap().entrySet()) {
@@ -265,7 +246,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      *
      * @since 8.0
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> orderKeysBy(Comparator<? super K> keyComparator) {
       this.keyComparator = checkNotNull(keyComparator);
       return this;
@@ -276,13 +256,11 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      *
      * @since 8.0
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> orderValuesBy(Comparator<? super V> valueComparator) {
       this.valueComparator = checkNotNull(valueComparator);
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<K, V> combine(Builder<K, V> other) {
       for (Map.Entry<K, Collection<V>> entry : other.builderMap.entrySet()) {
         putAll(entry.getKey(), entry.getValue());
@@ -329,7 +307,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws NullPointerException if any key, value, or entry is null
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableMultimap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     return ImmutableListMultimap.copyOf(entries);
@@ -341,7 +318,7 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
   // These constants allow the deserialization code to set final fields. This
   // holder class makes sure they are not initialized unless an instance is
   // deserialized.
-  @GwtIncompatible // java serialization is not supported
+  // java serialization is not supported
   static class FieldSettersHolder {
     static final Serialization.FieldSetter<ImmutableMultimap> MAP_FIELD_SETTER =
         Serialization.getFieldSetter(ImmutableMultimap.class, "map");
@@ -362,10 +339,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   // DoNotCall wants this to be final, but we want to override it to return more specific types.
   // Inheritance is closed, and all subtypes are @DoNotCall, so this is safe to suppress.
   @SuppressWarnings("DoNotCall")
@@ -379,10 +354,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   // DoNotCall wants this to be final, but we want to override it to return more specific types.
   // Inheritance is closed, and all subtypes are @DoNotCall, so this is safe to suppress.
   @SuppressWarnings("DoNotCall")
@@ -398,7 +371,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void clear() {
     throw new UnsupportedOperationException();
   }
@@ -425,10 +397,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean put(K key, V value) {
     throw new UnsupportedOperationException();
   }
@@ -439,10 +409,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean putAll(K key, Iterable<? extends V> values) {
     throw new UnsupportedOperationException();
   }
@@ -453,10 +421,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean putAll(Multimap<? extends K, ? extends V> multimap) {
     throw new UnsupportedOperationException();
   }
@@ -467,10 +433,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean remove(@CheckForNull Object key, @CheckForNull Object value) {
     throw new UnsupportedOperationException();
   }
@@ -545,7 +509,7 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
   }
 
   private static class EntryCollection<K, V> extends ImmutableCollection<Entry<K, V>> {
-    @Weak final ImmutableMultimap<K, V> multimap;
+    final ImmutableMultimap<K, V> multimap;
 
     EntryCollection(ImmutableMultimap<K, V> multimap) {
       this.multimap = multimap;
@@ -623,7 +587,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
   }
 
   @SuppressWarnings("serial") // Uses writeReplace, not default serialization
-  @WeakOuter
   class Keys extends ImmutableMultiset<K> {
     @Override
     public boolean contains(@CheckForNull Object object) {
@@ -657,14 +620,12 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
       return true;
     }
 
-    @GwtIncompatible
     @Override
     Object writeReplace() {
       return new KeysSerializedForm(ImmutableMultimap.this);
     }
   }
 
-  @GwtIncompatible
   private static final class KeysSerializedForm implements Serializable {
     final ImmutableMultimap<?, ?> multimap;
 
@@ -713,7 +674,7 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
   }
 
   private static final class Values<K, V> extends ImmutableCollection<V> {
-    @Weak private final transient ImmutableMultimap<K, V> multimap;
+    private final transient ImmutableMultimap<K, V> multimap;
 
     Values(ImmutableMultimap<K, V> multimap) {
       this.multimap = multimap;
@@ -729,7 +690,7 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
       return multimap.valueIterator();
     }
 
-    @GwtIncompatible // not present in emulated superclass
+    // not present in emulated superclass
     @Override
     int copyIntoArray(@Nullable Object[] dst, int offset) {
       for (ImmutableCollection<V> valueCollection : multimap.map.values()) {
diff --git a/android/guava/src/com/google/common/collect/ImmutableMultiset.java b/android/guava/src/com/google/common/collect/ImmutableMultiset.java
index d7febe2..3686a30 100644
--- a/android/guava/src/com/google/common/collect/ImmutableMultiset.java
+++ b/android/guava/src/com/google/common/collect/ImmutableMultiset.java
@@ -17,14 +17,7 @@
 package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.WeakOuter;
+
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Collection;
@@ -47,7 +40,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializationDependencies<E>
@@ -211,7 +203,7 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
     };
   }
 
-  @LazyInit @CheckForNull private transient ImmutableList<E> asList;
+  @CheckForNull private transient ImmutableList<E> asList;
 
   @Override
   public ImmutableList<E> asList() {
@@ -230,10 +222,8 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final int add(E element, int occurrences) {
     throw new UnsupportedOperationException();
   }
@@ -244,10 +234,8 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final int remove(@CheckForNull Object element, int occurrences) {
     throw new UnsupportedOperationException();
   }
@@ -258,10 +246,8 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final int setCount(E element, int count) {
     throw new UnsupportedOperationException();
   }
@@ -272,15 +258,13 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean setCount(E element, int oldCount, int newCount) {
     throw new UnsupportedOperationException();
   }
 
-  @GwtIncompatible // not present in emulated superclass
+  // not present in emulated superclass
   @Override
   int copyIntoArray(Object[] dst, int offset) {
     for (Multiset.Entry<E> entry : entrySet()) {
@@ -309,7 +293,7 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
   @Override
   public abstract ImmutableSet<E> elementSet();
 
-  @LazyInit @CheckForNull private transient ImmutableSet<Entry<E>> entrySet;
+  @CheckForNull private transient ImmutableSet<Entry<E>> entrySet;
 
   @Override
   public ImmutableSet<Entry<E>> entrySet() {
@@ -323,7 +307,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
 
   abstract Entry<E> getEntry(int index);
 
-  @WeakOuter
   private final class EntrySet extends IndexedImmutableSet<Entry<E>> {
     @Override
     boolean isPartialView() {
@@ -358,7 +341,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
       return ImmutableMultiset.this.hashCode();
     }
 
-    @GwtIncompatible
     @Override
     Object writeReplace() {
       return new EntrySetSerializedForm<E>(ImmutableMultiset.this);
@@ -367,7 +349,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible
   static class EntrySetSerializedForm<E> implements Serializable {
     final ImmutableMultiset<E> multiset;
 
@@ -380,7 +361,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
     }
   }
 
-  @GwtIncompatible
   @Override
   abstract Object writeReplace();
 
@@ -455,7 +435,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code element} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E element) {
       return addCopies(element, 1);
@@ -468,7 +447,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E... elements) {
       super.add(elements);
@@ -486,7 +464,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @throws IllegalArgumentException if {@code occurrences} is negative, or if this operation
      *     would result in more than {@link Integer#MAX_VALUE} occurrences of the element
      */
-    @CanIgnoreReturnValue
     public Builder<E> addCopies(E element, int occurrences) {
       requireNonNull(contents); // see the comment on the field
       if (occurrences == 0) {
@@ -512,7 +489,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @throws NullPointerException if {@code element} is null
      * @throws IllegalArgumentException if {@code count} is negative
      */
-    @CanIgnoreReturnValue
     public Builder<E> setCount(E element, int count) {
       requireNonNull(contents); // see the comment on the field
       if (count == 0 && !isLinkedHash) {
@@ -541,7 +517,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterable<? extends E> elements) {
       requireNonNull(contents); // see the comment on the field
@@ -573,7 +548,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterator<? extends E> elements) {
       super.addAll(elements);
diff --git a/android/guava/src/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java b/android/guava/src/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java
index 2469a18..3eb8232 100644
--- a/android/guava/src/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java
+++ b/android/guava/src/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A dummy superclass to support GWT serialization of the element type of an {@link
@@ -36,6 +35,5 @@ import com.google.common.annotations.GwtCompatible;
  * anyway, since it doesn't require us to declare dummy methods (though occasionally constructors)
  * and make types non-final.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableMultisetGwtSerializationDependencies<E> extends ImmutableCollection<E> {}
diff --git a/android/guava/src/com/google/common/collect/ImmutableRangeMap.java b/android/guava/src/com/google/common/collect/ImmutableRangeMap.java
index 8a47796..85fcd0b 100644
--- a/android/guava/src/com/google/common/collect/ImmutableRangeMap.java
+++ b/android/guava/src/com/google/common/collect/ImmutableRangeMap.java
@@ -18,13 +18,8 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.SortedLists.KeyAbsentBehavior;
 import com.google.common.collect.SortedLists.KeyPresentBehavior;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.Serializable;
 import java.util.Collections;
 import java.util.List;
@@ -40,8 +35,7 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@GwtIncompatible // NavigableMap
+// NavigableMap
 @ElementTypesAreNonnullByDefault
 public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K, V>, Serializable {
 
@@ -89,7 +83,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    *
    * @since 14.0
    */
-  @DoNotMock
   public static final class Builder<K extends Comparable<?>, V> {
     private final List<Entry<Range<K>, V>> entries;
 
@@ -102,7 +95,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
      *
      * @throws IllegalArgumentException if {@code range} is empty
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> put(Range<K> range, V value) {
       checkNotNull(range);
       checkNotNull(value);
@@ -112,7 +104,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
     }
 
     /** Copies all associations from the specified range map into this builder. */
-    @CanIgnoreReturnValue
     public Builder<K, V> putAll(RangeMap<K, ? extends V> rangeMap) {
       for (Entry<Range<K>, ? extends V> entry : rangeMap.asMapOfRanges().entrySet()) {
         put(entry.getKey(), entry.getValue());
@@ -120,7 +111,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<K, V> combine(Builder<K, V> builder) {
       entries.addAll(builder.entries);
       return this;
@@ -214,7 +204,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void put(Range<K> range, V value) {
     throw new UnsupportedOperationException();
   }
@@ -227,7 +216,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void putCoalescing(Range<K> range, V value) {
     throw new UnsupportedOperationException();
   }
@@ -240,7 +228,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void putAll(RangeMap<K, V> rangeMap) {
     throw new UnsupportedOperationException();
   }
@@ -253,7 +240,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void clear() {
     throw new UnsupportedOperationException();
   }
@@ -266,7 +252,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void remove(Range<K> range) {
     throw new UnsupportedOperationException();
   }
diff --git a/android/guava/src/com/google/common/collect/ImmutableRangeSet.java b/android/guava/src/com/google/common/collect/ImmutableRangeSet.java
index a0eb5b5..37068a7 100644
--- a/android/guava/src/com/google/common/collect/ImmutableRangeSet.java
+++ b/android/guava/src/com/google/common/collect/ImmutableRangeSet.java
@@ -20,16 +20,10 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.SortedLists.KeyAbsentBehavior.NEXT_HIGHER;
 import static com.google.common.collect.SortedLists.KeyAbsentBehavior.NEXT_LOWER;
 import static com.google.common.collect.SortedLists.KeyPresentBehavior.ANY_PRESENT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.SortedLists.KeyAbsentBehavior;
 import com.google.common.collect.SortedLists.KeyPresentBehavior;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.io.Serializable;
 import java.util.Collections;
 import java.util.Iterator;
@@ -45,8 +39,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ImmutableRangeSet<C extends Comparable> extends AbstractRangeSet<C>
     implements Serializable {
@@ -213,7 +205,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void add(Range<C> range) {
     throw new UnsupportedOperationException();
   }
@@ -226,7 +217,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void addAll(RangeSet<C> other) {
     throw new UnsupportedOperationException();
   }
@@ -239,7 +229,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void addAll(Iterable<Range<C>> other) {
     throw new UnsupportedOperationException();
   }
@@ -252,7 +241,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void remove(Range<C> range) {
     throw new UnsupportedOperationException();
   }
@@ -265,7 +253,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void removeAll(RangeSet<C> other) {
     throw new UnsupportedOperationException();
   }
@@ -278,7 +265,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void removeAll(Iterable<Range<C>> other) {
     throw new UnsupportedOperationException();
   }
@@ -299,7 +285,7 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
     return new RegularImmutableSortedSet<>(ranges.reverse(), Range.<C>rangeLexOrdering().reverse());
   }
 
-  @LazyInit @CheckForNull private transient ImmutableRangeSet<C> complement;
+  @CheckForNull private transient ImmutableRangeSet<C> complement;
 
   private final class ComplementRanges extends ImmutableList<Range<C>> {
     // True if the "positive" range set is empty or bounded below.
@@ -582,7 +568,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
     }
 
     @Override
-    @GwtIncompatible("NavigableSet")
     public UnmodifiableIterator<C> descendingIterator() {
       return new AbstractIterator<C>() {
         final Iterator<Range<C>> rangeItr = ranges.reverse().iterator();
@@ -731,7 +716,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
      *
      * @throws IllegalArgumentException if {@code range} is empty
      */
-    @CanIgnoreReturnValue
     public Builder<C> add(Range<C> range) {
       checkArgument(!range.isEmpty(), "range must not be empty, but was %s", range);
       ranges.add(range);
@@ -743,7 +727,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
      * and will be merged, but overlapping ranges will cause an exception when {@link #build()} is
      * called.
      */
-    @CanIgnoreReturnValue
     public Builder<C> addAll(RangeSet<C> ranges) {
       return addAll(ranges.asRanges());
     }
@@ -755,7 +738,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
      * @throws IllegalArgumentException if any inserted ranges are empty
      * @since 21.0
      */
-    @CanIgnoreReturnValue
     public Builder<C> addAll(Iterable<Range<C>> ranges) {
       for (Range<C> range : ranges) {
         add(range);
@@ -763,7 +745,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<C> combine(Builder<C> builder) {
       addAll(builder.ranges);
       return this;
diff --git a/android/guava/src/com/google/common/collect/ImmutableSet.java b/android/guava/src/com/google/common/collect/ImmutableSet.java
index 1ff54e2..f9ece35 100644
--- a/android/guava/src/com/google/common/collect/ImmutableSet.java
+++ b/android/guava/src/com/google/common/collect/ImmutableSet.java
@@ -20,15 +20,8 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.ObjectArrays.checkElementNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Collection;
@@ -37,7 +30,6 @@ import java.util.Iterator;
 import java.util.Set;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Set} whose contents will never change, with many other important properties detailed at
@@ -45,7 +37,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements Set<E> {
@@ -188,7 +179,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
       // Resize the table when the array includes too many duplicates.
       return construct(uniques, elements);
     } else {
-      @Nullable
       Object[] uniqueElements =
           shouldTrim(uniques, elements.length) ? Arrays.copyOf(elements, uniques) : elements;
       return new RegularImmutableSet<E>(uniqueElements, hashCode, table, mask, uniques);
@@ -213,7 +203,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
    * with linear probing in its implementation. The returned size is the smallest power of two that
    * can hold setSize elements with the desired load factor. Always returns at least setSize + 2.
    */
-  @VisibleForTesting
   static int chooseTableSize(int setSize) {
     setSize = Math.max(setSize, 2);
     // Correct the size for open addressing to match desired load factor.
@@ -346,7 +335,7 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
   @Override
   public abstract UnmodifiableIterator<E> iterator();
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableList<E> asList;
+  @CheckForNull private transient ImmutableList<E> asList;
 
   @Override
   public ImmutableList<E> asList() {
@@ -404,7 +393,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
    *
    * @since 23.1
    */
-  @Beta
   public static <E> Builder<E> builderWithExpectedSize(int expectedSize) {
     checkNonnegative(expectedSize, "expectedSize");
     return new Builder<E>(expectedSize);
@@ -429,7 +417,7 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
    * @since 2.0
    */
   public static class Builder<E> extends ImmutableCollection.ArrayBasedBuilder<E> {
-    @VisibleForTesting @CheckForNull @Nullable Object[] hashTable;
+    @CheckForNull Object[] hashTable;
     private int hashCode;
 
     /**
@@ -442,7 +430,7 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
 
     Builder(int capacity) {
       super(capacity);
-      this.hashTable = new @Nullable Object[chooseTableSize(capacity)];
+      this.hashTable = new Object[chooseTableSize(capacity)];
     }
 
     /**
@@ -454,7 +442,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code element} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E element) {
       checkNotNull(element);
@@ -477,7 +464,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
     @Override
-    @CanIgnoreReturnValue
     public Builder<E> add(E... elements) {
       if (hashTable != null) {
         for (E e : elements) {
@@ -515,7 +501,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterable<? extends E> elements) {
       checkNotNull(elements);
@@ -537,7 +522,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterator<? extends E> elements) {
       checkNotNull(elements);
@@ -547,7 +531,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
       return this;
     }
 
-    @CanIgnoreReturnValue
     @SuppressWarnings("unchecked") // ArrayBasedBuilder stores its elements as Object.
     Builder<E> combine(Builder<E> other) {
       if (hashTable != null) {
@@ -579,7 +562,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
         default:
           ImmutableSet<E> result;
           if (hashTable != null && chooseTableSize(size) == hashTable.length) {
-            @Nullable
             Object[] uniqueElements =
                 shouldTrim(size, contents.length) ? Arrays.copyOf(contents, size) : contents;
             result =
diff --git a/android/guava/src/com/google/common/collect/ImmutableSetMultimap.java b/android/guava/src/com/google/common/collect/ImmutableSetMultimap.java
index 18cb2ef..a908012 100644
--- a/android/guava/src/com/google/common/collect/ImmutableSetMultimap.java
+++ b/android/guava/src/com/google/common/collect/ImmutableSetMultimap.java
@@ -18,15 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.MoreObjects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.Weak;
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
@@ -52,7 +44,6 @@ import javax.annotation.CheckForNull;
  * @author Mike Ward
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
 public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
     implements SetMultimap<K, V> {
@@ -168,7 +159,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
     }
 
     /** Adds a key-value mapping to the built multimap if it is not already present. */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(K key, V value) {
       super.put(key, value);
@@ -180,7 +170,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 11.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       super.put(entry);
@@ -192,28 +181,23 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       super.putAll(entries);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(K key, Iterable<? extends V> values) {
       super.putAll(key, values);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(K key, V... values) {
       return putAll(key, Arrays.asList(values));
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(Multimap<? extends K, ? extends V> multimap) {
       for (Entry<? extends K, ? extends Collection<? extends V>> entry :
@@ -223,7 +207,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     Builder<K, V> combine(ImmutableMultimap.Builder<K, V> other) {
       super.combine(other);
@@ -235,7 +218,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 8.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> orderKeysBy(Comparator<? super K> keyComparator) {
       super.orderKeysBy(keyComparator);
@@ -253,7 +235,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
      * @since 8.0
      */
     // TODO: Make serialization behavior consistent.
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> orderValuesBy(Comparator<? super V> valueComparator) {
       super.orderValuesBy(valueComparator);
@@ -316,7 +297,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws NullPointerException if any key, value, or entry is null
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableSetMultimap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     return new Builder<K, V>().putAll(entries).build();
@@ -374,7 +354,7 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
     return MoreObjects.firstNonNull(set, emptySet);
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableSetMultimap<V, K> inverse;
+  @CheckForNull private transient ImmutableSetMultimap<V, K> inverse;
 
   /**
    * {@inheritDoc}
@@ -405,10 +385,8 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final ImmutableSet<V> removeAll(@CheckForNull Object key) {
     throw new UnsupportedOperationException();
   }
@@ -419,15 +397,13 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final ImmutableSet<V> replaceValues(K key, Iterable<? extends V> values) {
     throw new UnsupportedOperationException();
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableSet<Entry<K, V>> entries;
+  @CheckForNull private transient ImmutableSet<Entry<K, V>> entries;
 
   /**
    * Returns an immutable collection of all key-value pairs in the multimap. Its iterator traverses
@@ -440,7 +416,7 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
   }
 
   private static final class EntrySet<K, V> extends ImmutableSet<Entry<K, V>> {
-    @Weak private final transient ImmutableSetMultimap<K, V> multimap;
+    private final transient ImmutableSetMultimap<K, V> multimap;
 
     EntrySet(ImmutableSetMultimap<K, V> multimap) {
       this.multimap = multimap;
@@ -495,7 +471,7 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
    * @serialData number of distinct keys, and then for each distinct key: the key, the number of
    *     values for that key, and the key's values
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(valueComparator());
@@ -509,13 +485,13 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
         : null;
   }
 
-  @GwtIncompatible // java serialization
+  // java serialization
   private static final class SetFieldSettersHolder {
     static final Serialization.FieldSetter<ImmutableSetMultimap> EMPTY_SET_FIELD_SETTER =
         Serialization.getFieldSetter(ImmutableSetMultimap.class, "emptySet");
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   // Serialization type safety is at the caller's mercy.
   @SuppressWarnings("unchecked")
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
@@ -559,6 +535,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
     SetFieldSettersHolder.EMPTY_SET_FIELD_SETTER.set(this, emptySet(valueComparator));
   }
 
-  @GwtIncompatible // not needed in emulated source.
+  // not needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/ImmutableSortedMap.java b/android/guava/src/com/google/common/collect/ImmutableSortedMap.java
index ac5f0bc..081803f 100644
--- a/android/guava/src/com/google/common/collect/ImmutableSortedMap.java
+++ b/android/guava/src/com/google/common/collect/ImmutableSortedMap.java
@@ -20,12 +20,7 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
 import static com.google.common.collect.Maps.keyOrNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.AbstractMap;
 import java.util.Arrays;
 import java.util.Comparator;
@@ -34,7 +29,6 @@ import java.util.NavigableMap;
 import java.util.SortedMap;
 import java.util.TreeMap;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link NavigableMap} whose contents will never change, with many other important properties
@@ -53,7 +47,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0 (implements {@code NavigableMap} since 12.0)
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxverideShim<K, V>
     implements NavigableMap<K, V> {
@@ -356,7 +349,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
    * @throws IllegalArgumentException if any two keys are equal according to the comparator
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableSortedMap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     // Hack around K not being a subtype of Comparable.
@@ -374,7 +366,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
    * @throws IllegalArgumentException if any two keys are equal according to the comparator
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableSortedMap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries,
       Comparator<? super K> comparator) {
@@ -572,8 +563,8 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
    * @since 2.0
    */
   public static class Builder<K, V> extends ImmutableMap.Builder<K, V> {
-    private transient @Nullable Object[] keys;
-    private transient @Nullable Object[] values;
+    private transient Object[] keys;
+    private transient Object[] values;
     private final Comparator<? super K> comparator;
 
     /**
@@ -587,8 +578,8 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
 
     private Builder(Comparator<? super K> comparator, int initialCapacity) {
       this.comparator = checkNotNull(comparator);
-      this.keys = new @Nullable Object[initialCapacity];
-      this.values = new @Nullable Object[initialCapacity];
+      this.keys = new Object[initialCapacity];
+      this.values = new Object[initialCapacity];
     }
 
     private void ensureCapacity(int minCapacity) {
@@ -604,7 +595,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
      * comparator (which might be the keys' natural order), are not allowed, and will cause {@link
      * #build} to fail.
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(K key, V value) {
       ensureCapacity(size + 1);
@@ -622,7 +612,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
      *
      * @since 11.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       super.put(entry);
@@ -636,7 +625,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
      *
      * @throws NullPointerException if any key or value in {@code map} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(Map<? extends K, ? extends V> map) {
       super.putAll(map);
@@ -651,8 +639,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
      * @throws NullPointerException if any key, value, or entry is null
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       super.putAll(entries);
@@ -665,16 +651,12 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
      * @since 19.0
      * @deprecated Unsupported by ImmutableSortedMap.Builder.
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     @Deprecated
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final Builder<K, V> orderEntriesByValue(Comparator<? super V> valueComparator) {
       throw new UnsupportedOperationException("Not available on ImmutableSortedMap.Builder");
     }
 
-    @CanIgnoreReturnValue
     Builder<K, V> combine(ImmutableSortedMap.Builder<K, V> other) {
       ensureCapacity(size + other.size);
       System.arraycopy(other.keys, 0, this.keys, this.size, other.size);
@@ -1044,10 +1026,8 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final Entry<K, V> pollFirstEntry() {
     throw new UnsupportedOperationException();
@@ -1059,10 +1039,8 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final Entry<K, V> pollLastEntry() {
     throw new UnsupportedOperationException();
diff --git a/android/guava/src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java b/android/guava/src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java
index 9b40f55..dced0cf 100644
--- a/android/guava/src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java
+++ b/android/guava/src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotCall;
 
 /**
  * "Overrides" the {@link ImmutableMap} static methods that lack {@link ImmutableSortedMap}
@@ -26,7 +24,6 @@ import com.google.errorprone.annotations.DoNotCall;
  *
  * @author Chris Povirk
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V> {
   /**
@@ -37,7 +34,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link ImmutableSortedMap#naturalOrder}, which offers better type-safety.
    */
-  @DoNotCall("Use naturalOrder")
   @Deprecated
   public static <K, V> ImmutableSortedMap.Builder<K, V> builder() {
     throw new UnsupportedOperationException();
@@ -49,7 +45,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Not supported for ImmutableSortedMap.
    */
-  @DoNotCall("Use naturalOrder (which does not accept an expected size)")
   @Deprecated
   public static <K, V> ImmutableSortedMap.Builder<K, V> builderWithExpectedSize(int expectedSize) {
     throw new UnsupportedOperationException();
@@ -64,7 +59,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @deprecated <b>Pass a key of type {@code Comparable} to use {@link
    *     ImmutableSortedMap#of(Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass a key of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(K k1, V v1) {
     throw new UnsupportedOperationException();
@@ -79,7 +73,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @deprecated <b>Pass keys of type {@code Comparable} to use {@link
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(K k1, V v1, K k2, V v2) {
     throw new UnsupportedOperationException();
@@ -94,7 +87,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @deprecated <b>Pass keys of type {@code Comparable} to use {@link
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3) {
     throw new UnsupportedOperationException();
@@ -110,7 +102,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) {
     throw new UnsupportedOperationException();
@@ -126,7 +117,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) {
@@ -143,7 +133,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6) {
@@ -160,7 +149,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7) {
@@ -177,7 +165,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1,
@@ -209,7 +196,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1,
@@ -243,7 +229,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1,
@@ -274,7 +259,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *
    * @deprecated Use {@code ImmutableSortedMap.copyOf(ImmutableMap.ofEntries(...))}.
    */
-  @DoNotCall("ImmutableSortedMap.ofEntries not currently available; use ImmutableSortedMap.copyOf")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> ofEntries(
       Entry<? extends K, ? extends V>... entries) {
diff --git a/android/guava/src/com/google/common/collect/ImmutableSortedMultiset.java b/android/guava/src/com/google/common/collect/ImmutableSortedMultiset.java
index 5a7529e..add7ea0 100644
--- a/android/guava/src/com/google/common/collect/ImmutableSortedMultiset.java
+++ b/android/guava/src/com/google/common/collect/ImmutableSortedMultiset.java
@@ -17,12 +17,7 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.math.IntMath;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Collection;
@@ -48,7 +43,7 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 12.0
  */
-@GwtIncompatible // hasn't been tested yet
+// hasn't been tested yet
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultisetFauxverideShim<E>
     implements SortedMultiset<E> {
@@ -283,7 +278,7 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
   @Override
   public abstract ImmutableSortedSet<E> elementSet();
 
-  @LazyInit @CheckForNull transient ImmutableSortedMultiset<E> descendingMultiset;
+  @CheckForNull transient ImmutableSortedMultiset<E> descendingMultiset;
 
   @Override
   public ImmutableSortedMultiset<E> descendingMultiset() {
@@ -305,10 +300,8 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final Entry<E> pollFirstEntry() {
     throw new UnsupportedOperationException();
@@ -322,10 +315,8 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final Entry<E> pollLastEntry() {
     throw new UnsupportedOperationException();
@@ -414,7 +405,7 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
 
     private final Comparator<? super E> comparator;
 
-    @VisibleForTesting E[] elements;
+    E[] elements;
     private int[] counts;
 
     /*
@@ -492,7 +483,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code element} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E element) {
       return addCopies(element, 1);
@@ -505,7 +495,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E... elements) {
       for (E element : elements) {
@@ -525,7 +514,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @throws IllegalArgumentException if {@code occurrences} is negative, or if this operation
      *     would result in more than {@link Integer#MAX_VALUE} occurrences of the element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addCopies(E element, int occurrences) {
       checkNotNull(element);
@@ -550,7 +538,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @throws NullPointerException if {@code element} is null
      * @throws IllegalArgumentException if {@code count} is negative
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> setCount(E element, int count) {
       checkNotNull(element);
@@ -569,7 +556,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterable<? extends E> elements) {
       if (elements instanceof Multiset) {
@@ -591,7 +577,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterator<? extends E> elements) {
       while (elements.hasNext()) {
diff --git a/android/guava/src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java b/android/guava/src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java
index c8a7ed7..2002e50 100644
--- a/android/guava/src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java
+++ b/android/guava/src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java
@@ -14,8 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotCall;
 
 /**
  * "Overrides" the {@link ImmutableMultiset} static methods that lack {@link
@@ -34,7 +32,6 @@ import com.google.errorprone.annotations.DoNotCall;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultiset<E> {
   /**
@@ -45,7 +42,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link ImmutableSortedMultiset#naturalOrder}, which offers better type-safety.
    */
-  @DoNotCall("Use naturalOrder.")
   @Deprecated
   public static <E> ImmutableSortedMultiset.Builder<E> builder() {
     throw new UnsupportedOperationException();
@@ -60,7 +56,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated <b>Pass a parameter of type {@code Comparable} to use {@link
    *     ImmutableSortedMultiset#of(Comparable)}.</b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(E element) {
     throw new UnsupportedOperationException();
@@ -75,7 +70,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedMultiset#of(Comparable, Comparable)}.</b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(E e1, E e2) {
     throw new UnsupportedOperationException();
@@ -90,7 +84,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedMultiset#of(Comparable, Comparable, Comparable)}.</b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(E e1, E e2, E e3) {
     throw new UnsupportedOperationException();
@@ -105,7 +98,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedMultiset#of(Comparable, Comparable, Comparable, Comparable)}. </b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(E e1, E e2, E e3, E e4) {
     throw new UnsupportedOperationException();
@@ -121,7 +113,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    *     ImmutableSortedMultiset#of(Comparable, Comparable, Comparable, Comparable, Comparable)} .
    *     </b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(E e1, E e2, E e3, E e4, E e5) {
     throw new UnsupportedOperationException();
@@ -137,7 +128,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    *     ImmutableSortedMultiset#of(Comparable, Comparable, Comparable, Comparable, Comparable,
    *     Comparable, Comparable...)} . </b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(
       E e1, E e2, E e3, E e4, E e5, E e6, E... remaining) {
@@ -153,7 +143,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated <b>Pass parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedMultiset#copyOf(Comparable[])}.</b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> copyOf(E[] elements) {
     throw new UnsupportedOperationException();
diff --git a/android/guava/src/com/google/common/collect/ImmutableSortedSet.java b/android/guava/src/com/google/common/collect/ImmutableSortedSet.java
index fabf599..41fc291 100644
--- a/android/guava/src/com/google/common/collect/ImmutableSortedSet.java
+++ b/android/guava/src/com/google/common/collect/ImmutableSortedSet.java
@@ -20,11 +20,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.ObjectArrays.checkElementsNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
 import java.io.Serializable;
@@ -36,7 +31,6 @@ import java.util.Iterator;
 import java.util.NavigableSet;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link NavigableSet} whose contents will never change, with many other important properties
@@ -56,7 +50,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 2.0 (implements {@code NavigableSet} since 12.0)
  */
 // TODO(benyu): benchmark and optimize all creation paths, which are a mess now
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxverideShim<E>
@@ -435,7 +428,6 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code element} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E element) {
       super.add(element);
@@ -450,7 +442,6 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E... elements) {
       super.add(elements);
@@ -465,7 +456,6 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterable<? extends E> elements) {
       super.addAll(elements);
@@ -480,14 +470,12 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterator<? extends E> elements) {
       super.addAll(elements);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     Builder<E> combine(ImmutableSet.Builder<E> builder) {
       super.combine(builder);
@@ -518,7 +506,7 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
     // compare a and b, we should get a CCE or NPE on the subsequent line. Only methods
     // that are spec'd to throw CCE and NPE should call this.
     @SuppressWarnings({"unchecked", "nullness"})
-    Comparator<@Nullable Object> unsafeComparator = (Comparator<@Nullable Object>) comparator;
+    Comparator<Object> unsafeComparator = (Comparator<@Nullable Object>) comparator;
     return unsafeComparator.compare(a, b);
   }
 
@@ -580,7 +568,7 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
   }
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public ImmutableSortedSet<E> subSet(
       E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) {
@@ -623,7 +611,7 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
   abstract ImmutableSortedSet<E> tailSetImpl(E fromElement, boolean inclusive);
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   @CheckForNull
   public E lower(E e) {
@@ -645,7 +633,7 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
   }
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   @CheckForNull
   public E higher(E e) {
@@ -669,11 +657,9 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final E pollFirst() {
     throw new UnsupportedOperationException();
@@ -686,23 +672,20 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final E pollLast() {
     throw new UnsupportedOperationException();
   }
 
-  @GwtIncompatible // NavigableSet
-  @LazyInit
+  // NavigableSet
   @CheckForNull
   transient ImmutableSortedSet<E> descendingSet;
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public ImmutableSortedSet<E> descendingSet() {
     // racy single-check idiom
@@ -717,11 +700,11 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
   // Most classes should implement this as new DescendingImmutableSortedSet<E>(this),
   // but we push down that implementation because ProGuard can't eliminate it even when it's always
   // overridden.
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   abstract ImmutableSortedSet<E> createDescendingSet();
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public abstract UnmodifiableIterator<E> descendingIterator();
 
diff --git a/android/guava/src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java b/android/guava/src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java
index ca19d79..d674a68 100644
--- a/android/guava/src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java
+++ b/android/guava/src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotCall;
 
 /**
  * "Overrides" the {@link ImmutableSet} static methods that lack {@link ImmutableSortedSet}
@@ -36,7 +34,6 @@ import com.google.errorprone.annotations.DoNotCall;
  *
  * @author Chris Povirk
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet<E> {
   /**
@@ -47,7 +44,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet<E> {
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link ImmutableSortedSet#naturalOrder}, which offers better type-safety.
    */
-  @DoNotCall("Use naturalOrder")
   @Deprecated
   public static <E> ImmutableSortedSet.Builder<E> builder() {
     throw new UnsupportedOperationException();
@@ -60,7 +56,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet<E> {
    * @throws UnsupportedOperationException always
    * @deprecated Not supported by ImmutableSortedSet.
    */
-  @DoNotCall("Use naturalOrder (which does not accept an expected size)")
   @Deprecated
   public static <E> ImmutableSortedSet.Builder<E> builderWithExpectedSize(int expectedSize) {
     throw new UnsupportedOperationException();
@@ -75,7 +70,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet<E> {
    * @deprecated <b>Pass a parameter of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#of(Comparable)}.</b>
    */
-  @DoNotCall("Pass a parameter of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E element) {
     throw new UnsupportedOperationException();
@@ -90,7 +84,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet<E> {
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#of(Comparable, Comparable)}.</b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E e1, E e2) {
     throw new UnsupportedOperationException();
@@ -105,7 +98,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet<E> {
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#of(Comparable, Comparable, Comparable)}.</b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E e1, E e2, E e3) {
     throw new UnsupportedOperationException();
@@ -120,7 +112,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet<E> {
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#of(Comparable, Comparable, Comparable, Comparable)}. </b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E e1, E e2, E e3, E e4) {
     throw new UnsupportedOperationException();
@@ -135,7 +126,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet<E> {
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#of( Comparable, Comparable, Comparable, Comparable, Comparable)}. </b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E e1, E e2, E e3, E e4, E e5) {
     throw new UnsupportedOperationException();
@@ -151,7 +141,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet<E> {
    *     ImmutableSortedSet#of(Comparable, Comparable, Comparable, Comparable, Comparable,
    *     Comparable, Comparable...)}. </b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E... remaining) {
     throw new UnsupportedOperationException();
@@ -166,7 +155,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet<E> {
    * @deprecated <b>Pass parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#copyOf(Comparable[])}.</b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> copyOf(E[] elements) {
     throw new UnsupportedOperationException();
diff --git a/android/guava/src/com/google/common/collect/ImmutableTable.java b/android/guava/src/com/google/common/collect/ImmutableTable.java
index 9dcb50c..85a4424 100644
--- a/android/guava/src/com/google/common/collect/ImmutableTable.java
+++ b/android/guava/src/com/google/common/collect/ImmutableTable.java
@@ -18,11 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.MoreObjects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.Serializable;
 import java.util.Comparator;
 import java.util.Iterator;
@@ -40,7 +36,6 @@ import javax.annotation.CheckForNull;
  * @author Gregory Kick
  * @since 11.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
     implements Serializable {
@@ -138,7 +133,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    *
    * @since 11.0
    */
-  @DoNotMock
   public static final class Builder<R, C, V> {
     private final List<Cell<R, C, V>> cells = Lists.newArrayList();
     @CheckForNull private Comparator<? super R> rowComparator;
@@ -151,14 +145,12 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
     public Builder() {}
 
     /** Specifies the ordering of the generated table's rows. */
-    @CanIgnoreReturnValue
     public Builder<R, C, V> orderRowsBy(Comparator<? super R> rowComparator) {
       this.rowComparator = checkNotNull(rowComparator, "rowComparator");
       return this;
     }
 
     /** Specifies the ordering of the generated table's columns. */
-    @CanIgnoreReturnValue
     public Builder<R, C, V> orderColumnsBy(Comparator<? super C> columnComparator) {
       this.columnComparator = checkNotNull(columnComparator, "columnComparator");
       return this;
@@ -168,7 +160,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
      * Associates the ({@code rowKey}, {@code columnKey}) pair with {@code value} in the built
      * table. Duplicate key pairs are not allowed and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public Builder<R, C, V> put(R rowKey, C columnKey, V value) {
       cells.add(cellOf(rowKey, columnKey, value));
       return this;
@@ -178,7 +169,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
      * Adds the given {@code cell} to the table, making it immutable if necessary. Duplicate key
      * pairs are not allowed and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public Builder<R, C, V> put(Cell<? extends R, ? extends C, ? extends V> cell) {
       if (cell instanceof Tables.ImmutableCell) {
         checkNotNull(cell.getRowKey(), "row");
@@ -199,7 +189,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
      *
      * @throws NullPointerException if any key or value in {@code table} is null
      */
-    @CanIgnoreReturnValue
     public Builder<R, C, V> putAll(Table<? extends R, ? extends C, ? extends V> table) {
       for (Cell<? extends R, ? extends C, ? extends V> cell : table.cellSet()) {
         put(cell);
@@ -207,7 +196,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<R, C, V> combine(Builder<R, C, V> other) {
       this.cells.addAll(other.cells);
       return this;
@@ -344,7 +332,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void clear() {
     throw new UnsupportedOperationException();
   }
@@ -355,10 +342,8 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final V put(R rowKey, C columnKey, V value) {
     throw new UnsupportedOperationException();
@@ -372,7 +357,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void putAll(Table<? extends R, ? extends C, ? extends V> table) {
     throw new UnsupportedOperationException();
   }
@@ -383,10 +367,8 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final V remove(@CheckForNull Object rowKey, @CheckForNull Object columnKey) {
     throw new UnsupportedOperationException();
diff --git a/android/guava/src/com/google/common/collect/IndexedImmutableSet.java b/android/guava/src/com/google/common/collect/IndexedImmutableSet.java
index 25aae94..826b19e 100644
--- a/android/guava/src/com/google/common/collect/IndexedImmutableSet.java
+++ b/android/guava/src/com/google/common/collect/IndexedImmutableSet.java
@@ -16,11 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class IndexedImmutableSet<E> extends ImmutableSet<E> {
   abstract E get(int index);
@@ -31,7 +27,6 @@ abstract class IndexedImmutableSet<E> extends ImmutableSet<E> {
   }
 
   @Override
-  @GwtIncompatible
   int copyIntoArray(@Nullable Object[] dst, int offset) {
     return asList().copyIntoArray(dst, offset);
   }
diff --git a/android/guava/src/com/google/common/collect/Interner.java b/android/guava/src/com/google/common/collect/Interner.java
index bfc2035..969fd64 100644
--- a/android/guava/src/com/google/common/collect/Interner.java
+++ b/android/guava/src/com/google/common/collect/Interner.java
@@ -16,9 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * Provides similar behavior to {@link String#intern} for any immutable type. Common implementations
@@ -31,8 +28,6 @@ import com.google.errorprone.annotations.DoNotMock;
  * @author Kevin Bourrillion
  * @since 3.0
  */
-@DoNotMock("Use Interners.new*Interner")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface Interner<E> {
   /**
@@ -47,6 +42,6 @@ public interface Interner<E> {
    *
    * @throws NullPointerException if {@code sample} is null
    */
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   E intern(E sample);
 }
diff --git a/android/guava/src/com/google/common/collect/Interners.java b/android/guava/src/com/google/common/collect/Interners.java
index a3ae374..1e5bec4 100644
--- a/android/guava/src/com/google/common/collect/Interners.java
+++ b/android/guava/src/com/google/common/collect/Interners.java
@@ -16,8 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
 import com.google.common.collect.MapMaker.Dummy;
@@ -30,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 3.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Interners {
   private Interners() {}
@@ -61,7 +58,6 @@ public final class Interners {
      *
      * @see Interners#newWeakInterner()
      */
-    @GwtIncompatible("java.lang.ref.WeakReference")
     public InternerBuilder weak() {
       this.strong = false;
       return this;
@@ -105,15 +101,13 @@ public final class Interners {
    * likely does not perform as well as {@link #newStrongInterner}, but is the best alternative when
    * the memory usage of that implementation is unacceptable.
    */
-  @GwtIncompatible("java.lang.ref.WeakReference")
   public static <E> Interner<E> newWeakInterner() {
     return newBuilder().weak().build();
   }
 
-  @VisibleForTesting
   static final class InternerImpl<E> implements Interner<E> {
     // MapMaker is our friend, we know about this type
-    @VisibleForTesting final MapMakerInternalMap<E, Dummy, ?, ?> map;
+    final MapMakerInternalMap<E, Dummy, ?, ?> map;
 
     private InternerImpl(MapMaker mapMaker) {
       this.map =
diff --git a/android/guava/src/com/google/common/collect/Iterables.java b/android/guava/src/com/google/common/collect/Iterables.java
index 2b4edb2..8b668c9 100644
--- a/android/guava/src/com/google/common/collect/Iterables.java
+++ b/android/guava/src/com/google/common/collect/Iterables.java
@@ -20,14 +20,10 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.Iterator;
@@ -37,7 +33,6 @@ import java.util.Queue;
 import java.util.RandomAccess;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An assortment of mainly legacy static utility methods that operate on or return objects of type
@@ -61,13 +56,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Iterables {
   private Iterables() {}
 
   /** Returns an unmodifiable view of {@code iterable}. */
-  public static <T extends @Nullable Object> Iterable<T> unmodifiableIterable(
+  public static <T extends Object> Iterable<T> unmodifiableIterable(
       final Iterable<? extends T> iterable) {
     checkNotNull(iterable);
     if (iterable instanceof UnmodifiableIterable || iterable instanceof ImmutableCollection) {
@@ -89,7 +83,7 @@ public final class Iterables {
     return checkNotNull(iterable);
   }
 
-  private static final class UnmodifiableIterable<T extends @Nullable Object>
+  private static final class UnmodifiableIterable<T extends Object>
       extends FluentIterable<T> {
     private final Iterable<? extends T> iterable;
 
@@ -142,7 +136,6 @@ public final class Iterables {
    * @param elementsToRemove the elements to remove
    * @return {@code true} if any element was removed from {@code iterable}
    */
-  @CanIgnoreReturnValue
   public static boolean removeAll(Iterable<?> removeFrom, Collection<?> elementsToRemove) {
     return (removeFrom instanceof Collection)
         ? ((Collection<?>) removeFrom).removeAll(checkNotNull(elementsToRemove))
@@ -159,7 +152,6 @@ public final class Iterables {
    * @param elementsToRetain the elements to retain
    * @return {@code true} if any element was removed from {@code iterable}
    */
-  @CanIgnoreReturnValue
   public static boolean retainAll(Iterable<?> removeFrom, Collection<?> elementsToRetain) {
     return (removeFrom instanceof Collection)
         ? ((Collection<?>) removeFrom).retainAll(checkNotNull(elementsToRetain))
@@ -179,8 +171,7 @@ public final class Iterables {
    * @throws UnsupportedOperationException if the iterable does not support {@code remove()}.
    * @since 2.0
    */
-  @CanIgnoreReturnValue
-  public static <T extends @Nullable Object> boolean removeIf(
+  public static <T extends Object> boolean removeIf(
       Iterable<T> removeFrom, Predicate<? super T> predicate) {
     if (removeFrom instanceof RandomAccess && removeFrom instanceof List) {
       return removeIfFromRandomAccessList((List<T>) removeFrom, checkNotNull(predicate));
@@ -188,7 +179,7 @@ public final class Iterables {
     return Iterators.removeIf(removeFrom.iterator(), predicate);
   }
 
-  private static <T extends @Nullable Object> boolean removeIfFromRandomAccessList(
+  private static <T extends Object> boolean removeIfFromRandomAccessList(
       List<T> list, Predicate<? super T> predicate) {
     // Note: Not all random access lists support set(). Additionally, it's possible
     // for a list to reject setting an element, such as when the list does not permit
@@ -220,7 +211,7 @@ public final class Iterables {
     return from != to;
   }
 
-  private static <T extends @Nullable Object> void slowRemoveIfForRemainingElements(
+  private static <T extends Object> void slowRemoveIfForRemainingElements(
       List<T> list, Predicate<? super T> predicate, int to, int from) {
     // Here we know that:
     // * (to < from) and that both are valid indices.
@@ -245,7 +236,7 @@ public final class Iterables {
 
   /** Removes and returns the first matching element, or returns {@code null} if there is none. */
   @CheckForNull
-  static <T extends @Nullable Object> T removeFirstMatching(
+  static <T extends Object> T removeFirstMatching(
       Iterable<T> removeFrom, Predicate<? super T> predicate) {
     checkNotNull(predicate);
     Iterator<T> iterator = removeFrom.iterator();
@@ -297,7 +288,7 @@ public final class Iterables {
    * @throws IllegalArgumentException if the iterable contains multiple elements
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getOnlyElement(Iterable<T> iterable) {
+  public static <T extends Object> T getOnlyElement(Iterable<T> iterable) {
     return Iterators.getOnlyElement(iterable.iterator());
   }
 
@@ -311,7 +302,7 @@ public final class Iterables {
    * @throws IllegalArgumentException if the iterator contains multiple elements
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getOnlyElement(
+  public static <T extends Object> T getOnlyElement(
       Iterable<? extends T> iterable, @ParametricNullness T defaultValue) {
     return Iterators.getOnlyElement(iterable.iterator(), defaultValue);
   }
@@ -323,17 +314,17 @@ public final class Iterables {
    * @param type the type of the elements
    * @return a newly-allocated array into which all the elements of the iterable have been copied
    */
-  @GwtIncompatible // Array.newInstance(Class, int)
+  // Array.newInstance(Class, int)
   /*
    * If we could express Class<@Nonnull T>, we could generalize the type parameter to <T extends
    * @Nullable Object>, and then we could accept an Iterable<? extends T> and return a plain T[]
    * instead of a @Nullable T[].
    */
-  public static <T> @Nullable T[] toArray(Iterable<? extends @Nullable T> iterable, Class<T> type) {
+  public static <T> T[] toArray(Iterable<? extends @Nullable T> iterable, Class<T> type) {
     return toArray(iterable, ObjectArrays.newArray(type, 0));
   }
 
-  static <T extends @Nullable Object> T[] toArray(Iterable<? extends T> iterable, T[] array) {
+  static <T extends Object> T[] toArray(Iterable<? extends T> iterable, T[] array) {
     Collection<? extends T> collection = castOrCopyToCollection(iterable);
     return collection.toArray(array);
   }
@@ -344,7 +335,7 @@ public final class Iterables {
    * @param iterable the iterable to copy
    * @return a newly-allocated array into which all the elements of the iterable have been copied
    */
-  static @Nullable Object[] toArray(Iterable<?> iterable) {
+  static Object[] toArray(Iterable<?> iterable) {
     return castOrCopyToCollection(iterable).toArray();
   }
 
@@ -353,7 +344,7 @@ public final class Iterables {
    * returned. Otherwise, an {@link java.util.ArrayList} is created with the contents of the
    * iterable in the same iteration order.
    */
-  private static <E extends @Nullable Object> Collection<E> castOrCopyToCollection(
+  private static <E extends Object> Collection<E> castOrCopyToCollection(
       Iterable<E> iterable) {
     return (iterable instanceof Collection)
         ? (Collection<E>) iterable
@@ -365,8 +356,7 @@ public final class Iterables {
    *
    * @return {@code true} if {@code collection} was modified as a result of this operation.
    */
-  @CanIgnoreReturnValue
-  public static <T extends @Nullable Object> boolean addAll(
+  public static <T extends Object> boolean addAll(
       Collection<T> addTo, Iterable<? extends T> elementsToAdd) {
     if (elementsToAdd instanceof Collection) {
       Collection<? extends T> c = (Collection<? extends T>) elementsToAdd;
@@ -413,7 +403,7 @@ public final class Iterables {
    * <p><b>Java 8 users:</b> The {@code Stream} equivalent of this method is {@code
    * Stream.generate(() -> iterable).flatMap(Streams::stream)}.
    */
-  public static <T extends @Nullable Object> Iterable<T> cycle(final Iterable<T> iterable) {
+  public static <T extends Object> Iterable<T> cycle(final Iterable<T> iterable) {
     checkNotNull(iterable);
     return new FluentIterable<T>() {
       @Override
@@ -449,7 +439,7 @@ public final class Iterables {
    * and use {@code Stream.generate(() -> collection).flatMap(Collection::stream)}.
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> Iterable<T> cycle(T... elements) {
+  public static <T extends Object> Iterable<T> cycle(T... elements) {
     return cycle(Lists.newArrayList(elements));
   }
 
@@ -464,7 +454,7 @@ public final class Iterables {
    * <p><b>Java 8 users:</b> The {@code Stream} equivalent of this method is {@code Stream.concat(a,
    * b)}.
    */
-  public static <T extends @Nullable Object> Iterable<T> concat(
+  public static <T extends Object> Iterable<T> concat(
       Iterable<? extends T> a, Iterable<? extends T> b) {
     return FluentIterable.concat(a, b);
   }
@@ -480,7 +470,7 @@ public final class Iterables {
    * <p><b>Java 8 users:</b> The {@code Stream} equivalent of this method is {@code
    * Streams.concat(a, b, c)}.
    */
-  public static <T extends @Nullable Object> Iterable<T> concat(
+  public static <T extends Object> Iterable<T> concat(
       Iterable<? extends T> a, Iterable<? extends T> b, Iterable<? extends T> c) {
     return FluentIterable.concat(a, b, c);
   }
@@ -497,7 +487,7 @@ public final class Iterables {
    * <p><b>Java 8 users:</b> The {@code Stream} equivalent of this method is {@code
    * Streams.concat(a, b, c, d)}.
    */
-  public static <T extends @Nullable Object> Iterable<T> concat(
+  public static <T extends Object> Iterable<T> concat(
       Iterable<? extends T> a,
       Iterable<? extends T> b,
       Iterable<? extends T> c,
@@ -519,7 +509,7 @@ public final class Iterables {
    * @throws NullPointerException if any of the provided iterables is null
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> Iterable<T> concat(Iterable<? extends T>... inputs) {
+  public static <T extends Object> Iterable<T> concat(Iterable<? extends T>... inputs) {
     return FluentIterable.concat(inputs);
   }
 
@@ -535,7 +525,7 @@ public final class Iterables {
    * <p><b>Java 8 users:</b> The {@code Stream} equivalent of this method is {@code
    * streamOfStreams.flatMap(s -> s)}.
    */
-  public static <T extends @Nullable Object> Iterable<T> concat(
+  public static <T extends Object> Iterable<T> concat(
       Iterable<? extends Iterable<? extends T>> inputs) {
     return FluentIterable.concat(inputs);
   }
@@ -558,7 +548,7 @@ public final class Iterables {
    *     into partitions
    * @throws IllegalArgumentException if {@code size} is nonpositive
    */
-  public static <T extends @Nullable Object> Iterable<List<T>> partition(
+  public static <T extends Object> Iterable<List<T>> partition(
       final Iterable<T> iterable, final int size) {
     checkNotNull(iterable);
     checkArgument(size > 0);
@@ -585,13 +575,13 @@ public final class Iterables {
    *     into partitions (the final iterable may have trailing null elements)
    * @throws IllegalArgumentException if {@code size} is nonpositive
    */
-  public static <T extends @Nullable Object> Iterable<List<@Nullable T>> paddedPartition(
+  public static <T extends Object> Iterable<List<T>> paddedPartition(
       final Iterable<T> iterable, final int size) {
     checkNotNull(iterable);
     checkArgument(size > 0);
-    return new FluentIterable<List<@Nullable T>>() {
+    return new FluentIterable<List<T>>() {
       @Override
-      public Iterator<List<@Nullable T>> iterator() {
+      public Iterator<List<T>> iterator() {
         return Iterators.paddedPartition(iterable.iterator(), size);
       }
     };
@@ -603,7 +593,7 @@ public final class Iterables {
    *
    * <p><b>{@code Stream} equivalent:</b> {@link Stream#filter}.
    */
-  public static <T extends @Nullable Object> Iterable<T> filter(
+  public static <T extends Object> Iterable<T> filter(
       final Iterable<T> unfiltered, final Predicate<? super T> retainIfTrue) {
     checkNotNull(unfiltered);
     checkNotNull(retainIfTrue);
@@ -630,7 +620,7 @@ public final class Iterables {
    * </pre>
    */
   @SuppressWarnings("unchecked")
-  @GwtIncompatible // Class.isInstance
+  // Class.isInstance
   public static <T> Iterable<T> filter(final Iterable<?> unfiltered, final Class<T> desiredType) {
     checkNotNull(unfiltered);
     checkNotNull(desiredType);
@@ -642,7 +632,7 @@ public final class Iterables {
    *
    * <p><b>{@code Stream} equivalent:</b> {@link Stream#anyMatch}.
    */
-  public static <T extends @Nullable Object> boolean any(
+  public static <T extends Object> boolean any(
       Iterable<T> iterable, Predicate<? super T> predicate) {
     return Iterators.any(iterable.iterator(), predicate);
   }
@@ -653,7 +643,7 @@ public final class Iterables {
    *
    * <p><b>{@code Stream} equivalent:</b> {@link Stream#allMatch}.
    */
-  public static <T extends @Nullable Object> boolean all(
+  public static <T extends Object> boolean all(
       Iterable<T> iterable, Predicate<? super T> predicate) {
     return Iterators.all(iterable.iterator(), predicate);
   }
@@ -668,7 +658,7 @@ public final class Iterables {
    * @throws NoSuchElementException if no element in {@code iterable} matches the given predicate
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T find(
+  public static <T extends Object> T find(
       Iterable<T> iterable, Predicate<? super T> predicate) {
     return Iterators.find(iterable.iterator(), predicate);
   }
@@ -699,7 +689,7 @@ public final class Iterables {
   //
   // - @JointlyNullable means "@Nullable or no annotation"
   @CheckForNull
-  public static <T extends @Nullable Object> T find(
+  public static <T extends Object> T find(
       Iterable<? extends T> iterable,
       Predicate<? super T> predicate,
       @CheckForNull T defaultValue) {
@@ -731,7 +721,7 @@ public final class Iterables {
    *
    * @since 2.0
    */
-  public static <T extends @Nullable Object> int indexOf(
+  public static <T extends Object> int indexOf(
       Iterable<T> iterable, Predicate<? super T> predicate) {
     return Iterators.indexOf(iterable.iterator(), predicate);
   }
@@ -749,7 +739,7 @@ public final class Iterables {
    *
    * <p><b>{@code Stream} equivalent:</b> {@link Stream#map}
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> Iterable<T> transform(
+  public static <F extends Object, T extends Object> Iterable<T> transform(
       final Iterable<F> fromIterable, final Function<? super F, ? extends T> function) {
     checkNotNull(fromIterable);
     checkNotNull(function);
@@ -773,7 +763,7 @@ public final class Iterables {
    *     the size of {@code iterable}
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T get(Iterable<T> iterable, int position) {
+  public static <T extends Object> T get(Iterable<T> iterable, int position) {
     checkNotNull(iterable);
     return (iterable instanceof List)
         ? ((List<T>) iterable).get(position)
@@ -796,7 +786,7 @@ public final class Iterables {
    * @since 4.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T get(
+  public static <T extends Object> T get(
       Iterable<? extends T> iterable, int position, @ParametricNullness T defaultValue) {
     checkNotNull(iterable);
     Iterators.checkNonnegative(position);
@@ -828,7 +818,7 @@ public final class Iterables {
    * @since 7.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getFirst(
+  public static <T extends Object> T getFirst(
       Iterable<? extends T> iterable, @ParametricNullness T defaultValue) {
     return Iterators.getNext(iterable.iterator(), defaultValue);
   }
@@ -843,7 +833,7 @@ public final class Iterables {
    * @throws NoSuchElementException if the iterable is empty
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getLast(Iterable<T> iterable) {
+  public static <T extends Object> T getLast(Iterable<T> iterable) {
     // TODO(kevinb): Support a concurrently modified collection?
     if (iterable instanceof List) {
       List<T> list = (List<T>) iterable;
@@ -868,7 +858,7 @@ public final class Iterables {
    * @since 3.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getLast(
+  public static <T extends Object> T getLast(
       Iterable<? extends T> iterable, @ParametricNullness T defaultValue) {
     if (iterable instanceof Collection) {
       Collection<? extends T> c = (Collection<? extends T>) iterable;
@@ -883,7 +873,7 @@ public final class Iterables {
   }
 
   @ParametricNullness
-  private static <T extends @Nullable Object> T getLastInNonemptyList(List<T> list) {
+  private static <T extends Object> T getLastInNonemptyList(List<T> list) {
     return list.get(list.size() - 1);
   }
 
@@ -906,7 +896,7 @@ public final class Iterables {
    *
    * @since 3.0
    */
-  public static <T extends @Nullable Object> Iterable<T> skip(
+  public static <T extends Object> Iterable<T> skip(
       final Iterable<T> iterable, final int numberToSkip) {
     checkNotNull(iterable);
     checkArgument(numberToSkip >= 0, "number to skip cannot be negative");
@@ -967,7 +957,7 @@ public final class Iterables {
    * @throws IllegalArgumentException if {@code limitSize} is negative
    * @since 3.0
    */
-  public static <T extends @Nullable Object> Iterable<T> limit(
+  public static <T extends Object> Iterable<T> limit(
       final Iterable<T> iterable, final int limitSize) {
     checkNotNull(iterable);
     checkArgument(limitSize >= 0, "limit is negative");
@@ -995,7 +985,7 @@ public final class Iterables {
    * @see Iterators#consumingIterator(Iterator)
    * @since 2.0
    */
-  public static <T extends @Nullable Object> Iterable<T> consumingIterable(
+  public static <T extends Object> Iterable<T> consumingIterable(
       final Iterable<T> iterable) {
     checkNotNull(iterable);
 
@@ -1046,8 +1036,7 @@ public final class Iterables {
    *
    * @since 11.0
    */
-  @Beta
-  public static <T extends @Nullable Object> Iterable<T> mergeSorted(
+  public static <T extends Object> Iterable<T> mergeSorted(
       final Iterable<? extends Iterable<? extends T>> iterables,
       final Comparator<? super T> comparator) {
     checkNotNull(iterables, "iterables");
@@ -1065,7 +1054,7 @@ public final class Iterables {
 
   // TODO(user): Is this the best place for this? Move to fluent functions?
   // Useful as a public method?
-  static <T extends @Nullable Object>
+  static <T extends Object>
       Function<Iterable<? extends T>, Iterator<? extends T>> toIterator() {
     return new Function<Iterable<? extends T>, Iterator<? extends T>>() {
       @Override
diff --git a/android/guava/src/com/google/common/collect/Iterators.java b/android/guava/src/com/google/common/collect/Iterators.java
index 5ea2da9..6f3e2d6 100644
--- a/android/guava/src/com/google/common/collect/Iterators.java
+++ b/android/guava/src/com/google/common/collect/Iterators.java
@@ -21,19 +21,13 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.base.Predicates.instanceOf;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ArrayDeque;
 import java.util.Arrays;
 import java.util.Collection;
@@ -48,7 +42,6 @@ import java.util.NoSuchElementException;
 import java.util.PriorityQueue;
 import java.util.Queue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * This class contains static utility methods that operate on or return objects of type {@link
@@ -67,7 +60,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Iterators {
   private Iterators() {}
@@ -77,7 +69,7 @@ public final class Iterators {
    *
    * <p>The {@link Iterable} equivalent of this method is {@link ImmutableSet#of()}.
    */
-  static <T extends @Nullable Object> UnmodifiableIterator<T> emptyIterator() {
+  static <T extends Object> UnmodifiableIterator<T> emptyIterator() {
     return emptyListIterator();
   }
 
@@ -88,7 +80,7 @@ public final class Iterators {
    */
   // Casting to any type is safe since there are no actual elements.
   @SuppressWarnings("unchecked")
-  static <T extends @Nullable Object> UnmodifiableListIterator<T> emptyListIterator() {
+  static <T extends Object> UnmodifiableListIterator<T> emptyListIterator() {
     return (UnmodifiableListIterator<T>) ArrayItr.EMPTY;
   }
 
@@ -121,12 +113,12 @@ public final class Iterators {
    */
   // Casting to any type is safe since there are no actual elements.
   @SuppressWarnings("unchecked")
-  static <T extends @Nullable Object> Iterator<T> emptyModifiableIterator() {
+  static <T extends Object> Iterator<T> emptyModifiableIterator() {
     return (Iterator<T>) EmptyModifiableIterator.INSTANCE;
   }
 
   /** Returns an unmodifiable view of {@code iterator}. */
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> unmodifiableIterator(
+  public static <T extends Object> UnmodifiableIterator<T> unmodifiableIterator(
       final Iterator<? extends T> iterator) {
     checkNotNull(iterator);
     if (iterator instanceof UnmodifiableIterator) {
@@ -155,7 +147,7 @@ public final class Iterators {
    * @since 10.0
    */
   @Deprecated
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> unmodifiableIterator(
+  public static <T extends Object> UnmodifiableIterator<T> unmodifiableIterator(
       UnmodifiableIterator<T> iterator) {
     return checkNotNull(iterator);
   }
@@ -199,7 +191,6 @@ public final class Iterators {
    * @param elementsToRemove the elements to remove
    * @return {@code true} if any element was removed from {@code iterator}
    */
-  @CanIgnoreReturnValue
   public static boolean removeAll(Iterator<?> removeFrom, Collection<?> elementsToRemove) {
     checkNotNull(elementsToRemove);
     boolean result = false;
@@ -221,8 +212,7 @@ public final class Iterators {
    * @return {@code true} if any elements were removed from the iterator
    * @since 2.0
    */
-  @CanIgnoreReturnValue
-  public static <T extends @Nullable Object> boolean removeIf(
+  public static <T extends Object> boolean removeIf(
       Iterator<T> removeFrom, Predicate<? super T> predicate) {
     checkNotNull(predicate);
     boolean modified = false;
@@ -244,7 +234,6 @@ public final class Iterators {
    * @param elementsToRetain the elements to retain
    * @return {@code true} if any element was removed from {@code iterator}
    */
-  @CanIgnoreReturnValue
   public static boolean retainAll(Iterator<?> removeFrom, Collection<?> elementsToRetain) {
     checkNotNull(elementsToRetain);
     boolean result = false;
@@ -305,7 +294,7 @@ public final class Iterators {
    *     iterator is unspecified.
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getOnlyElement(Iterator<T> iterator) {
+  public static <T extends Object> T getOnlyElement(Iterator<T> iterator) {
     T first = iterator.next();
     if (!iterator.hasNext()) {
       return first;
@@ -331,7 +320,7 @@ public final class Iterators {
    *     iterator is unspecified.
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getOnlyElement(
+  public static <T extends Object> T getOnlyElement(
       Iterator<? extends T> iterator, @ParametricNullness T defaultValue) {
     return iterator.hasNext() ? getOnlyElement(iterator) : defaultValue;
   }
@@ -344,10 +333,10 @@ public final class Iterators {
    * @param type the type of the elements
    * @return a newly-allocated array into which all the elements of the iterator have been copied
    */
-  @GwtIncompatible // Array.newInstance(Class, int)
+  // Array.newInstance(Class, int)
   // For discussion of this signature, see the corresponding overload of *Iterables*.toArray.
-  public static <T> @Nullable T[] toArray(Iterator<? extends @Nullable T> iterator, Class<T> type) {
-    List<@Nullable T> list = Lists.newArrayList(iterator);
+  public static <T> T[] toArray(Iterator<? extends @Nullable T> iterator, Class<T> type) {
+    List<T> list = Lists.newArrayList(iterator);
     return Iterables.toArray(list, type);
   }
 
@@ -357,8 +346,7 @@ public final class Iterators {
    *
    * @return {@code true} if {@code collection} was modified as a result of this operation
    */
-  @CanIgnoreReturnValue
-  public static <T extends @Nullable Object> boolean addAll(
+  public static <T extends Object> boolean addAll(
       Collection<T> addTo, Iterator<? extends T> iterator) {
     checkNotNull(addTo);
     checkNotNull(iterator);
@@ -397,7 +385,7 @@ public final class Iterators {
    * should use an explicit {@code break} or be certain that you will eventually remove all the
    * elements.
    */
-  public static <T extends @Nullable Object> Iterator<T> cycle(final Iterable<T> iterable) {
+  public static <T extends Object> Iterator<T> cycle(final Iterable<T> iterable) {
     checkNotNull(iterable);
     return new Iterator<T>() {
       Iterator<T> iterator = emptyModifiableIterator();
@@ -448,7 +436,7 @@ public final class Iterators {
    * elements.
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> Iterator<T> cycle(T... elements) {
+  public static <T extends Object> Iterator<T> cycle(T... elements) {
     return cycle(Lists.newArrayList(elements));
   }
 
@@ -497,7 +485,7 @@ public final class Iterators {
    * <p>The returned iterator supports {@code remove()} when the corresponding input iterator
    * supports it.
    */
-  public static <T extends @Nullable Object> Iterator<T> concat(
+  public static <T extends Object> Iterator<T> concat(
       Iterator<? extends T> a, Iterator<? extends T> b) {
     checkNotNull(a);
     checkNotNull(b);
@@ -512,7 +500,7 @@ public final class Iterators {
    * <p>The returned iterator supports {@code remove()} when the corresponding input iterator
    * supports it.
    */
-  public static <T extends @Nullable Object> Iterator<T> concat(
+  public static <T extends Object> Iterator<T> concat(
       Iterator<? extends T> a, Iterator<? extends T> b, Iterator<? extends T> c) {
     checkNotNull(a);
     checkNotNull(b);
@@ -529,7 +517,7 @@ public final class Iterators {
    * <p>The returned iterator supports {@code remove()} when the corresponding input iterator
    * supports it.
    */
-  public static <T extends @Nullable Object> Iterator<T> concat(
+  public static <T extends Object> Iterator<T> concat(
       Iterator<? extends T> a,
       Iterator<? extends T> b,
       Iterator<? extends T> c,
@@ -551,7 +539,7 @@ public final class Iterators {
    *
    * @throws NullPointerException if any of the provided iterators is null
    */
-  public static <T extends @Nullable Object> Iterator<T> concat(Iterator<? extends T>... inputs) {
+  public static <T extends Object> Iterator<T> concat(Iterator<? extends T>... inputs) {
     return concatNoDefensiveCopy(Arrays.copyOf(inputs, inputs.length));
   }
 
@@ -564,13 +552,13 @@ public final class Iterators {
    * supports it. The methods of the returned iterator may throw {@code NullPointerException} if any
    * of the input iterators is null.
    */
-  public static <T extends @Nullable Object> Iterator<T> concat(
+  public static <T extends Object> Iterator<T> concat(
       Iterator<? extends Iterator<? extends T>> inputs) {
     return new ConcatenatedIterator<T>(inputs);
   }
 
   /** Concats a varargs array of iterators without making a defensive copy of the array. */
-  static <T extends @Nullable Object> Iterator<T> concatNoDefensiveCopy(
+  static <T extends Object> Iterator<T> concatNoDefensiveCopy(
       Iterator<? extends T>... inputs) {
     for (Iterator<? extends T> input : checkNotNull(inputs)) {
       checkNotNull(input);
@@ -592,7 +580,7 @@ public final class Iterators {
    *     partitions
    * @throws IllegalArgumentException if {@code size} is nonpositive
    */
-  public static <T extends @Nullable Object> UnmodifiableIterator<List<T>> partition(
+  public static <T extends Object> UnmodifiableIterator<List<T>> partition(
       Iterator<T> iterator, int size) {
     return partitionImpl(iterator, size, false);
   }
@@ -611,28 +599,27 @@ public final class Iterators {
    *     partitions (the final iterable may have trailing null elements)
    * @throws IllegalArgumentException if {@code size} is nonpositive
    */
-  public static <T extends @Nullable Object>
-      UnmodifiableIterator<List<@Nullable T>> paddedPartition(Iterator<T> iterator, int size) {
+  public static <T extends Object>
+      UnmodifiableIterator<List<T>> paddedPartition(Iterator<T> iterator, int size) {
     return partitionImpl(iterator, size, true);
   }
 
-  private static <T extends @Nullable Object> UnmodifiableIterator<List<@Nullable T>> partitionImpl(
+  private static <T extends Object> UnmodifiableIterator<List<T>> partitionImpl(
       final Iterator<T> iterator, final int size, final boolean pad) {
     checkNotNull(iterator);
     checkArgument(size > 0);
-    return new UnmodifiableIterator<List<@Nullable T>>() {
+    return new UnmodifiableIterator<List<T>>() {
       @Override
       public boolean hasNext() {
         return iterator.hasNext();
       }
 
       @Override
-      public List<@Nullable T> next() {
+      public List<T> next() {
         if (!hasNext()) {
           throw new NoSuchElementException();
         }
         @SuppressWarnings("unchecked") // we only put Ts in it
-        @Nullable
         T[] array = (@Nullable T[]) new Object[size];
         int count = 0;
         for (; count < size && iterator.hasNext(); count++) {
@@ -642,7 +629,7 @@ public final class Iterators {
           array[i] = null; // for GWT
         }
 
-        List<@Nullable T> list = Collections.unmodifiableList(Arrays.asList(array));
+        List<T> list = Collections.unmodifiableList(Arrays.asList(array));
         // TODO(b/192579700): Use a ternary once it no longer confuses our nullness checker.
         if (pad || count == size) {
           return list;
@@ -657,7 +644,7 @@ public final class Iterators {
    * Returns a view of {@code unfiltered} containing all elements that satisfy the input predicate
    * {@code retainIfTrue}.
    */
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> filter(
+  public static <T extends Object> UnmodifiableIterator<T> filter(
       final Iterator<T> unfiltered, final Predicate<? super T> retainIfTrue) {
     checkNotNull(unfiltered);
     checkNotNull(retainIfTrue);
@@ -681,7 +668,7 @@ public final class Iterators {
    * desiredType}.
    */
   @SuppressWarnings("unchecked") // can cast to <T> because non-Ts are removed
-  @GwtIncompatible // Class.isInstance
+  // Class.isInstance
   public static <T> UnmodifiableIterator<T> filter(Iterator<?> unfiltered, Class<T> desiredType) {
     return (UnmodifiableIterator<T>) filter(unfiltered, instanceOf(desiredType));
   }
@@ -690,7 +677,7 @@ public final class Iterators {
    * Returns {@code true} if one or more elements returned by {@code iterator} satisfy the given
    * predicate.
    */
-  public static <T extends @Nullable Object> boolean any(
+  public static <T extends Object> boolean any(
       Iterator<T> iterator, Predicate<? super T> predicate) {
     return indexOf(iterator, predicate) != -1;
   }
@@ -699,7 +686,7 @@ public final class Iterators {
    * Returns {@code true} if every element returned by {@code iterator} satisfies the given
    * predicate. If {@code iterator} is empty, {@code true} is returned.
    */
-  public static <T extends @Nullable Object> boolean all(
+  public static <T extends Object> boolean all(
       Iterator<T> iterator, Predicate<? super T> predicate) {
     checkNotNull(predicate);
     while (iterator.hasNext()) {
@@ -721,7 +708,7 @@ public final class Iterators {
    * @throws NoSuchElementException if no element in {@code iterator} matches the given predicate
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T find(
+  public static <T extends Object> T find(
       Iterator<T> iterator, Predicate<? super T> predicate) {
     checkNotNull(iterator);
     checkNotNull(predicate);
@@ -744,7 +731,7 @@ public final class Iterators {
    */
   // For discussion of this signature, see the corresponding overload of *Iterables*.find.
   @CheckForNull
-  public static <T extends @Nullable Object> T find(
+  public static <T extends Object> T find(
       Iterator<? extends T> iterator,
       Predicate<? super T> predicate,
       @CheckForNull T defaultValue) {
@@ -796,7 +783,7 @@ public final class Iterators {
    *
    * @since 2.0
    */
-  public static <T extends @Nullable Object> int indexOf(
+  public static <T extends Object> int indexOf(
       Iterator<T> iterator, Predicate<? super T> predicate) {
     checkNotNull(predicate, "predicate");
     for (int i = 0; iterator.hasNext(); i++) {
@@ -816,7 +803,7 @@ public final class Iterators {
    * successful {@code remove()} call, {@code fromIterator} no longer contains the corresponding
    * element.
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> Iterator<T> transform(
+  public static <F extends Object, T extends Object> Iterator<T> transform(
       final Iterator<F> fromIterator, final Function<? super F, ? extends T> function) {
     checkNotNull(function);
     return new TransformedIterator<F, T>(fromIterator) {
@@ -838,7 +825,7 @@ public final class Iterators {
    *     the number of elements remaining in {@code iterator}
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T get(Iterator<T> iterator, int position) {
+  public static <T extends Object> T get(Iterator<T> iterator, int position) {
     checkNonnegative(position);
     int skipped = advance(iterator, position);
     if (!iterator.hasNext()) {
@@ -865,7 +852,7 @@ public final class Iterators {
    * @since 4.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T get(
+  public static <T extends Object> T get(
       Iterator<? extends T> iterator, int position, @ParametricNullness T defaultValue) {
     checkNonnegative(position);
     advance(iterator, position);
@@ -887,7 +874,7 @@ public final class Iterators {
    * @since 7.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getNext(
+  public static <T extends Object> T getNext(
       Iterator<? extends T> iterator, @ParametricNullness T defaultValue) {
     return iterator.hasNext() ? iterator.next() : defaultValue;
   }
@@ -899,7 +886,7 @@ public final class Iterators {
    * @throws NoSuchElementException if the iterator is empty
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getLast(Iterator<T> iterator) {
+  public static <T extends Object> T getLast(Iterator<T> iterator) {
     while (true) {
       T current = iterator.next();
       if (!iterator.hasNext()) {
@@ -917,7 +904,7 @@ public final class Iterators {
    * @since 3.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getLast(
+  public static <T extends Object> T getLast(
       Iterator<? extends T> iterator, @ParametricNullness T defaultValue) {
     return iterator.hasNext() ? getLast(iterator) : defaultValue;
   }
@@ -929,7 +916,6 @@ public final class Iterators {
    * @return the number of elements the iterator was advanced
    * @since 13.0 (since 3.0 as {@code Iterators.skip})
    */
-  @CanIgnoreReturnValue
   public static int advance(Iterator<?> iterator, int numberToAdvance) {
     checkNotNull(iterator);
     checkArgument(numberToAdvance >= 0, "numberToAdvance must be nonnegative");
@@ -951,7 +937,7 @@ public final class Iterators {
    * @throws IllegalArgumentException if {@code limitSize} is negative
    * @since 3.0
    */
-  public static <T extends @Nullable Object> Iterator<T> limit(
+  public static <T extends Object> Iterator<T> limit(
       final Iterator<T> iterator, final int limitSize) {
     checkNotNull(iterator);
     checkArgument(limitSize >= 0, "limit is negative");
@@ -991,7 +977,7 @@ public final class Iterators {
    * @return an iterator that removes and returns elements from the supplied iterator
    * @since 2.0
    */
-  public static <T extends @Nullable Object> Iterator<T> consumingIterator(
+  public static <T extends Object> Iterator<T> consumingIterator(
       final Iterator<T> iterator) {
     checkNotNull(iterator);
     return new UnmodifiableIterator<T>() {
@@ -1020,7 +1006,7 @@ public final class Iterators {
    * such value.
    */
   @CheckForNull
-  static <T extends @Nullable Object> T pollNext(Iterator<T> iterator) {
+  static <T extends Object> T pollNext(Iterator<T> iterator) {
     if (iterator.hasNext()) {
       T result = iterator.next();
       iterator.remove();
@@ -1052,7 +1038,7 @@ public final class Iterators {
    * {@link ImmutableList#copyOf(Object[])}}, or {@link ImmutableList#of}.
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> forArray(final T... array) {
+  public static <T extends Object> UnmodifiableIterator<T> forArray(final T... array) {
     return forArray(array, 0, array.length, 0);
   }
 
@@ -1063,7 +1049,7 @@ public final class Iterators {
    * <p>The {@code Iterable} equivalent of this method is {@code
    * Arrays.asList(array).subList(offset, offset + length).listIterator(index)}.
    */
-  static <T extends @Nullable Object> UnmodifiableListIterator<T> forArray(
+  static <T extends Object> UnmodifiableListIterator<T> forArray(
       final T[] array, final int offset, int length, int index) {
     checkArgument(length >= 0);
     int end = offset + length;
@@ -1077,7 +1063,7 @@ public final class Iterators {
     return new ArrayItr<T>(array, offset, length, index);
   }
 
-  private static final class ArrayItr<T extends @Nullable Object>
+  private static final class ArrayItr<T extends Object>
       extends AbstractIndexedListIterator<T> {
     static final UnmodifiableListIterator<Object> EMPTY = new ArrayItr<>(new Object[0], 0, 0, 0);
 
@@ -1102,7 +1088,7 @@ public final class Iterators {
    *
    * <p>The {@link Iterable} equivalent of this method is {@link Collections#singleton}.
    */
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> singletonIterator(
+  public static <T extends Object> UnmodifiableIterator<T> singletonIterator(
       @ParametricNullness final T value) {
     return new UnmodifiableIterator<T>() {
       boolean done;
@@ -1134,7 +1120,7 @@ public final class Iterators {
    * <p><b>Java 9 users:</b> use {@code enumeration.asIterator()} instead, unless it is important to
    * return an {@code UnmodifiableIterator} instead of a plain {@code Iterator}.
    */
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> forEnumeration(
+  public static <T extends Object> UnmodifiableIterator<T> forEnumeration(
       final Enumeration<T> enumeration) {
     checkNotNull(enumeration);
     return new UnmodifiableIterator<T>() {
@@ -1157,7 +1143,7 @@ public final class Iterators {
    * <p>The {@code Iterable} equivalent of this method is either {@link Collections#enumeration} (if
    * you have a {@link Collection}), or {@code Iterators.asEnumeration(collection.iterator())}.
    */
-  public static <T extends @Nullable Object> Enumeration<T> asEnumeration(
+  public static <T extends Object> Enumeration<T> asEnumeration(
       final Iterator<T> iterator) {
     checkNotNull(iterator);
     return new Enumeration<T>() {
@@ -1175,7 +1161,7 @@ public final class Iterators {
   }
 
   /** Implementation of PeekingIterator that avoids peeking unless necessary. */
-  private static class PeekingImpl<E extends @Nullable Object> implements PeekingIterator<E> {
+  private static class PeekingImpl<E extends Object> implements PeekingIterator<E> {
 
     private final Iterator<? extends E> iterator;
     private boolean hasPeeked;
@@ -1257,7 +1243,7 @@ public final class Iterators {
    * @return a peeking iterator backed by that iterator. Apart from the additional {@link
    *     PeekingIterator#peek()} method, this iterator behaves exactly the same as {@code iterator}.
    */
-  public static <T extends @Nullable Object> PeekingIterator<T> peekingIterator(
+  public static <T extends Object> PeekingIterator<T> peekingIterator(
       Iterator<? extends T> iterator) {
     if (iterator instanceof PeekingImpl) {
       // Safe to cast <? extends T> to <T> because PeekingImpl only uses T
@@ -1276,7 +1262,7 @@ public final class Iterators {
    * @since 10.0
    */
   @Deprecated
-  public static <T extends @Nullable Object> PeekingIterator<T> peekingIterator(
+  public static <T extends Object> PeekingIterator<T> peekingIterator(
       PeekingIterator<T> iterator) {
     return checkNotNull(iterator);
   }
@@ -1293,8 +1279,7 @@ public final class Iterators {
    *
    * @since 11.0
    */
-  @Beta
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> mergeSorted(
+  public static <T extends Object> UnmodifiableIterator<T> mergeSorted(
       Iterable<? extends Iterator<? extends T>> iterators, Comparator<? super T> comparator) {
     checkNotNull(iterators, "iterators");
     checkNotNull(comparator, "comparator");
@@ -1311,7 +1296,7 @@ public final class Iterators {
    * iterators. (Retrieving all elements takes approximately O(N*log(M)) time, where N is the total
    * number of elements.)
    */
-  private static class MergingIterator<T extends @Nullable Object> extends UnmodifiableIterator<T> {
+  private static class MergingIterator<T extends Object> extends UnmodifiableIterator<T> {
     final Queue<PeekingIterator<T>> queue;
 
     public MergingIterator(
@@ -1353,7 +1338,7 @@ public final class Iterators {
     }
   }
 
-  private static class ConcatenatedIterator<T extends @Nullable Object> implements Iterator<T> {
+  private static class ConcatenatedIterator<T extends Object> implements Iterator<T> {
     /* The last iterator to return an element.  Calls to remove() go to this iterator. */
     @CheckForNull private Iterator<? extends T> toRemove;
 
@@ -1450,7 +1435,7 @@ public final class Iterators {
   }
 
   /** Used to avoid http://bugs.sun.com/view_bug.do?bug_id=6558557 */
-  static <T extends @Nullable Object> ListIterator<T> cast(Iterator<T> iterator) {
+  static <T extends Object> ListIterator<T> cast(Iterator<T> iterator) {
     return (ListIterator<T>) iterator;
   }
 }
diff --git a/android/guava/src/com/google/common/collect/LexicographicalOrdering.java b/android/guava/src/com/google/common/collect/LexicographicalOrdering.java
index 91fc7bf..7cc4902 100644
--- a/android/guava/src/com/google/common/collect/LexicographicalOrdering.java
+++ b/android/guava/src/com/google/common/collect/LexicographicalOrdering.java
@@ -16,17 +16,14 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Comparator;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering which sorts iterables by comparing corresponding elements pairwise. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class LexicographicalOrdering<T extends @Nullable Object> extends Ordering<Iterable<T>>
+final class LexicographicalOrdering<T extends Object> extends Ordering<Iterable<T>>
     implements Serializable {
   final Comparator<? super T> elementOrder;
 
diff --git a/android/guava/src/com/google/common/collect/LinkedHashMultimap.java b/android/guava/src/com/google/common/collect/LinkedHashMultimap.java
index b0f1302..1415470 100644
--- a/android/guava/src/com/google/common/collect/LinkedHashMultimap.java
+++ b/android/guava/src/com/google/common/collect/LinkedHashMultimap.java
@@ -18,14 +18,8 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -38,7 +32,6 @@ import java.util.Map.Entry;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@code Multimap} that does not allow duplicate key-value entries and that
@@ -79,13 +72,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public final class LinkedHashMultimap<K extends Object, V extends Object>
     extends LinkedHashMultimapGwtSerializationDependencies<K, V> {
 
   /** Creates a new, empty {@code LinkedHashMultimap} with the default initial capacities. */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMultimap<K, V> create() {
     return new LinkedHashMultimap<>(DEFAULT_KEY_CAPACITY, DEFAULT_VALUE_SET_CAPACITY);
   }
@@ -99,7 +91,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
    * @throws IllegalArgumentException if {@code expectedKeys} or {@code expectedValuesPerKey} is
    *     negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMultimap<K, V> create(int expectedKeys, int expectedValuesPerKey) {
     return new LinkedHashMultimap<>(
         Maps.capacity(expectedKeys), Maps.capacity(expectedValuesPerKey));
@@ -113,14 +105,14 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
    *
    * @param multimap the multimap whose contents are copied to this multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMultimap<K, V> create(Multimap<? extends K, ? extends V> multimap) {
     LinkedHashMultimap<K, V> result = create(multimap.keySet().size(), DEFAULT_VALUE_SET_CAPACITY);
     result.putAll(multimap);
     return result;
   }
 
-  private interface ValueSetLink<K extends @Nullable Object, V extends @Nullable Object> {
+  private interface ValueSetLink<K extends Object, V extends Object> {
     ValueSetLink<K, V> getPredecessorInValueSet();
 
     ValueSetLink<K, V> getSuccessorInValueSet();
@@ -130,24 +122,24 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
     void setSuccessorInValueSet(ValueSetLink<K, V> entry);
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> void succeedsInValueSet(
+  private static <K extends Object, V extends Object> void succeedsInValueSet(
       ValueSetLink<K, V> pred, ValueSetLink<K, V> succ) {
     pred.setSuccessorInValueSet(succ);
     succ.setPredecessorInValueSet(pred);
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> void succeedsInMultimap(
+  private static <K extends Object, V extends Object> void succeedsInMultimap(
       ValueEntry<K, V> pred, ValueEntry<K, V> succ) {
     pred.setSuccessorInMultimap(succ);
     succ.setPredecessorInMultimap(pred);
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> void deleteFromValueSet(
+  private static <K extends Object, V extends Object> void deleteFromValueSet(
       ValueSetLink<K, V> entry) {
     succeedsInValueSet(entry.getPredecessorInValueSet(), entry.getSuccessorInValueSet());
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> void deleteFromMultimap(
+  private static <K extends Object, V extends Object> void deleteFromMultimap(
       ValueEntry<K, V> entry) {
     succeedsInMultimap(entry.getPredecessorInMultimap(), entry.getSuccessorInMultimap());
   }
@@ -158,8 +150,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
    * entries in that {@code Set<V>}, and the linked list of entries in the LinkedHashMultimap as a
    * whole.
    */
-  @VisibleForTesting
-  static final class ValueEntry<K extends @Nullable Object, V extends @Nullable Object>
+  static final class ValueEntry<K extends Object, V extends Object>
       extends ImmutableEntry<K, V> implements ValueSetLink<K, V> {
     final int smearedValueHash;
 
@@ -206,7 +197,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
     }
 
     @SuppressWarnings("nullness") // see the comment on the class fields, especially about newHeader
-    static <K extends @Nullable Object, V extends @Nullable Object> ValueEntry<K, V> newHeader() {
+    static <K extends Object, V extends Object> ValueEntry<K, V> newHeader() {
       return new ValueEntry<>(null, null, 0, null);
     }
 
@@ -253,9 +244,9 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
 
   private static final int DEFAULT_KEY_CAPACITY = 16;
   private static final int DEFAULT_VALUE_SET_CAPACITY = 2;
-  @VisibleForTesting static final double VALUE_SET_LOAD_FACTOR = 1.0;
+  static final double VALUE_SET_LOAD_FACTOR = 1.0;
 
-  @VisibleForTesting transient int valueSetCapacity = DEFAULT_VALUE_SET_CAPACITY;
+  transient int valueSetCapacity = DEFAULT_VALUE_SET_CAPACITY;
   private transient ValueEntry<K, V> multimapHeaderEntry;
 
   private LinkedHashMultimap(int keyCapacity, int valueSetCapacity) {
@@ -300,7 +291,6 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
    * the {@code keySet()} ordering is unchanged. However, the provided values always come last in
    * the {@link #entries()} and {@link #values()} iteration orderings.
    */
-  @CanIgnoreReturnValue
   @Override
   public Set<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return super.replaceValues(key, values);
@@ -349,8 +339,6 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
     return super.values();
   }
 
-  @VisibleForTesting
-  @WeakOuter
   final class ValueSet extends Sets.ImprovedAbstractSet<V> implements ValueSetLink<K, V> {
     /*
      * We currently use a fixed load factor of 1.0, a bit higher than normal to reduce memory
@@ -358,7 +346,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
      */
 
     @ParametricNullness private final K key;
-    @VisibleForTesting @Nullable ValueEntry<K, V>[] hashTable;
+    ValueEntry<K, V>[] hashTable;
     private int size = 0;
     private int modCount = 0;
 
@@ -375,8 +363,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
       int tableSize = Hashing.closedTableSize(expectedValues, VALUE_SET_LOAD_FACTOR);
 
       @SuppressWarnings({"rawtypes", "unchecked"})
-      @Nullable
-      ValueEntry<K, V>[] hashTable = new @Nullable ValueEntry[tableSize];
+      ValueEntry<K, V>[] hashTable = new ValueEntry[tableSize];
       this.hashTable = hashTable;
     }
 
@@ -505,7 +492,6 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
       }
     }
 
-    @CanIgnoreReturnValue
     @Override
     public boolean remove(@CheckForNull Object o) {
       int smearedHash = Hashing.smearedHash(o);
@@ -592,7 +578,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
    * @serialData the expected values per key, the number of distinct keys, the number of entries,
    *     and the entries in order
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeInt(keySet().size());
@@ -606,7 +592,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
     }
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     multimapHeaderEntry = ValueEntry.newHeader();
@@ -634,6 +620,6 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
     setMap(map);
   }
 
-  @GwtIncompatible // java serialization not supported
+  // java serialization not supported
   private static final long serialVersionUID = 1;
 }
diff --git a/android/guava/src/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java b/android/guava/src/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java
index bb4a2e4..994ff54 100644
--- a/android/guava/src/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java
+++ b/android/guava/src/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Map;
 
@@ -29,7 +28,6 @@ import java.util.Map;
  *
  * <p>TODO(cpovirk): Consider applying this subclass approach to our other types.
  */
-@GwtCompatible(emulated = true)
 abstract class LinkedHashMultimapGwtSerializationDependencies<K, V>
     extends AbstractSetMultimap<K, V> {
   LinkedHashMultimapGwtSerializationDependencies(Map<K, Collection<V>> map) {
diff --git a/android/guava/src/com/google/common/collect/LinkedHashMultiset.java b/android/guava/src/com/google/common/collect/LinkedHashMultiset.java
index 9630786..a11c4e3 100644
--- a/android/guava/src/com/google/common/collect/LinkedHashMultiset.java
+++ b/android/guava/src/com/google/common/collect/LinkedHashMultiset.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements
@@ -34,13 +32,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class LinkedHashMultiset<E extends @Nullable Object>
+public final class LinkedHashMultiset<E extends Object>
     extends AbstractMapBasedMultiset<E> {
 
   /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */
-  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {
+  public static <E extends Object> LinkedHashMultiset<E> create() {
     return create(ObjectCountHashMap.DEFAULT_SIZE);
   }
 
@@ -51,7 +48,7 @@ public final class LinkedHashMultiset<E extends @Nullable Object>
    * @param distinctElements the expected number of distinct elements
    * @throws IllegalArgumentException if {@code distinctElements} is negative
    */
-  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {
+  public static <E extends Object> LinkedHashMultiset<E> create(int distinctElements) {
     return new LinkedHashMultiset<E>(distinctElements);
   }
 
@@ -62,7 +59,7 @@ public final class LinkedHashMultiset<E extends @Nullable Object>
    *
    * @param elements the elements that the multiset should contain
    */
-  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(
+  public static <E extends Object> LinkedHashMultiset<E> create(
       Iterable<? extends E> elements) {
     LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));
     Iterables.addAll(multiset, elements);
diff --git a/android/guava/src/com/google/common/collect/LinkedListMultimap.java b/android/guava/src/com/google/common/collect/LinkedListMultimap.java
index 31874b2..5e9ee55 100644
--- a/android/guava/src/com/google/common/collect/LinkedListMultimap.java
+++ b/android/guava/src/com/google/common/collect/LinkedListMultimap.java
@@ -19,12 +19,7 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkPositionIndex;
 import static com.google.common.base.Preconditions.checkState;
 import static java.util.Collections.unmodifiableList;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -40,7 +35,6 @@ import java.util.Map.Entry;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An implementation of {@code ListMultimap} that supports deterministic iteration order for both
@@ -94,9 +88,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public class LinkedListMultimap<K extends Object, V extends Object>
     extends AbstractMultimap<K, V> implements ListMultimap<K, V>, Serializable {
   /*
    * Order is maintained using a linked list containing all key-value pairs. In
@@ -105,7 +98,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    * ValueForKeyIterator} in constant time.
    */
 
-  private static final class Node<K extends @Nullable Object, V extends @Nullable Object>
+  private static final class Node<K extends Object, V extends Object>
       extends AbstractMapEntry<K, V> {
     @ParametricNullness final K key;
     @ParametricNullness V value;
@@ -140,7 +133,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
     }
   }
 
-  private static class KeyList<K extends @Nullable Object, V extends @Nullable Object> {
+  private static class KeyList<K extends Object, V extends Object> {
     Node<K, V> head;
     Node<K, V> tail;
     int count;
@@ -167,7 +160,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
   private transient int modCount;
 
   /** Creates a new, empty {@code LinkedListMultimap} with the default initial capacity. */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedListMultimap<K, V> create() {
     return new LinkedListMultimap<>();
   }
@@ -179,7 +172,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    * @param expectedKeys the expected number of distinct keys
    * @throws IllegalArgumentException if {@code expectedKeys} is negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedListMultimap<K, V> create(int expectedKeys) {
     return new LinkedListMultimap<>(expectedKeys);
   }
@@ -191,7 +184,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    *
    * @param multimap the multimap whose contents are copied to this multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedListMultimap<K, V> create(Multimap<? extends K, ? extends V> multimap) {
     return new LinkedListMultimap<>(multimap);
   }
@@ -214,7 +207,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    * element, or at the end of the list if {@code nextSibling} is null. Note: if {@code nextSibling}
    * is specified, it MUST be for an node for the same {@code key}!
    */
-  @CanIgnoreReturnValue
   private Node<K, V> addNode(
       @ParametricNullness K key,
       @ParametricNullness V value,
@@ -358,7 +350,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
       return next != null;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Node<K, V> next() {
       checkForConcurrentModification();
@@ -392,7 +383,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
       return previous != null;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Node<K, V> previous() {
       checkForConcurrentModification();
@@ -523,7 +513,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
       return next != null;
     }
 
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public V next() {
@@ -541,7 +530,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
       return previous != null;
     }
 
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public V previous() {
@@ -622,7 +610,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    * @param value value to store in the multimap
    * @return {@code true} always
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean put(@ParametricNullness K key, @ParametricNullness V value) {
     addNode(key, value, null);
@@ -639,7 +626,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    *
    * <p>The returned list is immutable and implements {@link java.util.RandomAccess}.
    */
-  @CanIgnoreReturnValue
   @Override
   public List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     List<V> oldValues = getCopy(key);
@@ -675,7 +661,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    *
    * <p>The returned list is immutable and implements {@link java.util.RandomAccess}.
    */
-  @CanIgnoreReturnValue
   @Override
   public List<V> removeAll(@Nullable Object key) {
     /*
@@ -728,7 +713,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
 
   @Override
   Set<K> createKeySet() {
-    @WeakOuter
     class KeySetImpl extends Sets.ImprovedAbstractSet<K> {
       @Override
       public int size() {
@@ -773,7 +757,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
 
   @Override
   List<V> createValues() {
-    @WeakOuter
     class ValuesImpl extends AbstractSequentialList<V> {
       @Override
       public int size() {
@@ -823,7 +806,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
 
   @Override
   List<Entry<K, V>> createEntries() {
-    @WeakOuter
     class EntriesImpl extends AbstractSequentialList<Entry<K, V>> {
       @Override
       public int size() {
@@ -853,7 +835,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    *     number of values for that key, and the key's values, followed by successive keys and values
    *     from the entries() ordering
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeInt(size());
@@ -863,7 +845,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
     }
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     keyToKeyList = CompactLinkedHashMap.create();
@@ -877,6 +859,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
     }
   }
 
-  @GwtIncompatible // java serialization not supported
+  // java serialization not supported
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/ListMultimap.java b/android/guava/src/com/google/common/collect/ListMultimap.java
index 1686068..117c3bc 100644
--- a/android/guava/src/com/google/common/collect/ListMultimap.java
+++ b/android/guava/src/com/google/common/collect/ListMultimap.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion
@@ -40,9 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public interface ListMultimap<K extends Object, V extends Object>
     extends Multimap<K, V> {
   /**
    * {@inheritDoc}
@@ -61,7 +57,6 @@ public interface ListMultimap<K extends @Nullable Object, V extends @Nullable Ob
    * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in
    * the {@link Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   List<V> removeAll(@CheckForNull Object key);
 
@@ -72,7 +67,6 @@ public interface ListMultimap<K extends @Nullable Object, V extends @Nullable Ob
    * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in
    * the {@link Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);
 
diff --git a/android/guava/src/com/google/common/collect/Lists.java b/android/guava/src/com/google/common/collect/Lists.java
index a583950..850c57a 100644
--- a/android/guava/src/com/google/common/collect/Lists.java
+++ b/android/guava/src/com/google/common/collect/Lists.java
@@ -25,10 +25,6 @@ import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import com.google.common.math.IntMath;
@@ -49,7 +45,6 @@ import java.util.NoSuchElementException;
 import java.util.RandomAccess;
 import java.util.concurrent.CopyOnWriteArrayList;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@link List} instances. Also see this class's counterparts
@@ -63,7 +58,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Lists {
   private Lists() {}
@@ -79,8 +73,7 @@ public final class Lists {
    * deprecated. Instead, use the {@code ArrayList} {@linkplain ArrayList#ArrayList() constructor}
    * directly, taking advantage of the new <a href="http://goo.gl/iz2Wi">"diamond" syntax</a>.
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayList() {
+  public static <E extends Object> ArrayList<E> newArrayList() {
     return new ArrayList<>();
   }
 
@@ -99,8 +92,7 @@ public final class Lists {
    * not actually very useful and will likely be deprecated in the future.
    */
   @SafeVarargs
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayList(E... elements) {
+  public static <E extends Object> ArrayList<E> newArrayList(E... elements) {
     checkNotNull(elements); // for GWT
     // Avoid integer overflow when a large array is passed in
     int capacity = computeArrayListCapacity(elements.length);
@@ -122,8 +114,7 @@ public final class Lists {
    * constructor} directly, taking advantage of the new <a href="http://goo.gl/iz2Wi">"diamond"
    * syntax</a>.
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayList(
+  public static <E extends Object> ArrayList<E> newArrayList(
       Iterable<? extends E> elements) {
     checkNotNull(elements); // for GWT
     // Let ArrayList's sizing logic work, if possible
@@ -139,15 +130,13 @@ public final class Lists {
    * <p><b>Note:</b> if mutability is not required and the elements are non-null, use {@link
    * ImmutableList#copyOf(Iterator)} instead.
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayList(
+  public static <E extends Object> ArrayList<E> newArrayList(
       Iterator<? extends E> elements) {
     ArrayList<E> list = newArrayList();
     Iterators.addAll(list, elements);
     return list;
   }
 
-  @VisibleForTesting
   static int computeArrayListCapacity(int arraySize) {
     checkNonnegative(arraySize, "arraySize");
 
@@ -171,8 +160,7 @@ public final class Lists {
    *     reaches {@code initialArraySize + 1}
    * @throws IllegalArgumentException if {@code initialArraySize} is negative
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayListWithCapacity(
+  public static <E extends Object> ArrayList<E> newArrayListWithCapacity(
       int initialArraySize) {
     checkNonnegative(initialArraySize, "initialArraySize"); // for GWT.
     return new ArrayList<>(initialArraySize);
@@ -191,8 +179,7 @@ public final class Lists {
    *     elements
    * @throws IllegalArgumentException if {@code estimatedSize} is negative
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayListWithExpectedSize(
+  public static <E extends Object> ArrayList<E> newArrayListWithExpectedSize(
       int estimatedSize) {
     return new ArrayList<>(computeArrayListCapacity(estimatedSize));
   }
@@ -214,8 +201,7 @@ public final class Lists {
    * constructor} directly, taking advantage of the new <a href="http://goo.gl/iz2Wi">"diamond"
    * syntax</a>.
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> LinkedList<E> newLinkedList() {
+  public static <E extends Object> LinkedList<E> newLinkedList() {
     return new LinkedList<>();
   }
 
@@ -236,8 +222,7 @@ public final class Lists {
    * constructor} directly, taking advantage of the new <a href="http://goo.gl/iz2Wi">"diamond"
    * syntax</a>.
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> LinkedList<E> newLinkedList(
+  public static <E extends Object> LinkedList<E> newLinkedList(
       Iterable<? extends E> elements) {
     LinkedList<E> list = newLinkedList();
     Iterables.addAll(list, elements);
@@ -253,8 +238,8 @@ public final class Lists {
    * @return a new, empty {@code CopyOnWriteArrayList}
    * @since 12.0
    */
-  @GwtIncompatible // CopyOnWriteArrayList
-  public static <E extends @Nullable Object> CopyOnWriteArrayList<E> newCopyOnWriteArrayList() {
+  // CopyOnWriteArrayList
+  public static <E extends Object> CopyOnWriteArrayList<E> newCopyOnWriteArrayList() {
     return new CopyOnWriteArrayList<>();
   }
 
@@ -265,8 +250,8 @@ public final class Lists {
    * @return a new {@code CopyOnWriteArrayList} containing those elements
    * @since 12.0
    */
-  @GwtIncompatible // CopyOnWriteArrayList
-  public static <E extends @Nullable Object> CopyOnWriteArrayList<E> newCopyOnWriteArrayList(
+  // CopyOnWriteArrayList
+  public static <E extends Object> CopyOnWriteArrayList<E> newCopyOnWriteArrayList(
       Iterable<? extends E> elements) {
     // We copy elements to an ArrayList first, rather than incurring the
     // quadratic cost of adding them to the COWAL directly.
@@ -291,7 +276,7 @@ public final class Lists {
    * @param rest an array of additional elements, possibly empty
    * @return an unmodifiable list containing the specified elements
    */
-  public static <E extends @Nullable Object> List<E> asList(@ParametricNullness E first, E[] rest) {
+  public static <E extends Object> List<E> asList(@ParametricNullness E first, E[] rest) {
     return new OnePlusArrayList<>(first, rest);
   }
 
@@ -311,13 +296,13 @@ public final class Lists {
    * @param rest an array of additional elements, possibly empty
    * @return an unmodifiable list containing the specified elements
    */
-  public static <E extends @Nullable Object> List<E> asList(
+  public static <E extends Object> List<E> asList(
       @ParametricNullness E first, @ParametricNullness E second, E[] rest) {
     return new TwoPlusArrayList<>(first, second, rest);
   }
 
   /** @see Lists#asList(Object, Object[]) */
-  private static class OnePlusArrayList<E extends @Nullable Object> extends AbstractList<E>
+  private static class OnePlusArrayList<E extends Object> extends AbstractList<E>
       implements Serializable, RandomAccess {
     @ParametricNullness final E first;
     final E[] rest;
@@ -344,7 +329,7 @@ public final class Lists {
   }
 
   /** @see Lists#asList(Object, Object, Object[]) */
-  private static class TwoPlusArrayList<E extends @Nullable Object> extends AbstractList<E>
+  private static class TwoPlusArrayList<E extends Object> extends AbstractList<E>
       implements Serializable, RandomAccess {
     @ParametricNullness final E first;
     @ParametricNullness final E second;
@@ -528,7 +513,7 @@ public final class Lists {
    * java.util.stream.Stream#map}. This method is not being deprecated, but we gently encourage you
    * to migrate to streams.
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> List<T> transform(
+  public static <F extends Object, T extends Object> List<T> transform(
       List<F> fromList, Function<? super F, ? extends T> function) {
     return (fromList instanceof RandomAccess)
         ? new TransformingRandomAccessList<>(fromList, function)
@@ -541,7 +526,7 @@ public final class Lists {
    * @see Lists#transform
    */
   private static class TransformingSequentialList<
-          F extends @Nullable Object, T extends @Nullable Object>
+          F extends Object, T extends Object>
       extends AbstractSequentialList<T> implements Serializable {
     final List<F> fromList;
     final Function<? super F, ? extends T> function;
@@ -587,7 +572,7 @@ public final class Lists {
    * @see Lists#transform
    */
   private static class TransformingRandomAccessList<
-          F extends @Nullable Object, T extends @Nullable Object>
+          F extends Object, T extends Object>
       extends AbstractList<T> implements RandomAccess, Serializable {
     final List<F> fromList;
     final Function<? super F, ? extends T> function;
@@ -656,7 +641,7 @@ public final class Lists {
    * @return a list of consecutive sublists
    * @throws IllegalArgumentException if {@code partitionSize} is nonpositive
    */
-  public static <T extends @Nullable Object> List<List<T>> partition(List<T> list, int size) {
+  public static <T extends Object> List<List<T>> partition(List<T> list, int size) {
     checkNotNull(list);
     checkArgument(size > 0);
     return (list instanceof RandomAccess)
@@ -664,7 +649,7 @@ public final class Lists {
         : new Partition<>(list, size);
   }
 
-  private static class Partition<T extends @Nullable Object> extends AbstractList<List<T>> {
+  private static class Partition<T extends Object> extends AbstractList<List<T>> {
     final List<T> list;
     final int size;
 
@@ -692,7 +677,7 @@ public final class Lists {
     }
   }
 
-  private static class RandomAccessPartition<T extends @Nullable Object> extends Partition<T>
+  private static class RandomAccessPartition<T extends Object> extends Partition<T>
       implements RandomAccess {
     RandomAccessPartition(List<T> list, int size) {
       super(list, size);
@@ -717,7 +702,6 @@ public final class Lists {
    * @return an {@code List<Character>} view of the character sequence
    * @since 7.0
    */
-  @Beta
   public static List<Character> charactersOf(CharSequence sequence) {
     return new CharSequenceAsList(checkNotNull(sequence));
   }
@@ -794,7 +778,7 @@ public final class Lists {
    *
    * @since 7.0
    */
-  public static <T extends @Nullable Object> List<T> reverse(List<T> list) {
+  public static <T extends Object> List<T> reverse(List<T> list) {
     if (list instanceof ImmutableList) {
       // Avoid nullness warnings.
       List<?> reversed = ((ImmutableList<?>) list).reverse();
@@ -810,7 +794,7 @@ public final class Lists {
     }
   }
 
-  private static class ReverseList<T extends @Nullable Object> extends AbstractList<T> {
+  private static class ReverseList<T extends Object> extends AbstractList<T> {
     private final List<T> forwardList;
 
     ReverseList(List<T> forwardList) {
@@ -953,7 +937,7 @@ public final class Lists {
     }
   }
 
-  private static class RandomAccessReverseList<T extends @Nullable Object> extends ReverseList<T>
+  private static class RandomAccessReverseList<T extends Object> extends ReverseList<T>
       implements RandomAccess {
     RandomAccessReverseList(List<T> forwardList) {
       super(forwardList);
@@ -1000,7 +984,7 @@ public final class Lists {
   }
 
   /** An implementation of {@link List#addAll(int, Collection)}. */
-  static <E extends @Nullable Object> boolean addAllImpl(
+  static <E extends Object> boolean addAllImpl(
       List<E> list, int index, Iterable<? extends E> elements) {
     boolean changed = false;
     ListIterator<E> listIterator = list.listIterator(index);
@@ -1077,12 +1061,12 @@ public final class Lists {
   }
 
   /** Returns an implementation of {@link List#listIterator(int)}. */
-  static <E extends @Nullable Object> ListIterator<E> listIteratorImpl(List<E> list, int index) {
+  static <E extends Object> ListIterator<E> listIteratorImpl(List<E> list, int index) {
     return new AbstractListWrapper<>(list).listIterator(index);
   }
 
   /** An implementation of {@link List#subList(int, int)}. */
-  static <E extends @Nullable Object> List<E> subListImpl(
+  static <E extends Object> List<E> subListImpl(
       final List<E> list, int fromIndex, int toIndex) {
     List<E> wrapper;
     if (list instanceof RandomAccess) {
@@ -1109,7 +1093,7 @@ public final class Lists {
     return wrapper.subList(fromIndex, toIndex);
   }
 
-  private static class AbstractListWrapper<E extends @Nullable Object> extends AbstractList<E> {
+  private static class AbstractListWrapper<E extends Object> extends AbstractList<E> {
     final List<E> backingList;
 
     AbstractListWrapper(List<E> backingList) {
@@ -1155,7 +1139,7 @@ public final class Lists {
     }
   }
 
-  private static class RandomAccessListWrapper<E extends @Nullable Object>
+  private static class RandomAccessListWrapper<E extends Object>
       extends AbstractListWrapper<E> implements RandomAccess {
     RandomAccessListWrapper(List<E> backingList) {
       super(backingList);
@@ -1163,7 +1147,7 @@ public final class Lists {
   }
 
   /** Used to avoid http://bugs.sun.com/view_bug.do?bug_id=6558557 */
-  static <T extends @Nullable Object> List<T> cast(Iterable<T> iterable) {
+  static <T extends Object> List<T> cast(Iterable<T> iterable) {
     return (List<T>) iterable;
   }
 }
diff --git a/android/guava/src/com/google/common/collect/MapDifference.java b/android/guava/src/com/google/common/collect/MapDifference.java
index 5000e4b..4df988a 100644
--- a/android/guava/src/com/google/common/collect/MapDifference.java
+++ b/android/guava/src/com/google/common/collect/MapDifference.java
@@ -16,11 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An object representing the differences between two maps.
@@ -28,10 +25,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@DoNotMock("Use Maps.difference")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface MapDifference<K extends @Nullable Object, V extends @Nullable Object> {
+public interface MapDifference<K extends Object, V extends Object> {
   /**
    * Returns {@code true} if there are no differences between the two maps; that is, if the maps are
    * equal.
@@ -88,8 +83,7 @@ public interface MapDifference<K extends @Nullable Object, V extends @Nullable O
    *
    * @since 2.0
    */
-  @DoNotMock("Use Maps.difference")
-  interface ValueDifference<V extends @Nullable Object> {
+  interface ValueDifference<V extends Object> {
     /** Returns the value from the left map (possibly null). */
     @ParametricNullness
     V leftValue();
diff --git a/android/guava/src/com/google/common/collect/MapMaker.java b/android/guava/src/com/google/common/collect/MapMaker.java
index a2612c1..0c8d24a 100644
--- a/android/guava/src/com/google/common/collect/MapMaker.java
+++ b/android/guava/src/com/google/common/collect/MapMaker.java
@@ -18,14 +18,10 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Equivalence;
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.MapMakerInternalMap.Strength;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import java.lang.ref.WeakReference;
 import java.util.ConcurrentModificationException;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -85,7 +81,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class MapMaker {
   private static final int DEFAULT_INITIAL_CAPACITY = 16;
@@ -117,8 +112,7 @@ public final class MapMaker {
    * #weakKeys} is specified, and {@link Equivalence#equals()} otherwise. The only place this is
    * used is in {@link Interners.WeakInterner}.
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // To be supported
+  // To be supported
   MapMaker keyEquivalence(Equivalence<Object> equivalence) {
     checkState(keyEquivalence == null, "key equivalence was already set to %s", keyEquivalence);
     keyEquivalence = checkNotNull(equivalence);
@@ -140,7 +134,6 @@ public final class MapMaker {
    * @throws IllegalArgumentException if {@code initialCapacity} is negative
    * @throws IllegalStateException if an initial capacity was already set
    */
-  @CanIgnoreReturnValue
   public MapMaker initialCapacity(int initialCapacity) {
     checkState(
         this.initialCapacity == UNSET_INT,
@@ -174,7 +167,6 @@ public final class MapMaker {
    * @throws IllegalArgumentException if {@code concurrencyLevel} is nonpositive
    * @throws IllegalStateException if a concurrency level was already set
    */
-  @CanIgnoreReturnValue
   public MapMaker concurrencyLevel(int concurrencyLevel) {
     checkState(
         this.concurrencyLevel == UNSET_INT,
@@ -200,8 +192,7 @@ public final class MapMaker {
    * @throws IllegalStateException if the key strength was already set
    * @see WeakReference
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   public MapMaker weakKeys() {
     return setKeyStrength(Strength.WEAK);
   }
@@ -236,8 +227,7 @@ public final class MapMaker {
    * @throws IllegalStateException if the value strength was already set
    * @see WeakReference
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   public MapMaker weakValues() {
     return setValueStrength(Strength.WEAK);
   }
diff --git a/android/guava/src/com/google/common/collect/MapMakerInternalMap.java b/android/guava/src/com/google/common/collect/MapMakerInternalMap.java
index 4e66a84..fd3b79a 100644
--- a/android/guava/src/com/google/common/collect/MapMakerInternalMap.java
+++ b/android/guava/src/com/google/common/collect/MapMakerInternalMap.java
@@ -17,22 +17,15 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Equivalence;
 import com.google.common.collect.MapMaker.Dummy;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.Weak;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
 import java.util.AbstractCollection;
 import java.util.AbstractMap;
 import java.util.AbstractSet;
@@ -47,7 +40,6 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReferenceArray;
 import java.util.concurrent.locks.ReentrantLock;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * The concurrent hash map implementation built by {@link MapMaker}.
@@ -64,7 +56,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  * @author Doug Lea ({@code ConcurrentHashMap})
  */
 // TODO(kak): Consider removing @CanIgnoreReturnValue from this class.
-@GwtIncompatible
 @SuppressWarnings({
   "GuardedBy", // TODO(b/35466881): Fix or suppress.
   "nullness", // too much trouble for the payoff
@@ -343,7 +334,7 @@ class MapMakerInternalMap<
       implements InternalEntry<K, V, E> {
     final K key;
     final int hash;
-    @NullableDecl final E next;
+    final E next;
 
     AbstractStrongKeyEntry(K key, int hash, @NullableDecl E next) {
       this.key = key;
@@ -393,14 +384,13 @@ class MapMakerInternalMap<
   static final class StrongKeyStrongValueEntry<K, V>
       extends AbstractStrongKeyEntry<K, V, StrongKeyStrongValueEntry<K, V>>
       implements StrongValueEntry<K, V, StrongKeyStrongValueEntry<K, V>> {
-    @NullableDecl private volatile V value = null;
+    private volatile V value = null;
 
     StrongKeyStrongValueEntry(K key, int hash, @NullableDecl StrongKeyStrongValueEntry<K, V> next) {
       super(key, hash, next);
     }
 
     @Override
-    @NullableDecl
     public V getValue() {
       return value;
     }
@@ -650,7 +640,7 @@ class MapMakerInternalMap<
   abstract static class AbstractWeakKeyEntry<K, V, E extends InternalEntry<K, V, E>>
       extends WeakReference<K> implements InternalEntry<K, V, E> {
     final int hash;
-    @NullableDecl final E next;
+    final E next;
 
     AbstractWeakKeyEntry(ReferenceQueue<K> queue, K key, int hash, @NullableDecl E next) {
       super(key, queue);
@@ -758,7 +748,7 @@ class MapMakerInternalMap<
   static final class WeakKeyStrongValueEntry<K, V>
       extends AbstractWeakKeyEntry<K, V, WeakKeyStrongValueEntry<K, V>>
       implements StrongValueEntry<K, V, WeakKeyStrongValueEntry<K, V>> {
-    @NullableDecl private volatile V value = null;
+    private volatile V value = null;
 
     WeakKeyStrongValueEntry(
         ReferenceQueue<K> queue,
@@ -769,7 +759,6 @@ class MapMakerInternalMap<
     }
 
     @Override
-    @NullableDecl
     public V getValue() {
       return value;
     }
@@ -955,7 +944,6 @@ class MapMakerInternalMap<
      * Returns the current value being referenced, or {@code null} if there is none (e.g. because
      * either it got collected, or {@link #clear} was called, or it wasn't set in the first place).
      */
-    @NullableDecl
     V get();
 
     /** Returns the entry which contains this {@link WeakValueReference}. */
@@ -1031,7 +1019,7 @@ class MapMakerInternalMap<
   /** Concrete implementation of {@link WeakValueReference}. */
   static final class WeakValueReferenceImpl<K, V, E extends InternalEntry<K, V, E>>
       extends WeakReference<V> implements WeakValueReference<K, V, E> {
-    @Weak final E entry;
+    final E entry;
 
     WeakValueReferenceImpl(ReferenceQueue<V> queue, V referent, E entry) {
       super(referent, queue);
@@ -1073,7 +1061,6 @@ class MapMakerInternalMap<
    * This method is a convenience for testing. Code should call {@link Segment#copyEntry} directly.
    */
   // Guarded By Segment.this
-  @VisibleForTesting
   E copyEntry(E original, E newNext) {
     int hash = original.getHash();
     return segmentFor(hash).copyEntry(original, newNext);
@@ -1099,7 +1086,6 @@ class MapMakerInternalMap<
    * This method is a convenience for testing. Code should call {@link Segment#getLiveValue}
    * instead.
    */
-  @VisibleForTesting
   boolean isLiveForTesting(InternalEntry<K, V, ?> entry) {
     return segmentFor(entry.getHash()).getLiveValueForTesting(entry) != null;
   }
@@ -1174,7 +1160,7 @@ class MapMakerInternalMap<
      * comments.
      */
 
-    @Weak final MapMakerInternalMap<K, V, E, S> map;
+    final MapMakerInternalMap<K, V, E, S> map;
 
     /**
      * The number of live elements in this segment's region. This does not include unset elements
@@ -1197,7 +1183,7 @@ class MapMakerInternalMap<
     int threshold;
 
     /** The per-segment table. */
-    @NullableDecl volatile AtomicReferenceArray<E> table;
+    volatile AtomicReferenceArray<E> table;
 
     /** The maximum size of this map. MapMaker.UNSET_INT if there is no maximum. */
     final int maxSegmentSize;
@@ -1223,7 +1209,6 @@ class MapMakerInternalMap<
     abstract S self();
 
     /** Drains the reference queues used by this segment, if any. */
-    @GuardedBy("this")
     void maybeDrainReferenceQueues() {}
 
     /** Clears the reference queues used by this segment, if any. */
@@ -1320,7 +1305,6 @@ class MapMakerInternalMap<
     }
 
     /** Unsafely removes the given entry from this segment's hash table. */
-    @CanIgnoreReturnValue
     boolean removeTableEntryForTesting(InternalEntry<K, V, ?> entry) {
       return removeEntryForTesting(castForTesting(entry));
     }
@@ -1333,7 +1317,6 @@ class MapMakerInternalMap<
     /**
      * Unsafely returns the value of the given entry if it's still live, or {@code null} otherwise.
      */
-    @NullableDecl
     V getLiveValueForTesting(InternalEntry<K, V, ?> entry) {
       return getLiveValue(castForTesting(entry));
     }
@@ -1351,7 +1334,6 @@ class MapMakerInternalMap<
       }
     }
 
-    @GuardedBy("this")
     void drainKeyReferenceQueue(ReferenceQueue<K> keyReferenceQueue) {
       Reference<? extends K> ref;
       int i = 0;
@@ -1365,7 +1347,6 @@ class MapMakerInternalMap<
       }
     }
 
-    @GuardedBy("this")
     void drainValueReferenceQueue(ReferenceQueue<V> valueReferenceQueue) {
       Reference<? extends V> ref;
       int i = 0;
@@ -1452,7 +1433,6 @@ class MapMakerInternalMap<
      * This method is a convenience for testing. Code should call {@link
      * MapMakerInternalMap#containsValue} directly.
      */
-    @VisibleForTesting
     boolean containsValue(Object value) {
       try {
         if (count != 0) { // read-volatile
@@ -1535,7 +1515,6 @@ class MapMakerInternalMap<
     }
 
     /** Expands the table if possible. */
-    @GuardedBy("this")
     void expand() {
       AtomicReferenceArray<E> oldTable = table;
       int oldCapacity = oldTable.length();
@@ -1691,7 +1670,6 @@ class MapMakerInternalMap<
       }
     }
 
-    @CanIgnoreReturnValue
     V remove(Object key, int hash) {
       lock();
       try {
@@ -1804,7 +1782,6 @@ class MapMakerInternalMap<
      * @param entry the entry being removed from the table
      * @return the new first entry for the table
      */
-    @GuardedBy("this")
     E removeFromChain(E first, E entry) {
       int newCount = count;
       E newFirst = entry.getNext();
@@ -1821,7 +1798,6 @@ class MapMakerInternalMap<
     }
 
     /** Removes an entry whose key has been garbage collected. */
-    @CanIgnoreReturnValue
     boolean reclaimKey(E entry, int hash) {
       lock();
       try {
@@ -1848,7 +1824,6 @@ class MapMakerInternalMap<
     }
 
     /** Removes an entry whose value has been garbage collected. */
-    @CanIgnoreReturnValue
     boolean reclaimValue(K key, int hash, WeakValueReference<K, V, E> valueReference) {
       lock();
       try {
@@ -1882,7 +1857,6 @@ class MapMakerInternalMap<
     }
 
     /** Clears a value that has not yet been set, and thus does not require count to be modified. */
-    @CanIgnoreReturnValue
     boolean clearValueForTesting(
         K key,
         int hash,
@@ -1914,7 +1888,6 @@ class MapMakerInternalMap<
       }
     }
 
-    @GuardedBy("this")
     boolean removeEntryForTesting(E entry) {
       int hash = entry.getHash();
       int newCount = this.count - 1;
@@ -1948,7 +1921,6 @@ class MapMakerInternalMap<
      * Gets the value from an entry. Returns {@code null} if the entry is invalid or
      * partially-collected.
      */
-    @NullableDecl
     V getLiveValue(E entry) {
       if (entry.getKey() == null) {
         tryDrainReferenceQueues();
@@ -1978,7 +1950,6 @@ class MapMakerInternalMap<
      * Performs routine cleanup prior to executing a write. This should be called every time a write
      * thread acquires the segment lock, immediately after acquiring the lock.
      */
-    @GuardedBy("this")
     void preWriteCleanup() {
       runLockedCleanup();
     }
@@ -2281,17 +2252,14 @@ class MapMakerInternalMap<
     }
   }
 
-  @VisibleForTesting
   Strength keyStrength() {
     return entryHelper.keyStrength();
   }
 
-  @VisibleForTesting
   Strength valueStrength() {
     return entryHelper.valueStrength();
   }
 
-  @VisibleForTesting
   Equivalence<Object> valueEquivalence() {
     return entryHelper.valueStrength().defaultEquivalence();
   }
@@ -2406,7 +2374,6 @@ class MapMakerInternalMap<
     return false;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public V put(K key, V value) {
     checkNotNull(key);
@@ -2415,7 +2382,6 @@ class MapMakerInternalMap<
     return segmentFor(hash).put(key, hash, value, false);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public V putIfAbsent(K key, V value) {
     checkNotNull(key);
@@ -2431,7 +2397,6 @@ class MapMakerInternalMap<
     }
   }
 
-  @CanIgnoreReturnValue
   @Override
   public V remove(@NullableDecl Object key) {
     if (key == null) {
@@ -2441,7 +2406,6 @@ class MapMakerInternalMap<
     return segmentFor(hash).remove(key, hash);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@NullableDecl Object key, @NullableDecl Object value) {
     if (key == null || value == null) {
@@ -2451,7 +2415,6 @@ class MapMakerInternalMap<
     return segmentFor(hash).remove(key, hash, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean replace(K key, @NullableDecl V oldValue, V newValue) {
     checkNotNull(key);
@@ -2463,7 +2426,6 @@ class MapMakerInternalMap<
     return segmentFor(hash).replace(key, hash, oldValue, newValue);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public V replace(K key, V value) {
     checkNotNull(key);
@@ -2479,7 +2441,7 @@ class MapMakerInternalMap<
     }
   }
 
-  @NullableDecl transient Set<K> keySet;
+  transient Set<K> keySet;
 
   @Override
   public Set<K> keySet() {
@@ -2487,7 +2449,7 @@ class MapMakerInternalMap<
     return (ks != null) ? ks : (keySet = new KeySet());
   }
 
-  @NullableDecl transient Collection<V> values;
+  transient Collection<V> values;
 
   @Override
   public Collection<V> values() {
@@ -2495,7 +2457,7 @@ class MapMakerInternalMap<
     return (vs != null) ? vs : (values = new Values());
   }
 
-  @NullableDecl transient Set<Entry<K, V>> entrySet;
+  transient Set<Entry<K, V>> entrySet;
 
   @Override
   public Set<Entry<K, V>> entrySet() {
@@ -2509,11 +2471,11 @@ class MapMakerInternalMap<
 
     int nextSegmentIndex;
     int nextTableIndex;
-    @NullableDecl Segment<K, V, E, S> currentSegment;
-    @NullableDecl AtomicReferenceArray<E> currentTable;
-    @NullableDecl E nextEntry;
-    @NullableDecl WriteThroughEntry nextExternal;
-    @NullableDecl WriteThroughEntry lastReturned;
+    Segment<K, V, E, S> currentSegment;
+    AtomicReferenceArray<E> currentTable;
+    E nextEntry;
+    WriteThroughEntry nextExternal;
+    WriteThroughEntry lastReturned;
 
     HashIterator() {
       nextSegmentIndex = segments.length - 1;
@@ -2684,7 +2646,6 @@ class MapMakerInternalMap<
     }
   }
 
-  @WeakOuter
   final class KeySet extends SafeToArraySet<K> {
 
     @Override
@@ -2718,7 +2679,6 @@ class MapMakerInternalMap<
     }
   }
 
-  @WeakOuter
   final class Values extends AbstractCollection<V> {
 
     @Override
@@ -2760,7 +2720,6 @@ class MapMakerInternalMap<
     }
   }
 
-  @WeakOuter
   final class EntrySet extends SafeToArraySet<Entry<K, V>> {
 
     @Override
diff --git a/android/guava/src/com/google/common/collect/Maps.java b/android/guava/src/com/google/common/collect/Maps.java
index b415f25..e6d1c1f 100644
--- a/android/guava/src/com/google/common/collect/Maps.java
+++ b/android/guava/src/com/google/common/collect/Maps.java
@@ -21,12 +21,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Predicates.compose;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
@@ -36,10 +31,6 @@ import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.collect.MapDifference.ValueDifference;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.Weak;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.Serializable;
 import java.util.AbstractCollection;
 import java.util.AbstractMap;
@@ -64,7 +55,6 @@ import java.util.TreeMap;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@link Map} instances (including instances of {@link
@@ -80,12 +70,11 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Maps {
   private Maps() {}
 
-  private enum EntryFunction implements Function<Entry<?, ?>, @Nullable Object> {
+  private enum EntryFunction implements Function<Entry<?, ?>, Object> {
     KEY {
       @Override
       @CheckForNull
@@ -103,16 +92,16 @@ public final class Maps {
   }
 
   @SuppressWarnings("unchecked")
-  static <K extends @Nullable Object> Function<Entry<K, ?>, K> keyFunction() {
+  static <K extends Object> Function<Entry<K, ?>, K> keyFunction() {
     return (Function) EntryFunction.KEY;
   }
 
   @SuppressWarnings("unchecked")
-  static <V extends @Nullable Object> Function<Entry<?, V>, V> valueFunction() {
+  static <V extends Object> Function<Entry<?, V>, V> valueFunction() {
     return (Function) EntryFunction.VALUE;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> Iterator<K> keyIterator(
+  static <K extends Object, V extends Object> Iterator<K> keyIterator(
       Iterator<Entry<K, V>> entryIterator) {
     return new TransformedIterator<Entry<K, V>, K>(entryIterator) {
       @Override
@@ -123,7 +112,7 @@ public final class Maps {
     };
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> Iterator<V> valueIterator(
+  static <K extends Object, V extends Object> Iterator<V> valueIterator(
       Iterator<Entry<K, V>> entryIterator) {
     return new TransformedIterator<Entry<K, V>, V>(entryIterator) {
       @Override
@@ -145,7 +134,6 @@ public final class Maps {
    * @return an immutable map containing those entries
    * @since 14.0
    */
-  @GwtCompatible(serializable = true)
   public static <K extends Enum<K>, V> ImmutableMap<K, V> immutableEnumMap(
       Map<K, ? extends V> map) {
     if (map instanceof ImmutableEnumMap) {
@@ -187,7 +175,7 @@ public final class Maps {
    *
    * @return a new, empty {@code HashMap}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       HashMap<K, V> newHashMap() {
     return new HashMap<>();
   }
@@ -206,7 +194,7 @@ public final class Maps {
    * @param map the mappings to be placed in the new map
    * @return a new {@code HashMap} initialized with the mappings from {@code map}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashMap<K, V> newHashMap(
+  public static <K extends Object, V extends Object> HashMap<K, V> newHashMap(
       Map<? extends K, ? extends V> map) {
     return new HashMap<>(map);
   }
@@ -222,7 +210,7 @@ public final class Maps {
    *     without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       HashMap<K, V> newHashMapWithExpectedSize(int expectedSize) {
     return new HashMap<>(capacity(expectedSize));
   }
@@ -256,7 +244,7 @@ public final class Maps {
    *
    * @return a new, empty {@code LinkedHashMap}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMap<K, V> newLinkedHashMap() {
     return new LinkedHashMap<>();
   }
@@ -274,7 +262,7 @@ public final class Maps {
    * @param map the mappings to be placed in the new map
    * @return a new, {@code LinkedHashMap} initialized with the mappings from {@code map}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMap<K, V> newLinkedHashMap(Map<? extends K, ? extends V> map) {
     return new LinkedHashMap<>(map);
   }
@@ -291,7 +279,7 @@ public final class Maps {
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    * @since 19.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMap<K, V> newLinkedHashMapWithExpectedSize(int expectedSize) {
     return new LinkedHashMap<>(capacity(expectedSize));
   }
@@ -317,7 +305,7 @@ public final class Maps {
    *
    * @return a new, empty {@code TreeMap}
    */
-  public static <K extends Comparable, V extends @Nullable Object> TreeMap<K, V> newTreeMap() {
+  public static <K extends Comparable, V extends Object> TreeMap<K, V> newTreeMap() {
     return new TreeMap<>();
   }
 
@@ -337,7 +325,7 @@ public final class Maps {
    * @return a new {@code TreeMap} initialized with the mappings from {@code map} and using the
    *     comparator of {@code map}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> TreeMap<K, V> newTreeMap(
+  public static <K extends Object, V extends Object> TreeMap<K, V> newTreeMap(
       SortedMap<K, ? extends V> map) {
     return new TreeMap<>(map);
   }
@@ -355,7 +343,7 @@ public final class Maps {
    * @param comparator the comparator to sort the keys with
    * @return a new, empty {@code TreeMap}
    */
-  public static <C extends @Nullable Object, K extends C, V extends @Nullable Object>
+  public static <C extends Object, K extends C, V extends Object>
       TreeMap<K, V> newTreeMap(@CheckForNull Comparator<C> comparator) {
     // Ideally, the extra type parameter "C" shouldn't be necessary. It is a
     // work-around of a compiler type inference quirk that prevents the
@@ -371,7 +359,7 @@ public final class Maps {
    * @param type the key type for this map
    * @return a new, empty {@code EnumMap}
    */
-  public static <K extends Enum<K>, V extends @Nullable Object> EnumMap<K, V> newEnumMap(
+  public static <K extends Enum<K>, V extends Object> EnumMap<K, V> newEnumMap(
       Class<K> type) {
     return new EnumMap<>(checkNotNull(type));
   }
@@ -388,7 +376,7 @@ public final class Maps {
    * @throws IllegalArgumentException if {@code m} is not an {@code EnumMap} instance and contains
    *     no mappings
    */
-  public static <K extends Enum<K>, V extends @Nullable Object> EnumMap<K, V> newEnumMap(
+  public static <K extends Enum<K>, V extends Object> EnumMap<K, V> newEnumMap(
       Map<K, ? extends V> map) {
     return new EnumMap<>(map);
   }
@@ -402,7 +390,7 @@ public final class Maps {
    *
    * @return a new, empty {@code IdentityHashMap}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       IdentityHashMap<K, V> newIdentityHashMap() {
     return new IdentityHashMap<>();
   }
@@ -423,7 +411,7 @@ public final class Maps {
    * @return the difference between the two maps
    */
   @SuppressWarnings("unchecked")
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       MapDifference<K, V> difference(
           Map<? extends K, ? extends V> left, Map<? extends K, ? extends V> right) {
     if (left instanceof SortedMap) {
@@ -486,7 +474,7 @@ public final class Maps {
    * (Vaguely related: Another thing we could consider is an overload that accepts a BiPredicate:
    * https://github.com/google/guava/issues/3913)
    */
-  public static <K extends @Nullable Object, V> MapDifference<K, V> difference(
+  public static <K extends Object, V> MapDifference<K, V> difference(
       Map<? extends K, ? extends V> left,
       Map<? extends K, ? extends V> right,
       Equivalence<? super V> valueEquivalence) {
@@ -517,7 +505,7 @@ public final class Maps {
    * @return the difference between the two maps
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedMapDifference<K, V> difference(
           SortedMap<K, ? extends V> left, Map<? extends K, ? extends V> right) {
     checkNotNull(left);
@@ -532,7 +520,7 @@ public final class Maps {
     return new SortedMapDifferenceImpl<>(onlyOnLeft, onlyOnRight, onBoth, differences);
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> void doDifference(
+  private static <K extends Object, V extends Object> void doDifference(
       Map<? extends K, ? extends V> left,
       Map<? extends K, ? extends V> right,
       Equivalence<? super V> valueEquivalence,
@@ -566,7 +554,7 @@ public final class Maps {
     }
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> unmodifiableMap(
+  private static <K extends Object, V extends Object> Map<K, V> unmodifiableMap(
       Map<K, ? extends V> map) {
     if (map instanceof SortedMap) {
       return Collections.unmodifiableSortedMap((SortedMap<K, ? extends V>) map);
@@ -575,7 +563,7 @@ public final class Maps {
     }
   }
 
-  static class MapDifferenceImpl<K extends @Nullable Object, V extends @Nullable Object>
+  static class MapDifferenceImpl<K extends Object, V extends Object>
       implements MapDifference<K, V> {
     final Map<K, V> onlyOnLeft;
     final Map<K, V> onlyOnRight;
@@ -659,12 +647,12 @@ public final class Maps {
     }
   }
 
-  static class ValueDifferenceImpl<V extends @Nullable Object>
+  static class ValueDifferenceImpl<V extends Object>
       implements MapDifference.ValueDifference<V> {
     @ParametricNullness private final V left;
     @ParametricNullness private final V right;
 
-    static <V extends @Nullable Object> ValueDifference<V> create(
+    static <V extends Object> ValueDifference<V> create(
         @ParametricNullness V left, @ParametricNullness V right) {
       return new ValueDifferenceImpl<V>(left, right);
     }
@@ -707,7 +695,7 @@ public final class Maps {
     }
   }
 
-  static class SortedMapDifferenceImpl<K extends @Nullable Object, V extends @Nullable Object>
+  static class SortedMapDifferenceImpl<K extends Object, V extends Object>
       extends MapDifferenceImpl<K, V> implements SortedMapDifference<K, V> {
     SortedMapDifferenceImpl(
         SortedMap<K, V> onlyOnLeft,
@@ -744,7 +732,7 @@ public final class Maps {
    * ugly type-casting in one place.
    */
   @SuppressWarnings("unchecked")
-  static <E extends @Nullable Object> Comparator<? super E> orNaturalOrder(
+  static <E extends Object> Comparator<? super E> orNaturalOrder(
       @CheckForNull Comparator<? super E> comparator) {
     if (comparator != null) { // can't use ? : because of javac bug 5080917
       return comparator;
@@ -776,7 +764,7 @@ public final class Maps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> asMap(
+  public static <K extends Object, V extends Object> Map<K, V> asMap(
       Set<K> set, Function<? super K, V> function) {
     return new AsMapView<>(set, function);
   }
@@ -804,7 +792,7 @@ public final class Maps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> SortedMap<K, V> asMap(
+  public static <K extends Object, V extends Object> SortedMap<K, V> asMap(
       SortedSet<K> set, Function<? super K, V> function) {
     return new SortedAsMapView<>(set, function);
   }
@@ -832,13 +820,13 @@ public final class Maps {
    *
    * @since 14.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object> NavigableMap<K, V> asMap(
+  // NavigableMap
+  public static <K extends Object, V extends Object> NavigableMap<K, V> asMap(
       NavigableSet<K> set, Function<? super K, V> function) {
     return new NavigableAsMapView<>(set, function);
   }
 
-  private static class AsMapView<K extends @Nullable Object, V extends @Nullable Object>
+  private static class AsMapView<K extends Object, V extends Object>
       extends ViewCachingAbstractMap<K, V> {
 
     private final Set<K> set;
@@ -904,7 +892,6 @@ public final class Maps {
 
     @Override
     protected Set<Entry<K, V>> createEntrySet() {
-      @WeakOuter
       class EntrySetImpl extends EntrySet<K, V> {
         @Override
         Map<K, V> map() {
@@ -920,7 +907,7 @@ public final class Maps {
     }
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       Iterator<Entry<K, V>> asMapEntryIterator(Set<K> set, final Function<? super K, V> function) {
     return new TransformedIterator<K, Entry<K, V>>(set.iterator()) {
       @Override
@@ -930,7 +917,7 @@ public final class Maps {
     };
   }
 
-  private static class SortedAsMapView<K extends @Nullable Object, V extends @Nullable Object>
+  private static class SortedAsMapView<K extends Object, V extends Object>
       extends AsMapView<K, V> implements SortedMap<K, V> {
 
     SortedAsMapView(SortedSet<K> set, Function<? super K, V> function) {
@@ -981,9 +968,9 @@ public final class Maps {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   private static final class NavigableAsMapView<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends AbstractNavigableMap<K, V> {
     /*
      * Using AbstractNavigableMap is simpler than extending SortedAsMapView and rewriting all the
@@ -1066,7 +1053,7 @@ public final class Maps {
     }
   }
 
-  private static <E extends @Nullable Object> Set<E> removeOnlySet(final Set<E> set) {
+  private static <E extends Object> Set<E> removeOnlySet(final Set<E> set) {
     return new ForwardingSet<E>() {
       @Override
       protected Set<E> delegate() {
@@ -1085,7 +1072,7 @@ public final class Maps {
     };
   }
 
-  private static <E extends @Nullable Object> SortedSet<E> removeOnlySortedSet(
+  private static <E extends Object> SortedSet<E> removeOnlySortedSet(
       final SortedSet<E> set) {
     return new ForwardingSortedSet<E>() {
       @Override
@@ -1121,8 +1108,8 @@ public final class Maps {
     };
   }
 
-  @GwtIncompatible // NavigableSet
-  private static <E extends @Nullable Object> NavigableSet<E> removeOnlyNavigableSet(
+  // NavigableSet
+  private static <E extends Object> NavigableSet<E> removeOnlyNavigableSet(
       final NavigableSet<E> set) {
     return new ForwardingNavigableSet<E>() {
       @Override
@@ -1257,7 +1244,6 @@ public final class Maps {
    * @throws NullPointerException if any element of {@code values} is {@code null}, or if {@code
    *     keyFunction} produces {@code null} for any value
    */
-  @CanIgnoreReturnValue
   public static <K, V> ImmutableMap<K, V> uniqueIndex(
       Iterable<V> values, Function<? super V, K> keyFunction) {
     // TODO(lowasser): consider presizing the builder if values is a Collection
@@ -1293,7 +1279,6 @@ public final class Maps {
    *     keyFunction} produces {@code null} for any value
    * @since 10.0
    */
-  @CanIgnoreReturnValue
   public static <K, V> ImmutableMap<K, V> uniqueIndex(
       Iterator<V> values, Function<? super V, K> keyFunction) {
     checkNotNull(keyFunction);
@@ -1321,7 +1306,7 @@ public final class Maps {
    * @throws ClassCastException if any key in {@code properties} is not a {@code String}
    * @throws NullPointerException if any key or value in {@code properties} is null
    */
-  @GwtIncompatible // java.util.Properties
+  // java.util.Properties
   public static ImmutableMap<String, String> fromProperties(Properties properties) {
     ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
 
@@ -1371,8 +1356,7 @@ public final class Maps {
    * @param key the key to be associated with the returned entry
    * @param value the value to be associated with the returned entry
    */
-  @GwtCompatible(serializable = true)
-  public static <K extends @Nullable Object, V extends @Nullable Object> Entry<K, V> immutableEntry(
+  public static <K extends Object, V extends Object> Entry<K, V> immutableEntry(
       @ParametricNullness K key, @ParametricNullness V value) {
     return new ImmutableEntry<>(key, value);
   }
@@ -1385,7 +1369,7 @@ public final class Maps {
    * @param entrySet the entries for which to return an unmodifiable view
    * @return an unmodifiable view of the entries
    */
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       Set<Entry<K, V>> unmodifiableEntrySet(Set<Entry<K, V>> entrySet) {
     return new UnmodifiableEntrySet<>(Collections.unmodifiableSet(entrySet));
   }
@@ -1399,7 +1383,7 @@ public final class Maps {
    * @param entry the entry for which to return an unmodifiable view
    * @return an unmodifiable view of the entry
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> Entry<K, V> unmodifiableEntry(
+  static <K extends Object, V extends Object> Entry<K, V> unmodifiableEntry(
       final Entry<? extends K, ? extends V> entry) {
     checkNotNull(entry);
     return new AbstractMapEntry<K, V>() {
@@ -1417,7 +1401,7 @@ public final class Maps {
     };
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       UnmodifiableIterator<Entry<K, V>> unmodifiableEntryIterator(
           final Iterator<Entry<K, V>> entryIterator) {
     return new UnmodifiableIterator<Entry<K, V>>() {
@@ -1434,7 +1418,7 @@ public final class Maps {
   }
 
   /** @see Multimaps#unmodifiableEntries */
-  static class UnmodifiableEntries<K extends @Nullable Object, V extends @Nullable Object>
+  static class UnmodifiableEntries<K extends Object, V extends Object>
       extends ForwardingCollection<Entry<K, V>> {
     private final Collection<Entry<K, V>> entries;
 
@@ -1468,13 +1452,13 @@ public final class Maps {
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return standardToArray(array);
     }
   }
 
   /** @see Maps#unmodifiableEntrySet(Set) */
-  static class UnmodifiableEntrySet<K extends @Nullable Object, V extends @Nullable Object>
+  static class UnmodifiableEntrySet<K extends Object, V extends Object>
       extends UnmodifiableEntries<K, V> implements Set<Entry<K, V>> {
     UnmodifiableEntrySet(Set<Entry<K, V>> entries) {
       super(entries);
@@ -1582,7 +1566,7 @@ public final class Maps {
    * @param bimap the bimap to be wrapped in a synchronized view
    * @return a synchronized view of the specified bimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       BiMap<K, V> synchronizedBiMap(BiMap<K, V> bimap) {
     return Synchronized.biMap(bimap, null);
   }
@@ -1598,17 +1582,17 @@ public final class Maps {
    * @param bimap the bimap for which an unmodifiable view is to be returned
    * @return an unmodifiable view of the specified bimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       BiMap<K, V> unmodifiableBiMap(BiMap<? extends K, ? extends V> bimap) {
     return new UnmodifiableBiMap<>(bimap, null);
   }
 
   /** @see Maps#unmodifiableBiMap(BiMap) */
-  private static class UnmodifiableBiMap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class UnmodifiableBiMap<K extends Object, V extends Object>
       extends ForwardingMap<K, V> implements BiMap<K, V>, Serializable {
     final Map<K, V> unmodifiableMap;
     final BiMap<? extends K, ? extends V> delegate;
-    @RetainedWith @CheckForNull BiMap<V, K> inverse;
+    @CheckForNull BiMap<V, K> inverse;
     @CheckForNull transient Set<V> values;
 
     UnmodifiableBiMap(BiMap<? extends K, ? extends V> delegate, @CheckForNull BiMap<V, K> inverse) {
@@ -1679,7 +1663,7 @@ public final class Maps {
    * view, copy the returned map into a new map of your choosing.
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       Map<K, V2> transformValues(Map<K, V1> fromMap, Function<? super V1, V2> function) {
     return transformEntries(fromMap, asEntryTransformer(function));
   }
@@ -1721,7 +1705,7 @@ public final class Maps {
    * @since 11.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       SortedMap<K, V2> transformValues(
           SortedMap<K, V1> fromMap, Function<? super V1, V2> function) {
     return transformEntries(fromMap, asEntryTransformer(function));
@@ -1765,9 +1749,9 @@ public final class Maps {
    *
    * @since 13.0
    */
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       NavigableMap<K, V2> transformValues(
           NavigableMap<K, V1> fromMap, Function<? super V1, V2> function) {
     return transformEntries(fromMap, asEntryTransformer(function));
@@ -1821,7 +1805,7 @@ public final class Maps {
    * @since 7.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       Map<K, V2> transformEntries(
           Map<K, V1> fromMap, EntryTransformer<? super K, ? super V1, V2> transformer) {
     return new TransformedEntriesMap<>(fromMap, transformer);
@@ -1875,7 +1859,7 @@ public final class Maps {
    * @since 11.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       SortedMap<K, V2> transformEntries(
           SortedMap<K, V1> fromMap, EntryTransformer<? super K, ? super V1, V2> transformer) {
     return new TransformedEntriesSortedMap<>(fromMap, transformer);
@@ -1929,9 +1913,9 @@ public final class Maps {
    *
    * @since 13.0
    */
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       NavigableMap<K, V2> transformEntries(
           NavigableMap<K, V1> fromMap, EntryTransformer<? super K, ? super V1, V2> transformer) {
     return new TransformedEntriesNavigableMap<>(fromMap, transformer);
@@ -1947,7 +1931,7 @@ public final class Maps {
    * @since 7.0
    */
   public interface EntryTransformer<
-      K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object> {
+      K extends Object, V1 extends Object, V2 extends Object> {
     /**
      * Determines an output value based on a key-value pair. This method is <i>generally
      * expected</i>, but not absolutely required, to have the following properties:
@@ -1966,7 +1950,7 @@ public final class Maps {
   }
 
   /** Views a function as an entry transformer that ignores the entry key. */
-  static <K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+  static <K extends Object, V1 extends Object, V2 extends Object>
       EntryTransformer<K, V1, V2> asEntryTransformer(final Function<? super V1, V2> function) {
     checkNotNull(function);
     return new EntryTransformer<K, V1, V2>() {
@@ -1978,7 +1962,7 @@ public final class Maps {
     };
   }
 
-  static <K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+  static <K extends Object, V1 extends Object, V2 extends Object>
       Function<V1, V2> asValueToValueFunction(
           final EntryTransformer<? super K, V1, V2> transformer, @ParametricNullness final K key) {
     checkNotNull(transformer);
@@ -1992,7 +1976,7 @@ public final class Maps {
   }
 
   /** Views an entry transformer as a function from {@code Entry} to values. */
-  static <K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+  static <K extends Object, V1 extends Object, V2 extends Object>
       Function<Entry<K, V1>, V2> asEntryToValueFunction(
           final EntryTransformer<? super K, ? super V1, V2> transformer) {
     checkNotNull(transformer);
@@ -2006,7 +1990,7 @@ public final class Maps {
   }
 
   /** Returns a view of an entry transformed by the specified transformer. */
-  static <V2 extends @Nullable Object, K extends @Nullable Object, V1 extends @Nullable Object>
+  static <V2 extends Object, K extends Object, V1 extends Object>
       Entry<K, V2> transformEntry(
           final EntryTransformer<? super K, ? super V1, V2> transformer, final Entry<K, V1> entry) {
     checkNotNull(transformer);
@@ -2027,7 +2011,7 @@ public final class Maps {
   }
 
   /** Views an entry transformer as a function from entries to entries. */
-  static <K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+  static <K extends Object, V1 extends Object, V2 extends Object>
       Function<Entry<K, V1>, Entry<K, V2>> asEntryToEntryFunction(
           final EntryTransformer<? super K, ? super V1, V2> transformer) {
     checkNotNull(transformer);
@@ -2040,7 +2024,7 @@ public final class Maps {
   }
 
   static class TransformedEntriesMap<
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       extends IteratorBasedAbstractMap<K, V2> {
     final Map<K, V1> fromMap;
     final EntryTransformer<? super K, ? super V1, V2> transformer;
@@ -2108,7 +2092,7 @@ public final class Maps {
   }
 
   static class TransformedEntriesSortedMap<
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       extends TransformedEntriesMap<K, V1, V2> implements SortedMap<K, V2> {
 
     protected SortedMap<K, V1> fromMap() {
@@ -2154,9 +2138,9 @@ public final class Maps {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   private static class TransformedEntriesNavigableMap<
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       extends TransformedEntriesSortedMap<K, V1, V2> implements NavigableMap<K, V2> {
 
     TransformedEntriesNavigableMap(
@@ -2297,12 +2281,12 @@ public final class Maps {
     }
   }
 
-  static <K extends @Nullable Object> Predicate<Entry<K, ?>> keyPredicateOnEntries(
+  static <K extends Object> Predicate<Entry<K, ?>> keyPredicateOnEntries(
       Predicate<? super K> keyPredicate) {
     return compose(keyPredicate, Maps.<K>keyFunction());
   }
 
-  static <V extends @Nullable Object> Predicate<Entry<?, V>> valuePredicateOnEntries(
+  static <V extends Object> Predicate<Entry<?, V>> valuePredicateOnEntries(
       Predicate<? super V> valuePredicate) {
     return compose(valuePredicate, Maps.<V>valueFunction());
   }
@@ -2330,7 +2314,7 @@ public final class Maps {
    * {@link Predicate#apply}. Do not provide a predicate such as {@code
    * Predicates.instanceOf(ArrayList.class)}, which is inconsistent with equals.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> filterKeys(
+  public static <K extends Object, V extends Object> Map<K, V> filterKeys(
       Map<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     checkNotNull(keyPredicate);
     Predicate<Entry<K, ?>> entryPredicate = keyPredicateOnEntries(keyPredicate);
@@ -2365,7 +2349,7 @@ public final class Maps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> SortedMap<K, V> filterKeys(
+  public static <K extends Object, V extends Object> SortedMap<K, V> filterKeys(
       SortedMap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     // TODO(lowasser): Return a subclass of Maps.FilteredKeyMap for slightly better
     // performance.
@@ -2398,8 +2382,8 @@ public final class Maps {
    *
    * @since 14.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Object, V extends Object>
       NavigableMap<K, V> filterKeys(
           NavigableMap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     // TODO(lowasser): Return a subclass of Maps.FilteredKeyMap for slightly better
@@ -2431,7 +2415,7 @@ public final class Maps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> BiMap<K, V> filterKeys(
+  public static <K extends Object, V extends Object> BiMap<K, V> filterKeys(
       BiMap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     checkNotNull(keyPredicate);
     return filterEntries(unfiltered, Maps.<K>keyPredicateOnEntries(keyPredicate));
@@ -2460,7 +2444,7 @@ public final class Maps {
    * at {@link Predicate#apply}. Do not provide a predicate such as {@code
    * Predicates.instanceOf(ArrayList.class)}, which is inconsistent with equals.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> filterValues(
+  public static <K extends Object, V extends Object> Map<K, V> filterValues(
       Map<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
   }
@@ -2491,7 +2475,7 @@ public final class Maps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedMap<K, V> filterValues(
           SortedMap<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
@@ -2523,8 +2507,8 @@ public final class Maps {
    *
    * @since 14.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Object, V extends Object>
       NavigableMap<K, V> filterValues(
           NavigableMap<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
@@ -2557,7 +2541,7 @@ public final class Maps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> BiMap<K, V> filterValues(
+  public static <K extends Object, V extends Object> BiMap<K, V> filterValues(
       BiMap<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
   }
@@ -2586,7 +2570,7 @@ public final class Maps {
    * <p><b>Warning:</b> {@code entryPredicate} must be <i>consistent with equals</i>, as documented
    * at {@link Predicate#apply}.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> filterEntries(
+  public static <K extends Object, V extends Object> Map<K, V> filterEntries(
       Map<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(entryPredicate);
     return (unfiltered instanceof AbstractFilteredMap)
@@ -2620,7 +2604,7 @@ public final class Maps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedMap<K, V> filterEntries(
           SortedMap<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(entryPredicate);
@@ -2655,8 +2639,8 @@ public final class Maps {
    *
    * @since 14.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Object, V extends Object>
       NavigableMap<K, V> filterEntries(
           NavigableMap<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(entryPredicate);
@@ -2692,7 +2676,7 @@ public final class Maps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> BiMap<K, V> filterEntries(
+  public static <K extends Object, V extends Object> BiMap<K, V> filterEntries(
       BiMap<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(unfiltered);
     checkNotNull(entryPredicate);
@@ -2705,7 +2689,7 @@ public final class Maps {
    * Support {@code clear()}, {@code removeAll()}, and {@code retainAll()} when filtering a filtered
    * map.
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> filterFiltered(
+  private static <K extends Object, V extends Object> Map<K, V> filterFiltered(
       AbstractFilteredMap<K, V> map, Predicate<? super Entry<K, V>> entryPredicate) {
     return new FilteredEntryMap<>(
         map.unfiltered, Predicates.<Entry<K, V>>and(map.predicate, entryPredicate));
@@ -2715,7 +2699,7 @@ public final class Maps {
    * Support {@code clear()}, {@code removeAll()}, and {@code retainAll()} when filtering a filtered
    * sorted map.
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       SortedMap<K, V> filterFiltered(
           FilteredEntrySortedMap<K, V> map, Predicate<? super Entry<K, V>> entryPredicate) {
     Predicate<Entry<K, V>> predicate = Predicates.<Entry<K, V>>and(map.predicate, entryPredicate);
@@ -2726,8 +2710,8 @@ public final class Maps {
    * Support {@code clear()}, {@code removeAll()}, and {@code retainAll()} when filtering a filtered
    * navigable map.
    */
-  @GwtIncompatible // NavigableMap
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  private static <K extends Object, V extends Object>
       NavigableMap<K, V> filterFiltered(
           FilteredEntryNavigableMap<K, V> map, Predicate<? super Entry<K, V>> entryPredicate) {
     Predicate<Entry<K, V>> predicate =
@@ -2739,7 +2723,7 @@ public final class Maps {
    * Support {@code clear()}, {@code removeAll()}, and {@code retainAll()} when filtering a filtered
    * map.
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       BiMap<K, V> filterFiltered(
           FilteredEntryBiMap<K, V> map, Predicate<? super Entry<K, V>> entryPredicate) {
     Predicate<Entry<K, V>> predicate = Predicates.<Entry<K, V>>and(map.predicate, entryPredicate);
@@ -2747,7 +2731,7 @@ public final class Maps {
   }
 
   private abstract static class AbstractFilteredMap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends ViewCachingAbstractMap<K, V> {
     final Map<K, V> unfiltered;
     final Predicate<? super Entry<K, V>> predicate;
@@ -2810,7 +2794,7 @@ public final class Maps {
   }
 
   private static final class FilteredMapValues<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends Maps.Values<K, V> {
     final Map<K, V> unfiltered;
     final Predicate<? super Entry<K, V>> predicate;
@@ -2864,19 +2848,19 @@ public final class Maps {
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       // creating an ArrayList so filtering happens once
       return Lists.newArrayList(iterator()).toArray();
     }
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return Lists.newArrayList(iterator()).toArray(array);
     }
   }
 
-  private static class FilteredKeyMap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class FilteredKeyMap<K extends Object, V extends Object>
       extends AbstractFilteredMap<K, V> {
     final Predicate<? super K> keyPredicate;
 
@@ -2907,7 +2891,7 @@ public final class Maps {
     }
   }
 
-  static class FilteredEntryMap<K extends @Nullable Object, V extends @Nullable Object>
+  static class FilteredEntryMap<K extends Object, V extends Object>
       extends AbstractFilteredMap<K, V> {
     /**
      * Entries in this set satisfy the predicate, but they don't validate the input to {@code
@@ -2925,7 +2909,6 @@ public final class Maps {
       return new EntrySet();
     }
 
-    @WeakOuter
     private class EntrySet extends ForwardingSet<Entry<K, V>> {
       @Override
       protected Set<Entry<K, V>> delegate() {
@@ -2960,7 +2943,7 @@ public final class Maps {
       return new KeySet();
     }
 
-    static <K extends @Nullable Object, V extends @Nullable Object> boolean removeAllKeys(
+    static <K extends Object, V extends Object> boolean removeAllKeys(
         Map<K, V> map, Predicate<? super Entry<K, V>> entryPredicate, Collection<?> keyCollection) {
       Iterator<Entry<K, V>> entryItr = map.entrySet().iterator();
       boolean result = false;
@@ -2974,7 +2957,7 @@ public final class Maps {
       return result;
     }
 
-    static <K extends @Nullable Object, V extends @Nullable Object> boolean retainAllKeys(
+    static <K extends Object, V extends Object> boolean retainAllKeys(
         Map<K, V> map, Predicate<? super Entry<K, V>> entryPredicate, Collection<?> keyCollection) {
       Iterator<Entry<K, V>> entryItr = map.entrySet().iterator();
       boolean result = false;
@@ -2988,7 +2971,6 @@ public final class Maps {
       return result;
     }
 
-    @WeakOuter
     class KeySet extends Maps.KeySet<K, V> {
       KeySet() {
         super(FilteredEntryMap.this);
@@ -3014,21 +2996,21 @@ public final class Maps {
       }
 
       @Override
-      public @Nullable Object[] toArray() {
+      public Object[] toArray() {
         // creating an ArrayList so filtering happens once
         return Lists.newArrayList(iterator()).toArray();
       }
 
       @Override
       @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-      public <T extends @Nullable Object> T[] toArray(T[] array) {
+      public <T extends Object> T[] toArray(T[] array) {
         return Lists.newArrayList(iterator()).toArray(array);
       }
     }
   }
 
   private static class FilteredEntrySortedMap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends FilteredEntryMap<K, V> implements SortedMap<K, V> {
 
     FilteredEntrySortedMap(
@@ -3050,7 +3032,6 @@ public final class Maps {
       return new SortedKeySet();
     }
 
-    @WeakOuter
     class SortedKeySet extends KeySet implements SortedSet<K> {
       @Override
       @CheckForNull
@@ -3131,9 +3112,9 @@ public final class Maps {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   private static class FilteredEntryNavigableMap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends AbstractNavigableMap<K, V> {
     /*
      * It's less code to extend AbstractNavigableMap and forward the filtering logic to
@@ -3274,11 +3255,11 @@ public final class Maps {
     }
   }
 
-  static final class FilteredEntryBiMap<K extends @Nullable Object, V extends @Nullable Object>
+  static final class FilteredEntryBiMap<K extends Object, V extends Object>
       extends FilteredEntryMap<K, V> implements BiMap<K, V> {
-    @RetainedWith private final BiMap<V, K> inverse;
+    private final BiMap<V, K> inverse;
 
-    private static <K extends @Nullable Object, V extends @Nullable Object>
+    private static <K extends Object, V extends Object>
         Predicate<Entry<V, K>> inversePredicate(
             final Predicate<? super Entry<K, V>> forwardPredicate) {
       return new Predicate<Entry<V, K>>() {
@@ -3341,8 +3322,8 @@ public final class Maps {
    * @return an unmodifiable view of the specified navigable map
    * @since 12.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Object, V extends Object>
       NavigableMap<K, V> unmodifiableNavigableMap(NavigableMap<K, ? extends V> map) {
     checkNotNull(map);
     if (map instanceof UnmodifiableNavigableMap) {
@@ -3355,13 +3336,13 @@ public final class Maps {
   }
 
   @CheckForNull
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       Entry<K, V> unmodifiableOrNull(@CheckForNull Entry<K, ? extends V> entry) {
     return (entry == null) ? null : Maps.unmodifiableEntry(entry);
   }
 
-  @GwtIncompatible // NavigableMap
-  static class UnmodifiableNavigableMap<K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  static class UnmodifiableNavigableMap<K extends Object, V extends Object>
       extends ForwardingSortedMap<K, V> implements NavigableMap<K, V>, Serializable {
     private final NavigableMap<K, ? extends V> delegate;
 
@@ -3562,8 +3543,8 @@ public final class Maps {
    * @return a synchronized view of the specified navigable map.
    * @since 13.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Object, V extends Object>
       NavigableMap<K, V> synchronizedNavigableMap(NavigableMap<K, V> navigableMap) {
     return Synchronized.navigableMap(navigableMap);
   }
@@ -3572,9 +3553,8 @@ public final class Maps {
    * {@code AbstractMap} extension that makes it easy to cache customized keySet, values, and
    * entrySet views.
    */
-  @GwtCompatible
   abstract static class ViewCachingAbstractMap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends AbstractMap<K, V> {
     /**
      * Creates the entry set to be returned by {@link #entrySet()}. This method is invoked at most
@@ -3616,7 +3596,7 @@ public final class Maps {
   }
 
   abstract static class IteratorBasedAbstractMap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends AbstractMap<K, V> {
     @Override
     public abstract int size();
@@ -3649,7 +3629,7 @@ public final class Maps {
    * NullPointerException}.
    */
   @CheckForNull
-  static <V extends @Nullable Object> V safeGet(Map<?, V> map, @CheckForNull Object key) {
+  static <V extends Object> V safeGet(Map<?, V> map, @CheckForNull Object key) {
     checkNotNull(map);
     try {
       return map.get(key);
@@ -3676,7 +3656,7 @@ public final class Maps {
    * NullPointerException}.
    */
   @CheckForNull
-  static <V extends @Nullable Object> V safeRemove(Map<?, V> map, @CheckForNull Object key) {
+  static <V extends Object> V safeRemove(Map<?, V> map, @CheckForNull Object key) {
     checkNotNull(map);
     try {
       return map.remove(key);
@@ -3707,7 +3687,7 @@ public final class Maps {
    * @param o the object that might be contained in {@code c}
    * @return {@code true} if {@code c} contains {@code o}
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> boolean containsEntryImpl(
+  static <K extends Object, V extends Object> boolean containsEntryImpl(
       Collection<Entry<K, V>> c, @CheckForNull Object o) {
     if (!(o instanceof Entry)) {
       return false;
@@ -3726,7 +3706,7 @@ public final class Maps {
    * @param o the object to remove from {@code c}
    * @return {@code true} if {@code c} was changed
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> boolean removeEntryImpl(
+  static <K extends Object, V extends Object> boolean removeEntryImpl(
       Collection<Entry<K, V>> c, @CheckForNull Object o) {
     if (!(o instanceof Entry)) {
       return false;
@@ -3760,16 +3740,16 @@ public final class Maps {
   }
 
   /** An implementation of {@link Map#putAll}. */
-  static <K extends @Nullable Object, V extends @Nullable Object> void putAllImpl(
+  static <K extends Object, V extends Object> void putAllImpl(
       Map<K, V> self, Map<? extends K, ? extends V> map) {
     for (Entry<? extends K, ? extends V> entry : map.entrySet()) {
       self.put(entry.getKey(), entry.getValue());
     }
   }
 
-  static class KeySet<K extends @Nullable Object, V extends @Nullable Object>
+  static class KeySet<K extends Object, V extends Object>
       extends Sets.ImprovedAbstractSet<K> {
-    @Weak final Map<K, V> map;
+    final Map<K, V> map;
 
     KeySet(Map<K, V> map) {
       this.map = checkNotNull(map);
@@ -3815,16 +3795,16 @@ public final class Maps {
   }
 
   @CheckForNull
-  static <K extends @Nullable Object> K keyOrNull(@CheckForNull Entry<K, ?> entry) {
+  static <K extends Object> K keyOrNull(@CheckForNull Entry<K, ?> entry) {
     return (entry == null) ? null : entry.getKey();
   }
 
   @CheckForNull
-  static <V extends @Nullable Object> V valueOrNull(@CheckForNull Entry<?, V> entry) {
+  static <V extends Object> V valueOrNull(@CheckForNull Entry<?, V> entry) {
     return (entry == null) ? null : entry.getValue();
   }
 
-  static class SortedKeySet<K extends @Nullable Object, V extends @Nullable Object>
+  static class SortedKeySet<K extends Object, V extends Object>
       extends KeySet<K, V> implements SortedSet<K> {
     SortedKeySet(SortedMap<K, V> map) {
       super(map);
@@ -3869,8 +3849,8 @@ public final class Maps {
     }
   }
 
-  @GwtIncompatible // NavigableMap
-  static class NavigableKeySet<K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  static class NavigableKeySet<K extends Object, V extends Object>
       extends SortedKeySet<K, V> implements NavigableSet<K> {
     NavigableKeySet(NavigableMap<K, V> map) {
       super(map);
@@ -3962,9 +3942,9 @@ public final class Maps {
     }
   }
 
-  static class Values<K extends @Nullable Object, V extends @Nullable Object>
+  static class Values<K extends Object, V extends Object>
       extends AbstractCollection<V> {
-    @Weak final Map<K, V> map;
+    final Map<K, V> map;
 
     Values(Map<K, V> map) {
       this.map = checkNotNull(map);
@@ -4045,7 +4025,7 @@ public final class Maps {
     }
   }
 
-  abstract static class EntrySet<K extends @Nullable Object, V extends @Nullable Object>
+  abstract static class EntrySet<K extends Object, V extends Object>
       extends Sets.ImprovedAbstractSet<Entry<K, V>> {
     abstract Map<K, V> map();
 
@@ -4104,7 +4084,7 @@ public final class Maps {
         return super.retainAll(checkNotNull(c));
       } catch (UnsupportedOperationException e) {
         // if the iterators don't support remove
-        Set<@Nullable Object> keys = Sets.newHashSetWithExpectedSize(c.size());
+        Set<Object> keys = Sets.newHashSetWithExpectedSize(c.size());
         for (Object o : c) {
           /*
            * `o instanceof Entry` is guaranteed by `contains`, but we check it here to satisfy our
@@ -4120,8 +4100,8 @@ public final class Maps {
     }
   }
 
-  @GwtIncompatible // NavigableMap
-  abstract static class DescendingMap<K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  abstract static class DescendingMap<K extends Object, V extends Object>
       extends ForwardingMap<K, V> implements NavigableMap<K, V> {
 
     abstract NavigableMap<K, V> forward();
@@ -4148,7 +4128,7 @@ public final class Maps {
     }
 
     // If we inline this, we get a javac error.
-    private static <T extends @Nullable Object> Ordering<T> reverse(Comparator<T> forward) {
+    private static <T extends Object> Ordering<T> reverse(Comparator<T> forward) {
       return Ordering.from(forward).reverse();
     }
 
@@ -4252,7 +4232,6 @@ public final class Maps {
     abstract Iterator<Entry<K, V>> entryIterator();
 
     Set<Entry<K, V>> createEntrySet() {
-      @WeakOuter
       class EntrySetImpl extends EntrySet<K, V> {
         @Override
         Map<K, V> map() {
@@ -4356,9 +4335,8 @@ public final class Maps {
    *
    * @since 20.0
    */
-  @Beta
-  @GwtIncompatible // NavigableMap
-  public static <K extends Comparable<? super K>, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Comparable<? super K>, V extends Object>
       NavigableMap<K, V> subMap(NavigableMap<K, V> map, Range<K> range) {
     if (map.comparator() != null
         && map.comparator() != Ordering.natural()
diff --git a/android/guava/src/com/google/common/collect/MinMaxPriorityQueue.java b/android/guava/src/com/google/common/collect/MinMaxPriorityQueue.java
index cd01279..cbea6f5 100644
--- a/android/guava/src/com/google/common/collect/MinMaxPriorityQueue.java
+++ b/android/guava/src/com/google/common/collect/MinMaxPriorityQueue.java
@@ -21,15 +21,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndex;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.math.IntMath;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.Weak;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.AbstractQueue;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
@@ -43,7 +36,6 @@ import java.util.NoSuchElementException;
 import java.util.PriorityQueue;
 import java.util.Queue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A double-ended priority queue, which provides constant-time access to both its least element and
@@ -98,8 +90,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Torbjorn Gannholm
  * @since 8.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
 
@@ -162,7 +152,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    *     Queue<Integer>} but not a {@code Queue<Object>}).
    * @since 8.0
    */
-  @Beta
   public static final class Builder<B> {
     /*
      * TODO(kevinb): when the dust settles, see if we still need this or can
@@ -182,7 +171,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
      * Configures this builder to build min-max priority queues with an initial expected size of
      * {@code expectedSize}.
      */
-    @CanIgnoreReturnValue
     public Builder<B> expectedSize(int expectedSize) {
       checkArgument(expectedSize >= 0);
       this.expectedSize = expectedSize;
@@ -195,7 +183,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
      * removes its greatest element (according to its comparator), which might be the element that
      * was just added.
      */
-    @CanIgnoreReturnValue
     public Builder<B> maximumSize(int maximumSize) {
       checkArgument(maximumSize > 0);
       this.maximumSize = maximumSize;
@@ -232,8 +219,8 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
 
   private final Heap minHeap;
   private final Heap maxHeap;
-  @VisibleForTesting final int maximumSize;
-  private @Nullable Object[] queue;
+  final int maximumSize;
+  private Object[] queue;
   private int size;
   private int modCount;
 
@@ -261,14 +248,12 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    *
    * @return {@code true} always
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean add(E element) {
     offer(element);
     return true;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean addAll(Collection<? extends E> newElements) {
     boolean modified = false;
@@ -284,7 +269,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    * element} the queue will automatically evict its greatest element (according to its comparator),
    * which may be {@code element} itself.
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean offer(E element) {
     checkNotNull(element);
@@ -299,7 +283,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
     return size <= maximumSize || pollLast() != element;
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public E poll() {
@@ -339,7 +322,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    * Removes and returns the least element of this queue, or returns {@code null} if the queue is
    * empty.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   public E pollFirst() {
     return poll();
@@ -350,7 +332,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    *
    * @throws NoSuchElementException if the queue is empty
    */
-  @CanIgnoreReturnValue
   public E removeFirst() {
     return remove();
   }
@@ -368,7 +349,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    * Removes and returns the greatest element of this queue, or returns {@code null} if the queue is
    * empty.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   public E pollLast() {
     return isEmpty() ? null : removeAndGet(getMaxElementIndex());
@@ -379,7 +359,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    *
    * @throws NoSuchElementException if the queue is empty
    */
-  @CanIgnoreReturnValue
   public E removeLast() {
     if (isEmpty()) {
       throw new NoSuchElementException();
@@ -409,8 +388,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    * down to replace the element at {@code index}. This fact is used by iterator.remove so as to
    * visit elements during a traversal once and only once.
    */
-  @VisibleForTesting
-  @CanIgnoreReturnValue
   @CheckForNull
   MoveDesc<E> removeAt(int index) {
     checkPositionIndex(index, size);
@@ -495,7 +472,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
   private static final int EVEN_POWERS_OF_TWO = 0x55555555;
   private static final int ODD_POWERS_OF_TWO = 0xaaaaaaaa;
 
-  @VisibleForTesting
   static boolean isEvenLevel(int index) {
     int oneBased = ~~(index + 1); // for GWT
     checkState(oneBased > 0, "negative index");
@@ -507,7 +483,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    *
    * <p>TODO(kevinb): move to the test class?
    */
-  @VisibleForTesting
   boolean isIntact() {
     for (int i = 1; i < size; i++) {
       if (!heapForIndex(i).verifyIndex(i)) {
@@ -522,10 +497,9 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    * max-heap. Conceptually, these might each have their own array for storage, but for efficiency's
    * sake they are stored interleaved on alternate heap levels in the same array (MMPQ.queue).
    */
-  @WeakOuter
   private class Heap {
     final Ordering<E> ordering;
-    @Weak Heap otherHeap; // always initialized immediately after construction
+    Heap otherHeap; // always initialized immediately after construction
 
     Heap(Ordering<E> ordering) {
       this.ordering = ordering;
@@ -584,7 +558,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
      * Bubbles a value from {@code index} up the levels of this heap, and returns the index the
      * element ended up at.
      */
-    @CanIgnoreReturnValue
     int bubbleUpAlternatingLevels(int index, E x) {
       while (index > 2) {
         int grandParentIndex = getGrandparentIndex(index);
@@ -926,7 +899,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
     return minHeap.ordering;
   }
 
-  @VisibleForTesting
   int capacity() {
     return queue.length;
   }
@@ -935,7 +907,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
 
   private static final int DEFAULT_CAPACITY = 11;
 
-  @VisibleForTesting
   static int initialQueueSize(
       int configuredExpectedSize, int maximumSize, Iterable<?> initialContents) {
     // Start with what they said, if they said it, otherwise DEFAULT_CAPACITY
diff --git a/android/guava/src/com/google/common/collect/Multimap.java b/android/guava/src/com/google/common/collect/Multimap.java
index 09aa287..1d6a374 100644
--- a/android/guava/src/com/google/common/collect/Multimap.java
+++ b/android/guava/src/com/google/common/collect/Multimap.java
@@ -16,17 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CompatibleWith;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A collection that maps keys to values, similar to {@link Map}, but in which each key may be
@@ -157,10 +152,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@DoNotMock("Use ImmutableMultimap, HashMultimap, or another implementation")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface Multimap<K extends @Nullable Object, V extends @Nullable Object> {
+public interface Multimap<K extends Object, V extends Object> {
   // Query Operations
 
   /**
@@ -210,7 +203,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    * @return {@code true} if the method increased the size of the multimap, or {@code false} if the
    *     multimap already contained the key-value pair and doesn't allow duplicates
    */
-  @CanIgnoreReturnValue
   boolean put(@ParametricNullness K key, @ParametricNullness V value);
 
   /**
@@ -220,7 +212,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    *
    * @return {@code true} if the multimap changed
    */
-  @CanIgnoreReturnValue
   boolean remove(
       @CompatibleWith("K") @CheckForNull Object key,
       @CompatibleWith("V") @CheckForNull Object value);
@@ -241,7 +232,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    *
    * @return {@code true} if the multimap changed
    */
-  @CanIgnoreReturnValue
   boolean putAll(@ParametricNullness K key, Iterable<? extends V> values);
 
   /**
@@ -250,7 +240,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    *
    * @return {@code true} if the multimap changed
    */
-  @CanIgnoreReturnValue
   boolean putAll(Multimap<? extends K, ? extends V> multimap);
 
   /**
@@ -262,7 +251,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    *     associated with the key. The collection <i>may</i> be modifiable, but updating it will have
    *     no effect on the multimap.
    */
-  @CanIgnoreReturnValue
   Collection<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);
 
   /**
@@ -274,7 +262,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    * @return the values that were removed (possibly empty). The returned collection <i>may</i> be
    *     modifiable, but updating it will have no effect on the multimap.
    */
-  @CanIgnoreReturnValue
   Collection<V> removeAll(@CompatibleWith("K") @CheckForNull Object key);
 
   /** Removes all key-value pairs from the multimap, leaving it {@linkplain #isEmpty empty}. */
diff --git a/android/guava/src/com/google/common/collect/MultimapBuilder.java b/android/guava/src/com/google/common/collect/MultimapBuilder.java
index dddae28..2feebde 100644
--- a/android/guava/src/com/google/common/collect/MultimapBuilder.java
+++ b/android/guava/src/com/google/common/collect/MultimapBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Supplier;
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -34,7 +33,6 @@ import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeMap;
 import java.util.TreeSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A builder for a multimap implementation that allows customization of the backing map and value
@@ -61,9 +59,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @param <V0> An upper bound on the value type of the generated multimap.
  * @since 16.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @Nullable Object> {
+public abstract class MultimapBuilder<K0 extends Object, V0 extends Object> {
   /*
    * Leaving K and V as upper bounds rather than the actual key and value types allows type
    * parameters to be left implicit more often. CacheBuilder uses the same technique.
@@ -74,7 +71,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
   private static final int DEFAULT_EXPECTED_KEYS = 8;
 
   /** Uses a hash table to map keys to value collections. */
-  public static MultimapBuilderWithKeys<@Nullable Object> hashKeys() {
+  public static MultimapBuilderWithKeys<Object> hashKeys() {
     return hashKeys(DEFAULT_EXPECTED_KEYS);
   }
 
@@ -84,11 +81,11 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    *
    * @throws IllegalArgumentException if {@code expectedKeys < 0}
    */
-  public static MultimapBuilderWithKeys<@Nullable Object> hashKeys(final int expectedKeys) {
+  public static MultimapBuilderWithKeys<Object> hashKeys(final int expectedKeys) {
     checkNonnegative(expectedKeys, "expectedKeys");
-    return new MultimapBuilderWithKeys<@Nullable Object>() {
+    return new MultimapBuilderWithKeys<Object>() {
       @Override
-      <K extends @Nullable Object, V extends @Nullable Object> Map<K, Collection<V>> createMap() {
+      <K extends Object, V extends Object> Map<K, Collection<V>> createMap() {
         return Platform.newHashMapWithExpectedSize(expectedKeys);
       }
     };
@@ -102,7 +99,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * multimap, save that if all values associated with a key are removed and then the key is added
    * back into the multimap, that key will come last in the key iteration order.
    */
-  public static MultimapBuilderWithKeys<@Nullable Object> linkedHashKeys() {
+  public static MultimapBuilderWithKeys<Object> linkedHashKeys() {
     return linkedHashKeys(DEFAULT_EXPECTED_KEYS);
   }
 
@@ -115,11 +112,11 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * multimap, save that if all values associated with a key are removed and then the key is added
    * back into the multimap, that key will come last in the key iteration order.
    */
-  public static MultimapBuilderWithKeys<@Nullable Object> linkedHashKeys(final int expectedKeys) {
+  public static MultimapBuilderWithKeys<Object> linkedHashKeys(final int expectedKeys) {
     checkNonnegative(expectedKeys, "expectedKeys");
-    return new MultimapBuilderWithKeys<@Nullable Object>() {
+    return new MultimapBuilderWithKeys<Object>() {
       @Override
-      <K extends @Nullable Object, V extends @Nullable Object> Map<K, Collection<V>> createMap() {
+      <K extends Object, V extends Object> Map<K, Collection<V>> createMap() {
         return Platform.newLinkedHashMapWithExpectedSize(expectedKeys);
       }
     };
@@ -153,12 +150,12 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * <p>Multimaps generated by the resulting builder will not be serializable if {@code comparator}
    * is not serializable.
    */
-  public static <K0 extends @Nullable Object> MultimapBuilderWithKeys<K0> treeKeys(
+  public static <K0 extends Object> MultimapBuilderWithKeys<K0> treeKeys(
       final Comparator<K0> comparator) {
     checkNotNull(comparator);
     return new MultimapBuilderWithKeys<K0>() {
       @Override
-      <K extends K0, V extends @Nullable Object> Map<K, Collection<V>> createMap() {
+      <K extends K0, V extends Object> Map<K, Collection<V>> createMap() {
         return new TreeMap<>(comparator);
       }
     };
@@ -175,7 +172,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     return new MultimapBuilderWithKeys<K0>() {
       @SuppressWarnings("unchecked")
       @Override
-      <K extends K0, V extends @Nullable Object> Map<K, Collection<V>> createMap() {
+      <K extends K0, V extends Object> Map<K, Collection<V>> createMap() {
         // K must actually be K0, since enums are effectively final
         // (their subclasses are inaccessible)
         return (Map<K, Collection<V>>) new EnumMap<K0, Collection<V>>(keyClass);
@@ -183,7 +180,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     };
   }
 
-  private static final class ArrayListSupplier<V extends @Nullable Object>
+  private static final class ArrayListSupplier<V extends Object>
       implements Supplier<List<V>>, Serializable {
     private final int expectedValuesPerKey;
 
@@ -200,7 +197,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
   private enum LinkedListSupplier implements Supplier<List<?>> {
     INSTANCE;
 
-    public static <V extends @Nullable Object> Supplier<List<V>> instance() {
+    public static <V extends Object> Supplier<List<V>> instance() {
       // Each call generates a fresh LinkedList, which can serve as a List<V> for any V.
       @SuppressWarnings({"rawtypes", "unchecked"})
       Supplier<List<V>> result = (Supplier) INSTANCE;
@@ -213,7 +210,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
   }
 
-  private static final class HashSetSupplier<V extends @Nullable Object>
+  private static final class HashSetSupplier<V extends Object>
       implements Supplier<Set<V>>, Serializable {
     private final int expectedValuesPerKey;
 
@@ -227,7 +224,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
   }
 
-  private static final class LinkedHashSetSupplier<V extends @Nullable Object>
+  private static final class LinkedHashSetSupplier<V extends Object>
       implements Supplier<Set<V>>, Serializable {
     private final int expectedValuesPerKey;
 
@@ -241,7 +238,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
   }
 
-  private static final class TreeSetSupplier<V extends @Nullable Object>
+  private static final class TreeSetSupplier<V extends Object>
       implements Supplier<SortedSet<V>>, Serializable {
     private final Comparator<? super V> comparator;
 
@@ -276,16 +273,16 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * @param <K0> The upper bound on the key type of the generated multimap.
    * @since 16.0
    */
-  public abstract static class MultimapBuilderWithKeys<K0 extends @Nullable Object> {
+  public abstract static class MultimapBuilderWithKeys<K0 extends Object> {
 
     private static final int DEFAULT_EXPECTED_VALUES_PER_KEY = 2;
 
     MultimapBuilderWithKeys() {}
 
-    abstract <K extends K0, V extends @Nullable Object> Map<K, Collection<V>> createMap();
+    abstract <K extends K0, V extends Object> Map<K, Collection<V>> createMap();
 
     /** Uses an {@link ArrayList} to store value collections. */
-    public ListMultimapBuilder<K0, @Nullable Object> arrayListValues() {
+    public ListMultimapBuilder<K0, Object> arrayListValues() {
       return arrayListValues(DEFAULT_EXPECTED_VALUES_PER_KEY);
     }
 
@@ -295,12 +292,12 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
      *
      * @throws IllegalArgumentException if {@code expectedValuesPerKey < 0}
      */
-    public ListMultimapBuilder<K0, @Nullable Object> arrayListValues(
+    public ListMultimapBuilder<K0, Object> arrayListValues(
         final int expectedValuesPerKey) {
       checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey");
-      return new ListMultimapBuilder<K0, @Nullable Object>() {
+      return new ListMultimapBuilder<K0, Object>() {
         @Override
-        public <K extends K0, V extends @Nullable Object> ListMultimap<K, V> build() {
+        public <K extends K0, V extends Object> ListMultimap<K, V> build() {
           return Multimaps.newListMultimap(
               MultimapBuilderWithKeys.this.<K, V>createMap(),
               new ArrayListSupplier<V>(expectedValuesPerKey));
@@ -309,10 +306,10 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
 
     /** Uses a {@link LinkedList} to store value collections. */
-    public ListMultimapBuilder<K0, @Nullable Object> linkedListValues() {
-      return new ListMultimapBuilder<K0, @Nullable Object>() {
+    public ListMultimapBuilder<K0, Object> linkedListValues() {
+      return new ListMultimapBuilder<K0, Object>() {
         @Override
-        public <K extends K0, V extends @Nullable Object> ListMultimap<K, V> build() {
+        public <K extends K0, V extends Object> ListMultimap<K, V> build() {
           return Multimaps.newListMultimap(
               MultimapBuilderWithKeys.this.<K, V>createMap(), LinkedListSupplier.<V>instance());
         }
@@ -320,7 +317,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
 
     /** Uses a hash-based {@code Set} to store value collections. */
-    public SetMultimapBuilder<K0, @Nullable Object> hashSetValues() {
+    public SetMultimapBuilder<K0, Object> hashSetValues() {
       return hashSetValues(DEFAULT_EXPECTED_VALUES_PER_KEY);
     }
 
@@ -330,11 +327,11 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
      *
      * @throws IllegalArgumentException if {@code expectedValuesPerKey < 0}
      */
-    public SetMultimapBuilder<K0, @Nullable Object> hashSetValues(final int expectedValuesPerKey) {
+    public SetMultimapBuilder<K0, Object> hashSetValues(final int expectedValuesPerKey) {
       checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey");
-      return new SetMultimapBuilder<K0, @Nullable Object>() {
+      return new SetMultimapBuilder<K0, Object>() {
         @Override
-        public <K extends K0, V extends @Nullable Object> SetMultimap<K, V> build() {
+        public <K extends K0, V extends Object> SetMultimap<K, V> build() {
           return Multimaps.newSetMultimap(
               MultimapBuilderWithKeys.this.<K, V>createMap(),
               new HashSetSupplier<V>(expectedValuesPerKey));
@@ -343,7 +340,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
 
     /** Uses an insertion-ordered hash-based {@code Set} to store value collections. */
-    public SetMultimapBuilder<K0, @Nullable Object> linkedHashSetValues() {
+    public SetMultimapBuilder<K0, Object> linkedHashSetValues() {
       return linkedHashSetValues(DEFAULT_EXPECTED_VALUES_PER_KEY);
     }
 
@@ -353,12 +350,12 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
      *
      * @throws IllegalArgumentException if {@code expectedValuesPerKey < 0}
      */
-    public SetMultimapBuilder<K0, @Nullable Object> linkedHashSetValues(
+    public SetMultimapBuilder<K0, Object> linkedHashSetValues(
         final int expectedValuesPerKey) {
       checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey");
-      return new SetMultimapBuilder<K0, @Nullable Object>() {
+      return new SetMultimapBuilder<K0, Object>() {
         @Override
-        public <K extends K0, V extends @Nullable Object> SetMultimap<K, V> build() {
+        public <K extends K0, V extends Object> SetMultimap<K, V> build() {
           return Multimaps.newSetMultimap(
               MultimapBuilderWithKeys.this.<K, V>createMap(),
               new LinkedHashSetSupplier<V>(expectedValuesPerKey));
@@ -378,7 +375,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
      * <p>Multimaps generated by the resulting builder will not be serializable if {@code
      * comparator} is not serializable.
      */
-    public <V0 extends @Nullable Object> SortedSetMultimapBuilder<K0, V0> treeSetValues(
+    public <V0 extends Object> SortedSetMultimapBuilder<K0, V0> treeSetValues(
         final Comparator<V0> comparator) {
       checkNotNull(comparator, "comparator");
       return new SortedSetMultimapBuilder<K0, V0>() {
@@ -427,7 +424,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * @since 16.0
    */
   public abstract static class ListMultimapBuilder<
-          K0 extends @Nullable Object, V0 extends @Nullable Object>
+          K0 extends Object, V0 extends Object>
       extends MultimapBuilder<K0, V0> {
     ListMultimapBuilder() {}
 
@@ -447,7 +444,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * @since 16.0
    */
   public abstract static class SetMultimapBuilder<
-          K0 extends @Nullable Object, V0 extends @Nullable Object>
+          K0 extends Object, V0 extends Object>
       extends MultimapBuilder<K0, V0> {
     SetMultimapBuilder() {}
 
@@ -467,7 +464,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * @since 16.0
    */
   public abstract static class SortedSetMultimapBuilder<
-          K0 extends @Nullable Object, V0 extends @Nullable Object>
+          K0 extends Object, V0 extends Object>
       extends SetMultimapBuilder<K0, V0> {
     SortedSetMultimapBuilder() {}
 
diff --git a/android/guava/src/com/google/common/collect/Multimaps.java b/android/guava/src/com/google/common/collect/Multimaps.java
index b0577ea..eed40ca 100644
--- a/android/guava/src/com/google/common/collect/Multimaps.java
+++ b/android/guava/src/com/google/common/collect/Multimaps.java
@@ -19,21 +19,12 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.base.Supplier;
 import com.google.common.collect.Maps.EntryTransformer;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.Weak;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -52,7 +43,6 @@ import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static methods acting on or generating a {@code Multimap}.
@@ -67,7 +57,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Multimaps {
   private Multimaps() {}
@@ -108,12 +97,12 @@ public final class Multimaps {
    *     key
    * @throws IllegalArgumentException if {@code map} is not empty
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Multimap<K, V> newMultimap(
+  public static <K extends Object, V extends Object> Multimap<K, V> newMultimap(
       Map<K, Collection<V>> map, final Supplier<? extends Collection<V>> factory) {
     return new CustomMultimap<>(map, factory);
   }
 
-  private static class CustomMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class CustomMultimap<K extends Object, V extends Object>
       extends AbstractMapBasedMultimap<K, V> {
     transient Supplier<? extends Collection<V>> factory;
 
@@ -138,7 +127,7 @@ public final class Multimaps {
     }
 
     @Override
-    <E extends @Nullable Object> Collection<E> unmodifiableCollectionSubclass(
+    <E extends Object> Collection<E> unmodifiableCollectionSubclass(
         Collection<E> collection) {
       if (collection instanceof NavigableSet) {
         return Sets.unmodifiableNavigableSet((NavigableSet<E>) collection);
@@ -172,14 +161,14 @@ public final class Multimaps {
     // there's no way to generate the empty backing map.
 
     /** @serialData the factory and the backing map */
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       stream.defaultWriteObject();
       stream.writeObject(factory);
       stream.writeObject(backingMap());
     }
 
-    @GwtIncompatible // java.io.ObjectInputStream
+    // java.io.ObjectInputStream
     @SuppressWarnings("unchecked") // reading data stored by writeObject
     private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
       stream.defaultReadObject();
@@ -188,7 +177,7 @@ public final class Multimaps {
       setMap(map);
     }
 
-    @GwtIncompatible // java serialization not supported
+    // java serialization not supported
     private static final long serialVersionUID = 0;
   }
 
@@ -222,13 +211,13 @@ public final class Multimaps {
    * @param factory supplier of new, empty lists that will each hold all values for a given key
    * @throws IllegalArgumentException if {@code map} is not empty
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ListMultimap<K, V> newListMultimap(
           Map<K, Collection<V>> map, final Supplier<? extends List<V>> factory) {
     return new CustomListMultimap<>(map, factory);
   }
 
-  private static class CustomListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class CustomListMultimap<K extends Object, V extends Object>
       extends AbstractListMultimap<K, V> {
     transient Supplier<? extends List<V>> factory;
 
@@ -253,14 +242,14 @@ public final class Multimaps {
     }
 
     /** @serialData the factory and the backing map */
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       stream.defaultWriteObject();
       stream.writeObject(factory);
       stream.writeObject(backingMap());
     }
 
-    @GwtIncompatible // java.io.ObjectInputStream
+    // java.io.ObjectInputStream
     @SuppressWarnings("unchecked") // reading data stored by writeObject
     private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
       stream.defaultReadObject();
@@ -269,7 +258,7 @@ public final class Multimaps {
       setMap(map);
     }
 
-    @GwtIncompatible // java serialization not supported
+    // java serialization not supported
     private static final long serialVersionUID = 0;
   }
 
@@ -302,13 +291,13 @@ public final class Multimaps {
    * @param factory supplier of new, empty sets that will each hold all values for a given key
    * @throws IllegalArgumentException if {@code map} is not empty
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> newSetMultimap(
           Map<K, Collection<V>> map, final Supplier<? extends Set<V>> factory) {
     return new CustomSetMultimap<>(map, factory);
   }
 
-  private static class CustomSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class CustomSetMultimap<K extends Object, V extends Object>
       extends AbstractSetMultimap<K, V> {
     transient Supplier<? extends Set<V>> factory;
 
@@ -333,7 +322,7 @@ public final class Multimaps {
     }
 
     @Override
-    <E extends @Nullable Object> Collection<E> unmodifiableCollectionSubclass(
+    <E extends Object> Collection<E> unmodifiableCollectionSubclass(
         Collection<E> collection) {
       if (collection instanceof NavigableSet) {
         return Sets.unmodifiableNavigableSet((NavigableSet<E>) collection);
@@ -356,14 +345,14 @@ public final class Multimaps {
     }
 
     /** @serialData the factory and the backing map */
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       stream.defaultWriteObject();
       stream.writeObject(factory);
       stream.writeObject(backingMap());
     }
 
-    @GwtIncompatible // java.io.ObjectInputStream
+    // java.io.ObjectInputStream
     @SuppressWarnings("unchecked") // reading data stored by writeObject
     private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
       stream.defaultReadObject();
@@ -372,7 +361,7 @@ public final class Multimaps {
       setMap(map);
     }
 
-    @GwtIncompatible // not needed in emulated source
+    // not needed in emulated source
     private static final long serialVersionUID = 0;
   }
 
@@ -405,14 +394,14 @@ public final class Multimaps {
    *     key
    * @throws IllegalArgumentException if {@code map} is not empty
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedSetMultimap<K, V> newSortedSetMultimap(
           Map<K, Collection<V>> map, final Supplier<? extends SortedSet<V>> factory) {
     return new CustomSortedSetMultimap<>(map, factory);
   }
 
   private static class CustomSortedSetMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends AbstractSortedSetMultimap<K, V> {
     transient Supplier<? extends SortedSet<V>> factory;
     @CheckForNull transient Comparator<? super V> valueComparator;
@@ -445,14 +434,14 @@ public final class Multimaps {
     }
 
     /** @serialData the factory and the backing map */
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       stream.defaultWriteObject();
       stream.writeObject(factory);
       stream.writeObject(backingMap());
     }
 
-    @GwtIncompatible // java.io.ObjectInputStream
+    // java.io.ObjectInputStream
     @SuppressWarnings("unchecked") // reading data stored by writeObject
     private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
       stream.defaultReadObject();
@@ -462,7 +451,7 @@ public final class Multimaps {
       setMap(map);
     }
 
-    @GwtIncompatible // not needed in emulated source
+    // not needed in emulated source
     private static final long serialVersionUID = 0;
   }
 
@@ -477,8 +466,7 @@ public final class Multimaps {
    * @param dest the multimap to copy into; usually empty
    * @return {@code dest}
    */
-  @CanIgnoreReturnValue
-  public static <K extends @Nullable Object, V extends @Nullable Object, M extends Multimap<K, V>>
+  public static <K extends Object, V extends Object, M extends Multimap<K, V>>
       M invertFrom(Multimap<? extends V, ? extends K> source, M dest) {
     checkNotNull(dest);
     for (Map.Entry<? extends V, ? extends K> entry : source.entries()) {
@@ -519,7 +507,7 @@ public final class Multimaps {
    * @param multimap the multimap to be wrapped in a synchronized view
    * @return a synchronized view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       Multimap<K, V> synchronizedMultimap(Multimap<K, V> multimap) {
     return Synchronized.multimap(multimap, null);
   }
@@ -535,7 +523,7 @@ public final class Multimaps {
    * @param delegate the multimap for which an unmodifiable view is to be returned
    * @return an unmodifiable view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       Multimap<K, V> unmodifiableMultimap(Multimap<K, V> delegate) {
     if (delegate instanceof UnmodifiableMultimap || delegate instanceof ImmutableMultimap) {
       return delegate;
@@ -554,14 +542,14 @@ public final class Multimaps {
     return checkNotNull(delegate);
   }
 
-  private static class UnmodifiableMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class UnmodifiableMultimap<K extends Object, V extends Object>
       extends ForwardingMultimap<K, V> implements Serializable {
     final Multimap<K, V> delegate;
-    @LazyInit @CheckForNull transient Collection<Entry<K, V>> entries;
-    @LazyInit @CheckForNull transient Multiset<K> keys;
-    @LazyInit @CheckForNull transient Set<K> keySet;
-    @LazyInit @CheckForNull transient Collection<V> values;
-    @LazyInit @CheckForNull transient Map<K, Collection<V>> map;
+    @CheckForNull transient Collection<Entry<K, V>> entries;
+    @CheckForNull transient Multiset<K> keys;
+    @CheckForNull transient Set<K> keySet;
+    @CheckForNull transient Collection<V> values;
+    @CheckForNull transient Map<K, Collection<V>> map;
 
     UnmodifiableMultimap(final Multimap<K, V> delegate) {
       this.delegate = checkNotNull(delegate);
@@ -671,7 +659,7 @@ public final class Multimaps {
   }
 
   private static class UnmodifiableListMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends UnmodifiableMultimap<K, V> implements ListMultimap<K, V> {
     UnmodifiableListMultimap(ListMultimap<K, V> delegate) {
       super(delegate);
@@ -701,7 +689,7 @@ public final class Multimaps {
   }
 
   private static class UnmodifiableSetMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends UnmodifiableMultimap<K, V> implements SetMultimap<K, V> {
     UnmodifiableSetMultimap(SetMultimap<K, V> delegate) {
       super(delegate);
@@ -740,7 +728,7 @@ public final class Multimaps {
   }
 
   private static class UnmodifiableSortedSetMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends UnmodifiableSetMultimap<K, V> implements SortedSetMultimap<K, V> {
     UnmodifiableSortedSetMultimap(SortedSetMultimap<K, V> delegate) {
       super(delegate);
@@ -785,7 +773,7 @@ public final class Multimaps {
    * @param multimap the multimap to be wrapped
    * @return a synchronized view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> synchronizedSetMultimap(SetMultimap<K, V> multimap) {
     return Synchronized.setMultimap(multimap, null);
   }
@@ -801,7 +789,7 @@ public final class Multimaps {
    * @param delegate the multimap for which an unmodifiable view is to be returned
    * @return an unmodifiable view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> unmodifiableSetMultimap(SetMultimap<K, V> delegate) {
     if (delegate instanceof UnmodifiableSetMultimap || delegate instanceof ImmutableSetMultimap) {
       return delegate;
@@ -832,7 +820,7 @@ public final class Multimaps {
    * @param multimap the multimap to be wrapped
    * @return a synchronized view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedSetMultimap<K, V> synchronizedSortedSetMultimap(SortedSetMultimap<K, V> multimap) {
     return Synchronized.sortedSetMultimap(multimap, null);
   }
@@ -848,7 +836,7 @@ public final class Multimaps {
    * @param delegate the multimap for which an unmodifiable view is to be returned
    * @return an unmodifiable view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedSetMultimap<K, V> unmodifiableSortedSetMultimap(SortedSetMultimap<K, V> delegate) {
     if (delegate instanceof UnmodifiableSortedSetMultimap) {
       return delegate;
@@ -864,7 +852,7 @@ public final class Multimaps {
    * @param multimap the multimap to be wrapped
    * @return a synchronized view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ListMultimap<K, V> synchronizedListMultimap(ListMultimap<K, V> multimap) {
     return Synchronized.listMultimap(multimap, null);
   }
@@ -880,7 +868,7 @@ public final class Multimaps {
    * @param delegate the multimap for which an unmodifiable view is to be returned
    * @return an unmodifiable view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ListMultimap<K, V> unmodifiableListMultimap(ListMultimap<K, V> delegate) {
     if (delegate instanceof UnmodifiableListMultimap || delegate instanceof ImmutableListMultimap) {
       return delegate;
@@ -908,7 +896,7 @@ public final class Multimaps {
    * @param collection the collection for which to return an unmodifiable view
    * @return an unmodifiable view of the collection
    */
-  private static <V extends @Nullable Object> Collection<V> unmodifiableValueCollection(
+  private static <V extends Object> Collection<V> unmodifiableValueCollection(
       Collection<V> collection) {
     if (collection instanceof SortedSet) {
       return Collections.unmodifiableSortedSet((SortedSet<V>) collection);
@@ -928,7 +916,7 @@ public final class Multimaps {
    * @param entries the entries for which to return an unmodifiable view
    * @return an unmodifiable view of the entries
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       Collection<Entry<K, V>> unmodifiableEntries(Collection<Entry<K, V>> entries) {
     if (entries instanceof Set) {
       return Maps.unmodifiableEntrySet((Set<Entry<K, V>>) entries);
@@ -942,10 +930,9 @@ public final class Multimaps {
    *
    * @since 15.0
    */
-  @Beta
   @SuppressWarnings("unchecked")
   // safe by specification of ListMultimap.asMap()
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, List<V>> asMap(
+  public static <K extends Object, V extends Object> Map<K, List<V>> asMap(
       ListMultimap<K, V> multimap) {
     return (Map<K, List<V>>) (Map<K, ?>) multimap.asMap();
   }
@@ -956,10 +943,9 @@ public final class Multimaps {
    *
    * @since 15.0
    */
-  @Beta
   @SuppressWarnings("unchecked")
   // safe by specification of SetMultimap.asMap()
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, Set<V>> asMap(
+  public static <K extends Object, V extends Object> Map<K, Set<V>> asMap(
       SetMultimap<K, V> multimap) {
     return (Map<K, Set<V>>) (Map<K, ?>) multimap.asMap();
   }
@@ -970,10 +956,9 @@ public final class Multimaps {
    *
    * @since 15.0
    */
-  @Beta
   @SuppressWarnings("unchecked")
   // safe by specification of SortedSetMultimap.asMap()
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, SortedSet<V>> asMap(
+  public static <K extends Object, V extends Object> Map<K, SortedSet<V>> asMap(
       SortedSetMultimap<K, V> multimap) {
     return (Map<K, SortedSet<V>>) (Map<K, ?>) multimap.asMap();
   }
@@ -984,8 +969,7 @@ public final class Multimaps {
    *
    * @since 15.0
    */
-  @Beta
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       Map<K, Collection<V>> asMap(Multimap<K, V> multimap) {
     return multimap.asMap();
   }
@@ -1005,13 +989,13 @@ public final class Multimaps {
    *
    * @param map the backing map for the returned multimap view
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> SetMultimap<K, V> forMap(
+  public static <K extends Object, V extends Object> SetMultimap<K, V> forMap(
       Map<K, V> map) {
     return new MapMultimap<>(map);
   }
 
   /** @see Multimaps#forMap */
-  private static class MapMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class MapMultimap<K extends Object, V extends Object>
       extends AbstractMultimap<K, V> implements SetMultimap<K, V>, Serializable {
     final Map<K, V> map;
 
@@ -1207,7 +1191,7 @@ public final class Multimaps {
    * @since 7.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       Multimap<K, V2> transformValues(
           Multimap<K, V1> fromMultimap, final Function<? super V1, V2> function) {
     checkNotNull(function);
@@ -1256,7 +1240,7 @@ public final class Multimaps {
    * @since 7.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       ListMultimap<K, V2> transformValues(
           ListMultimap<K, V1> fromMultimap, final Function<? super V1, V2> function) {
     checkNotNull(function);
@@ -1316,7 +1300,7 @@ public final class Multimaps {
    * @since 7.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       Multimap<K, V2> transformEntries(
           Multimap<K, V1> fromMap, EntryTransformer<? super K, ? super V1, V2> transformer) {
     return new TransformedEntriesMultimap<>(fromMap, transformer);
@@ -1371,14 +1355,14 @@ public final class Multimaps {
    * @since 7.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       ListMultimap<K, V2> transformEntries(
           ListMultimap<K, V1> fromMap, EntryTransformer<? super K, ? super V1, V2> transformer) {
     return new TransformedEntriesListMultimap<>(fromMap, transformer);
   }
 
   private static class TransformedEntriesMultimap<
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       extends AbstractMultimap<K, V2> {
     final Multimap<K, V1> fromMultimap;
     final EntryTransformer<? super K, ? super V1, V2> transformer;
@@ -1497,7 +1481,7 @@ public final class Multimaps {
   }
 
   private static final class TransformedEntriesListMultimap<
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       extends TransformedEntriesMultimap<K, V1, V2> implements ListMultimap<K, V2> {
 
     TransformedEntriesListMultimap(
@@ -1615,9 +1599,9 @@ public final class Multimaps {
     return builder.build();
   }
 
-  static class Keys<K extends @Nullable Object, V extends @Nullable Object>
+  static class Keys<K extends Object, V extends Object>
       extends AbstractMultiset<K> {
-    @Weak final Multimap<K, V> multimap;
+    final Multimap<K, V> multimap;
 
     Keys(Multimap<K, V> multimap) {
       this.multimap = multimap;
@@ -1714,7 +1698,7 @@ public final class Multimaps {
   }
 
   /** A skeleton implementation of {@link Multimap#entries()}. */
-  abstract static class Entries<K extends @Nullable Object, V extends @Nullable Object>
+  abstract static class Entries<K extends Object, V extends Object>
       extends AbstractCollection<Map.Entry<K, V>> {
     abstract Multimap<K, V> multimap();
 
@@ -1748,9 +1732,9 @@ public final class Multimaps {
   }
 
   /** A skeleton implementation of {@link Multimap#asMap()}. */
-  static final class AsMap<K extends @Nullable Object, V extends @Nullable Object>
+  static final class AsMap<K extends Object, V extends Object>
       extends Maps.ViewCachingAbstractMap<K, Collection<V>> {
-    @Weak private final Multimap<K, V> multimap;
+    private final Multimap<K, V> multimap;
 
     AsMap(Multimap<K, V> multimap) {
       this.multimap = checkNotNull(multimap);
@@ -1770,7 +1754,6 @@ public final class Multimaps {
       multimap.keySet().remove(key);
     }
 
-    @WeakOuter
     class EntrySet extends Maps.EntrySet<K, Collection<V>> {
       @Override
       Map<K, Collection<V>> map() {
@@ -1862,7 +1845,7 @@ public final class Multimaps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Multimap<K, V> filterKeys(
+  public static <K extends Object, V extends Object> Multimap<K, V> filterKeys(
       Multimap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     if (unfiltered instanceof SetMultimap) {
       return filterKeys((SetMultimap<K, V>) unfiltered, keyPredicate);
@@ -1907,7 +1890,7 @@ public final class Multimaps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> filterKeys(
           SetMultimap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     if (unfiltered instanceof FilteredKeySetMultimap) {
@@ -1949,7 +1932,7 @@ public final class Multimaps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ListMultimap<K, V> filterKeys(
           ListMultimap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     if (unfiltered instanceof FilteredKeyListMultimap) {
@@ -1988,7 +1971,7 @@ public final class Multimaps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       Multimap<K, V> filterValues(
           Multimap<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
@@ -2021,7 +2004,7 @@ public final class Multimaps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> filterValues(
           SetMultimap<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
@@ -2052,7 +2035,7 @@ public final class Multimaps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       Multimap<K, V> filterEntries(
           Multimap<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(entryPredicate);
@@ -2089,7 +2072,7 @@ public final class Multimaps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> filterEntries(
           SetMultimap<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(entryPredicate);
@@ -2104,7 +2087,7 @@ public final class Multimaps {
    * lead to a multimap whose removal operations would fail. This method combines the predicates to
    * avoid that problem.
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       Multimap<K, V> filterFiltered(
           FilteredMultimap<K, V> multimap, Predicate<? super Entry<K, V>> entryPredicate) {
     Predicate<Entry<K, V>> predicate =
@@ -2118,7 +2101,7 @@ public final class Multimaps {
    * lead to a multimap whose removal operations would fail. This method combines the predicates to
    * avoid that problem.
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       SetMultimap<K, V> filterFiltered(
           FilteredSetMultimap<K, V> multimap, Predicate<? super Entry<K, V>> entryPredicate) {
     Predicate<Entry<K, V>> predicate =
diff --git a/android/guava/src/com/google/common/collect/Multiset.java b/android/guava/src/com/google/common/collect/Multiset.java
index 8dfb1af..6668082 100644
--- a/android/guava/src/com/google/common/collect/Multiset.java
+++ b/android/guava/src/com/google/common/collect/Multiset.java
@@ -16,16 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CompatibleWith;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A collection that supports order-independent equality, like {@link Set}, but may have duplicate
@@ -80,9 +76,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface Multiset<E extends @Nullable Object> extends Collection<E> {
+public interface Multiset<E extends Object> extends Collection<E> {
   // Query Operations
 
   /**
@@ -129,7 +124,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    *     null elements. Note that if {@code occurrences} is zero, the implementation may opt to
    *     return normally.
    */
-  @CanIgnoreReturnValue
   int add(@ParametricNullness E element, int occurrences);
 
   /**
@@ -151,7 +145,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    * @throws IllegalArgumentException if {@link Integer#MAX_VALUE} occurrences of {@code element}
    *     are already contained in this multiset
    */
-  @CanIgnoreReturnValue
   @Override
   boolean add(@ParametricNullness E element);
 
@@ -167,7 +160,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    * @return the count of the element before the operation; possibly zero
    * @throws IllegalArgumentException if {@code occurrences} is negative
    */
-  @CanIgnoreReturnValue
   int remove(@CompatibleWith("E") @CheckForNull Object element, int occurrences);
 
   /**
@@ -182,7 +174,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    * @param element the element to remove one occurrence of
    * @return {@code true} if an occurrence was found and removed
    */
-  @CanIgnoreReturnValue
   @Override
   boolean remove(@CheckForNull Object element);
 
@@ -199,7 +190,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    *     null elements. Note that if {@code count} is zero, the implementor may optionally return
    *     zero instead.
    */
-  @CanIgnoreReturnValue
   int setCount(@ParametricNullness E element, int count);
 
   /**
@@ -218,7 +208,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    *     null elements. Note that if {@code oldCount} and {@code newCount} are both zero, the
    *     implementor may optionally return {@code true} instead.
    */
-  @CanIgnoreReturnValue
   boolean setCount(@ParametricNullness E element, int oldCount, int newCount);
 
   // Views
@@ -265,7 +254,7 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    *
    * @since 2.0
    */
-  interface Entry<E extends @Nullable Object> {
+  interface Entry<E extends Object> {
 
     /**
      * Returns the multiset element corresponding to this entry. Multiple calls to this method
@@ -414,7 +403,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    * <p>This method refines {@link Collection#removeAll} to further specify that it <b>may not</b>
    * throw an exception in response to any of {@code elements} being null or of the wrong type.
    */
-  @CanIgnoreReturnValue
   @Override
   boolean removeAll(Collection<?> c);
 
@@ -431,7 +419,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    *
    * @see Multisets#retainOccurrences(Multiset, Multiset)
    */
-  @CanIgnoreReturnValue
   @Override
   boolean retainAll(Collection<?> c);
 }
diff --git a/android/guava/src/com/google/common/collect/Multisets.java b/android/guava/src/com/google/common/collect/Multisets.java
index 02febca..71fbefc 100644
--- a/android/guava/src/com/google/common/collect/Multisets.java
+++ b/android/guava/src/com/google/common/collect/Multisets.java
@@ -20,17 +20,13 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.collect.Multiset.Entry;
 import com.google.common.math.IntMath;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Collection;
@@ -40,7 +36,6 @@ import java.util.Iterator;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static utility methods for creating and working with {@link Multiset} instances.
@@ -54,7 +49,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Multisets {
   private Multisets() {}
@@ -69,7 +63,7 @@ public final class Multisets {
    * @param multiset the multiset for which an unmodifiable view is to be generated
    * @return an unmodifiable view of the multiset
    */
-  public static <E extends @Nullable Object> Multiset<E> unmodifiableMultiset(
+  public static <E extends Object> Multiset<E> unmodifiableMultiset(
       Multiset<? extends E> multiset) {
     if (multiset instanceof UnmodifiableMultiset || multiset instanceof ImmutableMultiset) {
       @SuppressWarnings("unchecked") // Since it's unmodifiable, the covariant cast is safe
@@ -90,7 +84,7 @@ public final class Multisets {
     return checkNotNull(multiset);
   }
 
-  static class UnmodifiableMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>
+  static class UnmodifiableMultiset<E extends Object> extends ForwardingMultiset<E>
       implements Serializable {
     final Multiset<? extends E> delegate;
 
@@ -199,8 +193,7 @@ public final class Multisets {
    * @return an unmodifiable view of the multiset
    * @since 11.0
    */
-  @Beta
-  public static <E extends @Nullable Object> SortedMultiset<E> unmodifiableSortedMultiset(
+  public static <E extends Object> SortedMultiset<E> unmodifiableSortedMultiset(
       SortedMultiset<E> sortedMultiset) {
     // it's in its own file so it can be emulated for GWT
     return new UnmodifiableSortedMultiset<E>(checkNotNull(sortedMultiset));
@@ -214,12 +207,12 @@ public final class Multisets {
    * @param n the count to be associated with the returned entry
    * @throws IllegalArgumentException if {@code n} is negative
    */
-  public static <E extends @Nullable Object> Multiset.Entry<E> immutableEntry(
+  public static <E extends Object> Multiset.Entry<E> immutableEntry(
       @ParametricNullness E e, int n) {
     return new ImmutableEntry<E>(e, n);
   }
 
-  static class ImmutableEntry<E extends @Nullable Object> extends AbstractEntry<E>
+  static class ImmutableEntry<E extends Object> extends AbstractEntry<E>
       implements Serializable {
     @ParametricNullness private final E element;
     private final int count;
@@ -274,8 +267,7 @@ public final class Multisets {
    *
    * @since 14.0
    */
-  @Beta
-  public static <E extends @Nullable Object> Multiset<E> filter(
+  public static <E extends Object> Multiset<E> filter(
       Multiset<E> unfiltered, Predicate<? super E> predicate) {
     if (unfiltered instanceof FilteredMultiset) {
       // Support clear(), removeAll(), and retainAll() when filtering a filtered
@@ -287,7 +279,7 @@ public final class Multisets {
     return new FilteredMultiset<E>(unfiltered, predicate);
   }
 
-  private static final class FilteredMultiset<E extends @Nullable Object> extends ViewMultiset<E> {
+  private static final class FilteredMultiset<E extends Object> extends ViewMultiset<E> {
     final Multiset<E> unfiltered;
     final Predicate<? super E> predicate;
 
@@ -381,8 +373,7 @@ public final class Multisets {
    *
    * @since 14.0
    */
-  @Beta
-  public static <E extends @Nullable Object> Multiset<E> union(
+  public static <E extends Object> Multiset<E> union(
       final Multiset<? extends E> multiset1, final Multiset<? extends E> multiset2) {
     checkNotNull(multiset1);
     checkNotNull(multiset2);
@@ -454,7 +445,7 @@ public final class Multisets {
    *
    * @since 2.0
    */
-  public static <E extends @Nullable Object> Multiset<E> intersection(
+  public static <E extends Object> Multiset<E> intersection(
       final Multiset<E> multiset1, final Multiset<?> multiset2) {
     checkNotNull(multiset1);
     checkNotNull(multiset2);
@@ -511,8 +502,7 @@ public final class Multisets {
    *
    * @since 14.0
    */
-  @Beta
-  public static <E extends @Nullable Object> Multiset<E> sum(
+  public static <E extends Object> Multiset<E> sum(
       final Multiset<? extends E> multiset1, final Multiset<? extends E> multiset2) {
     checkNotNull(multiset1);
     checkNotNull(multiset2);
@@ -589,8 +579,7 @@ public final class Multisets {
    *
    * @since 14.0
    */
-  @Beta
-  public static <E extends @Nullable Object> Multiset<E> difference(
+  public static <E extends Object> Multiset<E> difference(
       final Multiset<E> multiset1, final Multiset<?> multiset2) {
     checkNotNull(multiset1);
     checkNotNull(multiset2);
@@ -660,7 +649,6 @@ public final class Multisets {
    *
    * @since 10.0
    */
-  @CanIgnoreReturnValue
   public static boolean containsOccurrences(Multiset<?> superMultiset, Multiset<?> subMultiset) {
     checkNotNull(superMultiset);
     checkNotNull(subMultiset);
@@ -689,14 +677,13 @@ public final class Multisets {
    * @return {@code true} if {@code multisetToModify} was changed as a result of this operation
    * @since 10.0
    */
-  @CanIgnoreReturnValue
   public static boolean retainOccurrences(
       Multiset<?> multisetToModify, Multiset<?> multisetToRetain) {
     return retainOccurrencesImpl(multisetToModify, multisetToRetain);
   }
 
   /** Delegate implementation which cares about the element type. */
-  private static <E extends @Nullable Object> boolean retainOccurrencesImpl(
+  private static <E extends Object> boolean retainOccurrencesImpl(
       Multiset<E> multisetToModify, Multiset<?> occurrencesToRetain) {
     checkNotNull(multisetToModify);
     checkNotNull(occurrencesToRetain);
@@ -740,7 +727,6 @@ public final class Multisets {
    * @since 18.0 (present in 10.0 with a requirement that the second parameter be a {@code
    *     Multiset})
    */
-  @CanIgnoreReturnValue
   public static boolean removeOccurrences(
       Multiset<?> multisetToModify, Iterable<?> occurrencesToRemove) {
     if (occurrencesToRemove instanceof Multiset) {
@@ -778,7 +764,6 @@ public final class Multisets {
    * @return {@code true} if {@code multisetToModify} was changed as a result of this operation
    * @since 10.0 (missing in 18.0 when only the overload taking an {@code Iterable} was present)
    */
-  @CanIgnoreReturnValue
   public static boolean removeOccurrences(
       Multiset<?> multisetToModify, Multiset<?> occurrencesToRemove) {
     checkNotNull(multisetToModify);
@@ -804,7 +789,7 @@ public final class Multisets {
    * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@link
    * Multiset.Entry}.
    */
-  abstract static class AbstractEntry<E extends @Nullable Object> implements Multiset.Entry<E> {
+  abstract static class AbstractEntry<E extends Object> implements Multiset.Entry<E> {
     /**
      * Indicates whether an object equals this entry, following the behavior specified in {@link
      * Multiset.Entry#equals}.
@@ -870,7 +855,7 @@ public final class Multisets {
   }
 
   /** An implementation of {@link Multiset#addAll}. */
-  static <E extends @Nullable Object> boolean addAllImpl(
+  static <E extends Object> boolean addAllImpl(
       Multiset<E> self, Collection<? extends E> elements) {
     checkNotNull(self);
     checkNotNull(elements);
@@ -884,7 +869,7 @@ public final class Multisets {
   }
 
   /** A specialization of {@code addAllImpl} for when {@code elements} is itself a Multiset. */
-  private static <E extends @Nullable Object> boolean addAllImpl(
+  private static <E extends Object> boolean addAllImpl(
       Multiset<E> self, Multiset<? extends E> elements) {
     // It'd be nice if we could specialize for ImmutableMultiset here without also retaining
     // its code when it's not in scope...
@@ -904,7 +889,7 @@ public final class Multisets {
    * A specialization of {@code addAllImpl} for when {@code elements} is an
    * AbstractMapBasedMultiset.
    */
-  private static <E extends @Nullable Object> boolean addAllImpl(
+  private static <E extends Object> boolean addAllImpl(
       Multiset<E> self, AbstractMapBasedMultiset<? extends E> elements) {
     if (elements.isEmpty()) {
       return false;
@@ -935,7 +920,7 @@ public final class Multisets {
   }
 
   /** An implementation of {@link Multiset#setCount(Object, int)}. */
-  static <E extends @Nullable Object> int setCountImpl(
+  static <E extends Object> int setCountImpl(
       Multiset<E> self, @ParametricNullness E element, int count) {
     checkNonnegative(count, "count");
 
@@ -952,7 +937,7 @@ public final class Multisets {
   }
 
   /** An implementation of {@link Multiset#setCount(Object, int, int)}. */
-  static <E extends @Nullable Object> boolean setCountImpl(
+  static <E extends Object> boolean setCountImpl(
       Multiset<E> self, @ParametricNullness E element, int oldCount, int newCount) {
     checkNonnegative(oldCount, "oldCount");
     checkNonnegative(newCount, "newCount");
@@ -965,7 +950,7 @@ public final class Multisets {
     }
   }
 
-  static <E extends @Nullable Object> Iterator<E> elementIterator(
+  static <E extends Object> Iterator<E> elementIterator(
       Iterator<Entry<E>> entryIterator) {
     return new TransformedIterator<Entry<E>, E>(entryIterator) {
       @Override
@@ -976,7 +961,7 @@ public final class Multisets {
     };
   }
 
-  abstract static class ElementSet<E extends @Nullable Object> extends Sets.ImprovedAbstractSet<E> {
+  abstract static class ElementSet<E extends Object> extends Sets.ImprovedAbstractSet<E> {
     abstract Multiset<E> multiset();
 
     @Override
@@ -1013,7 +998,7 @@ public final class Multisets {
     }
   }
 
-  abstract static class EntrySet<E extends @Nullable Object>
+  abstract static class EntrySet<E extends Object>
       extends Sets.ImprovedAbstractSet<Entry<E>> {
     abstract Multiset<E> multiset();
 
@@ -1046,7 +1031,7 @@ public final class Multisets {
           // Safe as long as we never add a new entry, which we won't.
           // (Presumably it can still throw CCE/NPE but only if the underlying Multiset does.)
           @SuppressWarnings({"unchecked", "nullness"})
-          Multiset<@Nullable Object> multiset = (Multiset<@Nullable Object>) multiset();
+          Multiset<Object> multiset = (Multiset<@Nullable Object>) multiset();
           return multiset.setCount(element, entryCount, 0);
         }
       }
@@ -1060,11 +1045,11 @@ public final class Multisets {
   }
 
   /** An implementation of {@link Multiset#iterator}. */
-  static <E extends @Nullable Object> Iterator<E> iteratorImpl(Multiset<E> multiset) {
+  static <E extends Object> Iterator<E> iteratorImpl(Multiset<E> multiset) {
     return new MultisetIteratorImpl<E>(multiset, multiset.entrySet().iterator());
   }
 
-  static final class MultisetIteratorImpl<E extends @Nullable Object> implements Iterator<E> {
+  static final class MultisetIteratorImpl<E extends Object> implements Iterator<E> {
     private final Multiset<E> multiset;
     private final Iterator<Entry<E>> entryIterator;
     @CheckForNull private Entry<E> currentEntry;
@@ -1133,7 +1118,7 @@ public final class Multisets {
   }
 
   /** Used to avoid http://bugs.sun.com/view_bug.do?bug_id=6558557 */
-  static <T extends @Nullable Object> Multiset<T> cast(Iterable<T> iterable) {
+  static <T extends Object> Multiset<T> cast(Iterable<T> iterable) {
     return (Multiset<T>) iterable;
   }
 
@@ -1143,7 +1128,6 @@ public final class Multisets {
    *
    * @since 11.0
    */
-  @Beta
   public static <E> ImmutableMultiset<E> copyHighestCountFirst(Multiset<E> multiset) {
     Entry<E>[] entries = (Entry<E>[]) multiset.entrySet().toArray(new Entry[0]);
     Arrays.sort(entries, DecreasingCount.INSTANCE);
@@ -1163,7 +1147,7 @@ public final class Multisets {
    * An {@link AbstractMultiset} with additional default implementations, some of them linear-time
    * implementations in terms of {@code elementSet} and {@code entrySet}.
    */
-  private abstract static class ViewMultiset<E extends @Nullable Object>
+  private abstract static class ViewMultiset<E extends Object>
       extends AbstractMultiset<E> {
     @Override
     public int size() {
diff --git a/android/guava/src/com/google/common/collect/MutableClassToInstanceMap.java b/android/guava/src/com/google/common/collect/MutableClassToInstanceMap.java
index 2fcf0d6..a8604b1 100644
--- a/android/guava/src/com/google/common/collect/MutableClassToInstanceMap.java
+++ b/android/guava/src/com/google/common/collect/MutableClassToInstanceMap.java
@@ -18,9 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Primitives;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -28,7 +26,6 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A mutable class-to-instance map backed by an arbitrary user-provided map. See also {@link
@@ -44,7 +41,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtIncompatible
 @SuppressWarnings("serial") // using writeReplace instead of standard serialization
 @ElementTypesAreNonnullByDefault
 public final class MutableClassToInstanceMap<B> extends ForwardingMap<Class<? extends B>, B>
@@ -127,14 +123,13 @@ public final class MutableClassToInstanceMap<B> extends ForwardingMap<Class<? ex
 
       @Override
       @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-      public <T extends @Nullable Object> T[] toArray(T[] array) {
+      public <T extends Object> T[] toArray(T[] array) {
         return standardToArray(array);
       }
     };
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public B put(Class<? extends B> key, B value) {
     return super.put(key, cast(key, value));
@@ -149,7 +144,6 @@ public final class MutableClassToInstanceMap<B> extends ForwardingMap<Class<? ex
     super.putAll(copy);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public <T extends B> T putInstance(Class<T> type, T value) {
@@ -162,7 +156,6 @@ public final class MutableClassToInstanceMap<B> extends ForwardingMap<Class<? ex
     return cast(type, get(type));
   }
 
-  @CanIgnoreReturnValue
   @CheckForNull
   private static <B, T extends B> T cast(Class<T> type, @CheckForNull B value) {
     return Primitives.wrap(type).cast(value);
diff --git a/android/guava/src/com/google/common/collect/NaturalOrdering.java b/android/guava/src/com/google/common/collect/NaturalOrdering.java
index 8cb8aef..836452a 100644
--- a/android/guava/src/com/google/common/collect/NaturalOrdering.java
+++ b/android/guava/src/com/google/common/collect/NaturalOrdering.java
@@ -18,20 +18,17 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering that uses the natural order of the values. */
-@GwtCompatible(serializable = true)
 @SuppressWarnings({"unchecked", "rawtypes"}) // TODO(kevinb): the right way to explain this??
 @ElementTypesAreNonnullByDefault
 final class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {
   static final NaturalOrdering INSTANCE = new NaturalOrdering();
 
-  @CheckForNull private transient Ordering<@Nullable Comparable<?>> nullsFirst;
-  @CheckForNull private transient Ordering<@Nullable Comparable<?>> nullsLast;
+  @CheckForNull private transient Ordering<Comparable<?>> nullsFirst;
+  @CheckForNull private transient Ordering<Comparable<?>> nullsLast;
 
   @Override
   public int compare(Comparable<?> left, Comparable<?> right) {
@@ -41,8 +38,8 @@ final class NaturalOrdering extends Ordering<Comparable<?>> implements Serializa
   }
 
   @Override
-  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {
-    Ordering<@Nullable Comparable<?>> result = nullsFirst;
+  public <S extends Comparable<?>> Ordering<S> nullsFirst() {
+    Ordering<Comparable<?>> result = nullsFirst;
     if (result == null) {
       result = nullsFirst = super.<Comparable<?>>nullsFirst();
     }
@@ -50,8 +47,8 @@ final class NaturalOrdering extends Ordering<Comparable<?>> implements Serializa
   }
 
   @Override
-  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {
-    Ordering<@Nullable Comparable<?>> result = nullsLast;
+  public <S extends Comparable<?>> Ordering<S> nullsLast() {
+    Ordering<Comparable<?>> result = nullsLast;
     if (result == null) {
       result = nullsLast = super.<Comparable<?>>nullsLast();
     }
diff --git a/android/guava/src/com/google/common/collect/NullnessCasts.java b/android/guava/src/com/google/common/collect/NullnessCasts.java
index 6ceeda7..448e182 100644
--- a/android/guava/src/com/google/common/collect/NullnessCasts.java
+++ b/android/guava/src/com/google/common/collect/NullnessCasts.java
@@ -14,12 +14,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** A utility method to perform unchecked casts to suppress errors produced by nullness analyses. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class NullnessCasts {
   /**
@@ -52,7 +49,7 @@ final class NullnessCasts {
    */
   @ParametricNullness
   @SuppressWarnings("nullness")
-  static <T extends @Nullable Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
+  static <T extends Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
     return t;
   }
 
@@ -60,7 +57,7 @@ final class NullnessCasts {
   @SuppressWarnings({"nullness", "TypeParameterUnusedInFormals"})
   // The warnings are legitimate. Each time we use this method, we document why.
   @ParametricNullness
-  static <T extends @Nullable Object> T unsafeNull() {
+  static <T extends Object> T unsafeNull() {
     return null;
   }
 
diff --git a/android/guava/src/com/google/common/collect/NullsFirstOrdering.java b/android/guava/src/com/google/common/collect/NullsFirstOrdering.java
index ce8be2f..aeed9c1 100644
--- a/android/guava/src/com/google/common/collect/NullsFirstOrdering.java
+++ b/android/guava/src/com/google/common/collect/NullsFirstOrdering.java
@@ -16,15 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering that treats {@code null} as less than all other values. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class NullsFirstOrdering<T extends @Nullable Object> extends Ordering<@Nullable T>
+final class NullsFirstOrdering<T extends Object> extends Ordering<T>
     implements Serializable {
   final Ordering<? super T> ordering;
 
@@ -48,19 +45,19 @@ final class NullsFirstOrdering<T extends @Nullable Object> extends Ordering<@Nul
 
   @Override
   @SuppressWarnings("nullness") // should be safe, but not sure if we can avoid the warning
-  public <S extends @Nullable T> Ordering<S> reverse() {
+  public <S extends T> Ordering<S> reverse() {
     // ordering.reverse() might be optimized, so let it do its thing
     return ordering.reverse().nullsLast();
   }
 
   @SuppressWarnings("unchecked") // still need the right way to explain this
   @Override
-  public <S extends T> Ordering<@Nullable S> nullsFirst() {
+  public <S extends T> Ordering<S> nullsFirst() {
     return (Ordering<@Nullable S>) this;
   }
 
   @Override
-  public <S extends T> Ordering<@Nullable S> nullsLast() {
+  public <S extends T> Ordering<S> nullsLast() {
     return ordering.<S>nullsLast();
   }
 
diff --git a/android/guava/src/com/google/common/collect/NullsLastOrdering.java b/android/guava/src/com/google/common/collect/NullsLastOrdering.java
index 6f8f74c..58f3e8a 100644
--- a/android/guava/src/com/google/common/collect/NullsLastOrdering.java
+++ b/android/guava/src/com/google/common/collect/NullsLastOrdering.java
@@ -16,15 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering that treats {@code null} as greater than all other values. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class NullsLastOrdering<T extends @Nullable Object> extends Ordering<@Nullable T>
+final class NullsLastOrdering<T extends Object> extends Ordering<T>
     implements Serializable {
   final Ordering<? super T> ordering;
 
@@ -48,19 +45,19 @@ final class NullsLastOrdering<T extends @Nullable Object> extends Ordering<@Null
 
   @Override
   @SuppressWarnings("nullness") // should be safe, but not sure if we can avoid the warning
-  public <S extends @Nullable T> Ordering<S> reverse() {
+  public <S extends T> Ordering<S> reverse() {
     // ordering.reverse() might be optimized, so let it do its thing
     return ordering.reverse().nullsFirst();
   }
 
   @Override
-  public <S extends T> Ordering<@Nullable S> nullsFirst() {
+  public <S extends T> Ordering<S> nullsFirst() {
     return ordering.<S>nullsFirst();
   }
 
   @SuppressWarnings("unchecked") // still need the right way to explain this
   @Override
-  public <S extends T> Ordering<@Nullable S> nullsLast() {
+  public <S extends T> Ordering<S> nullsLast() {
     return (Ordering<@Nullable S>) this;
   }
 
diff --git a/android/guava/src/com/google/common/collect/ObjectArrays.java b/android/guava/src/com/google/common/collect/ObjectArrays.java
index 0f928e1..914fa66 100644
--- a/android/guava/src/com/google/common/collect/ObjectArrays.java
+++ b/android/guava/src/com/google/common/collect/ObjectArrays.java
@@ -18,14 +18,10 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.lang.reflect.Array;
 import java.util.Arrays;
 import java.util.Collection;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to object arrays.
@@ -33,7 +29,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class ObjectArrays {
 
@@ -45,7 +40,7 @@ public final class ObjectArrays {
    * @param type the component type
    * @param length the length of the new array
    */
-  @GwtIncompatible // Array.newInstance(Class, int)
+  // Array.newInstance(Class, int)
   @SuppressWarnings("unchecked")
   public static <T> T[] newArray(Class<T> type, int length) {
     return (T[]) Array.newInstance(type, length);
@@ -57,7 +52,7 @@ public final class ObjectArrays {
    * @param reference any array of the desired type
    * @param length the length of the new array
    */
-  public static <T extends @Nullable Object> T[] newArray(T[] reference, int length) {
+  public static <T extends Object> T[] newArray(T[] reference, int length) {
     return Platform.newArray(reference, length);
   }
 
@@ -68,7 +63,7 @@ public final class ObjectArrays {
    * @param second the second array of elements to concatenate
    * @param type the component type of the returned array
    */
-  @GwtIncompatible // Array.newInstance(Class, int)
+  // Array.newInstance(Class, int)
   public static <T> T[] concat(T[] first, T[] second, Class<T> type) {
     T[] result = newArray(type, first.length + second.length);
     System.arraycopy(first, 0, result, 0, first.length);
@@ -84,7 +79,7 @@ public final class ObjectArrays {
    * @return an array whose size is one larger than {@code array}, with {@code element} occupying
    *     the first position, and the elements of {@code array} occupying the remaining elements.
    */
-  public static <T extends @Nullable Object> T[] concat(@ParametricNullness T element, T[] array) {
+  public static <T extends Object> T[] concat(@ParametricNullness T element, T[] array) {
     T[] result = newArray(array, array.length + 1);
     result[0] = element;
     System.arraycopy(array, 0, result, 1, array.length);
@@ -99,7 +94,7 @@ public final class ObjectArrays {
    * @return an array whose size is one larger than {@code array}, with the same contents as {@code
    *     array}, plus {@code element} occupying the last position.
    */
-  public static <T extends @Nullable Object> T[] concat(T[] array, @ParametricNullness T element) {
+  public static <T extends Object> T[] concat(T[] array, @ParametricNullness T element) {
     T[] result = Arrays.copyOf(array, array.length + 1);
     result[array.length] = element;
     return result;
@@ -126,14 +121,14 @@ public final class ObjectArrays {
    * @throws ArrayStoreException if the runtime type of the specified array is not a supertype of
    *     the runtime type of every element in the specified collection
    */
-  static <T extends @Nullable Object> T[] toArrayImpl(Collection<?> c, T[] array) {
+  static <T extends Object> T[] toArrayImpl(Collection<?> c, T[] array) {
     int size = c.size();
     if (array.length < size) {
       array = newArray(array, size);
     }
     fillArray(c, array);
     if (array.length > size) {
-      @Nullable Object[] unsoundlyCovariantArray = array;
+      Object[] unsoundlyCovariantArray = array;
       unsoundlyCovariantArray[size] = null;
     }
     return array;
@@ -150,13 +145,13 @@ public final class ObjectArrays {
    * collection is set to {@code null}. This is useful in determining the length of the collection
    * <i>only</i> if the caller knows that the collection does not contain any null elements.
    */
-  static <T extends @Nullable Object> T[] toArrayImpl(
+  static <T extends Object> T[] toArrayImpl(
       @Nullable Object[] src, int offset, int len, T[] dst) {
     checkPositionIndexes(offset, offset + len, src.length);
     if (dst.length < len) {
       dst = newArray(dst, len);
     } else if (dst.length > len) {
-      @Nullable Object[] unsoundlyCovariantArray = dst;
+      Object[] unsoundlyCovariantArray = dst;
       unsoundlyCovariantArray[len] = null;
     }
     System.arraycopy(src, offset, dst, 0, len);
@@ -175,7 +170,7 @@ public final class ObjectArrays {
    *
    * @param c the collection for which to return an array of elements
    */
-  static @Nullable Object[] toArrayImpl(Collection<?> c) {
+  static Object[] toArrayImpl(Collection<?> c) {
     return fillArray(c, new Object[c.size()]);
   }
 
@@ -183,18 +178,17 @@ public final class ObjectArrays {
    * Returns a copy of the specified subrange of the specified array that is literally an Object[],
    * and not e.g. a {@code String[]}.
    */
-  static @Nullable Object[] copyAsObjectArray(@Nullable Object[] elements, int offset, int length) {
+  static Object[] copyAsObjectArray(@Nullable Object[] elements, int offset, int length) {
     checkPositionIndexes(offset, offset + length, elements.length);
     if (length == 0) {
       return new Object[0];
     }
-    @Nullable Object[] result = new Object[length];
+    Object[] result = new Object[length];
     System.arraycopy(elements, offset, result, 0, length);
     return result;
   }
 
-  @CanIgnoreReturnValue
-  private static @Nullable Object[] fillArray(Iterable<?> elements, @Nullable Object[] array) {
+  private static Object[] fillArray(Iterable<?> elements, @Nullable Object[] array) {
     int i = 0;
     for (Object element : elements) {
       array[i++] = element;
@@ -209,14 +203,12 @@ public final class ObjectArrays {
     array[j] = temp;
   }
 
-  @CanIgnoreReturnValue
   static Object[] checkElementsNotNull(Object... array) {
     checkElementsNotNull(array, array.length);
     return array;
   }
 
-  @CanIgnoreReturnValue
-  static @Nullable Object[] checkElementsNotNull(@Nullable Object[] array, int length) {
+  static Object[] checkElementsNotNull(@Nullable Object[] array, int length) {
     for (int i = 0; i < length; i++) {
       checkElementNotNull(array[i], i);
     }
@@ -225,7 +217,6 @@ public final class ObjectArrays {
 
   // We do this instead of Preconditions.checkNotNull to save boxing and array
   // creation cost.
-  @CanIgnoreReturnValue
   static Object checkElementNotNull(@CheckForNull Object element, int index) {
     if (element == null) {
       throw new NullPointerException("at index " + index);
diff --git a/android/guava/src/com/google/common/collect/ObjectCountHashMap.java b/android/guava/src/com/google/common/collect/ObjectCountHashMap.java
index 29d5bcd..c1cf010 100644
--- a/android/guava/src/com/google/common/collect/ObjectCountHashMap.java
+++ b/android/guava/src/com/google/common/collect/ObjectCountHashMap.java
@@ -20,16 +20,12 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.collect.CollectPreconditions.checkPositive;
 import static com.google.common.collect.Hashing.smearedHash;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Multiset.Entry;
 import com.google.common.collect.Multisets.AbstractEntry;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Arrays;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * {@code ObjectCountHashMap} uses arrays to store key objects and count values. Comparing to using
@@ -38,12 +34,11 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * <p>In the absence of element deletions, this will iterate over elements in insertion order.
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-class ObjectCountHashMap<K extends @Nullable Object> {
+class ObjectCountHashMap<K extends Object> {
 
   /** Creates an empty {@code ObjectCountHashMap} instance. */
-  static <K extends @Nullable Object> ObjectCountHashMap<K> create() {
+  static <K extends Object> ObjectCountHashMap<K> create() {
     return new ObjectCountHashMap<K>();
   }
 
@@ -56,7 +51,7 @@ class ObjectCountHashMap<K extends @Nullable Object> {
    *     expectedSize} elements without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  static <K extends @Nullable Object> ObjectCountHashMap<K> createWithExpectedSize(
+  static <K extends Object> ObjectCountHashMap<K> createWithExpectedSize(
       int expectedSize) {
     return new ObjectCountHashMap<K>(expectedSize);
   }
@@ -82,7 +77,7 @@ class ObjectCountHashMap<K extends @Nullable Object> {
    */
 
   /** The keys of the entries in the map. */
-  transient @Nullable Object[] keys;
+  transient Object[] keys;
 
   /** The values of the entries in the map. */
   transient int[] values;
@@ -107,7 +102,7 @@ class ObjectCountHashMap<K extends @Nullable Object> {
    * next entry in the bucket chain). The pointers in [size(), entries.length) are all "null"
    * (UNSET).
    */
-  @VisibleForTesting transient long[] entries;
+  transient long[] entries;
 
   /** The load factor. */
   private transient float loadFactor;
@@ -147,7 +142,7 @@ class ObjectCountHashMap<K extends @Nullable Object> {
     this.table = newTable(buckets);
     this.loadFactor = loadFactor;
 
-    this.keys = new @Nullable Object[expectedSize];
+    this.keys = new Object[expectedSize];
     this.values = new int[expectedSize];
 
     this.entries = newEntries(expectedSize);
@@ -241,7 +236,6 @@ class ObjectCountHashMap<K extends @Nullable Object> {
     }
 
     @SuppressWarnings("unchecked") // values only contains Vs
-    @CanIgnoreReturnValue
     public int setCount(int count) {
       updateLastKnownIndex();
       if (lastKnownIndex == -1) {
@@ -279,11 +273,10 @@ class ObjectCountHashMap<K extends @Nullable Object> {
     }
   }
 
-  @CanIgnoreReturnValue
   public int put(@ParametricNullness K key, int value) {
     checkPositive(value, "count");
     long[] entries = this.entries;
-    @Nullable Object[] keys = this.keys;
+    Object[] keys = this.keys;
     int[] values = this.values;
 
     int hash = smearedHash(key);
@@ -408,7 +401,6 @@ class ObjectCountHashMap<K extends @Nullable Object> {
     return (index == -1) ? 0 : values[index];
   }
 
-  @CanIgnoreReturnValue
   public int remove(@CheckForNull Object key) {
     return remove(key, smearedHash(key));
   }
@@ -445,7 +437,6 @@ class ObjectCountHashMap<K extends @Nullable Object> {
     return 0;
   }
 
-  @CanIgnoreReturnValue
   int removeEntry(int entryIndex) {
     return remove(keys[entryIndex], getHash(entries[entryIndex]));
   }
diff --git a/android/guava/src/com/google/common/collect/ObjectCountLinkedHashMap.java b/android/guava/src/com/google/common/collect/ObjectCountLinkedHashMap.java
index 266606a..3091663 100644
--- a/android/guava/src/com/google/common/collect/ObjectCountLinkedHashMap.java
+++ b/android/guava/src/com/google/common/collect/ObjectCountLinkedHashMap.java
@@ -15,10 +15,7 @@
  */
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.util.Arrays;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * {@code ObjectCountLinkedHashMap} is a subclass of {@code ObjectCountHashMap} with insertion
@@ -27,11 +24,10 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * entries, {@code ObjectCountLinkedHashMap} minimizes object allocation and reduces memory
  * footprint.
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-class ObjectCountLinkedHashMap<K extends @Nullable Object> extends ObjectCountHashMap<K> {
+class ObjectCountLinkedHashMap<K extends Object> extends ObjectCountHashMap<K> {
   /** Creates an empty {@code ObjectCountLinkedHashMap} instance. */
-  static <K extends @Nullable Object> ObjectCountLinkedHashMap<K> create() {
+  static <K extends Object> ObjectCountLinkedHashMap<K> create() {
     return new ObjectCountLinkedHashMap<K>();
   }
 
@@ -44,7 +40,7 @@ class ObjectCountLinkedHashMap<K extends @Nullable Object> extends ObjectCountHa
    *     expectedSize} elements without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  static <K extends @Nullable Object> ObjectCountLinkedHashMap<K> createWithExpectedSize(
+  static <K extends Object> ObjectCountLinkedHashMap<K> createWithExpectedSize(
       int expectedSize) {
     return new ObjectCountLinkedHashMap<K>(expectedSize);
   }
@@ -65,7 +61,7 @@ class ObjectCountLinkedHashMap<K extends @Nullable Object> extends ObjectCountHa
    * <p>A node with "prev" pointer equal to {@code ENDPOINT} is the first node in the linked list,
    * and a node with "nextEntry" pointer equal to {@code ENDPOINT} is the last node.
    */
-  @VisibleForTesting transient long[] links;
+  transient long[] links;
 
   /** Pointer to the first node in the linked list, or {@code ENDPOINT} if there are no entries. */
   private transient int firstEntry;
diff --git a/android/guava/src/com/google/common/collect/Ordering.java b/android/guava/src/com/google/common/collect/Ordering.java
index 025f95f..1f74a17 100644
--- a/android/guava/src/com/google/common/collect/Ordering.java
+++ b/android/guava/src/com/google/common/collect/Ordering.java
@@ -19,10 +19,7 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -39,7 +36,6 @@ import java.util.TreeSet;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A comparator, with additional methods to support common operations. This is an "enriched" version
@@ -144,9 +140,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class Ordering<T extends @Nullable Object> implements Comparator<T> {
+public abstract class Ordering<T extends Object> implements Comparator<T> {
   // Natural order
 
   /**
@@ -158,7 +153,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * <p><b>Java 8 users:</b> use {@link Comparator#naturalOrder} instead.
    */
-  @GwtCompatible(serializable = true)
   @SuppressWarnings("unchecked") // TODO(kevinb): right way to explain this??
   public static <C extends Comparable> Ordering<C> natural() {
     return (Ordering<C>) NaturalOrdering.INSTANCE;
@@ -179,8 +173,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    * @return comparator itself if it is already an {@code Ordering}; otherwise an ordering that
    *     wraps that comparator
    */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Ordering<T> from(Comparator<T> comparator) {
+  public static <T extends Object> Ordering<T> from(Comparator<T> comparator) {
     return (comparator instanceof Ordering)
         ? (Ordering<T>) comparator
         : new ComparatorOrdering<T>(comparator);
@@ -191,9 +184,8 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * @deprecated no need to use this
    */
-  @GwtCompatible(serializable = true)
   @Deprecated
-  public static <T extends @Nullable Object> Ordering<T> from(Ordering<T> ordering) {
+  public static <T extends Object> Ordering<T> from(Ordering<T> ordering) {
     return checkNotNull(ordering);
   }
 
@@ -217,7 +209,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *     (according to {@link Object#equals})
    */
   // TODO(kevinb): provide replacement
-  @GwtCompatible(serializable = true)
   public static <T> Ordering<T> explicit(List<T> valuesInOrder) {
     return new ExplicitOrdering<T>(valuesInOrder);
   }
@@ -243,7 +234,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *     Object#equals(Object)}) are present among the method arguments
    */
   // TODO(kevinb): provide replacement
-  @GwtCompatible(serializable = true)
   public static <T> Ordering<T> explicit(T leastValue, T... remainingValuesInOrder) {
     return explicit(Lists.asList(leastValue, remainingValuesInOrder));
   }
@@ -278,9 +268,8 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * @since 13.0
    */
-  @GwtCompatible(serializable = true)
   @SuppressWarnings("unchecked")
-  public static Ordering<@Nullable Object> allEqual() {
+  public static Ordering<Object> allEqual() {
     return AllEqualOrdering.INSTANCE;
   }
 
@@ -292,7 +281,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * <p><b>Java 8 users:</b> Use {@code Comparator.comparing(Object::toString)} instead.
    */
-  @GwtCompatible(serializable = true)
   public static Ordering<Object> usingToString() {
     return UsingToStringOrdering.INSTANCE;
   }
@@ -313,16 +301,15 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    * @since 2.0
    */
   // TODO(kevinb): copy to Comparators, etc.
-  public static Ordering<@Nullable Object> arbitrary() {
+  public static Ordering<Object> arbitrary() {
     return ArbitraryOrderingHolder.ARBITRARY_ORDERING;
   }
 
   private static class ArbitraryOrderingHolder {
-    static final Ordering<@Nullable Object> ARBITRARY_ORDERING = new ArbitraryOrdering();
+    static final Ordering<Object> ARBITRARY_ORDERING = new ArbitraryOrdering();
   }
 
-  @VisibleForTesting
-  static class ArbitraryOrdering extends Ordering<@Nullable Object> {
+  static class ArbitraryOrdering extends Ordering<Object> {
 
     private final AtomicInteger counter = new AtomicInteger(0);
     private final ConcurrentMap<Object, Integer> uids =
@@ -402,7 +389,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    */
   // type parameter <S> lets us avoid the extra <String> in statements like:
   // Ordering<String> o = Ordering.<String>natural().reverse();
-  @GwtCompatible(serializable = true)
   public <S extends T> Ordering<S> reverse() {
     return new ReverseOrdering<S>(this);
   }
@@ -415,8 +401,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    */
   // type parameter <S> lets us avoid the extra <String> in statements like:
   // Ordering<String> o = Ordering.<String>natural().nullsFirst();
-  @GwtCompatible(serializable = true)
-  public <S extends T> Ordering<@Nullable S> nullsFirst() {
+  public <S extends T> Ordering<S> nullsFirst() {
     return new NullsFirstOrdering<S>(this);
   }
 
@@ -428,8 +413,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    */
   // type parameter <S> lets us avoid the extra <String> in statements like:
   // Ordering<String> o = Ordering.<String>natural().nullsLast();
-  @GwtCompatible(serializable = true)
-  public <S extends T> Ordering<@Nullable S> nullsLast() {
+  public <S extends T> Ordering<S> nullsLast() {
     return new NullsLastOrdering<S>(this);
   }
 
@@ -446,8 +430,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    * <p><b>Java 8 users:</b> Use {@code Comparator.comparing(function, thisComparator)} instead (you
    * can omit the comparator if it is the natural order).
    */
-  @GwtCompatible(serializable = true)
-  public <F extends @Nullable Object> Ordering<F> onResultOf(Function<F, ? extends T> function) {
+  public <F extends Object> Ordering<F> onResultOf(Function<F, ? extends T> function) {
     return new ByFunctionOrdering<>(function, this);
   }
 
@@ -468,7 +451,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    * Depending on what {@code secondaryComparator} is, one of the other overloads of {@code
    * thenComparing} may be even more useful.
    */
-  @GwtCompatible(serializable = true)
   public <U extends T> Ordering<U> compound(Comparator<? super U> secondaryComparator) {
     return new CompoundOrdering<U>(this, checkNotNull(secondaryComparator));
   }
@@ -492,8 +474,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * @param comparators the comparators to try in order
    */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Ordering<T> compound(
+  public static <T extends Object> Ordering<T> compound(
       Iterable<? extends Comparator<? super T>> comparators) {
     return new CompoundOrdering<T>(comparators);
   }
@@ -513,7 +494,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * @since 2.0
    */
-  @GwtCompatible(serializable = true)
   // type parameter <S> lets us avoid the extra <String> in statements like:
   // Ordering<Iterable<String>> o =
   //     Ordering.<String>natural().lexicographical();
@@ -530,7 +510,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
 
   // Regular instance methods
 
-  @CanIgnoreReturnValue // TODO(kak): Consider removing this
+  // TODO(kak): Consider removing this
   @Override
   public abstract int compare(@ParametricNullness T left, @ParametricNullness T right);
 
@@ -943,7 +923,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    * Object[])} comparator when comparing a value outside the set of values it can compare.
    * Extending {@link ClassCastException} may seem odd, but it is required.
    */
-  @VisibleForTesting
   static class IncomparableValueException extends ClassCastException {
     final Object value;
 
diff --git a/android/guava/src/com/google/common/collect/ParametricNullness.java b/android/guava/src/com/google/common/collect/ParametricNullness.java
index b1cda48..cc82d5c 100644
--- a/android/guava/src/com/google/common/collect/ParametricNullness.java
+++ b/android/guava/src/com/google/common/collect/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/collect/PeekingIterator.java b/android/guava/src/com/google/common/collect/PeekingIterator.java
index a274fe4..9ce5773 100644
--- a/android/guava/src/com/google/common/collect/PeekingIterator.java
+++ b/android/guava/src/com/google/common/collect/PeekingIterator.java
@@ -16,12 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An iterator that supports a one-element lookahead while iterating.
@@ -33,10 +29,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mick Killianey
  * @since 2.0
  */
-@DoNotMock("Use Iterators.peekingIterator")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {
+public interface PeekingIterator<E extends Object> extends Iterator<E> {
   /**
    * Returns the next element in the iteration, without advancing the iteration.
    *
@@ -55,7 +49,6 @@ public interface PeekingIterator<E extends @Nullable Object> extends Iterator<E>
    * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are
    * guaranteed to be equal to each other.
    */
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   E next();
diff --git a/android/guava/src/com/google/common/collect/Platform.java b/android/guava/src/com/google/common/collect/Platform.java
index 0b18e1f..282f819 100644
--- a/android/guava/src/com/google/common/collect/Platform.java
+++ b/android/guava/src/com/google/common/collect/Platform.java
@@ -16,23 +16,20 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.reflect.Array;
 import java.util.Arrays;
 import java.util.Map;
 import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Methods factored out so that they can be emulated differently in GWT.
  *
  * @author Hayward Chan
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class Platform {
   /** Returns the platform preferred implementation of a map based on a hash table. */
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       Map<K, V> newHashMapWithExpectedSize(int expectedSize) {
     return CompactHashMap.createWithExpectedSize(expectedSize);
   }
@@ -41,13 +38,13 @@ final class Platform {
    * Returns the platform preferred implementation of an insertion ordered map based on a hash
    * table.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       Map<K, V> newLinkedHashMapWithExpectedSize(int expectedSize) {
     return CompactLinkedHashMap.createWithExpectedSize(expectedSize);
   }
 
   /** Returns the platform preferred implementation of a set based on a hash table. */
-  static <E extends @Nullable Object> Set<E> newHashSetWithExpectedSize(int expectedSize) {
+  static <E extends Object> Set<E> newHashSetWithExpectedSize(int expectedSize) {
     return CompactHashSet.createWithExpectedSize(expectedSize);
   }
 
@@ -55,7 +52,7 @@ final class Platform {
    * Returns the platform preferred implementation of an insertion ordered set based on a hash
    * table.
    */
-  static <E extends @Nullable Object> Set<E> newLinkedHashSetWithExpectedSize(int expectedSize) {
+  static <E extends Object> Set<E> newLinkedHashSetWithExpectedSize(int expectedSize) {
     return CompactLinkedHashSet.createWithExpectedSize(expectedSize);
   }
 
@@ -63,7 +60,7 @@ final class Platform {
    * Returns the platform preferred map implementation that preserves insertion order when used only
    * for insertions.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       Map<K, V> preservesInsertionOrderOnPutsMap() {
     return CompactHashMap.create();
   }
@@ -72,7 +69,7 @@ final class Platform {
    * Returns the platform preferred set implementation that preserves insertion order when used only
    * for insertions.
    */
-  static <E extends @Nullable Object> Set<E> preservesInsertionOrderOnAddsSet() {
+  static <E extends Object> Set<E> preservesInsertionOrderOnAddsSet() {
     return CompactHashSet.create();
   }
 
@@ -88,7 +85,7 @@ final class Platform {
    * about arrays for now, as they're a mess. (We previously discussed this in the review of
    * ObjectArrays, which is the main caller of this method.)
    */
-  static <T extends @Nullable Object> T[] newArray(T[] reference, int length) {
+  static <T extends Object> T[] newArray(T[] reference, int length) {
     Class<?> type = reference.getClass().getComponentType();
 
     // the cast is safe because
@@ -108,7 +105,7 @@ final class Platform {
    * - https://github.com/jspecify/jdk/commit/71d826792b8c7ef95d492c50a274deab938f2552
    */
   @SuppressWarnings("nullness")
-  static <T extends @Nullable Object> T[] copy(Object[] source, int from, int to, T[] arrayOfType) {
+  static <T extends Object> T[] copy(Object[] source, int from, int to, T[] arrayOfType) {
     return Arrays.copyOfRange(source, from, to, (Class<? extends T[]>) arrayOfType.getClass());
   }
 
diff --git a/android/guava/src/com/google/common/collect/Queues.java b/android/guava/src/com/google/common/collect/Queues.java
index 6a4dbd2..4cd84c1 100644
--- a/android/guava/src/com/google/common/collect/Queues.java
+++ b/android/guava/src/com/google/common/collect/Queues.java
@@ -14,11 +14,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ArrayDeque;
 import java.util.Collection;
 import java.util.Deque;
@@ -32,7 +28,6 @@ import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.PriorityBlockingQueue;
 import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@link Queue} and {@link Deque} instances. Also see this
@@ -41,7 +36,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Queues {
   private Queues() {}
@@ -52,7 +46,7 @@ public final class Queues {
    * Creates an empty {@code ArrayBlockingQueue} with the given (fixed) capacity and nonfair access
    * policy.
    */
-  @GwtIncompatible // ArrayBlockingQueue
+  // ArrayBlockingQueue
   public static <E> ArrayBlockingQueue<E> newArrayBlockingQueue(int capacity) {
     return new ArrayBlockingQueue<E>(capacity);
   }
@@ -86,7 +80,7 @@ public final class Queues {
   // ConcurrentLinkedQueue
 
   /** Creates an empty {@code ConcurrentLinkedQueue}. */
-  @GwtIncompatible // ConcurrentLinkedQueue
+  // ConcurrentLinkedQueue
   public static <E> ConcurrentLinkedQueue<E> newConcurrentLinkedQueue() {
     return new ConcurrentLinkedQueue<E>();
   }
@@ -95,7 +89,7 @@ public final class Queues {
    * Creates a {@code ConcurrentLinkedQueue} containing the elements of the specified iterable, in
    * the order they are returned by the iterable's iterator.
    */
-  @GwtIncompatible // ConcurrentLinkedQueue
+  // ConcurrentLinkedQueue
   public static <E> ConcurrentLinkedQueue<E> newConcurrentLinkedQueue(
       Iterable<? extends E> elements) {
     if (elements instanceof Collection) {
@@ -113,7 +107,7 @@ public final class Queues {
    *
    * @since 12.0
    */
-  @GwtIncompatible // LinkedBlockingDeque
+  // LinkedBlockingDeque
   public static <E> LinkedBlockingDeque<E> newLinkedBlockingDeque() {
     return new LinkedBlockingDeque<E>();
   }
@@ -124,7 +118,7 @@ public final class Queues {
    * @throws IllegalArgumentException if {@code capacity} is less than 1
    * @since 12.0
    */
-  @GwtIncompatible // LinkedBlockingDeque
+  // LinkedBlockingDeque
   public static <E> LinkedBlockingDeque<E> newLinkedBlockingDeque(int capacity) {
     return new LinkedBlockingDeque<E>(capacity);
   }
@@ -136,7 +130,7 @@ public final class Queues {
    *
    * @since 12.0
    */
-  @GwtIncompatible // LinkedBlockingDeque
+  // LinkedBlockingDeque
   public static <E> LinkedBlockingDeque<E> newLinkedBlockingDeque(Iterable<? extends E> elements) {
     if (elements instanceof Collection) {
       return new LinkedBlockingDeque<E>((Collection<? extends E>) elements);
@@ -149,7 +143,7 @@ public final class Queues {
   // LinkedBlockingQueue
 
   /** Creates an empty {@code LinkedBlockingQueue} with a capacity of {@link Integer#MAX_VALUE}. */
-  @GwtIncompatible // LinkedBlockingQueue
+  // LinkedBlockingQueue
   public static <E> LinkedBlockingQueue<E> newLinkedBlockingQueue() {
     return new LinkedBlockingQueue<E>();
   }
@@ -159,7 +153,7 @@ public final class Queues {
    *
    * @throws IllegalArgumentException if {@code capacity} is less than 1
    */
-  @GwtIncompatible // LinkedBlockingQueue
+  // LinkedBlockingQueue
   public static <E> LinkedBlockingQueue<E> newLinkedBlockingQueue(int capacity) {
     return new LinkedBlockingQueue<E>(capacity);
   }
@@ -172,7 +166,7 @@ public final class Queues {
    * @param elements the elements that the queue should contain, in order
    * @return a new {@code LinkedBlockingQueue} containing those elements
    */
-  @GwtIncompatible // LinkedBlockingQueue
+  // LinkedBlockingQueue
   public static <E> LinkedBlockingQueue<E> newLinkedBlockingQueue(Iterable<? extends E> elements) {
     if (elements instanceof Collection) {
       return new LinkedBlockingQueue<E>((Collection<? extends E>) elements);
@@ -193,7 +187,7 @@ public final class Queues {
    * @since 11.0 (but the bound of {@code E} was changed from {@code Object} to {@code Comparable}
    *     in 15.0)
    */
-  @GwtIncompatible // PriorityBlockingQueue
+  // PriorityBlockingQueue
   public static <E extends Comparable> PriorityBlockingQueue<E> newPriorityBlockingQueue() {
     return new PriorityBlockingQueue<E>();
   }
@@ -207,7 +201,7 @@ public final class Queues {
    * @since 11.0 (but the bound of {@code E} was changed from {@code Object} to {@code Comparable}
    *     in 15.0)
    */
-  @GwtIncompatible // PriorityBlockingQueue
+  // PriorityBlockingQueue
   public static <E extends Comparable> PriorityBlockingQueue<E> newPriorityBlockingQueue(
       Iterable<? extends E> elements) {
     if (elements instanceof Collection) {
@@ -253,7 +247,7 @@ public final class Queues {
   // SynchronousQueue
 
   /** Creates an empty {@code SynchronousQueue} with nonfair access policy. */
-  @GwtIncompatible // SynchronousQueue
+  // SynchronousQueue
   public static <E> SynchronousQueue<E> newSynchronousQueue() {
     return new SynchronousQueue<E>();
   }
@@ -270,9 +264,7 @@ public final class Queues {
    * @return the number of elements transferred
    * @throws InterruptedException if interrupted while waiting
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // BlockingQueue
+  // BlockingQueue
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static <E> int drain(
       BlockingQueue<E> q,
@@ -318,9 +310,7 @@ public final class Queues {
    * @param unit a {@code TimeUnit} determining how to interpret the timeout parameter
    * @return the number of elements transferred
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // BlockingQueue
+  // BlockingQueue
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static <E> int drainUninterruptibly(
       BlockingQueue<E> q,
@@ -391,7 +381,7 @@ public final class Queues {
    * @return a synchronized view of the specified queue
    * @since 14.0
    */
-  public static <E extends @Nullable Object> Queue<E> synchronizedQueue(Queue<E> queue) {
+  public static <E extends Object> Queue<E> synchronizedQueue(Queue<E> queue) {
     return Synchronized.queue(queue, null);
   }
 
@@ -424,7 +414,7 @@ public final class Queues {
    * @return a synchronized view of the specified deque
    * @since 15.0
    */
-  public static <E extends @Nullable Object> Deque<E> synchronizedDeque(Deque<E> deque) {
+  public static <E extends Object> Deque<E> synchronizedDeque(Deque<E> deque) {
     return Synchronized.deque(deque, null);
   }
 }
diff --git a/android/guava/src/com/google/common/collect/Range.java b/android/guava/src/com/google/common/collect/Range.java
index ab5c077..4bab6ad 100644
--- a/android/guava/src/com/google/common/collect/Range.java
+++ b/android/guava/src/com/google/common/collect/Range.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
@@ -115,7 +114,6 @@ import javax.annotation.CheckForNull;
  * @author Gregory Kick
  * @since 10.0
  */
-@GwtCompatible
 @SuppressWarnings("rawtypes")
 @ElementTypesAreNonnullByDefault
 public final class Range<C extends Comparable> extends RangeGwtSerializationDependencies
diff --git a/android/guava/src/com/google/common/collect/RangeGwtSerializationDependencies.java b/android/guava/src/com/google/common/collect/RangeGwtSerializationDependencies.java
index 222c128..1b22630 100644
--- a/android/guava/src/com/google/common/collect/RangeGwtSerializationDependencies.java
+++ b/android/guava/src/com/google/common/collect/RangeGwtSerializationDependencies.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 
 /**
@@ -28,5 +27,4 @@ import java.io.Serializable;
  *
  * <p>TODO(cpovirk): Consider applying this subclass approach to our other types.
  */
-@GwtCompatible(emulated = true)
 abstract class RangeGwtSerializationDependencies<C extends Comparable> implements Serializable {}
diff --git a/android/guava/src/com/google/common/collect/RangeMap.java b/android/guava/src/com/google/common/collect/RangeMap.java
index 14adb00..5f62eef 100644
--- a/android/guava/src/com/google/common/collect/RangeMap.java
+++ b/android/guava/src/com/google/common/collect/RangeMap.java
@@ -16,9 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -35,9 +32,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@DoNotMock("Use ImmutableRangeMap or TreeRangeMap")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface RangeMap<K extends Comparable, V> {
   /*
diff --git a/android/guava/src/com/google/common/collect/RangeSet.java b/android/guava/src/com/google/common/collect/RangeSet.java
index edb0f79..3ef68e8 100644
--- a/android/guava/src/com/google/common/collect/RangeSet.java
+++ b/android/guava/src/com/google/common/collect/RangeSet.java
@@ -14,9 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import javax.annotation.CheckForNull;
@@ -49,9 +46,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@DoNotMock("Use ImmutableRangeSet or TreeRangeSet")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface RangeSet<C extends Comparable> {
 
diff --git a/android/guava/src/com/google/common/collect/RegularContiguousSet.java b/android/guava/src/com/google/common/collect/RegularContiguousSet.java
index 913e2d7..e0aacc5 100644
--- a/android/guava/src/com/google/common/collect/RegularContiguousSet.java
+++ b/android/guava/src/com/google/common/collect/RegularContiguousSet.java
@@ -18,10 +18,7 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.BoundType.CLOSED;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.Collection;
 import javax.annotation.CheckForNull;
@@ -31,7 +28,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("unchecked") // allow ungenerified Comparable types
 @ElementTypesAreNonnullByDefault
 final class RegularContiguousSet<C extends Comparable> extends ContiguousSet<C> {
@@ -71,7 +67,7 @@ final class RegularContiguousSet<C extends Comparable> extends ContiguousSet<C>
     return intersectionInCurrentDomain(Range.downTo(fromElement, BoundType.forBoolean(inclusive)));
   }
 
-  @GwtIncompatible // not used by GWT emulation
+  // not used by GWT emulation
   @Override
   int indexOf(@CheckForNull Object target) {
     // requireNonNull is safe because of the contains check.
@@ -91,7 +87,7 @@ final class RegularContiguousSet<C extends Comparable> extends ContiguousSet<C>
     };
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public UnmodifiableIterator<C> descendingIterator() {
     return new AbstractSequentialIterator<C>(last()) {
@@ -220,7 +216,7 @@ final class RegularContiguousSet<C extends Comparable> extends ContiguousSet<C>
     return Sets.hashCodeImpl(this);
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static final class SerializedForm<C extends Comparable> implements Serializable {
     final Range<C> range;
     final DiscreteDomain<C> domain;
@@ -235,7 +231,7 @@ final class RegularContiguousSet<C extends Comparable> extends ContiguousSet<C>
     }
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   @Override
   Object writeReplace() {
     return new SerializedForm<C>(range, domain);
diff --git a/android/guava/src/com/google/common/collect/RegularImmutableAsList.java b/android/guava/src/com/google/common/collect/RegularImmutableAsList.java
index e344db1..9cf6771 100644
--- a/android/guava/src/com/google/common/collect/RegularImmutableAsList.java
+++ b/android/guava/src/com/google/common/collect/RegularImmutableAsList.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An {@link ImmutableAsList} implementation specialized for when the delegate collection is already
@@ -27,7 +24,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("serial") // uses writeReplace, not default serialization
 @ElementTypesAreNonnullByDefault
 class RegularImmutableAsList<E> extends ImmutableAsList<E> {
@@ -62,7 +58,7 @@ class RegularImmutableAsList<E> extends ImmutableAsList<E> {
     return (UnmodifiableListIterator<E>) delegateList.listIterator(index);
   }
 
-  @GwtIncompatible // not present in emulated superclass
+  // not present in emulated superclass
   @Override
   int copyIntoArray(@Nullable Object[] dst, int offset) {
     return delegateList.copyIntoArray(dst, offset);
@@ -70,7 +66,6 @@ class RegularImmutableAsList<E> extends ImmutableAsList<E> {
 
   @Override
   @CheckForNull
-  @Nullable
   Object[] internalArray() {
     return delegateList.internalArray();
   }
diff --git a/android/guava/src/com/google/common/collect/RegularImmutableBiMap.java b/android/guava/src/com/google/common/collect/RegularImmutableBiMap.java
index 4607477..a399d0e 100644
--- a/android/guava/src/com/google/common/collect/RegularImmutableBiMap.java
+++ b/android/guava/src/com/google/common/collect/RegularImmutableBiMap.java
@@ -16,24 +16,20 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Bimap with zero or more mappings.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 final class RegularImmutableBiMap<K, V> extends ImmutableBiMap<K, V> {
   static final RegularImmutableBiMap<Object, Object> EMPTY = new RegularImmutableBiMap<>();
 
   @CheckForNull private final transient Object keyHashTable;
-  @VisibleForTesting final transient @Nullable Object[] alternatingKeysAndValues;
+  final transient Object[] alternatingKeysAndValues;
   private final transient int keyOffset; // 0 for K-to-V, 1 for V-to-K
   private final transient int size;
   private final transient RegularImmutableBiMap<V, K> inverse;
diff --git a/android/guava/src/com/google/common/collect/RegularImmutableList.java b/android/guava/src/com/google/common/collect/RegularImmutableList.java
index baf1d66..c0df989 100644
--- a/android/guava/src/com/google/common/collect/RegularImmutableList.java
+++ b/android/guava/src/com/google/common/collect/RegularImmutableList.java
@@ -17,25 +17,20 @@
 package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkElementIndex;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link ImmutableList} backed by a simple array.
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 class RegularImmutableList<E> extends ImmutableList<E> {
   static final ImmutableList<Object> EMPTY = new RegularImmutableList<>(new Object[0], 0);
 
   // The first `size` elements are non-null.
-  @VisibleForTesting final transient @Nullable Object[] array;
+  final transient Object[] array;
   private final transient int size;
 
   RegularImmutableList(@Nullable Object[] array, int size) {
@@ -54,7 +49,6 @@ class RegularImmutableList<E> extends ImmutableList<E> {
   }
 
   @Override
-  @Nullable
   Object[] internalArray() {
     return array;
   }
diff --git a/android/guava/src/com/google/common/collect/RegularImmutableMap.java b/android/guava/src/com/google/common/collect/RegularImmutableMap.java
index d8f9f3b..29606b6 100644
--- a/android/guava/src/com/google/common/collect/RegularImmutableMap.java
+++ b/android/guava/src/com/google/common/collect/RegularImmutableMap.java
@@ -19,22 +19,17 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkPositionIndex;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.util.AbstractMap;
 import java.util.Arrays;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A hash-based implementation of {@link ImmutableMap}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
 final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
   private static final byte ABSENT = -1;
@@ -68,7 +63,7 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
    */
 
   @CheckForNull private final transient Object hashTable;
-  @VisibleForTesting final transient @Nullable Object[] alternatingKeysAndValues;
+  final transient Object[] alternatingKeysAndValues;
   private final transient int size;
 
   @SuppressWarnings("unchecked")
@@ -292,7 +287,7 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
 
   static class EntrySet<K, V> extends ImmutableSet<Entry<K, V>> {
     private final transient ImmutableMap<K, V> map;
-    private final transient @Nullable Object[] alternatingKeysAndValues;
+    private final transient Object[] alternatingKeysAndValues;
     private final transient int keyOffset;
     private final transient int size;
 
@@ -377,7 +372,7 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
   }
 
   static final class KeysOrValuesAsList extends ImmutableList<Object> {
-    private final transient @Nullable Object[] alternatingKeysAndValues;
+    private final transient Object[] alternatingKeysAndValues;
     private final transient int offset;
     private final transient int size;
 
diff --git a/android/guava/src/com/google/common/collect/RegularImmutableMultiset.java b/android/guava/src/com/google/common/collect/RegularImmutableMultiset.java
index 6fbc099..038aca5 100644
--- a/android/guava/src/com/google/common/collect/RegularImmutableMultiset.java
+++ b/android/guava/src/com/google/common/collect/RegularImmutableMultiset.java
@@ -14,12 +14,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Multiset.Entry;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -29,7 +25,6 @@ import javax.annotation.CheckForNull;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true, serializable = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 class RegularImmutableMultiset<E> extends ImmutableMultiset<E> {
@@ -39,7 +34,7 @@ class RegularImmutableMultiset<E> extends ImmutableMultiset<E> {
   final transient ObjectCountHashMap<E> contents;
   private final transient int size;
 
-  @LazyInit @CheckForNull private transient ImmutableSet<E> elementSet;
+  @CheckForNull private transient ImmutableSet<E> elementSet;
 
   RegularImmutableMultiset(ObjectCountHashMap<E> contents) {
     this.contents = contents;
@@ -71,7 +66,6 @@ class RegularImmutableMultiset<E> extends ImmutableMultiset<E> {
     return (result == null) ? elementSet = new ElementSet() : result;
   }
 
-  @WeakOuter
   private final class ElementSet extends IndexedImmutableSet<E> {
 
     @Override
@@ -100,7 +94,6 @@ class RegularImmutableMultiset<E> extends ImmutableMultiset<E> {
     return contents.getEntry(index);
   }
 
-  @GwtIncompatible
   private static class SerializedForm implements Serializable {
     final Object[] elements;
     final int[] counts;
@@ -130,7 +123,6 @@ class RegularImmutableMultiset<E> extends ImmutableMultiset<E> {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible
   @Override
   Object writeReplace() {
     return new SerializedForm(this);
diff --git a/android/guava/src/com/google/common/collect/RegularImmutableSet.java b/android/guava/src/com/google/common/collect/RegularImmutableSet.java
index 2382ef6..b038a88 100644
--- a/android/guava/src/com/google/common/collect/RegularImmutableSet.java
+++ b/android/guava/src/com/google/common/collect/RegularImmutableSet.java
@@ -16,17 +16,13 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link ImmutableSet} with two or more elements.
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 final class RegularImmutableSet<E> extends ImmutableSet<E> {
@@ -35,10 +31,10 @@ final class RegularImmutableSet<E> extends ImmutableSet<E> {
       new RegularImmutableSet<>(EMPTY_ARRAY, 0, EMPTY_ARRAY, 0, 0);
 
   // The first `size` elements are non-null.
-  @VisibleForTesting final transient @Nullable Object[] elements;
+  final transient Object[] elements;
   private final transient int hashCode;
   // the same values as `elements` in hashed positions (plus nulls)
-  @VisibleForTesting final transient @Nullable Object[] table;
+  final transient Object[] table;
   // 'and' with an int to get a valid table index.
   private final transient int mask;
   private final transient int size;
@@ -54,7 +50,7 @@ final class RegularImmutableSet<E> extends ImmutableSet<E> {
 
   @Override
   public boolean contains(@CheckForNull Object target) {
-    @Nullable Object[] table = this.table;
+    Object[] table = this.table;
     if (target == null || table.length == 0) {
       return false;
     }
@@ -80,7 +76,6 @@ final class RegularImmutableSet<E> extends ImmutableSet<E> {
   }
 
   @Override
-  @Nullable
   Object[] internalArray() {
     return elements;
   }
diff --git a/android/guava/src/com/google/common/collect/RegularImmutableSortedMultiset.java b/android/guava/src/com/google/common/collect/RegularImmutableSortedMultiset.java
index 3b6d79c..b2df68a 100644
--- a/android/guava/src/com/google/common/collect/RegularImmutableSortedMultiset.java
+++ b/android/guava/src/com/google/common/collect/RegularImmutableSortedMultiset.java
@@ -18,8 +18,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 import static com.google.common.collect.BoundType.CLOSED;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.primitives.Ints;
 import java.util.Comparator;
 import javax.annotation.CheckForNull;
@@ -30,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  */
 @SuppressWarnings("serial") // uses writeReplace, not default serialization
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class RegularImmutableSortedMultiset<E> extends ImmutableSortedMultiset<E> {
   private static final long[] ZERO_CUMULATIVE_COUNTS = {0};
@@ -38,7 +35,7 @@ final class RegularImmutableSortedMultiset<E> extends ImmutableSortedMultiset<E>
   static final ImmutableSortedMultiset<Comparable> NATURAL_EMPTY_MULTISET =
       new RegularImmutableSortedMultiset<>(Ordering.natural());
 
-  @VisibleForTesting final transient RegularImmutableSortedSet<E> elementSet;
+  final transient RegularImmutableSortedSet<E> elementSet;
   private final transient long[] cumulativeCounts;
   private final transient int offset;
   private final transient int length;
diff --git a/android/guava/src/com/google/common/collect/RegularImmutableSortedSet.java b/android/guava/src/com/google/common/collect/RegularImmutableSortedSet.java
index dd98798..71990e9 100644
--- a/android/guava/src/com/google/common/collect/RegularImmutableSortedSet.java
+++ b/android/guava/src/com/google/common/collect/RegularImmutableSortedSet.java
@@ -18,9 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -28,7 +25,6 @@ import java.util.Iterator;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An immutable sorted set with one or more elements. TODO(jlevy): Consider separate class for a
@@ -37,14 +33,13 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings({"serial", "rawtypes"})
 @ElementTypesAreNonnullByDefault
 final class RegularImmutableSortedSet<E> extends ImmutableSortedSet<E> {
   static final RegularImmutableSortedSet<Comparable> NATURAL_EMPTY_SET =
       new RegularImmutableSortedSet<>(ImmutableList.<Comparable>of(), Ordering.natural());
 
-  @VisibleForTesting final transient ImmutableList<E> elements;
+  final transient ImmutableList<E> elements;
 
   RegularImmutableSortedSet(ImmutableList<E> elements, Comparator<? super E> comparator) {
     super(comparator);
@@ -53,7 +48,6 @@ final class RegularImmutableSortedSet<E> extends ImmutableSortedSet<E> {
 
   @Override
   @CheckForNull
-  @Nullable
   Object[] internalArray() {
     return elements.internalArray();
   }
@@ -73,7 +67,7 @@ final class RegularImmutableSortedSet<E> extends ImmutableSortedSet<E> {
     return elements.iterator();
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public UnmodifiableIterator<E> descendingIterator() {
     return elements.reverse().iterator();
diff --git a/android/guava/src/com/google/common/collect/RegularImmutableTable.java b/android/guava/src/com/google/common/collect/RegularImmutableTable.java
index 24434c5..500c7cf 100644
--- a/android/guava/src/com/google/common/collect/RegularImmutableTable.java
+++ b/android/guava/src/com/google/common/collect/RegularImmutableTable.java
@@ -17,8 +17,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.LinkedHashSet;
@@ -31,7 +29,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class RegularImmutableTable<R, C, V> extends ImmutableTable<R, C, V> {
   RegularImmutableTable() {}
@@ -43,7 +40,6 @@ abstract class RegularImmutableTable<R, C, V> extends ImmutableTable<R, C, V> {
     return isEmpty() ? ImmutableSet.<Cell<R, C, V>>of() : new CellSet();
   }
 
-  @WeakOuter
   private final class CellSet extends IndexedImmutableSet<Cell<R, C, V>> {
     @Override
     public int size() {
@@ -78,7 +74,6 @@ abstract class RegularImmutableTable<R, C, V> extends ImmutableTable<R, C, V> {
     return isEmpty() ? ImmutableList.<V>of() : new Values();
   }
 
-  @WeakOuter
   private final class Values extends ImmutableList<V> {
     @Override
     public int size() {
diff --git a/android/guava/src/com/google/common/collect/ReverseNaturalOrdering.java b/android/guava/src/com/google/common/collect/ReverseNaturalOrdering.java
index f0c40cb..1b90432 100644
--- a/android/guava/src/com/google/common/collect/ReverseNaturalOrdering.java
+++ b/android/guava/src/com/google/common/collect/ReverseNaturalOrdering.java
@@ -18,12 +18,10 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Iterator;
 
 /** An ordering that uses the reverse of the natural order of the values. */
-@GwtCompatible(serializable = true)
 @SuppressWarnings({"unchecked", "rawtypes"}) // TODO(kevinb): the right way to explain this??
 @ElementTypesAreNonnullByDefault
 final class ReverseNaturalOrdering extends Ordering<Comparable<?>> implements Serializable {
diff --git a/android/guava/src/com/google/common/collect/ReverseOrdering.java b/android/guava/src/com/google/common/collect/ReverseOrdering.java
index 6c1e74d..c9772b0 100644
--- a/android/guava/src/com/google/common/collect/ReverseOrdering.java
+++ b/android/guava/src/com/google/common/collect/ReverseOrdering.java
@@ -18,16 +18,13 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering that uses the reverse of a given order. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class ReverseOrdering<T extends @Nullable Object> extends Ordering<T>
+final class ReverseOrdering<T extends Object> extends Ordering<T>
     implements Serializable {
   final Ordering<? super T> forwardOrder;
 
diff --git a/android/guava/src/com/google/common/collect/RowSortedTable.java b/android/guava/src/com/google/common/collect/RowSortedTable.java
index 2c2d773..cef6ba5 100644
--- a/android/guava/src/com/google/common/collect/RowSortedTable.java
+++ b/android/guava/src/com/google/common/collect/RowSortedTable.java
@@ -16,12 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Interface that extends {@code Table} and whose rows are sorted.
@@ -33,10 +31,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Warren Dukes
  * @since 8.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public interface RowSortedTable<
-        R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+        R extends Object, C extends Object, V extends Object>
     extends Table<R, C, V> {
   /**
    * {@inheritDoc}
diff --git a/android/guava/src/com/google/common/collect/Serialization.java b/android/guava/src/com/google/common/collect/Serialization.java
index 5e88067..8b25839 100644
--- a/android/guava/src/com/google/common/collect/Serialization.java
+++ b/android/guava/src/com/google/common/collect/Serialization.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.lang.reflect.Field;
 import java.util.Collection;
 import java.util.Map;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static methods for serializing collection classes.
@@ -33,7 +31,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Jared Levy
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class Serialization {
   private Serialization() {}
@@ -56,7 +53,7 @@ final class Serialization {
    * <p>The serialized output consists of the number of entries, first key, first value, second key,
    * second value, and so on.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void writeMap(
+  static <K extends Object, V extends Object> void writeMap(
       Map<K, V> map, ObjectOutputStream stream) throws IOException {
     stream.writeInt(map.size());
     for (Map.Entry<K, V> entry : map.entrySet()) {
@@ -69,7 +66,7 @@ final class Serialization {
    * Populates a map by reading an input stream, as part of deserialization. See {@link #writeMap}
    * for the data format.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void populateMap(
+  static <K extends Object, V extends Object> void populateMap(
       Map<K, V> map, ObjectInputStream stream) throws IOException, ClassNotFoundException {
     int size = stream.readInt();
     populateMap(map, stream, size);
@@ -79,7 +76,7 @@ final class Serialization {
    * Populates a map by reading an input stream, as part of deserialization. See {@link #writeMap}
    * for the data format. The size is determined by a prior call to {@link #readCount}.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void populateMap(
+  static <K extends Object, V extends Object> void populateMap(
       Map<K, V> map, ObjectInputStream stream, int size)
       throws IOException, ClassNotFoundException {
     for (int i = 0; i < size; i++) {
@@ -98,7 +95,7 @@ final class Serialization {
    * <p>The serialized output consists of the number of distinct elements, the first element, its
    * count, the second element, its count, and so on.
    */
-  static <E extends @Nullable Object> void writeMultiset(
+  static <E extends Object> void writeMultiset(
       Multiset<E> multiset, ObjectOutputStream stream) throws IOException {
     int entryCount = multiset.entrySet().size();
     stream.writeInt(entryCount);
@@ -112,7 +109,7 @@ final class Serialization {
    * Populates a multiset by reading an input stream, as part of deserialization. See {@link
    * #writeMultiset} for the data format.
    */
-  static <E extends @Nullable Object> void populateMultiset(
+  static <E extends Object> void populateMultiset(
       Multiset<E> multiset, ObjectInputStream stream) throws IOException, ClassNotFoundException {
     int distinctElements = stream.readInt();
     populateMultiset(multiset, stream, distinctElements);
@@ -123,7 +120,7 @@ final class Serialization {
    * #writeMultiset} for the data format. The number of distinct elements is determined by a prior
    * call to {@link #readCount}.
    */
-  static <E extends @Nullable Object> void populateMultiset(
+  static <E extends Object> void populateMultiset(
       Multiset<E> multiset, ObjectInputStream stream, int distinctElements)
       throws IOException, ClassNotFoundException {
     for (int i = 0; i < distinctElements; i++) {
@@ -142,7 +139,7 @@ final class Serialization {
    * <p>The serialized output consists of the number of distinct keys, and then for each distinct
    * key: the key, the number of values for that key, and the key's values.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void writeMultimap(
+  static <K extends Object, V extends Object> void writeMultimap(
       Multimap<K, V> multimap, ObjectOutputStream stream) throws IOException {
     stream.writeInt(multimap.asMap().size());
     for (Map.Entry<K, Collection<V>> entry : multimap.asMap().entrySet()) {
@@ -158,7 +155,7 @@ final class Serialization {
    * Populates a multimap by reading an input stream, as part of deserialization. See {@link
    * #writeMultimap} for the data format.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void populateMultimap(
+  static <K extends Object, V extends Object> void populateMultimap(
       Multimap<K, V> multimap, ObjectInputStream stream)
       throws IOException, ClassNotFoundException {
     int distinctKeys = stream.readInt();
@@ -170,7 +167,7 @@ final class Serialization {
    * #writeMultimap} for the data format. The number of distinct keys is determined by a prior call
    * to {@link #readCount}.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void populateMultimap(
+  static <K extends Object, V extends Object> void populateMultimap(
       Multimap<K, V> multimap, ObjectInputStream stream, int distinctKeys)
       throws IOException, ClassNotFoundException {
     for (int i = 0; i < distinctKeys; i++) {
diff --git a/android/guava/src/com/google/common/collect/SetMultimap.java b/android/guava/src/com/google/common/collect/SetMultimap.java
index 216533e..99ddf7a 100644
--- a/android/guava/src/com/google/common/collect/SetMultimap.java
+++ b/android/guava/src/com/google/common/collect/SetMultimap.java
@@ -16,14 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@code Multimap} that cannot hold duplicate key-value pairs. Adding a key-value pair that's
@@ -52,9 +49,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface SetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public interface SetMultimap<K extends Object, V extends Object>
     extends Multimap<K, V> {
   /**
    * {@inheritDoc}
@@ -73,7 +69,6 @@ public interface SetMultimap<K extends @Nullable Object, V extends @Nullable Obj
    * {@link Set}, instead of the {@link java.util.Collection} specified in the {@link Multimap}
    * interface.
    */
-  @CanIgnoreReturnValue
   @Override
   Set<V> removeAll(@CheckForNull Object key);
 
@@ -86,7 +81,6 @@ public interface SetMultimap<K extends @Nullable Object, V extends @Nullable Obj
    *
    * <p>Any duplicates in {@code values} will be stored in the multimap once.
    */
-  @CanIgnoreReturnValue
   @Override
   Set<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);
 
diff --git a/android/guava/src/com/google/common/collect/Sets.java b/android/guava/src/com/google/common/collect/Sets.java
index dde21cb..2472470 100644
--- a/android/guava/src/com/google/common/collect/Sets.java
+++ b/android/guava/src/com/google/common/collect/Sets.java
@@ -20,15 +20,10 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.collect.Collections2.FilteredCollection;
 import com.google.common.math.IntMath;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.io.Serializable;
 import java.util.AbstractSet;
 import java.util.Arrays;
@@ -50,7 +45,6 @@ import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArraySet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@link Set} instances. Also see this class's counterparts
@@ -64,7 +58,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Povirk
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Sets {
   private Sets() {}
@@ -73,7 +66,7 @@ public final class Sets {
    * {@link AbstractSet} substitute without the potentially-quadratic {@code removeAll}
    * implementation.
    */
-  abstract static class ImprovedAbstractSet<E extends @Nullable Object> extends AbstractSet<E> {
+  abstract static class ImprovedAbstractSet<E extends Object> extends AbstractSet<E> {
     @Override
     public boolean removeAll(Collection<?> c) {
       return removeAllImpl(this, c);
@@ -97,7 +90,6 @@ public final class Sets {
    * @return an immutable set containing those elements, minus duplicates
    */
   // http://code.google.com/p/google-web-toolkit/issues/detail?id=3028
-  @GwtCompatible(serializable = true)
   public static <E extends Enum<E>> ImmutableSet<E> immutableEnumSet(
       E anElement, E... otherElements) {
     return ImmutableEnumSet.asImmutable(EnumSet.of(anElement, otherElements));
@@ -114,7 +106,6 @@ public final class Sets {
    * @return an immutable set containing those elements, minus duplicates
    */
   // http://code.google.com/p/google-web-toolkit/issues/detail?id=3028
-  @GwtCompatible(serializable = true)
   public static <E extends Enum<E>> ImmutableSet<E> immutableEnumSet(Iterable<E> elements) {
     if (elements instanceof ImmutableEnumSet) {
       return (ImmutableEnumSet<E>) elements;
@@ -163,7 +154,7 @@ public final class Sets {
    * deprecated. Instead, use the {@code HashSet} constructor directly, taking advantage of the new
    * <a href="http://goo.gl/iz2Wi">"diamond" syntax</a>.
    */
-  public static <E extends @Nullable Object> HashSet<E> newHashSet() {
+  public static <E extends Object> HashSet<E> newHashSet() {
     return new HashSet<E>();
   }
 
@@ -180,7 +171,7 @@ public final class Sets {
    * asList}{@code (...))}, or for creating an empty set then calling {@link Collections#addAll}.
    * This method is not actually very useful and will likely be deprecated in the future.
    */
-  public static <E extends @Nullable Object> HashSet<E> newHashSet(E... elements) {
+  public static <E extends Object> HashSet<E> newHashSet(E... elements) {
     HashSet<E> set = newHashSetWithExpectedSize(elements.length);
     Collections.addAll(set, elements);
     return set;
@@ -204,7 +195,7 @@ public final class Sets {
    *
    * <p>Overall, this method is not very useful and will likely be deprecated in the future.
    */
-  public static <E extends @Nullable Object> HashSet<E> newHashSet(Iterable<? extends E> elements) {
+  public static <E extends Object> HashSet<E> newHashSet(Iterable<? extends E> elements) {
     return (elements instanceof Collection)
         ? new HashSet<E>((Collection<? extends E>) elements)
         : newHashSet(elements.iterator());
@@ -222,7 +213,7 @@ public final class Sets {
    *
    * <p>Overall, this method is not very useful and will likely be deprecated in the future.
    */
-  public static <E extends @Nullable Object> HashSet<E> newHashSet(Iterator<? extends E> elements) {
+  public static <E extends Object> HashSet<E> newHashSet(Iterator<? extends E> elements) {
     HashSet<E> set = newHashSet();
     Iterators.addAll(set, elements);
     return set;
@@ -240,7 +231,7 @@ public final class Sets {
    *     without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <E extends @Nullable Object> HashSet<E> newHashSetWithExpectedSize(
+  public static <E extends Object> HashSet<E> newHashSetWithExpectedSize(
       int expectedSize) {
     return new HashSet<E>(Maps.capacity(expectedSize));
   }
@@ -291,7 +282,7 @@ public final class Sets {
    *
    * @return a new, empty {@code LinkedHashSet}
    */
-  public static <E extends @Nullable Object> LinkedHashSet<E> newLinkedHashSet() {
+  public static <E extends Object> LinkedHashSet<E> newLinkedHashSet() {
     return new LinkedHashSet<E>();
   }
 
@@ -310,7 +301,7 @@ public final class Sets {
    * @param elements the elements that the set should contain, in order
    * @return a new {@code LinkedHashSet} containing those elements (minus duplicates)
    */
-  public static <E extends @Nullable Object> LinkedHashSet<E> newLinkedHashSet(
+  public static <E extends Object> LinkedHashSet<E> newLinkedHashSet(
       Iterable<? extends E> elements) {
     if (elements instanceof Collection) {
       return new LinkedHashSet<E>((Collection<? extends E>) elements);
@@ -332,7 +323,7 @@ public final class Sets {
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    * @since 11.0
    */
-  public static <E extends @Nullable Object> LinkedHashSet<E> newLinkedHashSetWithExpectedSize(
+  public static <E extends Object> LinkedHashSet<E> newLinkedHashSetWithExpectedSize(
       int expectedSize) {
     return new LinkedHashSet<E>(Maps.capacity(expectedSize));
   }
@@ -398,7 +389,7 @@ public final class Sets {
    * @return a new, empty {@code TreeSet}
    * @throws NullPointerException if {@code comparator} is null
    */
-  public static <E extends @Nullable Object> TreeSet<E> newTreeSet(
+  public static <E extends Object> TreeSet<E> newTreeSet(
       Comparator<? super E> comparator) {
     return new TreeSet<E>(checkNotNull(comparator));
   }
@@ -412,7 +403,7 @@ public final class Sets {
    *
    * @since 8.0
    */
-  public static <E extends @Nullable Object> Set<E> newIdentityHashSet() {
+  public static <E extends Object> Set<E> newIdentityHashSet() {
     return Collections.newSetFromMap(Maps.<E, Boolean>newIdentityHashMap());
   }
 
@@ -425,8 +416,8 @@ public final class Sets {
    * @return a new, empty {@code CopyOnWriteArraySet}
    * @since 12.0
    */
-  @GwtIncompatible // CopyOnWriteArraySet
-  public static <E extends @Nullable Object> CopyOnWriteArraySet<E> newCopyOnWriteArraySet() {
+  // CopyOnWriteArraySet
+  public static <E extends Object> CopyOnWriteArraySet<E> newCopyOnWriteArraySet() {
     return new CopyOnWriteArraySet<E>();
   }
 
@@ -437,8 +428,8 @@ public final class Sets {
    * @return a new {@code CopyOnWriteArraySet} containing those elements
    * @since 12.0
    */
-  @GwtIncompatible // CopyOnWriteArraySet
-  public static <E extends @Nullable Object> CopyOnWriteArraySet<E> newCopyOnWriteArraySet(
+  // CopyOnWriteArraySet
+  public static <E extends Object> CopyOnWriteArraySet<E> newCopyOnWriteArraySet(
       Iterable<? extends E> elements) {
     // We copy elements to an ArrayList first, rather than incurring the
     // quadratic cost of adding them to the COWAS directly.
@@ -527,7 +518,7 @@ public final class Sets {
    * @deprecated Use {@link Collections#newSetFromMap} instead.
    */
   @Deprecated
-  public static <E extends @Nullable Object> Set<E> newSetFromMap(
+  public static <E extends Object> Set<E> newSetFromMap(
       Map<E, Boolean> map) {
     return Collections.newSetFromMap(map);
   }
@@ -541,7 +532,7 @@ public final class Sets {
    *
    * @since 2.0
    */
-  public abstract static class SetView<E extends @Nullable Object> extends AbstractSet<E> {
+  public abstract static class SetView<E extends Object> extends AbstractSet<E> {
     private SetView() {} // no subclasses but our own
 
     /**
@@ -566,7 +557,6 @@ public final class Sets {
      */
     // Note: S should logically extend Set<? super E> but can't due to either
     // some javac bug or some weirdness in the spec, not sure which.
-    @CanIgnoreReturnValue
     public <S extends Set<E>> S copyInto(S set) {
       set.addAll(this);
       return set;
@@ -578,10 +568,8 @@ public final class Sets {
      * @throws UnsupportedOperationException always
      * @deprecated Unsupported operation.
      */
-    @CanIgnoreReturnValue
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final boolean add(@ParametricNullness E e) {
       throw new UnsupportedOperationException();
     }
@@ -592,10 +580,8 @@ public final class Sets {
      * @throws UnsupportedOperationException always
      * @deprecated Unsupported operation.
      */
-    @CanIgnoreReturnValue
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final boolean remove(@CheckForNull Object object) {
       throw new UnsupportedOperationException();
     }
@@ -606,10 +592,8 @@ public final class Sets {
      * @throws UnsupportedOperationException always
      * @deprecated Unsupported operation.
      */
-    @CanIgnoreReturnValue
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final boolean addAll(Collection<? extends E> newElements) {
       throw new UnsupportedOperationException();
     }
@@ -620,10 +604,8 @@ public final class Sets {
      * @throws UnsupportedOperationException always
      * @deprecated Unsupported operation.
      */
-    @CanIgnoreReturnValue
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final boolean removeAll(Collection<?> oldElements) {
       throw new UnsupportedOperationException();
     }
@@ -634,10 +616,8 @@ public final class Sets {
      * @throws UnsupportedOperationException always
      * @deprecated Unsupported operation.
      */
-    @CanIgnoreReturnValue
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final boolean retainAll(Collection<?> elementsToKeep) {
       throw new UnsupportedOperationException();
     }
@@ -650,7 +630,6 @@ public final class Sets {
      */
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final void clear() {
       throw new UnsupportedOperationException();
     }
@@ -674,7 +653,7 @@ public final class Sets {
    * equivalence relations, for example if {@code set1} is a {@link HashSet} and {@code set2} is a
    * {@link TreeSet} or the {@link Map#keySet} of an {@code IdentityHashMap}.
    */
-  public static <E extends @Nullable Object> SetView<E> union(
+  public static <E extends Object> SetView<E> union(
       final Set<? extends E> set1, final Set<? extends E> set2) {
     checkNotNull(set1, "set1");
     checkNotNull(set2, "set2");
@@ -766,7 +745,7 @@ public final class Sets {
    *
    * <p>This is unfortunate, but should come up only very rarely.
    */
-  public static <E extends @Nullable Object> SetView<E> intersection(
+  public static <E extends Object> SetView<E> intersection(
       final Set<E> set1, final Set<?> set2) {
     checkNotNull(set1, "set1");
     checkNotNull(set2, "set2");
@@ -829,7 +808,7 @@ public final class Sets {
    * equivalence relations, for example if {@code set1} is a {@link HashSet} and {@code set2} is a
    * {@link TreeSet} or the {@link Map#keySet} of an {@code IdentityHashMap}.
    */
-  public static <E extends @Nullable Object> SetView<E> difference(
+  public static <E extends Object> SetView<E> difference(
       final Set<E> set1, final Set<?> set2) {
     checkNotNull(set1, "set1");
     checkNotNull(set2, "set2");
@@ -888,7 +867,7 @@ public final class Sets {
    *
    * @since 3.0
    */
-  public static <E extends @Nullable Object> SetView<E> symmetricDifference(
+  public static <E extends Object> SetView<E> symmetricDifference(
       final Set<? extends E> set1, final Set<? extends E> set2) {
     checkNotNull(set1, "set1");
     checkNotNull(set2, "set2");
@@ -974,7 +953,7 @@ public final class Sets {
    * you to migrate to streams.
    */
   // TODO(kevinb): how to omit that last sentence when building GWT javadoc?
-  public static <E extends @Nullable Object> Set<E> filter(
+  public static <E extends Object> Set<E> filter(
       Set<E> unfiltered, Predicate<? super E> predicate) {
     if (unfiltered instanceof SortedSet) {
       return filter((SortedSet<E>) unfiltered, predicate);
@@ -1014,7 +993,7 @@ public final class Sets {
    *
    * @since 11.0
    */
-  public static <E extends @Nullable Object> SortedSet<E> filter(
+  public static <E extends Object> SortedSet<E> filter(
       SortedSet<E> unfiltered, Predicate<? super E> predicate) {
     if (unfiltered instanceof FilteredSet) {
       // Support clear(), removeAll(), and retainAll() when filtering a filtered
@@ -1051,9 +1030,9 @@ public final class Sets {
    *
    * @since 14.0
    */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @SuppressWarnings("unchecked")
-  public static <E extends @Nullable Object> NavigableSet<E> filter(
+  public static <E extends Object> NavigableSet<E> filter(
       NavigableSet<E> unfiltered, Predicate<? super E> predicate) {
     if (unfiltered instanceof FilteredSet) {
       // Support clear(), removeAll(), and retainAll() when filtering a filtered
@@ -1066,7 +1045,7 @@ public final class Sets {
     return new FilteredNavigableSet<E>(checkNotNull(unfiltered), checkNotNull(predicate));
   }
 
-  private static class FilteredSet<E extends @Nullable Object> extends FilteredCollection<E>
+  private static class FilteredSet<E extends Object> extends FilteredCollection<E>
       implements Set<E> {
     FilteredSet(Set<E> unfiltered, Predicate<? super E> predicate) {
       super(unfiltered, predicate);
@@ -1083,7 +1062,7 @@ public final class Sets {
     }
   }
 
-  private static class FilteredSortedSet<E extends @Nullable Object> extends FilteredSet<E>
+  private static class FilteredSortedSet<E extends Object> extends FilteredSet<E>
       implements SortedSet<E> {
 
     FilteredSortedSet(SortedSet<E> unfiltered, Predicate<? super E> predicate) {
@@ -1132,8 +1111,8 @@ public final class Sets {
     }
   }
 
-  @GwtIncompatible // NavigableSet
-  private static class FilteredNavigableSet<E extends @Nullable Object> extends FilteredSortedSet<E>
+  // NavigableSet
+  private static class FilteredNavigableSet<E extends Object> extends FilteredSortedSet<E>
       implements NavigableSet<E> {
     FilteredNavigableSet(NavigableSet<E> unfiltered, Predicate<? super E> predicate) {
       super(unfiltered, predicate);
@@ -1453,7 +1432,6 @@ public final class Sets {
    * @see <a href="http://en.wikipedia.org/wiki/Power_set">Power set article at Wikipedia</a>
    * @since 4.0
    */
-  @GwtCompatible(serializable = false)
   public static <E> Set<Set<E>> powerSet(Set<E> set) {
     return new PowerSet<E>(set);
   }
@@ -1589,7 +1567,6 @@ public final class Sets {
    * @throws NullPointerException if {@code set} is or contains {@code null}
    * @since 23.0
    */
-  @Beta
   public static <E> Set<Set<E>> combinations(Set<E> set, final int size) {
     final ImmutableMap<E, Integer> index = Maps.indexMap(set);
     checkNonnegative(size, "size");
@@ -1731,7 +1708,7 @@ public final class Sets {
    * @return an unmodifiable view of the specified navigable set
    * @since 12.0
    */
-  public static <E extends @Nullable Object> NavigableSet<E> unmodifiableNavigableSet(
+  public static <E extends Object> NavigableSet<E> unmodifiableNavigableSet(
       NavigableSet<E> set) {
     if (set instanceof ImmutableCollection || set instanceof UnmodifiableNavigableSet) {
       return set;
@@ -1739,7 +1716,7 @@ public final class Sets {
     return new UnmodifiableNavigableSet<E>(set);
   }
 
-  static final class UnmodifiableNavigableSet<E extends @Nullable Object>
+  static final class UnmodifiableNavigableSet<E extends Object>
       extends ForwardingSortedSet<E> implements NavigableSet<E>, Serializable {
     private final NavigableSet<E> delegate;
     private final SortedSet<E> unmodifiableDelegate;
@@ -1875,8 +1852,8 @@ public final class Sets {
    * @return a synchronized view of the specified navigable set.
    * @since 13.0
    */
-  @GwtIncompatible // NavigableSet
-  public static <E extends @Nullable Object> NavigableSet<E> synchronizedNavigableSet(
+  // NavigableSet
+  public static <E extends Object> NavigableSet<E> synchronizedNavigableSet(
       NavigableSet<E> navigableSet) {
     return Synchronized.navigableSet(navigableSet);
   }
@@ -1909,8 +1886,8 @@ public final class Sets {
     }
   }
 
-  @GwtIncompatible // NavigableSet
-  static class DescendingSet<E extends @Nullable Object> extends ForwardingNavigableSet<E> {
+  // NavigableSet
+  static class DescendingSet<E extends Object> extends ForwardingNavigableSet<E> {
     private final NavigableSet<E> forward;
 
     DescendingSet(NavigableSet<E> forward) {
@@ -2014,7 +1991,7 @@ public final class Sets {
     }
 
     // If we inline this, we get a javac error.
-    private static <T extends @Nullable Object> Ordering<T> reverse(Comparator<T> forward) {
+    private static <T extends Object> Ordering<T> reverse(Comparator<T> forward) {
       return Ordering.from(forward).reverse();
     }
 
@@ -2036,13 +2013,13 @@ public final class Sets {
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       return standardToArray();
     }
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return standardToArray(array);
     }
 
@@ -2068,8 +2045,7 @@ public final class Sets {
    *
    * @since 20.0
    */
-  @Beta
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public static <K extends Comparable<? super K>> NavigableSet<K> subSet(
       NavigableSet<K> set, Range<K> range) {
     if (set.comparator() != null
diff --git a/android/guava/src/com/google/common/collect/SingletonImmutableSet.java b/android/guava/src/com/google/common/collect/SingletonImmutableSet.java
index 088cb80..27c2eb6 100644
--- a/android/guava/src/com/google/common/collect/SingletonImmutableSet.java
+++ b/android/guava/src/com/google/common/collect/SingletonImmutableSet.java
@@ -16,10 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link ImmutableSet} with exactly one element.
@@ -27,7 +25,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @author Nick Kralevich
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 final class SingletonImmutableSet<E> extends ImmutableSet<E> {
diff --git a/android/guava/src/com/google/common/collect/SingletonImmutableTable.java b/android/guava/src/com/google/common/collect/SingletonImmutableTable.java
index cfaeadb..565a4b4 100644
--- a/android/guava/src/com/google/common/collect/SingletonImmutableTable.java
+++ b/android/guava/src/com/google/common/collect/SingletonImmutableTable.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 
 /**
@@ -26,7 +25,6 @@ import java.util.Map;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 class SingletonImmutableTable<R, C, V> extends ImmutableTable<R, C, V> {
   final R singleRowKey;
diff --git a/android/guava/src/com/google/common/collect/SortedIterable.java b/android/guava/src/com/google/common/collect/SortedIterable.java
index 64ec08e..4ed3e60 100644
--- a/android/guava/src/com/google/common/collect/SortedIterable.java
+++ b/android/guava/src/com/google/common/collect/SortedIterable.java
@@ -14,10 +14,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An {@code Iterable} whose elements are sorted relative to a {@code Comparator}, typically
@@ -25,9 +23,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-interface SortedIterable<T extends @Nullable Object> extends Iterable<T> {
+interface SortedIterable<T extends Object> extends Iterable<T> {
   /**
    * Returns the {@code Comparator} by which the elements of this iterable are ordered, or {@code
    * Ordering.natural()} if the elements are ordered by their natural ordering.
diff --git a/android/guava/src/com/google/common/collect/SortedIterables.java b/android/guava/src/com/google/common/collect/SortedIterables.java
index 68b231a..184b3c2 100644
--- a/android/guava/src/com/google/common/collect/SortedIterables.java
+++ b/android/guava/src/com/google/common/collect/SortedIterables.java
@@ -16,17 +16,14 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.SortedSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Utilities for dealing with sorted collections of all types.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class SortedIterables {
   private SortedIterables() {}
@@ -51,7 +48,7 @@ final class SortedIterables {
 
   @SuppressWarnings("unchecked")
   // if sortedSet.comparator() is null, the set must be naturally ordered
-  public static <E extends @Nullable Object> Comparator<? super E> comparator(
+  public static <E extends Object> Comparator<? super E> comparator(
       SortedSet<E> sortedSet) {
     Comparator<? super E> result = sortedSet.comparator();
     if (result == null) {
diff --git a/android/guava/src/com/google/common/collect/SortedLists.java b/android/guava/src/com/google/common/collect/SortedLists.java
index 0ebaab2..9c6dbbd 100644
--- a/android/guava/src/com/google/common/collect/SortedLists.java
+++ b/android/guava/src/com/google/common/collect/SortedLists.java
@@ -16,14 +16,11 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.RandomAccess;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static methods pertaining to sorted {@link List} instances.
@@ -34,8 +31,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
-@Beta
 @ElementTypesAreNonnullByDefault
 final class SortedLists {
   private SortedLists() {}
@@ -51,7 +46,7 @@ final class SortedLists {
      */
     ANY_PRESENT {
       @Override
-      <E extends @Nullable Object> int resultIndex(
+      <E extends Object> int resultIndex(
           Comparator<? super E> comparator,
           @ParametricNullness E key,
           List<? extends E> list,
@@ -62,7 +57,7 @@ final class SortedLists {
     /** Return the index of the last list element that compares as equal to the key. */
     LAST_PRESENT {
       @Override
-      <E extends @Nullable Object> int resultIndex(
+      <E extends Object> int resultIndex(
           Comparator<? super E> comparator,
           @ParametricNullness E key,
           List<? extends E> list,
@@ -87,7 +82,7 @@ final class SortedLists {
     /** Return the index of the first list element that compares as equal to the key. */
     FIRST_PRESENT {
       @Override
-      <E extends @Nullable Object> int resultIndex(
+      <E extends Object> int resultIndex(
           Comparator<? super E> comparator,
           @ParametricNullness E key,
           List<? extends E> list,
@@ -116,7 +111,7 @@ final class SortedLists {
      */
     FIRST_AFTER {
       @Override
-      public <E extends @Nullable Object> int resultIndex(
+      public <E extends Object> int resultIndex(
           Comparator<? super E> comparator,
           @ParametricNullness E key,
           List<? extends E> list,
@@ -130,7 +125,7 @@ final class SortedLists {
      */
     LAST_BEFORE {
       @Override
-      public <E extends @Nullable Object> int resultIndex(
+      public <E extends Object> int resultIndex(
           Comparator<? super E> comparator,
           @ParametricNullness E key,
           List<? extends E> list,
@@ -139,7 +134,7 @@ final class SortedLists {
       }
     };
 
-    abstract <E extends @Nullable Object> int resultIndex(
+    abstract <E extends Object> int resultIndex(
         Comparator<? super E> comparator,
         @ParametricNullness E key,
         List<? extends E> list,
@@ -215,7 +210,7 @@ final class SortedLists {
    * <p>Equivalent to {@link #binarySearch(List, Function, Object, Comparator, KeyPresentBehavior,
    * KeyAbsentBehavior)} using {@link Ordering#natural}.
    */
-  public static <E extends @Nullable Object, K extends Comparable> int binarySearch(
+  public static <E extends Object, K extends Comparable> int binarySearch(
       List<E> list,
       Function<? super E, K> keyFunction,
       K key,
@@ -233,7 +228,7 @@ final class SortedLists {
    * KeyAbsentBehavior)} using {@link Lists#transform(List, Function) Lists.transform(list,
    * keyFunction)}.
    */
-  public static <E extends @Nullable Object, K extends @Nullable Object> int binarySearch(
+  public static <E extends Object, K extends Object> int binarySearch(
       List<E> list,
       Function<? super E, K> keyFunction,
       @ParametricNullness K key,
@@ -267,7 +262,7 @@ final class SortedLists {
    * @return the index determined by the {@code KeyPresentBehavior}, if the key is in the list;
    *     otherwise the index determined by the {@code KeyAbsentBehavior}.
    */
-  public static <E extends @Nullable Object> int binarySearch(
+  public static <E extends Object> int binarySearch(
       List<? extends E> list,
       @ParametricNullness E key,
       Comparator<? super E> comparator,
diff --git a/android/guava/src/com/google/common/collect/SortedMapDifference.java b/android/guava/src/com/google/common/collect/SortedMapDifference.java
index 46cac8a..caf8c77 100644
--- a/android/guava/src/com/google/common/collect/SortedMapDifference.java
+++ b/android/guava/src/com/google/common/collect/SortedMapDifference.java
@@ -16,9 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.SortedMap;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An object representing the differences between two sorted maps.
@@ -26,9 +24,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 8.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface SortedMapDifference<K extends @Nullable Object, V extends @Nullable Object>
+public interface SortedMapDifference<K extends Object, V extends Object>
     extends MapDifference<K, V> {
 
   @Override
diff --git a/android/guava/src/com/google/common/collect/SortedMultiset.java b/android/guava/src/com/google/common/collect/SortedMultiset.java
index 68932f5..babea9a 100644
--- a/android/guava/src/com/google/common/collect/SortedMultiset.java
+++ b/android/guava/src/com/google/common/collect/SortedMultiset.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Multiset} which maintains the ordering of its elements, according to either their
@@ -43,9 +41,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public interface SortedMultiset<E extends @Nullable Object>
+public interface SortedMultiset<E extends Object>
     extends SortedMultisetBridge<E>, SortedIterable<E> {
   /**
    * Returns the comparator that orders this multiset, or {@link Ordering#natural()} if the natural
diff --git a/android/guava/src/com/google/common/collect/SortedMultisetBridge.java b/android/guava/src/com/google/common/collect/SortedMultisetBridge.java
index 72d50be..fdd2b55 100644
--- a/android/guava/src/com/google/common/collect/SortedMultisetBridge.java
+++ b/android/guava/src/com/google/common/collect/SortedMultisetBridge.java
@@ -16,9 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.SortedSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Superinterface of {@link SortedMultiset} to introduce a bridge method for {@code elementSet()},
@@ -27,9 +25,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-interface SortedMultisetBridge<E extends @Nullable Object> extends Multiset<E> {
+interface SortedMultisetBridge<E extends Object> extends Multiset<E> {
   @Override
   SortedSet<E> elementSet();
 }
diff --git a/android/guava/src/com/google/common/collect/SortedMultisets.java b/android/guava/src/com/google/common/collect/SortedMultisets.java
index 1d1940c..803e713 100644
--- a/android/guava/src/com/google/common/collect/SortedMultisets.java
+++ b/android/guava/src/com/google/common/collect/SortedMultisets.java
@@ -19,33 +19,28 @@ package com.google.common.collect;
 import static com.google.common.collect.BoundType.CLOSED;
 import static com.google.common.collect.BoundType.OPEN;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Multiset.Entry;
-import com.google.j2objc.annotations.Weak;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import java.util.NoSuchElementException;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static utility methods for creating and working with {@link SortedMultiset} instances.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class SortedMultisets {
   private SortedMultisets() {}
 
   /** A skeleton implementation for {@link SortedMultiset#elementSet}. */
   @SuppressWarnings("JdkObsolete") // TODO(b/6160855): Switch GWT emulations to NavigableSet.
-  static class ElementSet<E extends @Nullable Object> extends Multisets.ElementSet<E>
+  static class ElementSet<E extends Object> extends Multisets.ElementSet<E>
       implements SortedSet<E> {
-    @Weak private final SortedMultiset<E> multiset;
+    private final SortedMultiset<E> multiset;
 
     ElementSet(SortedMultiset<E> multiset) {
       this.multiset = multiset;
@@ -95,8 +90,8 @@ final class SortedMultisets {
   }
 
   /** A skeleton navigable implementation for {@link SortedMultiset#elementSet}. */
-  @GwtIncompatible // Navigable
-  static class NavigableElementSet<E extends @Nullable Object> extends ElementSet<E>
+  // Navigable
+  static class NavigableElementSet<E extends Object> extends ElementSet<E>
       implements NavigableSet<E> {
     NavigableElementSet(SortedMultiset<E> multiset) {
       super(multiset);
@@ -174,7 +169,7 @@ final class SortedMultisets {
     }
   }
 
-  private static <E extends @Nullable Object> E getElementOrThrow(@CheckForNull Entry<E> entry) {
+  private static <E extends Object> E getElementOrThrow(@CheckForNull Entry<E> entry) {
     if (entry == null) {
       throw new NoSuchElementException();
     }
@@ -182,7 +177,7 @@ final class SortedMultisets {
   }
 
   @CheckForNull
-  private static <E extends @Nullable Object> E getElementOrNull(@CheckForNull Entry<E> entry) {
+  private static <E extends Object> E getElementOrNull(@CheckForNull Entry<E> entry) {
     return (entry == null) ? null : entry.getElement();
   }
 }
diff --git a/android/guava/src/com/google/common/collect/SortedSetMultimap.java b/android/guava/src/com/google/common/collect/SortedSetMultimap.java
index 8449014..6ed3116 100644
--- a/android/guava/src/com/google/common/collect/SortedSetMultimap.java
+++ b/android/guava/src/com/google/common/collect/SortedSetMultimap.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.Map;
@@ -25,7 +23,6 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@code SetMultimap} whose set of values for a given key are kept sorted; that is, they comprise
@@ -49,9 +46,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface SortedSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public interface SortedSetMultimap<K extends Object, V extends Object>
     extends SetMultimap<K, V> {
   // Following Javadoc copied from Multimap.
 
@@ -75,7 +71,6 @@ public interface SortedSetMultimap<K extends @Nullable Object, V extends @Nullab
    * returns a {@link SortedSet}, instead of the {@link java.util.Collection} specified in the
    * {@link Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   SortedSet<V> removeAll(@CheckForNull Object key);
 
@@ -88,7 +83,6 @@ public interface SortedSetMultimap<K extends @Nullable Object, V extends @Nullab
    *
    * <p>Any duplicates in {@code values} will be stored in the multimap once.
    */
-  @CanIgnoreReturnValue
   @Override
   SortedSet<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);
 
diff --git a/android/guava/src/com/google/common/collect/SparseImmutableTable.java b/android/guava/src/com/google/common/collect/SparseImmutableTable.java
index b314f7b..c478003 100644
--- a/android/guava/src/com/google/common/collect/SparseImmutableTable.java
+++ b/android/guava/src/com/google/common/collect/SparseImmutableTable.java
@@ -14,17 +14,12 @@
 
 package com.google.common.collect;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.Immutable;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 
 /** A {@code RegularImmutableTable} optimized for sparse data. */
-@GwtCompatible
-@Immutable(containerOf = {"R", "C", "V"})
 @ElementTypesAreNonnullByDefault
 final class SparseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V> {
   static final ImmutableTable<Object, Object, Object> EMPTY =
diff --git a/android/guava/src/com/google/common/collect/StandardRowSortedTable.java b/android/guava/src/com/google/common/collect/StandardRowSortedTable.java
index bea5b7b..2be8d58 100644
--- a/android/guava/src/com/google/common/collect/StandardRowSortedTable.java
+++ b/android/guava/src/com/google/common/collect/StandardRowSortedTable.java
@@ -18,9 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Supplier;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Comparator;
 import java.util.Map;
 import java.util.Set;
@@ -45,7 +43,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 class StandardRowSortedTable<R, C, V> extends StandardTable<R, C, V>
     implements RowSortedTable<R, C, V> {
@@ -91,7 +88,6 @@ class StandardRowSortedTable<R, C, V> extends StandardTable<R, C, V>
     return new RowSortedMap();
   }
 
-  @WeakOuter
   private class RowSortedMap extends RowMap implements SortedMap<R, Map<C, V>> {
     @Override
     public SortedSet<R> keySet() {
diff --git a/android/guava/src/com/google/common/collect/StandardTable.java b/android/guava/src/com/google/common/collect/StandardTable.java
index 4c1ffe1..f8639a2 100644
--- a/android/guava/src/com/google/common/collect/StandardTable.java
+++ b/android/guava/src/com/google/common/collect/StandardTable.java
@@ -23,18 +23,13 @@ import static com.google.common.base.Predicates.in;
 import static com.google.common.base.Predicates.not;
 import static com.google.common.collect.Maps.safeContainsKey;
 import static com.google.common.collect.Maps.safeGet;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Supplier;
 import com.google.common.collect.Maps.IteratorBasedAbstractMap;
 import com.google.common.collect.Maps.ViewCachingAbstractMap;
 import com.google.common.collect.Sets.ImprovedAbstractSet;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.Iterator;
@@ -63,7 +58,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializable {
   @GwtTransient final Map<R, Map<C, V>> backingMap;
@@ -140,7 +134,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return map;
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(R rowKey, C columnKey, V value) {
@@ -150,7 +143,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return getOrCreate(rowKey).put(columnKey, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V remove(@CheckForNull Object rowKey, @CheckForNull Object columnKey) {
@@ -168,7 +160,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return value;
   }
 
-  @CanIgnoreReturnValue
   private Map<R, V> removeColumn(@CheckForNull Object column) {
     Map<R, V> output = new LinkedHashMap<>();
     Iterator<Entry<R, Map<C, V>>> iterator = backingMap.entrySet().iterator();
@@ -206,7 +197,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
    * Abstract set whose {@code isEmpty()} returns whether the table is empty and whose {@code
    * clear()} clears all table mappings.
    */
-  @WeakOuter
   private abstract class TableSet<T> extends ImprovedAbstractSet<T> {
     @Override
     public boolean isEmpty() {
@@ -465,7 +455,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     }
 
     /** Removes all {@code Column} mappings whose row key and value satisfy the given predicate. */
-    @CanIgnoreReturnValue
     boolean removeFromColumnIf(Predicate<? super Entry<R, V>> predicate) {
       boolean changed = false;
       Iterator<Entry<R, Map<C, V>>> iterator = backingMap.entrySet().iterator();
@@ -489,7 +478,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       return new EntrySet();
     }
 
-    @WeakOuter
     private class EntrySet extends ImprovedAbstractSet<Entry<R, V>> {
       @Override
       public Iterator<Entry<R, V>> iterator() {
@@ -550,7 +538,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
         while (iterator.hasNext()) {
           final Entry<R, Map<C, V>> entry = iterator.next();
           if (entry.getValue().containsKey(columnKey)) {
-            @WeakOuter
             class EntryImpl extends AbstractMapEntry<R, V> {
               @Override
               public R getKey() {
@@ -594,7 +581,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       return new KeySet();
     }
 
-    @WeakOuter
     private class KeySet extends Maps.KeySet<R, V> {
       KeySet() {
         super(Column.this);
@@ -621,7 +607,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       return new Values();
     }
 
-    @WeakOuter
     private class Values extends Maps.Values<R, V> {
       Values() {
         super(Column.this);
@@ -665,7 +650,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return (result == null) ? columnKeySet = new ColumnKeySet() : result;
   }
 
-  @WeakOuter
   private class ColumnKeySet extends TableSet<C> {
     @Override
     public Iterator<C> iterator() {
@@ -792,7 +776,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return new RowMap();
   }
 
-  @WeakOuter
   class RowMap extends ViewCachingAbstractMap<R, Map<C, V>> {
     @Override
     public boolean containsKey(@CheckForNull Object key) {
@@ -819,7 +802,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       return new EntrySet();
     }
 
-    @WeakOuter
     class EntrySet extends TableSet<Entry<R, Map<C, V>>> {
       @Override
       public Iterator<Entry<R, Map<C, V>>> iterator() {
@@ -870,7 +852,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return (result == null) ? columnMap = new ColumnMap() : result;
   }
 
-  @WeakOuter
   private class ColumnMap extends ViewCachingAbstractMap<C, Map<R, V>> {
     // The cast to C occurs only when the key is in the map, implying that it
     // has the correct type.
@@ -908,7 +889,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       return new ColumnMapValues();
     }
 
-    @WeakOuter
     class ColumnMapEntrySet extends TableSet<Entry<C, Map<R, V>>> {
       @Override
       public Iterator<Entry<C, Map<R, V>>> iterator() {
@@ -979,7 +959,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       }
     }
 
-    @WeakOuter
     private class ColumnMapValues extends Maps.Values<C, Map<R, V>> {
       ColumnMapValues() {
         super(ColumnMap.this);
diff --git a/android/guava/src/com/google/common/collect/Synchronized.java b/android/guava/src/com/google/common/collect/Synchronized.java
index 42bf611..51ef736 100644
--- a/android/guava/src/com/google/common/collect/Synchronized.java
+++ b/android/guava/src/com/google/common/collect/Synchronized.java
@@ -18,10 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.j2objc.annotations.RetainedWith;
 import java.io.IOException;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
@@ -40,7 +36,6 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Synchronized collection views. The returned synchronized collection views are serializable if the
@@ -54,7 +49,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mike Bostock
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 /*
  * I have decided not to bother adding @ParametricNullness annotations in this class. Adding them is
@@ -95,24 +89,23 @@ final class Synchronized {
     // they don't contain any non-transient member variables, while the
     // following writeObject() handles the SynchronizedObject members.
 
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       synchronized (mutex) {
         stream.defaultWriteObject();
       }
     }
 
-    @GwtIncompatible // not needed in emulated source
+    // not needed in emulated source
     private static final long serialVersionUID = 0;
   }
 
-  private static <E extends @Nullable Object> Collection<E> collection(
+  private static <E extends Object> Collection<E> collection(
       Collection<E> collection, @CheckForNull Object mutex) {
     return new SynchronizedCollection<E>(collection, mutex);
   }
 
-  @VisibleForTesting
-  static class SynchronizedCollection<E extends @Nullable Object> extends SynchronizedObject
+  static class SynchronizedCollection<E extends Object> extends SynchronizedObject
       implements Collection<E> {
     private SynchronizedCollection(Collection<E> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -200,7 +193,7 @@ final class Synchronized {
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       synchronized (mutex) {
         return delegate().toArray();
       }
@@ -208,7 +201,7 @@ final class Synchronized {
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] a) {
+    public <T extends Object> T[] toArray(T[] a) {
       synchronized (mutex) {
         return delegate().toArray(a);
       }
@@ -217,12 +210,11 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  @VisibleForTesting
-  static <E extends @Nullable Object> Set<E> set(Set<E> set, @CheckForNull Object mutex) {
+  static <E extends Object> Set<E> set(Set<E> set, @CheckForNull Object mutex) {
     return new SynchronizedSet<E>(set, mutex);
   }
 
-  static class SynchronizedSet<E extends @Nullable Object> extends SynchronizedCollection<E>
+  static class SynchronizedSet<E extends Object> extends SynchronizedCollection<E>
       implements Set<E> {
 
     SynchronizedSet(Set<E> delegate, @CheckForNull Object mutex) {
@@ -254,12 +246,12 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static <E extends @Nullable Object> SortedSet<E> sortedSet(
+  private static <E extends Object> SortedSet<E> sortedSet(
       SortedSet<E> set, @CheckForNull Object mutex) {
     return new SynchronizedSortedSet<E>(set, mutex);
   }
 
-  static class SynchronizedSortedSet<E extends @Nullable Object> extends SynchronizedSet<E>
+  static class SynchronizedSortedSet<E extends Object> extends SynchronizedSet<E>
       implements SortedSet<E> {
     SynchronizedSortedSet(SortedSet<E> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -316,14 +308,14 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static <E extends @Nullable Object> List<E> list(
+  private static <E extends Object> List<E> list(
       List<E> list, @CheckForNull Object mutex) {
     return (list instanceof RandomAccess)
         ? new SynchronizedRandomAccessList<E>(list, mutex)
         : new SynchronizedList<E>(list, mutex);
   }
 
-  private static class SynchronizedList<E extends @Nullable Object>
+  private static class SynchronizedList<E extends Object>
       extends SynchronizedCollection<E> implements List<E> {
     SynchronizedList(List<E> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -420,7 +412,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static class SynchronizedRandomAccessList<E extends @Nullable Object>
+  private static class SynchronizedRandomAccessList<E extends Object>
       extends SynchronizedList<E> implements RandomAccess {
     SynchronizedRandomAccessList(List<E> list, @CheckForNull Object mutex) {
       super(list, mutex);
@@ -429,7 +421,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <E extends @Nullable Object> Multiset<E> multiset(
+  static <E extends Object> Multiset<E> multiset(
       Multiset<E> multiset, @CheckForNull Object mutex) {
     if (multiset instanceof SynchronizedMultiset || multiset instanceof ImmutableMultiset) {
       return multiset;
@@ -437,7 +429,7 @@ final class Synchronized {
     return new SynchronizedMultiset<E>(multiset, mutex);
   }
 
-  private static class SynchronizedMultiset<E extends @Nullable Object>
+  private static class SynchronizedMultiset<E extends Object>
       extends SynchronizedCollection<E> implements Multiset<E> {
     @CheckForNull transient Set<E> elementSet;
     @CheckForNull transient Set<Multiset.Entry<E>> entrySet;
@@ -526,7 +518,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> Multimap<K, V> multimap(
+  static <K extends Object, V extends Object> Multimap<K, V> multimap(
       Multimap<K, V> multimap, @CheckForNull Object mutex) {
     if (multimap instanceof SynchronizedMultimap || multimap instanceof BaseImmutableMultimap) {
       return multimap;
@@ -534,7 +526,7 @@ final class Synchronized {
     return new SynchronizedMultimap<>(multimap, mutex);
   }
 
-  private static class SynchronizedMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class SynchronizedMultimap<K extends Object, V extends Object>
       extends SynchronizedObject implements Multimap<K, V> {
     @CheckForNull transient Set<K> keySet;
     @CheckForNull transient Collection<V> valuesCollection;
@@ -713,7 +705,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> ListMultimap<K, V> listMultimap(
+  static <K extends Object, V extends Object> ListMultimap<K, V> listMultimap(
       ListMultimap<K, V> multimap, @CheckForNull Object mutex) {
     if (multimap instanceof SynchronizedListMultimap || multimap instanceof BaseImmutableMultimap) {
       return multimap;
@@ -722,7 +714,7 @@ final class Synchronized {
   }
 
   private static class SynchronizedListMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends SynchronizedMultimap<K, V> implements ListMultimap<K, V> {
     SynchronizedListMultimap(ListMultimap<K, V> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -757,7 +749,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> SetMultimap<K, V> setMultimap(
+  static <K extends Object, V extends Object> SetMultimap<K, V> setMultimap(
       SetMultimap<K, V> multimap, @CheckForNull Object mutex) {
     if (multimap instanceof SynchronizedSetMultimap || multimap instanceof BaseImmutableMultimap) {
       return multimap;
@@ -766,7 +758,7 @@ final class Synchronized {
   }
 
   private static class SynchronizedSetMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends SynchronizedMultimap<K, V> implements SetMultimap<K, V> {
     @CheckForNull transient Set<Map.Entry<K, V>> entrySet;
 
@@ -813,7 +805,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       SortedSetMultimap<K, V> sortedSetMultimap(
           SortedSetMultimap<K, V> multimap, @CheckForNull Object mutex) {
     if (multimap instanceof SynchronizedSortedSetMultimap) {
@@ -823,7 +815,7 @@ final class Synchronized {
   }
 
   private static class SynchronizedSortedSetMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends SynchronizedSetMultimap<K, V> implements SortedSetMultimap<K, V> {
     SynchronizedSortedSetMultimap(SortedSetMultimap<K, V> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -866,7 +858,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static <E extends @Nullable Object> Collection<E> typePreservingCollection(
+  private static <E extends Object> Collection<E> typePreservingCollection(
       Collection<E> collection, @CheckForNull Object mutex) {
     if (collection instanceof SortedSet) {
       return sortedSet((SortedSet<E>) collection, mutex);
@@ -880,7 +872,7 @@ final class Synchronized {
     return collection(collection, mutex);
   }
 
-  private static <E extends @Nullable Object> Set<E> typePreservingSet(
+  private static <E extends Object> Set<E> typePreservingSet(
       Set<E> set, @CheckForNull Object mutex) {
     if (set instanceof SortedSet) {
       return sortedSet((SortedSet<E>) set, mutex);
@@ -890,7 +882,7 @@ final class Synchronized {
   }
 
   private static class SynchronizedAsMapEntries<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends SynchronizedSet<Map.Entry<K, Collection<V>>> {
     SynchronizedAsMapEntries(
         Set<Map.Entry<K, Collection<V>>> delegate, @CheckForNull Object mutex) {
@@ -937,7 +929,7 @@ final class Synchronized {
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       synchronized (mutex) {
         return ObjectArrays.toArrayImpl(delegate(), array);
       }
@@ -991,13 +983,12 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  @VisibleForTesting
-  static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> map(
+  static <K extends Object, V extends Object> Map<K, V> map(
       Map<K, V> map, @CheckForNull Object mutex) {
     return new SynchronizedMap<>(map, mutex);
   }
 
-  private static class SynchronizedMap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class SynchronizedMap<K extends Object, V extends Object>
       extends SynchronizedObject implements Map<K, V> {
     @CheckForNull transient Set<K> keySet;
     @CheckForNull transient Collection<V> values;
@@ -1129,12 +1120,12 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> SortedMap<K, V> sortedMap(
+  static <K extends Object, V extends Object> SortedMap<K, V> sortedMap(
       SortedMap<K, V> sortedMap, @CheckForNull Object mutex) {
     return new SynchronizedSortedMap<>(sortedMap, mutex);
   }
 
-  static class SynchronizedSortedMap<K extends @Nullable Object, V extends @Nullable Object>
+  static class SynchronizedSortedMap<K extends Object, V extends Object>
       extends SynchronizedMap<K, V> implements SortedMap<K, V> {
 
     SynchronizedSortedMap(SortedMap<K, V> delegate, @CheckForNull Object mutex) {
@@ -1192,7 +1183,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> BiMap<K, V> biMap(
+  static <K extends Object, V extends Object> BiMap<K, V> biMap(
       BiMap<K, V> bimap, @CheckForNull Object mutex) {
     if (bimap instanceof SynchronizedBiMap || bimap instanceof ImmutableBiMap) {
       return bimap;
@@ -1200,11 +1191,10 @@ final class Synchronized {
     return new SynchronizedBiMap<>(bimap, mutex, null);
   }
 
-  @VisibleForTesting
-  static class SynchronizedBiMap<K extends @Nullable Object, V extends @Nullable Object>
+  static class SynchronizedBiMap<K extends Object, V extends Object>
       extends SynchronizedMap<K, V> implements BiMap<K, V>, Serializable {
     @CheckForNull private transient Set<V> valueSet;
-    @RetainedWith @CheckForNull private transient BiMap<V, K> inverse;
+    @CheckForNull private transient BiMap<V, K> inverse;
 
     private SynchronizedBiMap(
         BiMap<K, V> delegate, @CheckForNull Object mutex, @CheckForNull BiMap<V, K> inverse) {
@@ -1248,7 +1238,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static class SynchronizedAsMap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class SynchronizedAsMap<K extends Object, V extends Object>
       extends SynchronizedMap<K, Collection<V>> {
     @CheckForNull transient Set<Map.Entry<K, Collection<V>>> asMapEntrySet;
     @CheckForNull transient Collection<Collection<V>> asMapValues;
@@ -1295,7 +1285,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static class SynchronizedAsMapValues<V extends @Nullable Object>
+  private static class SynchronizedAsMapValues<V extends Object>
       extends SynchronizedCollection<Collection<V>> {
     SynchronizedAsMapValues(Collection<Collection<V>> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -1315,9 +1305,8 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // NavigableSet
-  @VisibleForTesting
-  static class SynchronizedNavigableSet<E extends @Nullable Object> extends SynchronizedSortedSet<E>
+  // NavigableSet
+  static class SynchronizedNavigableSet<E extends Object> extends SynchronizedSortedSet<E>
       implements NavigableSet<E> {
     SynchronizedNavigableSet(NavigableSet<E> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -1436,32 +1425,31 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // NavigableSet
-  static <E extends @Nullable Object> NavigableSet<E> navigableSet(
+  // NavigableSet
+  static <E extends Object> NavigableSet<E> navigableSet(
       NavigableSet<E> navigableSet, @CheckForNull Object mutex) {
     return new SynchronizedNavigableSet<E>(navigableSet, mutex);
   }
 
-  @GwtIncompatible // NavigableSet
-  static <E extends @Nullable Object> NavigableSet<E> navigableSet(NavigableSet<E> navigableSet) {
+  // NavigableSet
+  static <E extends Object> NavigableSet<E> navigableSet(NavigableSet<E> navigableSet) {
     return navigableSet(navigableSet, null);
   }
 
-  @GwtIncompatible // NavigableMap
-  static <K extends @Nullable Object, V extends @Nullable Object> NavigableMap<K, V> navigableMap(
+  // NavigableMap
+  static <K extends Object, V extends Object> NavigableMap<K, V> navigableMap(
       NavigableMap<K, V> navigableMap) {
     return navigableMap(navigableMap, null);
   }
 
-  @GwtIncompatible // NavigableMap
-  static <K extends @Nullable Object, V extends @Nullable Object> NavigableMap<K, V> navigableMap(
+  // NavigableMap
+  static <K extends Object, V extends Object> NavigableMap<K, V> navigableMap(
       NavigableMap<K, V> navigableMap, @CheckForNull Object mutex) {
     return new SynchronizedNavigableMap<>(navigableMap, mutex);
   }
 
-  @GwtIncompatible // NavigableMap
-  @VisibleForTesting
-  static class SynchronizedNavigableMap<K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  static class SynchronizedNavigableMap<K extends Object, V extends Object>
       extends SynchronizedSortedMap<K, V> implements NavigableMap<K, V> {
 
     SynchronizedNavigableMap(NavigableMap<K, V> delegate, @CheckForNull Object mutex) {
@@ -1650,9 +1638,9 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // works but is needed only for NavigableMap
+  // works but is needed only for NavigableMap
   @CheckForNull
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       Map.Entry<K, V> nullableSynchronizedEntry(
           @CheckForNull Map.Entry<K, V> entry, @CheckForNull Object mutex) {
     if (entry == null) {
@@ -1661,8 +1649,8 @@ final class Synchronized {
     return new SynchronizedEntry<>(entry, mutex);
   }
 
-  @GwtIncompatible // works but is needed only for NavigableMap
-  private static class SynchronizedEntry<K extends @Nullable Object, V extends @Nullable Object>
+  // works but is needed only for NavigableMap
+  private static class SynchronizedEntry<K extends Object, V extends Object>
       extends SynchronizedObject implements Map.Entry<K, V> {
 
     SynchronizedEntry(Map.Entry<K, V> delegate, @CheckForNull Object mutex) {
@@ -1713,11 +1701,11 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <E extends @Nullable Object> Queue<E> queue(Queue<E> queue, @CheckForNull Object mutex) {
+  static <E extends Object> Queue<E> queue(Queue<E> queue, @CheckForNull Object mutex) {
     return (queue instanceof SynchronizedQueue) ? queue : new SynchronizedQueue<E>(queue, mutex);
   }
 
-  private static class SynchronizedQueue<E extends @Nullable Object>
+  private static class SynchronizedQueue<E extends Object>
       extends SynchronizedCollection<E> implements Queue<E> {
 
     SynchronizedQueue(Queue<E> delegate, @CheckForNull Object mutex) {
@@ -1769,11 +1757,11 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <E extends @Nullable Object> Deque<E> deque(Deque<E> deque, @CheckForNull Object mutex) {
+  static <E extends Object> Deque<E> deque(Deque<E> deque, @CheckForNull Object mutex) {
     return new SynchronizedDeque<E>(deque, mutex);
   }
 
-  private static final class SynchronizedDeque<E extends @Nullable Object>
+  private static final class SynchronizedDeque<E extends Object>
       extends SynchronizedQueue<E> implements Deque<E> {
 
     SynchronizedDeque(Deque<E> delegate, @CheckForNull Object mutex) {
@@ -1911,13 +1899,13 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  static <R extends Object, C extends Object, V extends Object>
       Table<R, C, V> table(Table<R, C, V> table, @CheckForNull Object mutex) {
     return new SynchronizedTable<>(table, mutex);
   }
 
   private static final class SynchronizedTable<
-          R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+          R extends Object, C extends Object, V extends Object>
       extends SynchronizedObject implements Table<R, C, V> {
 
     SynchronizedTable(Table<R, C, V> delegate, @CheckForNull Object mutex) {
diff --git a/android/guava/src/com/google/common/collect/Table.java b/android/guava/src/com/google/common/collect/Table.java
index 97d3f70..cd09e49 100644
--- a/android/guava/src/com/google/common/collect/Table.java
+++ b/android/guava/src/com/google/common/collect/Table.java
@@ -16,16 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CompatibleWith;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A collection that associates an ordered pair of keys, called a row key and a column key, with a
@@ -54,11 +49,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @param <V> the type of the mapped values
  * @since 7.0
  */
-@DoNotMock("Use ImmutableTable, HashBasedTable, or another implementation")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public interface Table<
-    R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object> {
+    R extends Object, C extends Object, V extends Object> {
   // TODO(jlevy): Consider adding methods similar to ConcurrentMap methods.
 
   // Accessors
@@ -141,7 +134,6 @@ public interface Table<
    * @return the value previously associated with the keys, or {@code null} if no mapping existed
    *     for the keys
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V put(@ParametricNullness R rowKey, @ParametricNullness C columnKey, @ParametricNullness V value);
 
@@ -160,7 +152,6 @@ public interface Table<
    * @param columnKey column key of mapping to be removed
    * @return the value previously associated with the keys, or {@code null} if no such value existed
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V remove(
       @CompatibleWith("R") @CheckForNull Object rowKey,
@@ -257,7 +248,7 @@ public interface Table<
    * @since 7.0
    */
   interface Cell<
-      R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object> {
+      R extends Object, C extends Object, V extends Object> {
     /** Returns the row key of this cell. */
     @ParametricNullness
     R getRowKey();
diff --git a/android/guava/src/com/google/common/collect/Tables.java b/android/guava/src/com/google/common/collect/Tables.java
index 772a75d..3b1989f 100644
--- a/android/guava/src/com/google/common/collect/Tables.java
+++ b/android/guava/src/com/google/common/collect/Tables.java
@@ -18,10 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import com.google.common.base.Supplier;
@@ -35,7 +32,6 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static methods that involve a {@code Table}.
@@ -47,7 +43,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 7.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Tables {
   private Tables() {}
@@ -61,7 +56,7 @@ public final class Tables {
    * @param columnKey the column key to be associated with the returned cell
    * @param value the value to be associated with the returned cell
    */
-  public static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  public static <R extends Object, C extends Object, V extends Object>
       Cell<R, C, V> immutableCell(
           @ParametricNullness R rowKey,
           @ParametricNullness C columnKey,
@@ -70,7 +65,7 @@ public final class Tables {
   }
 
   static final class ImmutableCell<
-          R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+          R extends Object, C extends Object, V extends Object>
       extends AbstractCell<R, C, V> implements Serializable {
     @ParametricNullness private final R rowKey;
     @ParametricNullness private final C columnKey;
@@ -107,7 +102,7 @@ public final class Tables {
   }
 
   abstract static class AbstractCell<
-          R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+          R extends Object, C extends Object, V extends Object>
       implements Cell<R, C, V> {
     // needed for serialization
     AbstractCell() {}
@@ -149,7 +144,7 @@ public final class Tables {
    * columnKeySet().iterator()} doesn't. With a transposed {@link HashBasedTable}, it's the other
    * way around.
    */
-  public static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  public static <R extends Object, C extends Object, V extends Object>
       Table<C, R, V> transpose(Table<R, C, V> table) {
     return (table instanceof TransposeTable)
         ? ((TransposeTable<R, C, V>) table).original
@@ -157,7 +152,7 @@ public final class Tables {
   }
 
   private static class TransposeTable<
-          C extends @Nullable Object, R extends @Nullable Object, V extends @Nullable Object>
+          C extends Object, R extends Object, V extends Object>
       extends AbstractTable<C, R, V> {
     final Table<R, C, V> original;
 
@@ -310,7 +305,6 @@ public final class Tables {
    * @throws IllegalArgumentException if {@code backingMap} is not empty
    * @since 10.0
    */
-  @Beta
   public static <R, C, V> Table<R, C, V> newCustomTable(
       Map<R, Map<C, V>> backingMap, Supplier<? extends Map<C, V>> factory) {
     checkArgument(backingMap.isEmpty());
@@ -340,22 +334,21 @@ public final class Tables {
    *
    * @since 10.0
    */
-  @Beta
   public static <
-          R extends @Nullable Object,
-          C extends @Nullable Object,
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object>
+          R extends Object,
+          C extends Object,
+          V1 extends Object,
+          V2 extends Object>
       Table<R, C, V2> transformValues(
           Table<R, C, V1> fromTable, Function<? super V1, V2> function) {
     return new TransformedTable<>(fromTable, function);
   }
 
   private static class TransformedTable<
-          R extends @Nullable Object,
-          C extends @Nullable Object,
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object>
+          R extends Object,
+          C extends Object,
+          V1 extends Object,
+          V2 extends Object>
       extends AbstractTable<R, C, V2> {
     final Table<R, C, V1> fromTable;
     final Function<? super V1, V2> function;
@@ -491,13 +484,13 @@ public final class Tables {
    *
    * @since 11.0
    */
-  public static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  public static <R extends Object, C extends Object, V extends Object>
       Table<R, C, V> unmodifiableTable(Table<? extends R, ? extends C, ? extends V> table) {
     return new UnmodifiableTable<>(table);
   }
 
   private static class UnmodifiableTable<
-          R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+          R extends Object, C extends Object, V extends Object>
       extends ForwardingTable<R, C, V> implements Serializable {
     final Table<? extends R, ? extends C, ? extends V> delegate;
 
@@ -593,8 +586,7 @@ public final class Tables {
    * @return an unmodifiable view of the specified table
    * @since 11.0
    */
-  @Beta
-  public static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  public static <R extends Object, C extends Object, V extends Object>
       RowSortedTable<R, C, V> unmodifiableRowSortedTable(
           RowSortedTable<R, ? extends C, ? extends V> table) {
     /*
@@ -606,7 +598,7 @@ public final class Tables {
   }
 
   static final class UnmodifiableRowSortedMap<
-          R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+          R extends Object, C extends Object, V extends Object>
       extends UnmodifiableTable<R, C, V> implements RowSortedTable<R, C, V> {
 
     public UnmodifiableRowSortedMap(RowSortedTable<R, ? extends C, ? extends V> delegate) {
@@ -633,7 +625,7 @@ public final class Tables {
   }
 
   @SuppressWarnings("unchecked")
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       Function<Map<K, V>, Map<K, V>> unmodifiableWrapper() {
     return (Function) UNMODIFIABLE_WRAPPER;
   }
@@ -675,7 +667,7 @@ public final class Tables {
    * @return a synchronized view of the specified table
    * @since 22.0
    */
-  public static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  public static <R extends Object, C extends Object, V extends Object>
       Table<R, C, V> synchronizedTable(Table<R, C, V> table) {
     return Synchronized.table(table, null);
   }
diff --git a/android/guava/src/com/google/common/collect/TopKSelector.java b/android/guava/src/com/google/common/collect/TopKSelector.java
index f8cca0d..77c427d 100644
--- a/android/guava/src/com/google/common/collect/TopKSelector.java
+++ b/android/guava/src/com/google/common/collect/TopKSelector.java
@@ -18,9 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.math.IntMath;
 import java.math.RoundingMode;
 import java.util.Arrays;
@@ -29,7 +27,6 @@ import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An accumulator that selects the "top" {@code k} elements added to it, relative to a provided
@@ -52,10 +49,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class TopKSelector<
-    T extends @Nullable Object> {
+    T extends Object> {
 
   /**
    * Returns a {@code TopKSelector} that collects the lowest {@code k} elements added to it,
@@ -74,7 +70,7 @@ final class TopKSelector<
    *
    * @throws IllegalArgumentException if {@code k < 0} or {@code k > Integer.MAX_VALUE / 2}
    */
-  public static <T extends @Nullable Object> TopKSelector<T> least(
+  public static <T extends Object> TopKSelector<T> least(
       int k, Comparator<? super T> comparator) {
     return new TopKSelector<T>(comparator, k);
   }
@@ -96,7 +92,7 @@ final class TopKSelector<
    *
    * @throws IllegalArgumentException if {@code k < 0} or {@code k > Integer.MAX_VALUE / 2}
    */
-  public static <T extends @Nullable Object> TopKSelector<T> greatest(
+  public static <T extends Object> TopKSelector<T> greatest(
       int k, Comparator<? super T> comparator) {
     return new TopKSelector<T>(Ordering.from(comparator).reverse(), k);
   }
@@ -109,7 +105,7 @@ final class TopKSelector<
    * for the top k elements. Whenever the buffer is filled, we quickselect the top k elements to the
    * range [0, k) and ignore the remaining elements.
    */
-  private final @Nullable T[] buffer;
+  private final T[] buffer;
   private int bufferSize;
 
   /**
diff --git a/android/guava/src/com/google/common/collect/TransformedIterator.java b/android/guava/src/com/google/common/collect/TransformedIterator.java
index 2456cec..8d6afda 100644
--- a/android/guava/src/com/google/common/collect/TransformedIterator.java
+++ b/android/guava/src/com/google/common/collect/TransformedIterator.java
@@ -18,9 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An iterator that transforms a backing iterator; for internal use. This avoids the object overhead
@@ -28,9 +26,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class TransformedIterator<F extends @Nullable Object, T extends @Nullable Object>
+abstract class TransformedIterator<F extends Object, T extends Object>
     implements Iterator<T> {
   final Iterator<? extends F> backingIterator;
 
diff --git a/android/guava/src/com/google/common/collect/TransformedListIterator.java b/android/guava/src/com/google/common/collect/TransformedListIterator.java
index 66b42e4..46110b4 100644
--- a/android/guava/src/com/google/common/collect/TransformedListIterator.java
+++ b/android/guava/src/com/google/common/collect/TransformedListIterator.java
@@ -16,10 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import java.util.ListIterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An iterator that transforms a backing list iterator; for internal use. This avoids the object
@@ -27,9 +25,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class TransformedListIterator<F extends @Nullable Object, T extends @Nullable Object>
+abstract class TransformedListIterator<F extends Object, T extends Object>
     extends TransformedIterator<F, T> implements ListIterator<T> {
   TransformedListIterator(ListIterator<? extends F> backingIterator) {
     super(backingIterator);
diff --git a/android/guava/src/com/google/common/collect/TreeBasedTable.java b/android/guava/src/com/google/common/collect/TreeBasedTable.java
index 315404a..ac0d2eb 100644
--- a/android/guava/src/com/google/common/collect/TreeBasedTable.java
+++ b/android/guava/src/com/google/common/collect/TreeBasedTable.java
@@ -18,9 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Supplier;
 import java.io.Serializable;
@@ -66,7 +64,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 7.0
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 public class TreeBasedTable<R, C, V> extends StandardRowSortedTable<R, C, V> {
   private final Comparator<? super C> columnComparator;
diff --git a/android/guava/src/com/google/common/collect/TreeMultimap.java b/android/guava/src/com/google/common/collect/TreeMultimap.java
index 04ae207..8080a04 100644
--- a/android/guava/src/com/google/common/collect/TreeMultimap.java
+++ b/android/guava/src/com/google/common/collect/TreeMultimap.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -31,7 +29,6 @@ import java.util.NavigableSet;
 import java.util.SortedSet;
 import java.util.TreeMap;
 import java.util.TreeSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@code Multimap} whose keys and values are ordered by their natural ordering or
@@ -71,9 +68,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public class TreeMultimap<K extends Object, V extends Object>
     extends AbstractSortedKeySortedSetMultimap<K, V> {
   private transient Comparator<? super K> keyComparator;
   private transient Comparator<? super V> valueComparator;
@@ -92,7 +88,7 @@ public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object
    * @param keyComparator the comparator that determines the key ordering
    * @param valueComparator the comparator that determines the value ordering
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> TreeMultimap<K, V> create(
+  public static <K extends Object, V extends Object> TreeMultimap<K, V> create(
       Comparator<? super K> keyComparator, Comparator<? super V> valueComparator) {
     return new TreeMultimap<>(checkNotNull(keyComparator), checkNotNull(valueComparator));
   }
@@ -164,7 +160,7 @@ public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object
 
   /** @since 14.0 (present with return type {@code SortedSet} since 2.0) */
   @Override
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public NavigableSet<V> get(@ParametricNullness K key) {
     return (NavigableSet<V>) super.get(key);
   }
@@ -201,7 +197,7 @@ public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object
    * @serialData key comparator, value comparator, number of distinct keys, and then for each
    *     distinct key: the key, number of values for that key, and key values
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(keyComparator());
@@ -209,7 +205,7 @@ public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object
     Serialization.writeMultimap(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   @SuppressWarnings("unchecked") // reading data stored by writeObject
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
@@ -219,6 +215,6 @@ public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object
     Serialization.populateMultimap(this, stream);
   }
 
-  @GwtIncompatible // not needed in emulated source
+  // not needed in emulated source
   private static final long serialVersionUID = 0;
 }
diff --git a/android/guava/src/com/google/common/collect/TreeMultiset.java b/android/guava/src/com/google/common/collect/TreeMultiset.java
index c64c35a..d05cecf 100644
--- a/android/guava/src/com/google/common/collect/TreeMultiset.java
+++ b/android/guava/src/com/google/common/collect/TreeMultiset.java
@@ -19,14 +19,9 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -36,7 +31,6 @@ import java.util.ConcurrentModificationException;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A multiset which maintains the ordering of its elements, according to either their natural order
@@ -56,9 +50,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class TreeMultiset<E extends @Nullable Object> extends AbstractSortedMultiset<E>
+public final class TreeMultiset<E extends Object> extends AbstractSortedMultiset<E>
     implements Serializable {
 
   /**
@@ -89,7 +82,7 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
    *     indicates that the elements' <i>natural ordering</i> should be used.
    */
   @SuppressWarnings("unchecked")
-  public static <E extends @Nullable Object> TreeMultiset<E> create(
+  public static <E extends Object> TreeMultiset<E> create(
       @CheckForNull Comparator<? super E> comparator) {
     return (comparator == null)
         ? new TreeMultiset<E>((Comparator) Ordering.natural())
@@ -253,7 +246,6 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     }
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int add(@ParametricNullness E element, int occurrences) {
     checkNonnegative(occurrences, "occurrences");
@@ -275,7 +267,6 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     return result[0];
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int remove(@CheckForNull Object element, int occurrences) {
     checkNonnegative(occurrences, "occurrences");
@@ -299,7 +290,6 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     return result[0];
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int setCount(@ParametricNullness E element, int count) {
     checkNonnegative(count, "count");
@@ -321,7 +311,6 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     return result[0];
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean setCount(@ParametricNullness E element, int oldCount, int newCount) {
     checkNonnegative(newCount, "newCount");
@@ -571,7 +560,7 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     }
   }
 
-  private static final class AvlNode<E extends @Nullable Object> {
+  private static final class AvlNode<E extends Object> {
     /*
      * For "normal" nodes, the type of this field is `E`, not `@Nullable E` (though note that E is a
      * type that can include null, as in a TreeMultiset<@Nullable String>).
@@ -1041,12 +1030,12 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     }
   }
 
-  private static <T extends @Nullable Object> void successor(AvlNode<T> a, AvlNode<T> b) {
+  private static <T extends Object> void successor(AvlNode<T> a, AvlNode<T> b) {
     a.succ = b;
     b.pred = a;
   }
 
-  private static <T extends @Nullable Object> void successor(
+  private static <T extends Object> void successor(
       AvlNode<T> a, AvlNode<T> b, AvlNode<T> c) {
     successor(a, b);
     successor(b, c);
@@ -1062,14 +1051,14 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
    * @serialData the comparator, the number of distinct elements, the first element, its count, the
    *     second element, its count, and so on
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(elementSet().comparator());
     Serialization.writeMultiset(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     @SuppressWarnings("unchecked")
@@ -1086,6 +1075,6 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     Serialization.populateMultiset(this, stream);
   }
 
-  @GwtIncompatible // not needed in emulated source
+  // not needed in emulated source
   private static final long serialVersionUID = 1;
 }
diff --git a/android/guava/src/com/google/common/collect/TreeRangeMap.java b/android/guava/src/com/google/common/collect/TreeRangeMap.java
index 0ce8e89..14ac67a 100644
--- a/android/guava/src/com/google/common/collect/TreeRangeMap.java
+++ b/android/guava/src/com/google/common/collect/TreeRangeMap.java
@@ -21,10 +21,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Predicates.compose;
 import static com.google.common.base.Predicates.in;
 import static com.google.common.base.Predicates.not;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Maps.IteratorBasedAbstractMap;
@@ -49,8 +46,7 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@GwtIncompatible // NavigableMap
+// NavigableMap
 @ElementTypesAreNonnullByDefault
 public final class TreeRangeMap<K extends Comparable, V> implements RangeMap<K, V> {
 
diff --git a/android/guava/src/com/google/common/collect/TreeRangeSet.java b/android/guava/src/com/google/common/collect/TreeRangeSet.java
index 8308880..b87bf81 100644
--- a/android/guava/src/com/google/common/collect/TreeRangeSet.java
+++ b/android/guava/src/com/google/common/collect/TreeRangeSet.java
@@ -17,9 +17,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import java.io.Serializable;
 import java.util.Collection;
@@ -38,13 +35,12 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@GwtIncompatible // uses NavigableMap
+// uses NavigableMap
 @ElementTypesAreNonnullByDefault
 public class TreeRangeSet<C extends Comparable<?>> extends AbstractRangeSet<C>
     implements Serializable {
 
-  @VisibleForTesting final NavigableMap<Cut<C>, Range<C>> rangesByLowerBound;
+  final NavigableMap<Cut<C>, Range<C>> rangesByLowerBound;
 
   /** Creates an empty {@code TreeRangeSet} instance. */
   public static <C extends Comparable<?>> TreeRangeSet<C> create() {
@@ -282,7 +278,6 @@ public class TreeRangeSet<C extends Comparable<?>> extends AbstractRangeSet<C>
     return (result == null) ? complement = new Complement() : result;
   }
 
-  @VisibleForTesting
   static final class RangesByUpperBound<C extends Comparable<?>>
       extends AbstractNavigableMap<Cut<C>, Range<C>> {
     private final NavigableMap<Cut<C>, Range<C>> rangesByLowerBound;
diff --git a/android/guava/src/com/google/common/collect/TreeTraverser.java b/android/guava/src/com/google/common/collect/TreeTraverser.java
index 73f8154..3e19c3f 100644
--- a/android/guava/src/com/google/common/collect/TreeTraverser.java
+++ b/android/guava/src/com/google/common/collect/TreeTraverser.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import java.util.ArrayDeque;
 import java.util.Deque;
@@ -72,8 +70,6 @@ import javax.annotation.CheckForNull;
  */
 // TODO(b/68134636): Remove by 2019-10
 @Deprecated
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class TreeTraverser<T> {
 
diff --git a/android/guava/src/com/google/common/collect/UnmodifiableIterator.java b/android/guava/src/com/google/common/collect/UnmodifiableIterator.java
index 03e52aa..02d022f 100644
--- a/android/guava/src/com/google/common/collect/UnmodifiableIterator.java
+++ b/android/guava/src/com/google/common/collect/UnmodifiableIterator.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An iterator that does not support {@link #remove}.
@@ -31,9 +28,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class UnmodifiableIterator<E extends @Nullable Object> implements Iterator<E> {
+public abstract class UnmodifiableIterator<E extends Object> implements Iterator<E> {
   /** Constructor for use by subclasses. */
   protected UnmodifiableIterator() {}
 
@@ -45,7 +41,6 @@ public abstract class UnmodifiableIterator<E extends @Nullable Object> implement
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void remove() {
     throw new UnsupportedOperationException();
   }
diff --git a/android/guava/src/com/google/common/collect/UnmodifiableListIterator.java b/android/guava/src/com/google/common/collect/UnmodifiableListIterator.java
index f3d3b92..8b79d2a 100644
--- a/android/guava/src/com/google/common/collect/UnmodifiableListIterator.java
+++ b/android/guava/src/com/google/common/collect/UnmodifiableListIterator.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.ListIterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A list iterator that does not support {@link #remove}, {@link #add}, or {@link #set}.
@@ -27,9 +24,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 7.0
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class UnmodifiableListIterator<E extends @Nullable Object>
+public abstract class UnmodifiableListIterator<E extends Object>
     extends UnmodifiableIterator<E> implements ListIterator<E> {
   /** Constructor for use by subclasses. */
   protected UnmodifiableListIterator() {}
@@ -42,7 +38,6 @@ public abstract class UnmodifiableListIterator<E extends @Nullable Object>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void add(@ParametricNullness E e) {
     throw new UnsupportedOperationException();
   }
@@ -55,7 +50,6 @@ public abstract class UnmodifiableListIterator<E extends @Nullable Object>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void set(@ParametricNullness E e) {
     throw new UnsupportedOperationException();
   }
diff --git a/android/guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java b/android/guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java
index 59bd2ce..a95f11d 100644
--- a/android/guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java
+++ b/android/guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java
@@ -16,12 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multisets.UnmodifiableMultiset;
 import java.util.Comparator;
 import java.util.NavigableSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into
@@ -30,9 +28,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-final class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>
+final class UnmodifiableSortedMultiset<E extends Object> extends UnmodifiableMultiset<E>
     implements SortedMultiset<E> {
   UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {
     super(delegate);
diff --git a/android/guava/src/com/google/common/collect/UsingToStringOrdering.java b/android/guava/src/com/google/common/collect/UsingToStringOrdering.java
index 3443b43..8393ecc 100644
--- a/android/guava/src/com/google/common/collect/UsingToStringOrdering.java
+++ b/android/guava/src/com/google/common/collect/UsingToStringOrdering.java
@@ -16,11 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 
 /** An ordering that uses the natural order of the string representation of the values. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 final class UsingToStringOrdering extends Ordering<Object> implements Serializable {
   static final UsingToStringOrdering INSTANCE = new UsingToStringOrdering();
diff --git a/android/guava/src/com/google/common/collect/package-info.java b/android/guava/src/com/google/common/collect/package-info.java
index d46e65f..41aa6ad 100644
--- a/android/guava/src/com/google/common/collect/package-info.java
+++ b/android/guava/src/com/google/common/collect/package-info.java
@@ -212,9 +212,7 @@
  *   <li>{@link com.google.common.collect.ForwardingTable}
  * </ul>
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.collect;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/escape/ArrayBasedCharEscaper.java b/android/guava/src/com/google/common/escape/ArrayBasedCharEscaper.java
index 20e8563..22907ce 100644
--- a/android/guava/src/com/google/common/escape/ArrayBasedCharEscaper.java
+++ b/android/guava/src/com/google/common/escape/ArrayBasedCharEscaper.java
@@ -16,8 +16,6 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 import javax.annotation.CheckForNull;
 
@@ -41,8 +39,6 @@ import javax.annotation.CheckForNull;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ArrayBasedCharEscaper extends CharEscaper {
   // The replacement array (see ArrayBasedEscaperMap).
diff --git a/android/guava/src/com/google/common/escape/ArrayBasedEscaperMap.java b/android/guava/src/com/google/common/escape/ArrayBasedEscaperMap.java
index a0883fe..2de9626 100644
--- a/android/guava/src/com/google/common/escape/ArrayBasedEscaperMap.java
+++ b/android/guava/src/com/google/common/escape/ArrayBasedEscaperMap.java
@@ -16,9 +16,6 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.util.Collections;
 import java.util.Map;
 
@@ -36,8 +33,6 @@ import java.util.Map;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class ArrayBasedEscaperMap {
   /**
@@ -66,7 +61,6 @@ public final class ArrayBasedEscaperMap {
   // Creates a replacement array from the given map. The returned array is a
   // linear lookup table of replacement character sequences indexed by the
   // original character value.
-  @VisibleForTesting
   static char[][] createReplacementArray(Map<Character, String> map) {
     checkNotNull(map); // GWT specific check (do not optimize)
     if (map.isEmpty()) {
diff --git a/android/guava/src/com/google/common/escape/ArrayBasedUnicodeEscaper.java b/android/guava/src/com/google/common/escape/ArrayBasedUnicodeEscaper.java
index 5ea7807..42e38ae 100644
--- a/android/guava/src/com/google/common/escape/ArrayBasedUnicodeEscaper.java
+++ b/android/guava/src/com/google/common/escape/ArrayBasedUnicodeEscaper.java
@@ -16,11 +16,8 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link UnicodeEscaper} that uses an array to quickly look up replacement characters for a given
@@ -41,8 +38,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ArrayBasedUnicodeEscaper extends UnicodeEscaper {
   // The replacement array (see ArrayBasedEscaperMap).
diff --git a/android/guava/src/com/google/common/escape/CharEscaper.java b/android/guava/src/com/google/common/escape/CharEscaper.java
index 55090f6..b0727a6 100644
--- a/android/guava/src/com/google/common/escape/CharEscaper.java
+++ b/android/guava/src/com/google/common/escape/CharEscaper.java
@@ -16,8 +16,6 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -40,8 +38,6 @@ import javax.annotation.CheckForNull;
  * @author Sven Mawson
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class CharEscaper extends Escaper {
   /** Constructor for use by subclasses. */
diff --git a/android/guava/src/com/google/common/escape/CharEscaperBuilder.java b/android/guava/src/com/google/common/escape/CharEscaperBuilder.java
index cbe6958..1d78c5f 100644
--- a/android/guava/src/com/google/common/escape/CharEscaperBuilder.java
+++ b/android/guava/src/com/google/common/escape/CharEscaperBuilder.java
@@ -16,14 +16,10 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Simple helper class to build a "sparse" array of objects based on the indexes that were added to
@@ -34,8 +30,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class CharEscaperBuilder {
   /**
@@ -43,7 +37,7 @@ public final class CharEscaperBuilder {
    * a very fast escape method.
    */
   private static class CharArrayDecorator extends CharEscaper {
-    private final char[] @Nullable [] replacements;
+    private final char[] [] replacements;
     private final int replaceLength;
 
     CharArrayDecorator(char[] @Nullable [] replacements) {
@@ -86,7 +80,6 @@ public final class CharEscaperBuilder {
   }
 
   /** Add a new mapping from an index to an object to the escaping. */
-  @CanIgnoreReturnValue
   public CharEscaperBuilder addEscape(char c, String r) {
     map.put(c, checkNotNull(r));
     if (c > max) {
@@ -96,7 +89,6 @@ public final class CharEscaperBuilder {
   }
 
   /** Add multiple mappings at once for a particular index. */
-  @CanIgnoreReturnValue
   public CharEscaperBuilder addEscapes(char[] cs, String r) {
     checkNotNull(r);
     for (char c : cs) {
@@ -112,7 +104,7 @@ public final class CharEscaperBuilder {
    *
    * @return a "sparse" array that holds the replacement mappings.
    */
-  public char[] @Nullable [] toArray() {
+  public char[] [] toArray() {
     char[][] result = new char[max + 1][];
     for (Entry<Character, String> entry : map.entrySet()) {
       result[entry.getKey()] = entry.getValue().toCharArray();
diff --git a/android/guava/src/com/google/common/escape/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/escape/ElementTypesAreNonnullByDefault.java
index 992c9a3..2b187ed 100644
--- a/android/guava/src/com/google/common/escape/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/escape/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/escape/Escaper.java b/android/guava/src/com/google/common/escape/Escaper.java
index cdfe4e9..944b3c4 100644
--- a/android/guava/src/com/google/common/escape/Escaper.java
+++ b/android/guava/src/com/google/common/escape/Escaper.java
@@ -14,9 +14,7 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * An object that converts literal text into a format safe for inclusion in a particular context
@@ -54,8 +52,6 @@ import com.google.errorprone.annotations.DoNotMock;
  * @author David Beaumont
  * @since 15.0
  */
-@DoNotMock("Use Escapers.nullEscaper() or another methods from the *Escapers classes")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class Escaper {
   // TODO(dbeaumont): evaluate custom implementations, considering package private constructor.
diff --git a/android/guava/src/com/google/common/escape/Escapers.java b/android/guava/src/com/google/common/escape/Escapers.java
index 41af668..0b481a3 100644
--- a/android/guava/src/com/google/common/escape/Escapers.java
+++ b/android/guava/src/com/google/common/escape/Escapers.java
@@ -16,13 +16,9 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@link Escaper} instances.
@@ -31,8 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Escapers {
   private Escapers() {}
@@ -93,7 +87,6 @@ public final class Escapers {
    * @author David Beaumont
    * @since 15.0
    */
-  @Beta
   public static final class Builder {
     private final Map<Character, String> replacementMap = new HashMap<>();
     private char safeMin = Character.MIN_VALUE;
@@ -112,7 +105,6 @@ public final class Escapers {
      * @param safeMax the highest 'safe' character
      * @return the builder instance
      */
-    @CanIgnoreReturnValue
     public Builder setSafeRange(char safeMin, char safeMax) {
       this.safeMin = safeMin;
       this.safeMax = safeMax;
@@ -127,7 +119,6 @@ public final class Escapers {
      * @param unsafeReplacement the string to replace unsafe characters
      * @return the builder instance
      */
-    @CanIgnoreReturnValue
     public Builder setUnsafeReplacement(@Nullable String unsafeReplacement) {
       this.unsafeReplacement = unsafeReplacement;
       return this;
@@ -143,7 +134,6 @@ public final class Escapers {
      * @return the builder instance
      * @throws NullPointerException if {@code replacement} is null
      */
-    @CanIgnoreReturnValue
     public Builder addEscape(char c, String replacement) {
       checkNotNull(replacement);
       // This can replace an existing character (the builder is re-usable).
diff --git a/android/guava/src/com/google/common/escape/ParametricNullness.java b/android/guava/src/com/google/common/escape/ParametricNullness.java
index 2f03d59..4db3ffa 100644
--- a/android/guava/src/com/google/common/escape/ParametricNullness.java
+++ b/android/guava/src/com/google/common/escape/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/escape/Platform.java b/android/guava/src/com/google/common/escape/Platform.java
index dc6610c..9ad1799 100644
--- a/android/guava/src/com/google/common/escape/Platform.java
+++ b/android/guava/src/com/google/common/escape/Platform.java
@@ -14,14 +14,12 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Methods factored out so that they can be emulated differently in GWT.
  *
  * @author Jesse Wilson
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class Platform {
   private Platform() {}
diff --git a/android/guava/src/com/google/common/escape/UnicodeEscaper.java b/android/guava/src/com/google/common/escape/UnicodeEscaper.java
index c10ae34..f908cfb 100644
--- a/android/guava/src/com/google/common/escape/UnicodeEscaper.java
+++ b/android/guava/src/com/google/common/escape/UnicodeEscaper.java
@@ -16,8 +16,6 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -50,8 +48,6 @@ import javax.annotation.CheckForNull;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class UnicodeEscaper extends Escaper {
   /** The amount of padding (chars) to use when growing the escape buffer. */
diff --git a/android/guava/src/com/google/common/escape/package-info.java b/android/guava/src/com/google/common/escape/package-info.java
index 8cd29e6..fa290a0 100644
--- a/android/guava/src/com/google/common/escape/package-info.java
+++ b/android/guava/src/com/google/common/escape/package-info.java
@@ -24,9 +24,7 @@
  * <p>This package is a part of the open-source <a href="http://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.escape;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/eventbus/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/eventbus/ElementTypesAreNonnullByDefault.java
index e8542bb..896651e 100644
--- a/android/guava/src/com/google/common/eventbus/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/eventbus/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/eventbus/ParametricNullness.java b/android/guava/src/com/google/common/eventbus/ParametricNullness.java
index fc5bb17..37e0e51 100644
--- a/android/guava/src/com/google/common/eventbus/ParametricNullness.java
+++ b/android/guava/src/com/google/common/eventbus/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/eventbus/Subscriber.java b/android/guava/src/com/google/common/eventbus/Subscriber.java
index 73e7f42..a94b98a 100644
--- a/android/guava/src/com/google/common/eventbus/Subscriber.java
+++ b/android/guava/src/com/google/common/eventbus/Subscriber.java
@@ -16,8 +16,6 @@ package com.google.common.eventbus;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.VisibleForTesting;
-import com.google.j2objc.annotations.Weak;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.concurrent.Executor;
@@ -43,10 +41,10 @@ class Subscriber {
   }
 
   /** The event bus this subscriber belongs to. */
-  @Weak private EventBus bus;
+  private EventBus bus;
 
   /** The object with the subscriber method. */
-  @VisibleForTesting final Object target;
+  final Object target;
 
   /** Subscriber method. */
   private final Method method;
@@ -82,7 +80,6 @@ class Subscriber {
    * Invokes the subscriber method. This method can be overridden to make the invocation
    * synchronized.
    */
-  @VisibleForTesting
   void invokeSubscriberMethod(Object event) throws InvocationTargetException {
     try {
       method.invoke(target, checkNotNull(event));
@@ -132,7 +129,6 @@ class Subscriber {
    * Subscriber that synchronizes invocations of a method to ensure that only one thread may enter
    * the method at a time.
    */
-  @VisibleForTesting
   static final class SynchronizedSubscriber extends Subscriber {
 
     private SynchronizedSubscriber(EventBus bus, Object target, Method method) {
diff --git a/android/guava/src/com/google/common/eventbus/SubscriberRegistry.java b/android/guava/src/com/google/common/eventbus/SubscriberRegistry.java
index 46e9820..d3e4477 100644
--- a/android/guava/src/com/google/common/eventbus/SubscriberRegistry.java
+++ b/android/guava/src/com/google/common/eventbus/SubscriberRegistry.java
@@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.throwIfUnchecked;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Throwables;
@@ -26,8 +25,6 @@ import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.HashMultimap;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -35,7 +32,6 @@ import com.google.common.collect.Multimap;
 import com.google.common.primitives.Primitives;
 import com.google.common.reflect.TypeToken;
 import com.google.common.util.concurrent.UncheckedExecutionException;
-import com.google.j2objc.annotations.Weak;
 import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collection;
@@ -66,7 +62,7 @@ final class SubscriberRegistry {
       Maps.newConcurrentMap();
 
   /** The event bus this registry belongs to. */
-  @Weak private final EventBus bus;
+  private final EventBus bus;
 
   SubscriberRegistry(EventBus bus) {
     this.bus = checkNotNull(bus);
@@ -115,7 +111,6 @@ final class SubscriberRegistry {
     }
   }
 
-  @VisibleForTesting
   Set<Subscriber> getSubscribersForTesting(Class<?> eventType) {
     return MoreObjects.firstNonNull(subscribers.get(eventType), ImmutableSet.<Subscriber>of());
   }
@@ -234,7 +229,6 @@ final class SubscriberRegistry {
    * Flattens a class's type hierarchy into a set of {@code Class} objects including all
    * superclasses (transitively) and all interfaces implemented by these superclasses.
    */
-  @VisibleForTesting
   static ImmutableSet<Class<?>> flattenHierarchy(Class<?> concreteClass) {
     try {
       return flattenHierarchyCache.getUnchecked(concreteClass);
diff --git a/android/guava/src/com/google/common/eventbus/package-info.java b/android/guava/src/com/google/common/eventbus/package-info.java
index fa7faa4..b5a538c 100644
--- a/android/guava/src/com/google/common/eventbus/package-info.java
+++ b/android/guava/src/com/google/common/eventbus/package-info.java
@@ -249,9 +249,7 @@
  * <p>Because subscriber methods on your listener classes are normal methods, you can simply call
  * them from your test code to simulate the EventBus.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.eventbus;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/graph/AbstractBaseGraph.java b/android/guava/src/com/google/common/graph/AbstractBaseGraph.java
index c4be6b6..c4de96e 100644
--- a/android/guava/src/com/google/common/graph/AbstractBaseGraph.java
+++ b/android/guava/src/com/google/common/graph/AbstractBaseGraph.java
@@ -22,7 +22,6 @@ import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.graph.GraphConstants.ENDPOINTS_MISMATCH;
 
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Sets;
 import com.google.common.collect.UnmodifiableIterator;
diff --git a/android/guava/src/com/google/common/graph/AbstractDirectedNetworkConnections.java b/android/guava/src/com/google/common/graph/AbstractDirectedNetworkConnections.java
index ac452d4..b6d3686 100644
--- a/android/guava/src/com/google/common/graph/AbstractDirectedNetworkConnections.java
+++ b/android/guava/src/com/google/common/graph/AbstractDirectedNetworkConnections.java
@@ -20,7 +20,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.graph.Graphs.checkNonNegative;
 import static com.google.common.graph.Graphs.checkPositive;
-import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Iterators;
diff --git a/android/guava/src/com/google/common/graph/AbstractGraph.java b/android/guava/src/com/google/common/graph/AbstractGraph.java
index 9402be5..56d1e62 100644
--- a/android/guava/src/com/google/common/graph/AbstractGraph.java
+++ b/android/guava/src/com/google/common/graph/AbstractGraph.java
@@ -16,7 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
 import javax.annotation.CheckForNull;
 
 /**
@@ -27,7 +26,6 @@ import javax.annotation.CheckForNull;
  * @param <N> Node parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractGraph<N> extends AbstractBaseGraph<N> implements Graph<N> {
 
diff --git a/android/guava/src/com/google/common/graph/AbstractNetwork.java b/android/guava/src/com/google/common/graph/AbstractNetwork.java
index 9afbb03..afc5611 100644
--- a/android/guava/src/com/google/common/graph/AbstractNetwork.java
+++ b/android/guava/src/com/google/common/graph/AbstractNetwork.java
@@ -22,10 +22,8 @@ import static com.google.common.graph.GraphConstants.ENDPOINTS_MISMATCH;
 import static com.google.common.graph.GraphConstants.MULTIPLE_EDGES_CONNECTING;
 import static java.util.Collections.unmodifiableSet;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
@@ -48,7 +46,6 @@ import javax.annotation.CheckForNull;
  * @param <E> Edge parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractNetwork<N, E> implements Network<N, E> {
 
diff --git a/android/guava/src/com/google/common/graph/AbstractUndirectedNetworkConnections.java b/android/guava/src/com/google/common/graph/AbstractUndirectedNetworkConnections.java
index 8f736d7..cc4ad1c 100644
--- a/android/guava/src/com/google/common/graph/AbstractUndirectedNetworkConnections.java
+++ b/android/guava/src/com/google/common/graph/AbstractUndirectedNetworkConnections.java
@@ -18,7 +18,6 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
-import static java.util.Objects.requireNonNull;
 
 import java.util.Collections;
 import java.util.Map;
diff --git a/android/guava/src/com/google/common/graph/AbstractValueGraph.java b/android/guava/src/com/google/common/graph/AbstractValueGraph.java
index 940aeff..6bc9104 100644
--- a/android/guava/src/com/google/common/graph/AbstractValueGraph.java
+++ b/android/guava/src/com/google/common/graph/AbstractValueGraph.java
@@ -16,9 +16,7 @@
 
 package com.google.common.graph;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.collect.Maps;
 import java.util.Map;
@@ -37,7 +35,6 @@ import javax.annotation.CheckForNull;
  * @param <V> Value parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractValueGraph<N, V> extends AbstractBaseGraph<N>
     implements ValueGraph<N, V> {
diff --git a/android/guava/src/com/google/common/graph/DirectedGraphConnections.java b/android/guava/src/com/google/common/graph/DirectedGraphConnections.java
index 23083da..4adae06 100644
--- a/android/guava/src/com/google/common/graph/DirectedGraphConnections.java
+++ b/android/guava/src/com/google/common/graph/DirectedGraphConnections.java
@@ -26,7 +26,6 @@ import static com.google.common.graph.Graphs.checkPositive;
 
 import com.google.common.base.Function;
 import com.google.common.collect.AbstractIterator;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.UnmodifiableIterator;
 import java.util.AbstractSet;
diff --git a/android/guava/src/com/google/common/graph/DirectedMultiNetworkConnections.java b/android/guava/src/com/google/common/graph/DirectedMultiNetworkConnections.java
index 05f40c2..c309c8b 100644
--- a/android/guava/src/com/google/common/graph/DirectedMultiNetworkConnections.java
+++ b/android/guava/src/com/google/common/graph/DirectedMultiNetworkConnections.java
@@ -21,9 +21,7 @@ import static com.google.common.graph.GraphConstants.INNER_CAPACITY;
 import static com.google.common.graph.GraphConstants.INNER_LOAD_FACTOR;
 
 import com.google.common.collect.HashMultiset;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Multiset;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.lang.ref.Reference;
 import java.lang.ref.SoftReference;
 import java.util.Collections;
@@ -60,7 +58,7 @@ final class DirectedMultiNetworkConnections<N, E> extends AbstractDirectedNetwor
         ImmutableMap.copyOf(inEdges), ImmutableMap.copyOf(outEdges), selfLoopCount);
   }
 
-  @CheckForNull @LazyInit private transient Reference<Multiset<N>> predecessorsReference;
+  @CheckForNull private transient Reference<Multiset<N>> predecessorsReference;
 
   @Override
   public Set<N> predecessors() {
@@ -76,7 +74,7 @@ final class DirectedMultiNetworkConnections<N, E> extends AbstractDirectedNetwor
     return predecessors;
   }
 
-  @CheckForNull @LazyInit private transient Reference<Multiset<N>> successorsReference;
+  @CheckForNull private transient Reference<Multiset<N>> successorsReference;
 
   @Override
   public Set<N> successors() {
diff --git a/android/guava/src/com/google/common/graph/DirectedNetworkConnections.java b/android/guava/src/com/google/common/graph/DirectedNetworkConnections.java
index c2a25a5..57e2705 100644
--- a/android/guava/src/com/google/common/graph/DirectedNetworkConnections.java
+++ b/android/guava/src/com/google/common/graph/DirectedNetworkConnections.java
@@ -20,7 +20,6 @@ import static com.google.common.graph.GraphConstants.EXPECTED_DEGREE;
 
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
-import com.google.common.collect.ImmutableBiMap;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
diff --git a/android/guava/src/com/google/common/graph/EdgesConnecting.java b/android/guava/src/com/google/common/graph/EdgesConnecting.java
index 797970b..46c4d84 100644
--- a/android/guava/src/com/google/common/graph/EdgesConnecting.java
+++ b/android/guava/src/com/google/common/graph/EdgesConnecting.java
@@ -18,7 +18,6 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.UnmodifiableIterator;
 import java.util.AbstractSet;
diff --git a/android/guava/src/com/google/common/graph/ElementOrder.java b/android/guava/src/com/google/common/graph/ElementOrder.java
index ea13674..7b1da6c 100644
--- a/android/guava/src/com/google/common/graph/ElementOrder.java
+++ b/android/guava/src/com/google/common/graph/ElementOrder.java
@@ -19,13 +19,11 @@ package com.google.common.graph;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Objects;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
-import com.google.errorprone.annotations.Immutable;
 import java.util.Comparator;
 import java.util.Map;
 import javax.annotation.CheckForNull;
@@ -44,8 +42,6 @@ import javax.annotation.CheckForNull;
  * @author Joshua O'Madadhain
  * @since 20.0
  */
-@Beta
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class ElementOrder<T> {
   private final Type type;
diff --git a/android/guava/src/com/google/common/graph/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/graph/ElementTypesAreNonnullByDefault.java
index 0798de0..f4af581 100644
--- a/android/guava/src/com/google/common/graph/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/graph/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/graph/EndpointPair.java b/android/guava/src/com/google/common/graph/EndpointPair.java
index 7aa3860..967a576 100644
--- a/android/guava/src/com/google/common/graph/EndpointPair.java
+++ b/android/guava/src/com/google/common/graph/EndpointPair.java
@@ -19,11 +19,9 @@ package com.google.common.graph;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.graph.GraphConstants.NOT_AVAILABLE_ON_UNDIRECTED;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Objects;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.UnmodifiableIterator;
-import com.google.errorprone.annotations.Immutable;
 import javax.annotation.CheckForNull;
 
 /**
@@ -37,8 +35,6 @@ import javax.annotation.CheckForNull;
  * @author James Sexton
  * @since 20.0
  */
-@Beta
-@Immutable(containerOf = {"N"})
 @ElementTypesAreNonnullByDefault
 public abstract class EndpointPair<N> implements Iterable<N> {
   private final N nodeU;
diff --git a/android/guava/src/com/google/common/graph/EndpointPairIterator.java b/android/guava/src/com/google/common/graph/EndpointPairIterator.java
index 7096dbe..dc7f51f 100644
--- a/android/guava/src/com/google/common/graph/EndpointPairIterator.java
+++ b/android/guava/src/com/google/common/graph/EndpointPairIterator.java
@@ -17,15 +17,12 @@
 package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkState;
-import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.AbstractIterator;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import java.util.Iterator;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A class to facilitate the set returned by {@link Graph#edges()}.
@@ -117,7 +114,7 @@ abstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>>
    */
   private static final class Undirected<N> extends EndpointPairIterator<N> {
     // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.
-    @CheckForNull private Set<@Nullable N> visitedNodes;
+    @CheckForNull private Set<N> visitedNodes;
 
     private Undirected(BaseGraph<N> graph) {
       super(graph);
diff --git a/android/guava/src/com/google/common/graph/Graph.java b/android/guava/src/com/google/common/graph/Graph.java
index 5dc0e71..3099b13 100644
--- a/android/guava/src/com/google/common/graph/Graph.java
+++ b/android/guava/src/com/google/common/graph/Graph.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Collection;
 import java.util.Set;
 import javax.annotation.CheckForNull;
@@ -101,8 +99,6 @@ import javax.annotation.CheckForNull;
  * @param <N> Node parameter type
  * @since 20.0
  */
-@Beta
-@DoNotMock("Use GraphBuilder to create a real instance")
 @ElementTypesAreNonnullByDefault
 public interface Graph<N> extends BaseGraph<N> {
   //
diff --git a/android/guava/src/com/google/common/graph/GraphBuilder.java b/android/guava/src/com/google/common/graph/GraphBuilder.java
index d57ed37..2b473fb 100644
--- a/android/guava/src/com/google/common/graph/GraphBuilder.java
+++ b/android/guava/src/com/google/common/graph/GraphBuilder.java
@@ -20,9 +20,7 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.graph.Graphs.checkNonNegative;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * A builder for constructing instances of {@link MutableGraph} or {@link ImmutableGraph} with
@@ -62,8 +60,6 @@ import com.google.errorprone.annotations.DoNotMock;
  *     constructed based on an existing {@code Graph} using {@link #from(Graph)}.
  * @since 20.0
  */
-@Beta
-@DoNotMock
 @ElementTypesAreNonnullByDefault
 public final class GraphBuilder<N> extends AbstractGraphBuilder<N> {
 
diff --git a/android/guava/src/com/google/common/graph/GraphConnections.java b/android/guava/src/com/google/common/graph/GraphConnections.java
index 7d4f8f0..be31de2 100644
--- a/android/guava/src/com/google/common/graph/GraphConnections.java
+++ b/android/guava/src/com/google/common/graph/GraphConnections.java
@@ -16,7 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Iterator;
 import java.util.Set;
 import javax.annotation.CheckForNull;
@@ -59,7 +58,6 @@ interface GraphConnections<N, V> {
    * Remove {@code node} from the set of successors. Returns the value previously associated with
    * the edge connecting the two nodes.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V removeSuccessor(N node);
 
@@ -74,7 +72,6 @@ interface GraphConnections<N, V> {
    * becomes a predecessor. Associates {@code value} with the edge connecting the two nodes. Returns
    * the value previously associated with the edge connecting the two nodes.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V addSuccessor(N node, V value);
 }
diff --git a/android/guava/src/com/google/common/graph/Graphs.java b/android/guava/src/com/google/common/graph/Graphs.java
index bad8580..b8d1c1a 100644
--- a/android/guava/src/com/google/common/graph/Graphs.java
+++ b/android/guava/src/com/google/common/graph/Graphs.java
@@ -18,16 +18,12 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.graph.GraphConstants.NODE_NOT_IN_GRAPH;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Maps;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -42,7 +38,6 @@ import javax.annotation.CheckForNull;
  * @author Joshua O'Madadhain
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class Graphs {
 
@@ -589,25 +584,21 @@ public final class Graphs {
     return copy;
   }
 
-  @CanIgnoreReturnValue
   static int checkNonNegative(int value) {
     checkArgument(value >= 0, "Not true that %s is non-negative.", value);
     return value;
   }
 
-  @CanIgnoreReturnValue
   static long checkNonNegative(long value) {
     checkArgument(value >= 0, "Not true that %s is non-negative.", value);
     return value;
   }
 
-  @CanIgnoreReturnValue
   static int checkPositive(int value) {
     checkArgument(value > 0, "Not true that %s is positive.", value);
     return value;
   }
 
-  @CanIgnoreReturnValue
   static long checkPositive(long value) {
     checkArgument(value > 0, "Not true that %s is positive.", value);
     return value;
diff --git a/android/guava/src/com/google/common/graph/ImmutableGraph.java b/android/guava/src/com/google/common/graph/ImmutableGraph.java
index afad211..06bf280 100644
--- a/android/guava/src/com/google/common/graph/ImmutableGraph.java
+++ b/android/guava/src/com/google/common/graph/ImmutableGraph.java
@@ -18,14 +18,10 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import com.google.common.graph.GraphConstants.Presence;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.Immutable;
 
 /**
  * A {@link Graph} whose elements and structural relationships will never change. Instances of this
@@ -43,8 +39,6 @@ import com.google.errorprone.annotations.Immutable;
  * @param <N> Node parameter type
  * @since 20.0
  */
-@Beta
-@Immutable(containerOf = {"N"})
 @ElementTypesAreNonnullByDefault
 public class ImmutableGraph<N> extends ForwardingGraph<N> {
   @SuppressWarnings("Immutable") // The backing graph must be immutable.
@@ -143,7 +137,6 @@ public class ImmutableGraph<N> extends ForwardingGraph<N> {
      *
      * @return this {@code Builder} object
      */
-    @CanIgnoreReturnValue
     public Builder<N> addNode(N node) {
       mutableGraph.addNode(node);
       return this;
@@ -162,7 +155,6 @@ public class ImmutableGraph<N> extends ForwardingGraph<N> {
      * @throws IllegalArgumentException if the introduction of the edge would violate {@link
      *     #allowsSelfLoops()}
      */
-    @CanIgnoreReturnValue
     public Builder<N> putEdge(N nodeU, N nodeV) {
       mutableGraph.putEdge(nodeU, nodeV);
       return this;
@@ -185,7 +177,6 @@ public class ImmutableGraph<N> extends ForwardingGraph<N> {
      *     #allowsSelfLoops()}
      * @throws IllegalArgumentException if the endpoints are unordered and the graph is directed
      */
-    @CanIgnoreReturnValue
     public Builder<N> putEdge(EndpointPair<N> endpoints) {
       mutableGraph.putEdge(endpoints);
       return this;
diff --git a/android/guava/src/com/google/common/graph/ImmutableNetwork.java b/android/guava/src/com/google/common/graph/ImmutableNetwork.java
index cb636aa..18e2697 100644
--- a/android/guava/src/com/google/common/graph/ImmutableNetwork.java
+++ b/android/guava/src/com/google/common/graph/ImmutableNetwork.java
@@ -18,12 +18,8 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.Immutable;
 import java.util.Map;
 
 /**
@@ -43,8 +39,6 @@ import java.util.Map;
  * @param <E> Edge parameter type
  * @since 20.0
  */
-@Beta
-@Immutable(containerOf = {"N", "E"})
 @SuppressWarnings("Immutable") // Extends StandardNetwork but uses ImmutableMaps.
 @ElementTypesAreNonnullByDefault
 public final class ImmutableNetwork<N, E> extends StandardNetwork<N, E> {
@@ -180,7 +174,6 @@ public final class ImmutableNetwork<N, E> extends StandardNetwork<N, E> {
      *
      * @return this {@code Builder} object
      */
-    @CanIgnoreReturnValue
     public ImmutableNetwork.Builder<N, E> addNode(N node) {
       mutableNetwork.addNode(node);
       return this;
@@ -207,7 +200,6 @@ public final class ImmutableNetwork<N, E> extends StandardNetwork<N, E> {
      * @throws IllegalArgumentException if the introduction of the edge would violate {@link
      *     #allowsParallelEdges()} or {@link #allowsSelfLoops()}
      */
-    @CanIgnoreReturnValue
     public ImmutableNetwork.Builder<N, E> addEdge(N nodeU, N nodeV, E edge) {
       mutableNetwork.addEdge(nodeU, nodeV, edge);
       return this;
@@ -238,7 +230,6 @@ public final class ImmutableNetwork<N, E> extends StandardNetwork<N, E> {
      *     #allowsParallelEdges()} or {@link #allowsSelfLoops()}
      * @throws IllegalArgumentException if the endpoints are unordered and the network is directed
      */
-    @CanIgnoreReturnValue
     public ImmutableNetwork.Builder<N, E> addEdge(EndpointPair<N> endpoints, E edge) {
       mutableNetwork.addEdge(endpoints, edge);
       return this;
diff --git a/android/guava/src/com/google/common/graph/ImmutableValueGraph.java b/android/guava/src/com/google/common/graph/ImmutableValueGraph.java
index a1567da..a95d760 100644
--- a/android/guava/src/com/google/common/graph/ImmutableValueGraph.java
+++ b/android/guava/src/com/google/common/graph/ImmutableValueGraph.java
@@ -17,14 +17,9 @@
 package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.Immutable;
 
 /**
  * A {@link ValueGraph} whose elements and structural relationships will never change. Instances of
@@ -41,8 +36,6 @@ import com.google.errorprone.annotations.Immutable;
  * @param <V> Value parameter type
  * @since 20.0
  */
-@Beta
-@Immutable(containerOf = {"N", "V"})
 @SuppressWarnings("Immutable") // Extends StandardValueGraph but uses ImmutableMaps.
 @ElementTypesAreNonnullByDefault
 public final class ImmutableValueGraph<N, V> extends StandardValueGraph<N, V> {
@@ -146,7 +139,6 @@ public final class ImmutableValueGraph<N, V> extends StandardValueGraph<N, V> {
      *
      * @return this {@code Builder} object
      */
-    @CanIgnoreReturnValue
     public ImmutableValueGraph.Builder<N, V> addNode(N node) {
       mutableValueGraph.addNode(node);
       return this;
@@ -168,7 +160,6 @@ public final class ImmutableValueGraph<N, V> extends StandardValueGraph<N, V> {
      * @throws IllegalArgumentException if the introduction of the edge would violate {@link
      *     #allowsSelfLoops()}
      */
-    @CanIgnoreReturnValue
     public ImmutableValueGraph.Builder<N, V> putEdgeValue(N nodeU, N nodeV, V value) {
       mutableValueGraph.putEdgeValue(nodeU, nodeV, value);
       return this;
@@ -193,7 +184,6 @@ public final class ImmutableValueGraph<N, V> extends StandardValueGraph<N, V> {
      *     #allowsSelfLoops()}
      * @throws IllegalArgumentException if the endpoints are unordered and the graph is directed
      */
-    @CanIgnoreReturnValue
     public ImmutableValueGraph.Builder<N, V> putEdgeValue(EndpointPair<N> endpoints, V value) {
       mutableValueGraph.putEdgeValue(endpoints, value);
       return this;
diff --git a/android/guava/src/com/google/common/graph/MapIteratorCache.java b/android/guava/src/com/google/common/graph/MapIteratorCache.java
index aae9187..8681876 100644
--- a/android/guava/src/com/google/common/graph/MapIteratorCache.java
+++ b/android/guava/src/com/google/common/graph/MapIteratorCache.java
@@ -19,7 +19,6 @@ package com.google.common.graph;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import com.google.common.collect.UnmodifiableIterator;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.AbstractSet;
 import java.util.Iterator;
 import java.util.Map;
@@ -60,7 +59,6 @@ class MapIteratorCache<K, V> {
     this.backingMap = checkNotNull(backingMap);
   }
 
-  @CanIgnoreReturnValue
   @CheckForNull
   final V put(K key, V value) {
     checkNotNull(key);
@@ -69,7 +67,6 @@ class MapIteratorCache<K, V> {
     return backingMap.put(key, value);
   }
 
-  @CanIgnoreReturnValue
   @CheckForNull
   final V remove(Object key) {
     checkNotNull(key);
diff --git a/android/guava/src/com/google/common/graph/MutableGraph.java b/android/guava/src/com/google/common/graph/MutableGraph.java
index b1f3359..d0a5454 100644
--- a/android/guava/src/com/google/common/graph/MutableGraph.java
+++ b/android/guava/src/com/google/common/graph/MutableGraph.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 
 /**
  * A subinterface of {@link Graph} which adds mutation methods. When mutation is not required, users
@@ -28,7 +26,6 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue;
  * @param <N> Node parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public interface MutableGraph<N> extends Graph<N> {
 
@@ -39,7 +36,6 @@ public interface MutableGraph<N> extends Graph<N> {
    *
    * @return {@code true} if the graph was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean addNode(N node);
 
   /**
@@ -55,7 +51,6 @@ public interface MutableGraph<N> extends Graph<N> {
    * @throws IllegalArgumentException if the introduction of the edge would violate {@link
    *     #allowsSelfLoops()}
    */
-  @CanIgnoreReturnValue
   boolean putEdge(N nodeU, N nodeV);
 
   /**
@@ -76,7 +71,6 @@ public interface MutableGraph<N> extends Graph<N> {
    * @throws IllegalArgumentException if the endpoints are unordered and the graph is directed
    * @since 27.1
    */
-  @CanIgnoreReturnValue
   boolean putEdge(EndpointPair<N> endpoints);
 
   /**
@@ -84,7 +78,6 @@ public interface MutableGraph<N> extends Graph<N> {
    *
    * @return {@code true} if the graph was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean removeNode(N node);
 
   /**
@@ -92,7 +85,6 @@ public interface MutableGraph<N> extends Graph<N> {
    *
    * @return {@code true} if the graph was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean removeEdge(N nodeU, N nodeV);
 
   /**
@@ -104,6 +96,5 @@ public interface MutableGraph<N> extends Graph<N> {
    * @return {@code true} if the graph was modified as a result of this call
    * @since 27.1
    */
-  @CanIgnoreReturnValue
   boolean removeEdge(EndpointPair<N> endpoints);
 }
diff --git a/android/guava/src/com/google/common/graph/MutableNetwork.java b/android/guava/src/com/google/common/graph/MutableNetwork.java
index 64acb13..4c31c20 100644
--- a/android/guava/src/com/google/common/graph/MutableNetwork.java
+++ b/android/guava/src/com/google/common/graph/MutableNetwork.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 
 /**
  * A subinterface of {@link Network} which adds mutation methods. When mutation is not required,
@@ -29,7 +27,6 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue;
  * @param <E> Edge parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public interface MutableNetwork<N, E> extends Network<N, E> {
 
@@ -40,7 +37,6 @@ public interface MutableNetwork<N, E> extends Network<N, E> {
    *
    * @return {@code true} if the network was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean addNode(N node);
 
   /**
@@ -64,7 +60,6 @@ public interface MutableNetwork<N, E> extends Network<N, E> {
    * @throws IllegalArgumentException if the introduction of the edge would violate {@link
    *     #allowsParallelEdges()} or {@link #allowsSelfLoops()}
    */
-  @CanIgnoreReturnValue
   boolean addEdge(N nodeU, N nodeV, E edge);
 
   /**
@@ -93,7 +88,6 @@ public interface MutableNetwork<N, E> extends Network<N, E> {
    * @throws IllegalArgumentException if the endpoints are unordered and the graph is directed
    * @since 27.1
    */
-  @CanIgnoreReturnValue
   boolean addEdge(EndpointPair<N> endpoints, E edge);
 
   /**
@@ -101,7 +95,6 @@ public interface MutableNetwork<N, E> extends Network<N, E> {
    *
    * @return {@code true} if the network was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean removeNode(N node);
 
   /**
@@ -109,6 +102,5 @@ public interface MutableNetwork<N, E> extends Network<N, E> {
    *
    * @return {@code true} if the network was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean removeEdge(E edge);
 }
diff --git a/android/guava/src/com/google/common/graph/MutableValueGraph.java b/android/guava/src/com/google/common/graph/MutableValueGraph.java
index f32d2ee..32f01ff 100644
--- a/android/guava/src/com/google/common/graph/MutableValueGraph.java
+++ b/android/guava/src/com/google/common/graph/MutableValueGraph.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
 
 /**
@@ -29,7 +27,6 @@ import javax.annotation.CheckForNull;
  * @param <V> Value parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
 
@@ -40,7 +37,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    *
    * @return {@code true} if the graph was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean addNode(N node);
 
   /**
@@ -60,7 +56,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    * @throws IllegalArgumentException if the introduction of the edge would violate {@link
    *     #allowsSelfLoops()}
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V putEdgeValue(N nodeU, N nodeV, V value);
 
@@ -85,7 +80,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    * @throws IllegalArgumentException if the endpoints are unordered and the graph is directed
    * @since 27.1
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V putEdgeValue(EndpointPair<N> endpoints, V value);
 
@@ -94,7 +88,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    *
    * @return {@code true} if the graph was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean removeNode(N node);
 
   /**
@@ -103,7 +96,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    * @return the value previously associated with the edge connecting {@code nodeU} to {@code
    *     nodeV}, or null if there was no such edge.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V removeEdge(N nodeU, N nodeV);
 
@@ -116,7 +108,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    *     there was no such edge.
    * @since 27.1
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V removeEdge(EndpointPair<N> endpoints);
 }
diff --git a/android/guava/src/com/google/common/graph/Network.java b/android/guava/src/com/google/common/graph/Network.java
index 70e39cd..98b94af 100644
--- a/android/guava/src/com/google/common/graph/Network.java
+++ b/android/guava/src/com/google/common/graph/Network.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Set;
 import javax.annotation.CheckForNull;
 
@@ -101,8 +99,6 @@ import javax.annotation.CheckForNull;
  * @param <E> Edge parameter type
  * @since 20.0
  */
-@Beta
-@DoNotMock("Use NetworkBuilder to create a real instance")
 @ElementTypesAreNonnullByDefault
 public interface Network<N, E> extends SuccessorsFunction<N>, PredecessorsFunction<N> {
   //
diff --git a/android/guava/src/com/google/common/graph/NetworkBuilder.java b/android/guava/src/com/google/common/graph/NetworkBuilder.java
index 9689444..2962c55 100644
--- a/android/guava/src/com/google/common/graph/NetworkBuilder.java
+++ b/android/guava/src/com/google/common/graph/NetworkBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.graph;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.graph.Graphs.checkNonNegative;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
 
 /**
@@ -66,7 +65,6 @@ import com.google.common.base.Optional;
  *     constructed based on an existing {@code Network} using {@link #from(Network)}.
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class NetworkBuilder<N, E> extends AbstractGraphBuilder<N> {
   boolean allowsParallelEdges = false;
diff --git a/android/guava/src/com/google/common/graph/NetworkConnections.java b/android/guava/src/com/google/common/graph/NetworkConnections.java
index 94d1780..2d2833f 100644
--- a/android/guava/src/com/google/common/graph/NetworkConnections.java
+++ b/android/guava/src/com/google/common/graph/NetworkConnections.java
@@ -16,7 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Set;
 import javax.annotation.CheckForNull;
 
@@ -61,12 +60,10 @@ interface NetworkConnections<N, E> {
    *
    * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   N removeInEdge(E edge, boolean isSelfLoop);
 
   /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */
-  @CanIgnoreReturnValue
   N removeOutEdge(E edge);
 
   /**
diff --git a/android/guava/src/com/google/common/graph/ParametricNullness.java b/android/guava/src/com/google/common/graph/ParametricNullness.java
index 62534eb..3cb5a25 100644
--- a/android/guava/src/com/google/common/graph/ParametricNullness.java
+++ b/android/guava/src/com/google/common/graph/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/graph/PredecessorsFunction.java b/android/guava/src/com/google/common/graph/PredecessorsFunction.java
index 750a8ac..52a1036 100644
--- a/android/guava/src/com/google/common/graph/PredecessorsFunction.java
+++ b/android/guava/src/com/google/common/graph/PredecessorsFunction.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * A functional interface for <a
@@ -78,8 +76,6 @@ import com.google.errorprone.annotations.DoNotMock;
  * @param <N> Node parameter type
  * @since 23.0
  */
-@Beta
-@DoNotMock("Implement with a lambda, or use GraphBuilder to build a Graph with the desired edges")
 @ElementTypesAreNonnullByDefault
 public interface PredecessorsFunction<N> {
 
diff --git a/android/guava/src/com/google/common/graph/StandardMutableNetwork.java b/android/guava/src/com/google/common/graph/StandardMutableNetwork.java
index c58b6d3..40222e3 100644
--- a/android/guava/src/com/google/common/graph/StandardMutableNetwork.java
+++ b/android/guava/src/com/google/common/graph/StandardMutableNetwork.java
@@ -22,10 +22,7 @@ import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.graph.GraphConstants.PARALLEL_EDGES_NOT_ALLOWED;
 import static com.google.common.graph.GraphConstants.REUSING_EDGE;
 import static com.google.common.graph.GraphConstants.SELF_LOOPS_NOT_ALLOWED;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.collect.ImmutableList;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 
 /**
  * Standard implementation of {@link MutableNetwork} that supports both directed and undirected
@@ -50,7 +47,6 @@ final class StandardMutableNetwork<N, E> extends StandardNetwork<N, E>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean addNode(N node) {
     checkNotNull(node, "node");
 
@@ -67,7 +63,6 @@ final class StandardMutableNetwork<N, E> extends StandardNetwork<N, E>
    *
    * @throws IllegalStateException if {@code node} is already present
    */
-  @CanIgnoreReturnValue
   private NetworkConnections<N, E> addNodeInternal(N node) {
     NetworkConnections<N, E> connections = newConnections();
     checkState(nodeConnections.put(node, connections) == null);
@@ -75,7 +70,6 @@ final class StandardMutableNetwork<N, E> extends StandardNetwork<N, E>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean addEdge(N nodeU, N nodeV, E edge) {
     checkNotNull(nodeU, "nodeU");
     checkNotNull(nodeV, "nodeV");
@@ -119,14 +113,12 @@ final class StandardMutableNetwork<N, E> extends StandardNetwork<N, E>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean addEdge(EndpointPair<N> endpoints, E edge) {
     validateEndpoints(endpoints);
     return addEdge(endpoints.nodeU(), endpoints.nodeV(), edge);
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean removeNode(N node) {
     checkNotNull(node, "node");
 
@@ -145,7 +137,6 @@ final class StandardMutableNetwork<N, E> extends StandardNetwork<N, E>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean removeEdge(E edge) {
     checkNotNull(edge, "edge");
 
diff --git a/android/guava/src/com/google/common/graph/StandardMutableValueGraph.java b/android/guava/src/com/google/common/graph/StandardMutableValueGraph.java
index 0ea641a..464a59f 100644
--- a/android/guava/src/com/google/common/graph/StandardMutableValueGraph.java
+++ b/android/guava/src/com/google/common/graph/StandardMutableValueGraph.java
@@ -22,9 +22,7 @@ import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.graph.GraphConstants.SELF_LOOPS_NOT_ALLOWED;
 import static com.google.common.graph.Graphs.checkNonNegative;
 import static com.google.common.graph.Graphs.checkPositive;
-import static java.util.Objects.requireNonNull;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
 
 /**
@@ -58,7 +56,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean addNode(N node) {
     checkNotNull(node, "node");
 
@@ -75,7 +72,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
    *
    * @throws IllegalStateException if {@code node} is already present
    */
-  @CanIgnoreReturnValue
   private GraphConnections<N, V> addNodeInternal(N node) {
     GraphConnections<N, V> connections = newConnections();
     checkState(nodeConnections.put(node, connections) == null);
@@ -83,7 +79,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public V putEdgeValue(N nodeU, N nodeV, V value) {
     checkNotNull(nodeU, "nodeU");
@@ -111,7 +106,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public V putEdgeValue(EndpointPair<N> endpoints, V value) {
     validateEndpoints(endpoints);
@@ -119,7 +113,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean removeNode(N node) {
     checkNotNull(node, "node");
 
@@ -156,7 +149,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public V removeEdge(N nodeU, N nodeV) {
     checkNotNull(nodeU, "nodeU");
@@ -177,7 +169,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public V removeEdge(EndpointPair<N> endpoints) {
     validateEndpoints(endpoints);
diff --git a/android/guava/src/com/google/common/graph/StandardNetwork.java b/android/guava/src/com/google/common/graph/StandardNetwork.java
index 2aa103f..9be4e54 100644
--- a/android/guava/src/com/google/common/graph/StandardNetwork.java
+++ b/android/guava/src/com/google/common/graph/StandardNetwork.java
@@ -22,9 +22,7 @@ import static com.google.common.graph.GraphConstants.DEFAULT_EDGE_COUNT;
 import static com.google.common.graph.GraphConstants.DEFAULT_NODE_COUNT;
 import static com.google.common.graph.GraphConstants.EDGE_NOT_IN_GRAPH;
 import static com.google.common.graph.GraphConstants.NODE_NOT_IN_GRAPH;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.collect.ImmutableSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
diff --git a/android/guava/src/com/google/common/graph/SuccessorsFunction.java b/android/guava/src/com/google/common/graph/SuccessorsFunction.java
index c29bb4b..2725649 100644
--- a/android/guava/src/com/google/common/graph/SuccessorsFunction.java
+++ b/android/guava/src/com/google/common/graph/SuccessorsFunction.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * A functional interface for <a
@@ -78,8 +76,6 @@ import com.google.errorprone.annotations.DoNotMock;
  * @param <N> Node parameter type
  * @since 23.0
  */
-@Beta
-@DoNotMock("Implement with a lambda, or use GraphBuilder to build a Graph with the desired edges")
 @ElementTypesAreNonnullByDefault
 public interface SuccessorsFunction<N> {
 
diff --git a/android/guava/src/com/google/common/graph/Traverser.java b/android/guava/src/com/google/common/graph/Traverser.java
index 5a36f9f..45caf66 100644
--- a/android/guava/src/com/google/common/graph/Traverser.java
+++ b/android/guava/src/com/google/common/graph/Traverser.java
@@ -18,12 +18,8 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.collect.AbstractIterator;
-import com.google.common.collect.ImmutableSet;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.ArrayDeque;
 import java.util.Deque;
 import java.util.HashSet;
@@ -60,10 +56,6 @@ import javax.annotation.CheckForNull;
  * @param <N> Node parameter type
  * @since 23.1
  */
-@Beta
-@DoNotMock(
-    "Call forGraph or forTree, passing a lambda or a Graph with the desired edges (built with"
-        + " GraphBuilder)")
 @ElementTypesAreNonnullByDefault
 public abstract class Traverser<N> {
   private final SuccessorsFunction<N> successorFunction;
diff --git a/android/guava/src/com/google/common/graph/UndirectedGraphConnections.java b/android/guava/src/com/google/common/graph/UndirectedGraphConnections.java
index 085e3a7..ed50c6a 100644
--- a/android/guava/src/com/google/common/graph/UndirectedGraphConnections.java
+++ b/android/guava/src/com/google/common/graph/UndirectedGraphConnections.java
@@ -21,7 +21,6 @@ import static com.google.common.graph.GraphConstants.INNER_CAPACITY;
 import static com.google.common.graph.GraphConstants.INNER_LOAD_FACTOR;
 
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterators;
 import java.util.Collections;
 import java.util.HashMap;
diff --git a/android/guava/src/com/google/common/graph/UndirectedMultiNetworkConnections.java b/android/guava/src/com/google/common/graph/UndirectedMultiNetworkConnections.java
index a5c45ca..f92a354 100644
--- a/android/guava/src/com/google/common/graph/UndirectedMultiNetworkConnections.java
+++ b/android/guava/src/com/google/common/graph/UndirectedMultiNetworkConnections.java
@@ -21,9 +21,7 @@ import static com.google.common.graph.GraphConstants.INNER_CAPACITY;
 import static com.google.common.graph.GraphConstants.INNER_LOAD_FACTOR;
 
 import com.google.common.collect.HashMultiset;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Multiset;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.lang.ref.Reference;
 import java.lang.ref.SoftReference;
 import java.util.Collections;
@@ -56,7 +54,7 @@ final class UndirectedMultiNetworkConnections<N, E>
     return new UndirectedMultiNetworkConnections<>(ImmutableMap.copyOf(incidentEdges));
   }
 
-  @CheckForNull @LazyInit private transient Reference<Multiset<N>> adjacentNodesReference;
+  @CheckForNull private transient Reference<Multiset<N>> adjacentNodesReference;
 
   @Override
   public Set<N> adjacentNodes() {
diff --git a/android/guava/src/com/google/common/graph/UndirectedNetworkConnections.java b/android/guava/src/com/google/common/graph/UndirectedNetworkConnections.java
index 38cb763..293d559 100644
--- a/android/guava/src/com/google/common/graph/UndirectedNetworkConnections.java
+++ b/android/guava/src/com/google/common/graph/UndirectedNetworkConnections.java
@@ -20,7 +20,6 @@ import static com.google.common.graph.GraphConstants.EXPECTED_DEGREE;
 
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
-import com.google.common.collect.ImmutableBiMap;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
diff --git a/android/guava/src/com/google/common/graph/ValueGraph.java b/android/guava/src/com/google/common/graph/ValueGraph.java
index bd3cf36..72eb3bc 100644
--- a/android/guava/src/com/google/common/graph/ValueGraph.java
+++ b/android/guava/src/com/google/common/graph/ValueGraph.java
@@ -16,7 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
 import java.util.Collection;
 import java.util.Set;
 import javax.annotation.CheckForNull;
@@ -106,7 +105,6 @@ import javax.annotation.CheckForNull;
  * @param <V> Value parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public interface ValueGraph<N, V> extends BaseGraph<N> {
   //
diff --git a/android/guava/src/com/google/common/graph/ValueGraphBuilder.java b/android/guava/src/com/google/common/graph/ValueGraphBuilder.java
index ce146c3..b0f3373 100644
--- a/android/guava/src/com/google/common/graph/ValueGraphBuilder.java
+++ b/android/guava/src/com/google/common/graph/ValueGraphBuilder.java
@@ -20,7 +20,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.graph.Graphs.checkNonNegative;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
 
 /**
@@ -65,7 +64,6 @@ import com.google.common.base.Optional;
  *     #from(ValueGraph)}.
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class ValueGraphBuilder<N, V> extends AbstractGraphBuilder<N> {
 
diff --git a/android/guava/src/com/google/common/graph/package-info.java b/android/guava/src/com/google/common/graph/package-info.java
index 32d8b01..b3ccd2f 100644
--- a/android/guava/src/com/google/common/graph/package-info.java
+++ b/android/guava/src/com/google/common/graph/package-info.java
@@ -21,9 +21,7 @@
  * <p>This package is a part of the open-source <a href="https://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.graph;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/hash/AbstractByteHasher.java b/android/guava/src/com/google/common/hash/AbstractByteHasher.java
index 9f7e041..75be6da 100644
--- a/android/guava/src/com/google/common/hash/AbstractByteHasher.java
+++ b/android/guava/src/com/google/common/hash/AbstractByteHasher.java
@@ -21,7 +21,6 @@ import com.google.common.primitives.Chars;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.Longs;
 import com.google.common.primitives.Shorts;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 
@@ -31,7 +30,6 @@ import java.nio.ByteOrder;
  *
  * @author Colin Decker
  */
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 abstract class AbstractByteHasher extends AbstractHasher {
   private final ByteBuffer scratch = ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN);
diff --git a/android/guava/src/com/google/common/hash/AbstractCompositeHashFunction.java b/android/guava/src/com/google/common/hash/AbstractCompositeHashFunction.java
index 4b69bb7..855b492 100644
--- a/android/guava/src/com/google/common/hash/AbstractCompositeHashFunction.java
+++ b/android/guava/src/com/google/common/hash/AbstractCompositeHashFunction.java
@@ -17,10 +17,8 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.errorprone.annotations.Immutable;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An abstract composition of multiple hash functions. {@linkplain #newHasher()} delegates to the
@@ -29,7 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Dimitris Andreou
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 abstract class AbstractCompositeHashFunction extends AbstractHashFunction {
 
@@ -179,7 +176,7 @@ abstract class AbstractCompositeHashFunction extends AbstractHashFunction {
       }
 
       @Override
-      public <T extends @Nullable Object> Hasher putObject(
+      public <T extends Object> Hasher putObject(
           @ParametricNullness T instance, Funnel<? super T> funnel) {
         for (Hasher hasher : hashers) {
           hasher.putObject(instance, funnel);
diff --git a/android/guava/src/com/google/common/hash/AbstractHashFunction.java b/android/guava/src/com/google/common/hash/AbstractHashFunction.java
index 7308556..d797358 100644
--- a/android/guava/src/com/google/common/hash/AbstractHashFunction.java
+++ b/android/guava/src/com/google/common/hash/AbstractHashFunction.java
@@ -17,21 +17,18 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.errorprone.annotations.Immutable;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Skeleton implementation of {@link HashFunction} in terms of {@link #newHasher()}.
  *
  * <p>TODO(lowasser): make public
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 abstract class AbstractHashFunction implements HashFunction {
   @Override
-  public <T extends @Nullable Object> HashCode hashObject(
+  public <T extends Object> HashCode hashObject(
       @ParametricNullness T instance, Funnel<? super T> funnel) {
     return newHasher().putObject(instance, funnel).hash();
   }
diff --git a/android/guava/src/com/google/common/hash/AbstractHasher.java b/android/guava/src/com/google/common/hash/AbstractHasher.java
index c72e05b..981efc2 100644
--- a/android/guava/src/com/google/common/hash/AbstractHasher.java
+++ b/android/guava/src/com/google/common/hash/AbstractHasher.java
@@ -15,10 +15,8 @@
 package com.google.common.hash;
 
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An abstract implementation of {@link Hasher}, which only requires subtypes to implement {@link
@@ -26,7 +24,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Dimitris Andreou
  */
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 abstract class AbstractHasher implements Hasher {
   @Override
@@ -116,7 +113,7 @@ abstract class AbstractHasher implements Hasher {
   }
 
   @Override
-  public <T extends @Nullable Object> Hasher putObject(
+  public <T extends Object> Hasher putObject(
       @ParametricNullness T instance, Funnel<? super T> funnel) {
     funnel.funnel(instance, this);
     return this;
diff --git a/android/guava/src/com/google/common/hash/AbstractNonStreamingHashFunction.java b/android/guava/src/com/google/common/hash/AbstractNonStreamingHashFunction.java
index 4969e35..e606ddc 100644
--- a/android/guava/src/com/google/common/hash/AbstractNonStreamingHashFunction.java
+++ b/android/guava/src/com/google/common/hash/AbstractNonStreamingHashFunction.java
@@ -15,7 +15,6 @@
 package com.google.common.hash;
 
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.Immutable;
 import java.io.ByteArrayOutputStream;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
@@ -29,7 +28,6 @@ import java.util.Arrays;
  *
  * @author Dimitris Andreou
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 abstract class AbstractNonStreamingHashFunction extends AbstractHashFunction {
   @Override
diff --git a/android/guava/src/com/google/common/hash/AbstractStreamingHasher.java b/android/guava/src/com/google/common/hash/AbstractStreamingHasher.java
index a987b48..f927adf 100644
--- a/android/guava/src/com/google/common/hash/AbstractStreamingHasher.java
+++ b/android/guava/src/com/google/common/hash/AbstractStreamingHasher.java
@@ -16,7 +16,6 @@ package com.google.common.hash;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 
@@ -28,7 +27,6 @@ import java.nio.ByteOrder;
  * @author Dimitris Andreou
  */
 // TODO(kevinb): this class still needs some design-and-document-for-inheritance love
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 abstract class AbstractStreamingHasher extends AbstractHasher {
   /** Buffer via which we pass data to the hash algorithm (the implementor) */
diff --git a/android/guava/src/com/google/common/hash/BloomFilter.java b/android/guava/src/com/google/common/hash/BloomFilter.java
index 6ffe583..ab95d38 100644
--- a/android/guava/src/com/google/common/hash/BloomFilter.java
+++ b/android/guava/src/com/google/common/hash/BloomFilter.java
@@ -17,15 +17,12 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.hash.BloomFilterStrategies.LockFreeBitArray;
 import com.google.common.math.DoubleMath;
 import com.google.common.primitives.SignedBytes;
 import com.google.common.primitives.UnsignedBytes;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
@@ -34,7 +31,6 @@ import java.io.OutputStream;
 import java.io.Serializable;
 import java.math.RoundingMode;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A Bloom filter for instances of {@code T}. A Bloom filter offers an approximate containment test
@@ -63,9 +59,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 11.0 (thread-safe since 23.0)
  */
-@Beta
 @ElementTypesAreNonnullByDefault
-public final class BloomFilter<T extends @Nullable Object> implements Predicate<T>, Serializable {
+public final class BloomFilter<T extends Object> implements Predicate<T>, Serializable {
   /**
    * A strategy to translate T instances, to {@code numHashFunctions} bit indexes.
    *
@@ -78,7 +73,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
      *
      * <p>Returns whether any bits changed as a result of this operation.
      */
-    <T extends @Nullable Object> boolean put(
+    <T extends Object> boolean put(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
@@ -88,7 +83,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
      * Queries {@code numHashFunctions} bits of the given bit array, by hashing a user element;
      * returns {@code true} if and only if all selected bits are set.
      */
-    <T extends @Nullable Object> boolean mightContain(
+    <T extends Object> boolean mightContain(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
@@ -167,7 +162,6 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    *     result to what {@code mightContain(t)} would have returned at the time it is called.
    * @since 12.0 (present in 11.0 with {@code void} return type})
    */
-  @CanIgnoreReturnValue
   public boolean put(@ParametricNullness T object) {
     return strategy.put(object, funnel, numHashFunctions, bits);
   }
@@ -210,7 +204,6 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
   }
 
   /** Returns the number of bits in the underlying bit array. */
-  @VisibleForTesting
   long bitSize() {
     return bits.bitSize();
   }
@@ -314,7 +307,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @param fpp the desired false positive probability (must be positive and less than 1.0)
    * @return a {@code BloomFilter}
    */
-  public static <T extends @Nullable Object> BloomFilter<T> create(
+  public static <T extends Object> BloomFilter<T> create(
       Funnel<? super T> funnel, int expectedInsertions, double fpp) {
     return create(funnel, (long) expectedInsertions, fpp);
   }
@@ -340,13 +333,12 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @return a {@code BloomFilter}
    * @since 19.0
    */
-  public static <T extends @Nullable Object> BloomFilter<T> create(
+  public static <T extends Object> BloomFilter<T> create(
       Funnel<? super T> funnel, long expectedInsertions, double fpp) {
     return create(funnel, expectedInsertions, fpp, BloomFilterStrategies.MURMUR128_MITZ_64);
   }
 
-  @VisibleForTesting
-  static <T extends @Nullable Object> BloomFilter<T> create(
+  static <T extends Object> BloomFilter<T> create(
       Funnel<? super T> funnel, long expectedInsertions, double fpp, Strategy strategy) {
     checkNotNull(funnel);
     checkArgument(
@@ -391,7 +383,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    *     BloomFilter}; must be positive
    * @return a {@code BloomFilter}
    */
-  public static <T extends @Nullable Object> BloomFilter<T> create(
+  public static <T extends Object> BloomFilter<T> create(
       Funnel<? super T> funnel, int expectedInsertions) {
     return create(funnel, (long) expectedInsertions);
   }
@@ -416,7 +408,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @return a {@code BloomFilter}
    * @since 19.0
    */
-  public static <T extends @Nullable Object> BloomFilter<T> create(
+  public static <T extends Object> BloomFilter<T> create(
       Funnel<? super T> funnel, long expectedInsertions) {
     return create(funnel, expectedInsertions, 0.03); // FYI, for 3%, we always get 5 hash functions
   }
@@ -442,7 +434,6 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @param n expected insertions (must be positive)
    * @param m total number of bits in Bloom filter (must be positive)
    */
-  @VisibleForTesting
   static int optimalNumOfHashFunctions(long n, long m) {
     // (m / n) * log(2), but avoid truncation due to division!
     return Math.max(1, (int) Math.round((double) m / n * Math.log(2)));
@@ -458,7 +449,6 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @param n expected insertions (must be positive)
    * @param p false positive rate (must be 0 < p < 1)
    */
-  @VisibleForTesting
   static long optimalNumOfBits(long n, double p) {
     if (p == 0) {
       p = Double.MIN_VALUE;
@@ -470,7 +460,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
     return new SerialForm<T>(this);
   }
 
-  private static class SerialForm<T extends @Nullable Object> implements Serializable {
+  private static class SerialForm<T extends Object> implements Serializable {
     final long[] data;
     final int numHashFunctions;
     final Funnel<? super T> funnel;
@@ -523,7 +513,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @throws IOException if the InputStream throws an {@code IOException}, or if its data does not
    *     appear to be a BloomFilter serialized using the {@linkplain #writeTo(OutputStream)} method.
    */
-  public static <T extends @Nullable Object> BloomFilter<T> readFrom(
+  public static <T extends Object> BloomFilter<T> readFrom(
       InputStream in, Funnel<? super T> funnel) throws IOException {
     checkNotNull(in, "InputStream");
     checkNotNull(funnel, "Funnel");
diff --git a/android/guava/src/com/google/common/hash/BloomFilterStrategies.java b/android/guava/src/com/google/common/hash/BloomFilterStrategies.java
index 3a012f3..e9799e1 100644
--- a/android/guava/src/com/google/common/hash/BloomFilterStrategies.java
+++ b/android/guava/src/com/google/common/hash/BloomFilterStrategies.java
@@ -23,7 +23,6 @@ import java.math.RoundingMode;
 import java.util.Arrays;
 import java.util.concurrent.atomic.AtomicLongArray;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Collections of strategies of generating the k * log(M) bits required for an element to be mapped
@@ -46,7 +45,7 @@ enum BloomFilterStrategies implements BloomFilter.Strategy {
    */
   MURMUR128_MITZ_32() {
     @Override
-    public <T extends @Nullable Object> boolean put(
+    public <T extends Object> boolean put(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
@@ -69,7 +68,7 @@ enum BloomFilterStrategies implements BloomFilter.Strategy {
     }
 
     @Override
-    public <T extends @Nullable Object> boolean mightContain(
+    public <T extends Object> boolean mightContain(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
@@ -100,7 +99,7 @@ enum BloomFilterStrategies implements BloomFilter.Strategy {
    */
   MURMUR128_MITZ_64() {
     @Override
-    public <T extends @Nullable Object> boolean put(
+    public <T extends Object> boolean put(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
@@ -121,7 +120,7 @@ enum BloomFilterStrategies implements BloomFilter.Strategy {
     }
 
     @Override
-    public <T extends @Nullable Object> boolean mightContain(
+    public <T extends Object> boolean mightContain(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
diff --git a/android/guava/src/com/google/common/hash/ChecksumHashFunction.java b/android/guava/src/com/google/common/hash/ChecksumHashFunction.java
index 159adbb..2456b88 100644
--- a/android/guava/src/com/google/common/hash/ChecksumHashFunction.java
+++ b/android/guava/src/com/google/common/hash/ChecksumHashFunction.java
@@ -17,7 +17,6 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.util.zip.Checksum;
 
@@ -26,7 +25,6 @@ import java.util.zip.Checksum;
  *
  * @author Colin Decker
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class ChecksumHashFunction extends AbstractHashFunction implements Serializable {
   private final ImmutableSupplier<? extends Checksum> checksumSupplier;
diff --git a/android/guava/src/com/google/common/hash/Crc32cHashFunction.java b/android/guava/src/com/google/common/hash/Crc32cHashFunction.java
index 8e17e65..5599f85 100644
--- a/android/guava/src/com/google/common/hash/Crc32cHashFunction.java
+++ b/android/guava/src/com/google/common/hash/Crc32cHashFunction.java
@@ -14,7 +14,6 @@
 
 package com.google.common.hash;
 
-import com.google.errorprone.annotations.Immutable;
 import java.nio.ByteBuffer;
 
 /**
@@ -23,7 +22,6 @@ import java.nio.ByteBuffer;
  *
  * @author Kurt Alfred Kluever
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class Crc32cHashFunction extends AbstractHashFunction {
   static final HashFunction CRC_32_C = new Crc32cHashFunction();
diff --git a/android/guava/src/com/google/common/hash/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/hash/ElementTypesAreNonnullByDefault.java
index a2382b3..030fd4f 100644
--- a/android/guava/src/com/google/common/hash/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/hash/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/hash/FarmHashFingerprint64.java b/android/guava/src/com/google/common/hash/FarmHashFingerprint64.java
index 7d6a398..923bf2f 100644
--- a/android/guava/src/com/google/common/hash/FarmHashFingerprint64.java
+++ b/android/guava/src/com/google/common/hash/FarmHashFingerprint64.java
@@ -19,7 +19,6 @@ import static com.google.common.hash.LittleEndianByteArray.load32;
 import static com.google.common.hash.LittleEndianByteArray.load64;
 import static java.lang.Long.rotateRight;
 
-import com.google.common.annotations.VisibleForTesting;
 
 /**
  * Implementation of FarmHash Fingerprint64, an open-source fingerprinting algorithm for strings.
@@ -65,7 +64,6 @@ final class FarmHashFingerprint64 extends AbstractNonStreamingHashFunction {
 
   // End of public functions.
 
-  @VisibleForTesting
   static long fingerprint(byte[] bytes, int offset, int length) {
     if (length <= 32) {
       if (length <= 16) {
diff --git a/android/guava/src/com/google/common/hash/Funnel.java b/android/guava/src/com/google/common/hash/Funnel.java
index 9d80dab..3fb86d2 100644
--- a/android/guava/src/com/google/common/hash/Funnel.java
+++ b/android/guava/src/com/google/common/hash/Funnel.java
@@ -14,10 +14,7 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.Serializable;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An object which can send data from an object of type {@code T} into a {@code PrimitiveSink}.
@@ -42,10 +39,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Dimitris Andreou
  * @since 11.0
  */
-@Beta
-@DoNotMock("Implement with a lambda")
 @ElementTypesAreNonnullByDefault
-public interface Funnel<T extends @Nullable Object> extends Serializable {
+public interface Funnel<T extends Object> extends Serializable {
 
   /**
    * Sends a stream of data from the {@code from} object into the sink {@code into}. There is no
diff --git a/android/guava/src/com/google/common/hash/Funnels.java b/android/guava/src/com/google/common/hash/Funnels.java
index 6673836..9ed9dca 100644
--- a/android/guava/src/com/google/common/hash/Funnels.java
+++ b/android/guava/src/com/google/common/hash/Funnels.java
@@ -14,13 +14,11 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Preconditions;
 import java.io.OutputStream;
 import java.io.Serializable;
 import java.nio.charset.Charset;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Funnels for common types. All implementations are serializable.
@@ -28,7 +26,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Dimitris Andreou
  * @since 11.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class Funnels {
   private Funnels() {}
@@ -166,12 +163,12 @@ public final class Funnels {
    *
    * @since 15.0
    */
-  public static <E extends @Nullable Object> Funnel<Iterable<? extends E>> sequentialFunnel(
+  public static <E extends Object> Funnel<Iterable<? extends E>> sequentialFunnel(
       Funnel<E> elementFunnel) {
     return new SequentialFunnel<E>(elementFunnel);
   }
 
-  private static class SequentialFunnel<E extends @Nullable Object>
+  private static class SequentialFunnel<E extends Object>
       implements Funnel<Iterable<? extends E>>, Serializable {
     private final Funnel<E> elementFunnel;
 
diff --git a/android/guava/src/com/google/common/hash/HashCode.java b/android/guava/src/com/google/common/hash/HashCode.java
index fde2a86..2f2615e 100644
--- a/android/guava/src/com/google/common/hash/HashCode.java
+++ b/android/guava/src/com/google/common/hash/HashCode.java
@@ -21,7 +21,6 @@ import static com.google.common.base.Preconditions.checkState;
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.UnsignedInts;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -81,7 +80,6 @@ public abstract class HashCode {
    * @return the number of bytes written to {@code dest}
    * @throws IndexOutOfBoundsException if there is not enough room in {@code dest}
    */
-  @CanIgnoreReturnValue
   public int writeBytesTo(byte[] dest, int offset, int maxLength) {
     maxLength = Ints.min(maxLength, bits() / 8);
     Preconditions.checkPositionIndexes(offset, offset + maxLength, dest.length);
diff --git a/android/guava/src/com/google/common/hash/HashFunction.java b/android/guava/src/com/google/common/hash/HashFunction.java
index d4b7f8a..897777e 100644
--- a/android/guava/src/com/google/common/hash/HashFunction.java
+++ b/android/guava/src/com/google/common/hash/HashFunction.java
@@ -15,10 +15,8 @@
 package com.google.common.hash;
 
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.Immutable;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A hash function is a collision-averse pure function that maps an arbitrary block of data to a
@@ -115,7 +113,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 11.0
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 public interface HashFunction {
   /**
@@ -211,7 +208,7 @@ public interface HashFunction {
    *
    * @since 14.0
    */
-  <T extends @Nullable Object> HashCode hashObject(
+  <T extends Object> HashCode hashObject(
       @ParametricNullness T instance, Funnel<? super T> funnel);
 
   /**
diff --git a/android/guava/src/com/google/common/hash/Hasher.java b/android/guava/src/com/google/common/hash/Hasher.java
index b3f24fa..59ede64 100644
--- a/android/guava/src/com/google/common/hash/Hasher.java
+++ b/android/guava/src/com/google/common/hash/Hasher.java
@@ -14,11 +14,8 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link PrimitiveSink} that can compute a hash code after reading the input. Each hasher should
@@ -53,8 +50,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 11.0
  */
-@Beta
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 public interface Hasher extends PrimitiveSink {
   @Override
@@ -121,7 +116,7 @@ public interface Hasher extends PrimitiveSink {
   Hasher putString(CharSequence charSequence, Charset charset);
 
   /** A simple convenience for {@code funnel.funnel(object, this)}. */
-  <T extends @Nullable Object> Hasher putObject(
+  <T extends Object> Hasher putObject(
       @ParametricNullness T instance, Funnel<? super T> funnel);
 
   /**
diff --git a/android/guava/src/com/google/common/hash/Hashing.java b/android/guava/src/com/google/common/hash/Hashing.java
index dd65367..17a273f 100644
--- a/android/guava/src/com/google/common/hash/Hashing.java
+++ b/android/guava/src/com/google/common/hash/Hashing.java
@@ -17,8 +17,6 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.Immutable;
 import java.security.Key;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -42,7 +40,6 @@ import javax.crypto.spec.SecretKeySpec;
  * @author Kurt Alfred Kluever
  * @since 11.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class Hashing {
   /**
@@ -425,7 +422,6 @@ public final class Hashing {
     return ChecksumType.ADLER_32.hashFunction;
   }
 
-  @Immutable
   enum ChecksumType implements ImmutableSupplier<Checksum> {
     CRC_32("Hashing.crc32()") {
       @Override
diff --git a/android/guava/src/com/google/common/hash/HashingInputStream.java b/android/guava/src/com/google/common/hash/HashingInputStream.java
index bf9464c..b1a305f 100644
--- a/android/guava/src/com/google/common/hash/HashingInputStream.java
+++ b/android/guava/src/com/google/common/hash/HashingInputStream.java
@@ -16,8 +16,6 @@ package com.google.common.hash;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -28,7 +26,6 @@ import java.io.InputStream;
  * @author Qian Huang
  * @since 16.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class HashingInputStream extends FilterInputStream {
   private final Hasher hasher;
@@ -49,7 +46,6 @@ public final class HashingInputStream extends FilterInputStream {
    * byte read.
    */
   @Override
-  @CanIgnoreReturnValue
   public int read() throws IOException {
     int b = in.read();
     if (b != -1) {
@@ -63,7 +59,6 @@ public final class HashingInputStream extends FilterInputStream {
    * the bytes read.
    */
   @Override
-  @CanIgnoreReturnValue
   public int read(byte[] bytes, int off, int len) throws IOException {
     int numOfBytesRead = in.read(bytes, off, len);
     if (numOfBytesRead != -1) {
diff --git a/android/guava/src/com/google/common/hash/HashingOutputStream.java b/android/guava/src/com/google/common/hash/HashingOutputStream.java
index f138bba..14dd66f 100644
--- a/android/guava/src/com/google/common/hash/HashingOutputStream.java
+++ b/android/guava/src/com/google/common/hash/HashingOutputStream.java
@@ -16,7 +16,6 @@ package com.google.common.hash;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import java.io.FilterOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -27,7 +26,6 @@ import java.io.OutputStream;
  * @author Nick Piepmeier
  * @since 16.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class HashingOutputStream extends FilterOutputStream {
   private final Hasher hasher;
diff --git a/android/guava/src/com/google/common/hash/ImmutableSupplier.java b/android/guava/src/com/google/common/hash/ImmutableSupplier.java
index 24f711a..76041ad 100644
--- a/android/guava/src/com/google/common/hash/ImmutableSupplier.java
+++ b/android/guava/src/com/google/common/hash/ImmutableSupplier.java
@@ -15,13 +15,11 @@
 package com.google.common.hash;
 
 import com.google.common.base.Supplier;
-import com.google.errorprone.annotations.Immutable;
 
 /**
  * Explicitly named subinterface of {@link Supplier} that can be marked {@literal @}{@link
  * Immutable}.
  */
 // TODO(cpovirk): Should we just use ChecksumType directly instead of defining this type?
-@Immutable
 @ElementTypesAreNonnullByDefault
 interface ImmutableSupplier<T> extends Supplier<T> {}
diff --git a/android/guava/src/com/google/common/hash/Java8Compatibility.java b/android/guava/src/com/google/common/hash/Java8Compatibility.java
index c15f2b3..24cb72d 100644
--- a/android/guava/src/com/google/common/hash/Java8Compatibility.java
+++ b/android/guava/src/com/google/common/hash/Java8Compatibility.java
@@ -14,14 +14,12 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.nio.Buffer;
 
 /**
  * Wrappers around {@link Buffer} methods that are covariantly overridden in Java 9+. See
  * https://github.com/google/guava/issues/3990
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class Java8Compatibility {
   static void clear(Buffer b) {
diff --git a/android/guava/src/com/google/common/hash/MacHashFunction.java b/android/guava/src/com/google/common/hash/MacHashFunction.java
index 031b1c0..11e9f67 100644
--- a/android/guava/src/com/google/common/hash/MacHashFunction.java
+++ b/android/guava/src/com/google/common/hash/MacHashFunction.java
@@ -17,7 +17,6 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.errorprone.annotations.Immutable;
 import java.nio.ByteBuffer;
 import java.security.InvalidKeyException;
 import java.security.Key;
@@ -29,7 +28,6 @@ import javax.crypto.Mac;
  *
  * @author Kurt Alfred Kluever
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class MacHashFunction extends AbstractHashFunction {
 
diff --git a/android/guava/src/com/google/common/hash/MessageDigestHashFunction.java b/android/guava/src/com/google/common/hash/MessageDigestHashFunction.java
index 48b47b0..bb39a4b 100644
--- a/android/guava/src/com/google/common/hash/MessageDigestHashFunction.java
+++ b/android/guava/src/com/google/common/hash/MessageDigestHashFunction.java
@@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.nio.ByteBuffer;
 import java.security.MessageDigest;
@@ -31,7 +30,6 @@ import java.util.Arrays;
  * @author Kevin Bourrillion
  * @author Dimitris Andreou
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {
 
diff --git a/android/guava/src/com/google/common/hash/Murmur3_128HashFunction.java b/android/guava/src/com/google/common/hash/Murmur3_128HashFunction.java
index d1304f8..d0538a6 100644
--- a/android/guava/src/com/google/common/hash/Murmur3_128HashFunction.java
+++ b/android/guava/src/com/google/common/hash/Murmur3_128HashFunction.java
@@ -27,7 +27,6 @@ package com.google.common.hash;
 
 import static com.google.common.primitives.UnsignedBytes.toInt;
 
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
@@ -40,7 +39,6 @@ import javax.annotation.CheckForNull;
  * @author Austin Appleby
  * @author Dimitris Andreou
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class Murmur3_128HashFunction extends AbstractHashFunction implements Serializable {
   static final HashFunction MURMUR3_128 = new Murmur3_128HashFunction(0);
diff --git a/android/guava/src/com/google/common/hash/Murmur3_32HashFunction.java b/android/guava/src/com/google/common/hash/Murmur3_32HashFunction.java
index a47184b..f241e0c 100644
--- a/android/guava/src/com/google/common/hash/Murmur3_32HashFunction.java
+++ b/android/guava/src/com/google/common/hash/Murmur3_32HashFunction.java
@@ -33,8 +33,6 @@ import com.google.common.base.Charsets;
 import com.google.common.primitives.Chars;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.Longs;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
@@ -50,7 +48,6 @@ import javax.annotation.CheckForNull;
  * @author Dimitris Andreou
  * @author Kurt Alfred Kluever
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class Murmur3_32HashFunction extends AbstractHashFunction implements Serializable {
   static final HashFunction MURMUR3_32 =
@@ -267,7 +264,6 @@ final class Murmur3_32HashFunction extends AbstractHashFunction implements Seria
     return HashCode.fromInt(h1);
   }
 
-  @CanIgnoreReturnValue
   private static final class Murmur3_32Hasher extends AbstractHasher {
     private int h1;
     private long buffer;
diff --git a/android/guava/src/com/google/common/hash/ParametricNullness.java b/android/guava/src/com/google/common/hash/ParametricNullness.java
index 2ae8d42..5eb043f 100644
--- a/android/guava/src/com/google/common/hash/ParametricNullness.java
+++ b/android/guava/src/com/google/common/hash/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/hash/PrimitiveSink.java b/android/guava/src/com/google/common/hash/PrimitiveSink.java
index a29ba4e..c6fe0b7 100644
--- a/android/guava/src/com/google/common/hash/PrimitiveSink.java
+++ b/android/guava/src/com/google/common/hash/PrimitiveSink.java
@@ -14,8 +14,6 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
 
@@ -25,8 +23,6 @@ import java.nio.charset.Charset;
  * @author Kevin Bourrillion
  * @since 12.0 (in 11.0 as {@code Sink})
  */
-@Beta
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 public interface PrimitiveSink {
   /**
diff --git a/android/guava/src/com/google/common/hash/SipHashFunction.java b/android/guava/src/com/google/common/hash/SipHashFunction.java
index a226b61..0e67e97 100644
--- a/android/guava/src/com/google/common/hash/SipHashFunction.java
+++ b/android/guava/src/com/google/common/hash/SipHashFunction.java
@@ -21,7 +21,6 @@ package com.google.common.hash;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.nio.ByteBuffer;
 import javax.annotation.CheckForNull;
@@ -33,7 +32,6 @@ import javax.annotation.CheckForNull;
  * @author Jean-Philippe Aumasson
  * @author Daniel J. Bernstein
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class SipHashFunction extends AbstractHashFunction implements Serializable {
   static final HashFunction SIP_HASH_24 =
diff --git a/android/guava/src/com/google/common/hash/Striped64.java b/android/guava/src/com/google/common/hash/Striped64.java
index 1a0671c..0433fa1 100644
--- a/android/guava/src/com/google/common/hash/Striped64.java
+++ b/android/guava/src/com/google/common/hash/Striped64.java
@@ -11,17 +11,14 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Random;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A package-local class holding common representation and mechanics for classes supporting dynamic
  * striping on 64bit values. The class extends Number so that concrete subclasses must publicly do
  * so.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class Striped64 extends Number {
   /*
@@ -127,7 +124,7 @@ abstract class Striped64 extends Number {
    * class, we use a suboptimal int[] representation to avoid introducing a new type that can impede
    * class-unloading when ThreadLocals are not removed.
    */
-  static final ThreadLocal<int @Nullable []> threadHashCode = new ThreadLocal<>();
+  static final ThreadLocal<int []> threadHashCode = new ThreadLocal<>();
 
   /** Generator of new random hash codes */
   static final Random rng = new Random();
diff --git a/android/guava/src/com/google/common/hash/package-info.java b/android/guava/src/com/google/common/hash/package-info.java
index d210f7e..310d297 100644
--- a/android/guava/src/com/google/common/hash/package-info.java
+++ b/android/guava/src/com/google/common/hash/package-info.java
@@ -19,9 +19,7 @@
  * <p>See the Guava User Guide article on <a
  * href="https://github.com/google/guava/wiki/HashingExplained">hashing</a>.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.hash;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/html/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/html/ElementTypesAreNonnullByDefault.java
index a28b716..bd1d1c0 100644
--- a/android/guava/src/com/google/common/html/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/html/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/html/HtmlEscapers.java b/android/guava/src/com/google/common/html/HtmlEscapers.java
index c426388..adb4ea2 100644
--- a/android/guava/src/com/google/common/html/HtmlEscapers.java
+++ b/android/guava/src/com/google/common/html/HtmlEscapers.java
@@ -14,7 +14,6 @@
 
 package com.google.common.html;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.Escaper;
 import com.google.common.escape.Escapers;
 
@@ -34,7 +33,6 @@ import com.google.common.escape.Escapers;
  * @author David Beaumont
  * @since 15.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class HtmlEscapers {
   /**
diff --git a/android/guava/src/com/google/common/html/ParametricNullness.java b/android/guava/src/com/google/common/html/ParametricNullness.java
index 9a62c35..db63beb 100644
--- a/android/guava/src/com/google/common/html/ParametricNullness.java
+++ b/android/guava/src/com/google/common/html/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/html/package-info.java b/android/guava/src/com/google/common/html/package-info.java
index f84d7f2..da133f2 100644
--- a/android/guava/src/com/google/common/html/package-info.java
+++ b/android/guava/src/com/google/common/html/package-info.java
@@ -20,9 +20,7 @@
  * <p>This package is a part of the open-source <a href="http://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.html;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/io/AppendableWriter.java b/android/guava/src/com/google/common/io/AppendableWriter.java
index d9aab34..906d8e6 100644
--- a/android/guava/src/com/google/common/io/AppendableWriter.java
+++ b/android/guava/src/com/google/common/io/AppendableWriter.java
@@ -16,7 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Closeable;
 import java.io.Flushable;
 import java.io.IOException;
@@ -31,7 +30,6 @@ import javax.annotation.CheckForNull;
  * @author Sebastian Kanthak
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 class AppendableWriter extends Writer {
   private final Appendable target;
diff --git a/android/guava/src/com/google/common/io/BaseEncoding.java b/android/guava/src/com/google/common/io/BaseEncoding.java
index f42857c..bfffbc2 100644
--- a/android/guava/src/com/google/common/io/BaseEncoding.java
+++ b/android/guava/src/com/google/common/io/BaseEncoding.java
@@ -24,11 +24,8 @@ import static java.math.RoundingMode.CEILING;
 import static java.math.RoundingMode.FLOOR;
 import static java.math.RoundingMode.UNNECESSARY;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -121,7 +118,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 14.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public abstract class BaseEncoding {
   // TODO(lowasser): consider making encodeTo(Appendable, byte[], int, int) public.
@@ -169,13 +165,13 @@ public abstract class BaseEncoding {
    * {@code Writer}. When the returned {@code OutputStream} is closed, so is the backing {@code
    * Writer}.
    */
-  @GwtIncompatible // Writer,OutputStream
+  // Writer,OutputStream
   public abstract OutputStream encodingStream(Writer writer);
 
   /**
    * Returns a {@code ByteSink} that writes base-encoded bytes to the specified {@code CharSink}.
    */
-  @GwtIncompatible // ByteSink,CharSink
+  // ByteSink,CharSink
   public final ByteSink encodingSink(final CharSink encodedSink) {
     checkNotNull(encodedSink);
     return new ByteSink() {
@@ -239,14 +235,14 @@ public abstract class BaseEncoding {
    * Returns an {@code InputStream} that decodes base-encoded input from the specified {@code
    * Reader}. The returned stream throws a {@link DecodingException} upon decoding-specific errors.
    */
-  @GwtIncompatible // Reader,InputStream
+  // Reader,InputStream
   public abstract InputStream decodingStream(Reader reader);
 
   /**
    * Returns a {@code ByteSource} that reads base-encoded bytes from the specified {@code
    * CharSource}.
    */
-  @GwtIncompatible // ByteSource,CharSource
+  // ByteSource,CharSource
   public final ByteSource decodingSource(final CharSource encodedSource) {
     checkNotNull(encodedSource);
     return new ByteSource() {
@@ -586,7 +582,7 @@ public abstract class BaseEncoding {
       return alphabet.charsPerChunk * divide(bytes, alphabet.bytesPerChunk, CEILING);
     }
 
-    @GwtIncompatible // Writer,OutputStream
+    // Writer,OutputStream
     @Override
     public OutputStream encodingStream(final Writer out) {
       checkNotNull(out);
@@ -727,7 +723,7 @@ public abstract class BaseEncoding {
     }
 
     @Override
-    @GwtIncompatible // Reader,InputStream
+    // Reader,InputStream
     public InputStream decodingStream(final Reader reader) {
       checkNotNull(reader);
       return new InputStream() {
@@ -830,8 +826,8 @@ public abstract class BaseEncoding {
       return new SeparatedBaseEncoding(this, separator, afterEveryChars);
     }
 
-    @LazyInit @CheckForNull private transient BaseEncoding upperCase;
-    @LazyInit @CheckForNull private transient BaseEncoding lowerCase;
+    @CheckForNull private transient BaseEncoding upperCase;
+    @CheckForNull private transient BaseEncoding lowerCase;
 
     @Override
     public BaseEncoding upperCase() {
@@ -991,7 +987,6 @@ public abstract class BaseEncoding {
     }
   }
 
-  @GwtIncompatible
   static Reader ignoringReader(final Reader delegate, final String toIgnore) {
     checkNotNull(delegate);
     checkNotNull(toIgnore);
@@ -1048,7 +1043,7 @@ public abstract class BaseEncoding {
     };
   }
 
-  @GwtIncompatible // Writer
+  // Writer
   static Writer separatingWriter(
       final Writer delegate, final String separator, final int afterEveryChars) {
     final Appendable separatingAppendable =
@@ -1101,7 +1096,7 @@ public abstract class BaseEncoding {
           + separator.length() * divide(Math.max(0, unseparatedSize - 1), afterEveryChars, FLOOR);
     }
 
-    @GwtIncompatible // Writer,OutputStream
+    // Writer,OutputStream
     @Override
     public OutputStream encodingStream(final Writer output) {
       return delegate.encodingStream(separatingWriter(output, separator, afterEveryChars));
@@ -1142,7 +1137,7 @@ public abstract class BaseEncoding {
     }
 
     @Override
-    @GwtIncompatible // Reader,InputStream
+    // Reader,InputStream
     public InputStream decodingStream(final Reader reader) {
       return delegate.decodingStream(ignoringReader(reader, separator));
     }
diff --git a/android/guava/src/com/google/common/io/ByteArrayDataInput.java b/android/guava/src/com/google/common/io/ByteArrayDataInput.java
index cf84fcc..8d48c24 100644
--- a/android/guava/src/com/google/common/io/ByteArrayDataInput.java
+++ b/android/guava/src/com/google/common/io/ByteArrayDataInput.java
@@ -14,8 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.DataInput;
 import java.io.IOException;
 import javax.annotation.CheckForNull;
@@ -32,7 +30,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface ByteArrayDataInput extends DataInput {
   @Override
@@ -46,52 +43,52 @@ public interface ByteArrayDataInput extends DataInput {
   @Override
   int skipBytes(int n);
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   boolean readBoolean();
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   byte readByte();
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   int readUnsignedByte();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   short readShort();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   int readUnsignedShort();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   char readChar();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   int readInt();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   long readLong();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   float readFloat();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   double readDouble();
 
-  @CanIgnoreReturnValue // to skip a line
+  // to skip a line
   @Override
   @CheckForNull
   String readLine();
 
-  @CanIgnoreReturnValue // to skip a field
+  // to skip a field
   @Override
   String readUTF();
 }
diff --git a/android/guava/src/com/google/common/io/ByteArrayDataOutput.java b/android/guava/src/com/google/common/io/ByteArrayDataOutput.java
index 3739073..b6ae62b 100644
--- a/android/guava/src/com/google/common/io/ByteArrayDataOutput.java
+++ b/android/guava/src/com/google/common/io/ByteArrayDataOutput.java
@@ -14,7 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.DataOutput;
 import java.io.IOException;
 
@@ -25,7 +24,6 @@ import java.io.IOException;
  * @author Jayaprabhakar Kadarkarai
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface ByteArrayDataOutput extends DataOutput {
   @Override
diff --git a/android/guava/src/com/google/common/io/ByteProcessor.java b/android/guava/src/com/google/common/io/ByteProcessor.java
index 98ea3ff..bad1da6 100644
--- a/android/guava/src/com/google/common/io/ByteProcessor.java
+++ b/android/guava/src/com/google/common/io/ByteProcessor.java
@@ -14,12 +14,7 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.IOException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A callback interface to process bytes from a stream.
@@ -30,11 +25,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@Beta
-@DoNotMock("Implement it normally")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public interface ByteProcessor<T extends @Nullable Object> {
+public interface ByteProcessor<T extends Object> {
   /**
    * This method will be called for each chunk of bytes in an input stream. The implementation
    * should process the bytes from {@code buf[off]} through {@code buf[off + len - 1]} (inclusive).
@@ -44,7 +36,7 @@ public interface ByteProcessor<T extends @Nullable Object> {
    * @param len the length of data to be processed
    * @return true to continue processing, false to stop
    */
-  @CanIgnoreReturnValue // some uses know that their processor never returns false
+  // some uses know that their processor never returns false
   boolean processBytes(byte[] buf, int off, int len) throws IOException;
 
   /** Return the result of processing all the bytes. */
diff --git a/android/guava/src/com/google/common/io/ByteSink.java b/android/guava/src/com/google/common/io/ByteSink.java
index 7a6af6f..d54408d 100644
--- a/android/guava/src/com/google/common/io/ByteSink.java
+++ b/android/guava/src/com/google/common/io/ByteSink.java
@@ -16,8 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -45,7 +43,6 @@ import java.nio.charset.Charset;
  * @since 14.0
  * @author Colin Decker
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ByteSink {
 
@@ -116,7 +113,6 @@ public abstract class ByteSink {
    * @return the number of bytes written
    * @throws IOException if an I/O occurs while reading from {@code input} or writing to this sink
    */
-  @CanIgnoreReturnValue
   public long writeFrom(InputStream input) throws IOException {
     checkNotNull(input);
 
diff --git a/android/guava/src/com/google/common/io/ByteSource.java b/android/guava/src/com/google/common/io/ByteSource.java
index c8da967..720a71e 100644
--- a/android/guava/src/com/google/common/io/ByteSource.java
+++ b/android/guava/src/com/google/common/io/ByteSource.java
@@ -19,16 +19,12 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.io.ByteStreams.createBuffer;
 import static com.google.common.io.ByteStreams.skipUpTo;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
 import com.google.common.hash.Funnels;
 import com.google.common.hash.HashCode;
 import com.google.common.hash.HashFunction;
 import com.google.common.hash.Hasher;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -40,7 +36,6 @@ import java.nio.charset.Charset;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A readable source of bytes, such as a file. Unlike an {@link InputStream}, a {@code ByteSource}
@@ -73,7 +68,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 14.0
  * @author Colin Decker
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ByteSource {
 
@@ -178,7 +172,6 @@ public abstract class ByteSource {
    *
    * @since 19.0
    */
-  @Beta
   public Optional<Long> sizeIfKnown() {
     return Optional.absent();
   }
@@ -247,7 +240,6 @@ public abstract class ByteSource {
    * @throws IOException if an I/O error occurs while reading from this source or writing to {@code
    *     output}
    */
-  @CanIgnoreReturnValue
   public long copyTo(OutputStream output) throws IOException {
     checkNotNull(output);
 
@@ -269,7 +261,6 @@ public abstract class ByteSource {
    * @throws IOException if an I/O error occurs while reading from this source or writing to {@code
    *     sink}
    */
-  @CanIgnoreReturnValue
   public long copyTo(ByteSink sink) throws IOException {
     checkNotNull(sink);
 
@@ -314,9 +305,8 @@ public abstract class ByteSource {
    *     processor} throws an {@code IOException}
    * @since 16.0
    */
-  @Beta
-  @CanIgnoreReturnValue // some processors won't return a useful result
-  public <T extends @Nullable Object> T read(ByteProcessor<T> processor) throws IOException {
+  // some processors won't return a useful result
+  public <T extends Object> T read(ByteProcessor<T> processor) throws IOException {
     checkNotNull(processor);
 
     Closer closer = Closer.create();
@@ -621,7 +611,7 @@ public abstract class ByteSource {
     @SuppressWarnings("CheckReturnValue") // it doesn't matter what processBytes returns here
     @Override
     @ParametricNullness
-    public <T extends @Nullable Object> T read(ByteProcessor<T> processor) throws IOException {
+    public <T extends Object> T read(ByteProcessor<T> processor) throws IOException {
       processor.processBytes(bytes, offset, length);
       return processor.getResult();
     }
diff --git a/android/guava/src/com/google/common/io/ByteStreams.java b/android/guava/src/com/google/common/io/ByteStreams.java
index 2f1f669..5cf933d 100644
--- a/android/guava/src/com/google/common/io/ByteStreams.java
+++ b/android/guava/src/com/google/common/io/ByteStreams.java
@@ -19,10 +19,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndex;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.math.IntMath;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.DataInput;
@@ -42,7 +39,6 @@ import java.util.ArrayDeque;
 import java.util.Arrays;
 import java.util.Queue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides utility methods for working with byte arrays and I/O streams.
@@ -51,7 +47,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Colin Decker
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ByteStreams {
 
@@ -102,7 +97,6 @@ public final class ByteStreams {
    * @return the number of bytes copied
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue
   public static long copy(InputStream from, OutputStream to) throws IOException {
     checkNotNull(from);
     checkNotNull(to);
@@ -128,7 +122,6 @@ public final class ByteStreams {
    * @return the number of bytes copied
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue
   public static long copy(ReadableByteChannel from, WritableByteChannel to) throws IOException {
     checkNotNull(from);
     checkNotNull(to);
@@ -268,8 +261,6 @@ public final class ByteStreams {
    *
    * @since 20.0
    */
-  @CanIgnoreReturnValue
-  @Beta
   public static long exhaust(InputStream in) throws IOException {
     long total = 0;
     long read;
@@ -284,7 +275,6 @@ public final class ByteStreams {
    * Returns a new {@link ByteArrayDataInput} instance to read from the {@code bytes} array from the
    * beginning.
    */
-  @Beta
   public static ByteArrayDataInput newDataInput(byte[] bytes) {
     return newDataInput(new ByteArrayInputStream(bytes));
   }
@@ -296,7 +286,6 @@ public final class ByteStreams {
    * @throws IndexOutOfBoundsException if {@code start} is negative or greater than the length of
    *     the array
    */
-  @Beta
   public static ByteArrayDataInput newDataInput(byte[] bytes, int start) {
     checkPositionIndex(start, bytes.length);
     return newDataInput(new ByteArrayInputStream(bytes, start, bytes.length - start));
@@ -309,7 +298,6 @@ public final class ByteStreams {
    *
    * @since 17.0
    */
-  @Beta
   public static ByteArrayDataInput newDataInput(ByteArrayInputStream byteArrayInputStream) {
     return new ByteArrayDataInputStream(checkNotNull(byteArrayInputStream));
   }
@@ -461,7 +449,6 @@ public final class ByteStreams {
   }
 
   /** Returns a new {@link ByteArrayDataOutput} instance with a default size. */
-  @Beta
   public static ByteArrayDataOutput newDataOutput() {
     return newDataOutput(new ByteArrayOutputStream());
   }
@@ -472,7 +459,6 @@ public final class ByteStreams {
    *
    * @throws IllegalArgumentException if {@code size} is negative
    */
-  @Beta
   public static ByteArrayDataOutput newDataOutput(int size) {
     // When called at high frequency, boxing size generates too much garbage,
     // so avoid doing that if we can.
@@ -494,7 +480,6 @@ public final class ByteStreams {
    *
    * @since 17.0
    */
-  @Beta
   public static ByteArrayDataOutput newDataOutput(ByteArrayOutputStream byteArrayOutputStream) {
     return new ByteArrayDataOutputStream(checkNotNull(byteArrayOutputStream));
   }
@@ -670,7 +655,6 @@ public final class ByteStreams {
    *
    * @since 14.0 (since 1.0 as com.google.common.io.NullOutputStream)
    */
-  @Beta
   public static OutputStream nullOutputStream() {
     return NULL_OUTPUT_STREAM;
   }
@@ -683,7 +667,6 @@ public final class ByteStreams {
    * @return a length-limited {@link InputStream}
    * @since 14.0 (since 1.0 as com.google.common.io.LimitInputStream)
    */
-  @Beta
   public static InputStream limit(InputStream in, long limit) {
     return new LimitedInputStream(in, limit);
   }
@@ -770,7 +753,6 @@ public final class ByteStreams {
    * @throws EOFException if this stream reaches the end before reading all the bytes.
    * @throws IOException if an I/O error occurs.
    */
-  @Beta
   public static void readFully(InputStream in, byte[] b) throws IOException {
     readFully(in, b, 0, b.length);
   }
@@ -787,7 +769,6 @@ public final class ByteStreams {
    * @throws EOFException if this stream reaches the end before reading all the bytes.
    * @throws IOException if an I/O error occurs.
    */
-  @Beta
   public static void readFully(InputStream in, byte[] b, int off, int len) throws IOException {
     int read = read(in, b, off, len);
     if (read != len) {
@@ -805,7 +786,6 @@ public final class ByteStreams {
    * @throws EOFException if this stream reaches the end before skipping all the bytes
    * @throws IOException if an I/O error occurs, or the stream does not support skipping
    */
-  @Beta
   public static void skipFully(InputStream in, long n) throws IOException {
     long skipped = skipUpTo(in, n);
     if (skipped < n) {
@@ -871,10 +851,9 @@ public final class ByteStreams {
    * @throws IOException if an I/O error occurs
    * @since 14.0
    */
-  @Beta
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
-  public static <T extends @Nullable Object> T readBytes(
+  public static <T extends Object> T readBytes(
       InputStream input, ByteProcessor<T> processor) throws IOException {
     checkNotNull(input);
     checkNotNull(processor);
@@ -911,8 +890,6 @@ public final class ByteStreams {
    * @throws IndexOutOfBoundsException if {@code off} is negative, if {@code len} is negative, or if
    *     {@code off + len} is greater than {@code b.length}
    */
-  @Beta
-  @CanIgnoreReturnValue
   // Sometimes you don't care how many bytes you actually read, I guess.
   // (You know that it's either going to read len bytes or stop at EOF.)
   public static int read(InputStream in, byte[] b, int off, int len) throws IOException {
diff --git a/android/guava/src/com/google/common/io/CharSequenceReader.java b/android/guava/src/com/google/common/io/CharSequenceReader.java
index 790e266..62207cc 100644
--- a/android/guava/src/com/google/common/io/CharSequenceReader.java
+++ b/android/guava/src/com/google/common/io/CharSequenceReader.java
@@ -17,9 +17,7 @@ package com.google.common.io;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.Reader;
 import java.nio.CharBuffer;
@@ -32,7 +30,6 @@ import javax.annotation.CheckForNull;
  * @author Colin Decker
  */
 // TODO(cgdecker): make this public? as a type, or a method in CharStreams?
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class CharSequenceReader extends Reader {
 
diff --git a/android/guava/src/com/google/common/io/CharSink.java b/android/guava/src/com/google/common/io/CharSink.java
index bdf5f38..73820dc 100644
--- a/android/guava/src/com/google/common/io/CharSink.java
+++ b/android/guava/src/com/google/common/io/CharSink.java
@@ -16,8 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.Reader;
@@ -47,7 +45,6 @@ import java.nio.charset.Charset;
  * @since 14.0
  * @author Colin Decker
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class CharSink {
 
@@ -146,7 +143,6 @@ public abstract class CharSink {
    * @throws IOException if an I/O error occurs while reading from {@code readable} or writing to
    *     this sink
    */
-  @CanIgnoreReturnValue
   public long writeFrom(Readable readable) throws IOException {
     checkNotNull(readable);
 
diff --git a/android/guava/src/com/google/common/io/CharSource.java b/android/guava/src/com/google/common/io/CharSource.java
index b7623ff..7669b7e 100644
--- a/android/guava/src/com/google/common/io/CharSource.java
+++ b/android/guava/src/com/google/common/io/CharSource.java
@@ -16,15 +16,11 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Optional;
 import com.google.common.base.Splitter;
 import com.google.common.collect.AbstractIterator;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -35,7 +31,6 @@ import java.nio.charset.Charset;
 import java.util.Iterator;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A readable source of characters, such as a text file. Unlike a {@link Reader}, a {@code
@@ -76,7 +71,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 14.0
  * @author Colin Decker
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class CharSource {
 
@@ -94,7 +88,6 @@ public abstract class CharSource {
    *
    * @since 20.0
    */
-  @Beta
   public ByteSource asByteSource(Charset charset) {
     return new AsByteSource(charset);
   }
@@ -138,7 +131,6 @@ public abstract class CharSource {
    *
    * @since 19.0
    */
-  @Beta
   public Optional<Long> lengthIfKnown() {
     return Optional.absent();
   }
@@ -162,7 +154,6 @@ public abstract class CharSource {
    * @throws IOException if an I/O error occurs while reading the length of this source
    * @since 19.0
    */
-  @Beta
   public long length() throws IOException {
     Optional<Long> lengthIfKnown = lengthIfKnown();
     if (lengthIfKnown.isPresent()) {
@@ -197,7 +188,6 @@ public abstract class CharSource {
    * @throws IOException if an I/O error occurs while reading from this source or writing to {@code
    *     appendable}
    */
-  @CanIgnoreReturnValue
   public long copyTo(Appendable appendable) throws IOException {
     checkNotNull(appendable);
 
@@ -219,7 +209,6 @@ public abstract class CharSource {
    * @throws IOException if an I/O error occurs while reading from this source or writing to {@code
    *     sink}
    */
-  @CanIgnoreReturnValue
   public long copyTo(CharSink sink) throws IOException {
     checkNotNull(sink);
 
@@ -317,10 +306,9 @@ public abstract class CharSource {
    *     processor} throws an {@code IOException}
    * @since 16.0
    */
-  @Beta
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
-  public <T extends @Nullable Object> T readLines(LineProcessor<T> processor) throws IOException {
+  public <T extends Object> T readLines(LineProcessor<T> processor) throws IOException {
     checkNotNull(processor);
 
     Closer closer = Closer.create();
@@ -537,7 +525,7 @@ public abstract class CharSource {
 
     @Override
     @ParametricNullness
-    public <T extends @Nullable Object> T readLines(LineProcessor<T> processor) throws IOException {
+    public <T extends Object> T readLines(LineProcessor<T> processor) throws IOException {
       Iterator<String> lines = linesIterator();
       while (lines.hasNext()) {
         if (!processor.processLine(lines.next())) {
diff --git a/android/guava/src/com/google/common/io/CharStreams.java b/android/guava/src/com/google/common/io/CharStreams.java
index c414194..15bcab9 100644
--- a/android/guava/src/com/google/common/io/CharStreams.java
+++ b/android/guava/src/com/google/common/io/CharStreams.java
@@ -17,9 +17,6 @@ package com.google.common.io;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Closeable;
 import java.io.EOFException;
 import java.io.IOException;
@@ -29,7 +26,6 @@ import java.nio.CharBuffer;
 import java.util.ArrayList;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides utility methods for working with character streams.
@@ -45,7 +41,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Colin Decker
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class CharStreams {
 
@@ -68,7 +63,6 @@ public final class CharStreams {
    * @return the number of characters copied
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue
   public static long copy(Readable from, Appendable to) throws IOException {
     // The most common case is that from is a Reader (like InputStreamReader or StringReader) so
     // take advantage of that.
@@ -112,7 +106,6 @@ public final class CharStreams {
    * @return the number of characters copied
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue
   static long copyReaderToBuilder(Reader from, StringBuilder to) throws IOException {
     checkNotNull(from);
     checkNotNull(to);
@@ -140,7 +133,6 @@ public final class CharStreams {
    * @return the number of characters copied
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue
   static long copyReaderToWriter(Reader from, Writer to) throws IOException {
     checkNotNull(from);
     checkNotNull(to);
@@ -195,7 +187,6 @@ public final class CharStreams {
    * @return a mutable {@link List} containing all the lines
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static List<String> readLines(Readable r) throws IOException {
     List<String> result = new ArrayList<>();
     LineReader lineReader = new LineReader(r);
@@ -215,10 +206,9 @@ public final class CharStreams {
    * @throws IOException if an I/O error occurs
    * @since 14.0
    */
-  @Beta
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
-  public static <T extends @Nullable Object> T readLines(
+  public static <T extends Object> T readLines(
       Readable readable, LineProcessor<T> processor) throws IOException {
     checkNotNull(readable);
     checkNotNull(processor);
@@ -239,8 +229,6 @@ public final class CharStreams {
    *
    * @since 20.0
    */
-  @Beta
-  @CanIgnoreReturnValue
   public static long exhaust(Readable readable) throws IOException {
     long total = 0;
     long read;
@@ -261,7 +249,6 @@ public final class CharStreams {
    * @throws EOFException if this stream reaches the end before skipping all the characters
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static void skipFully(Reader reader, long n) throws IOException {
     checkNotNull(reader);
     while (n > 0) {
@@ -278,7 +265,6 @@ public final class CharStreams {
    *
    * @since 15.0
    */
-  @Beta
   public static Writer nullWriter() {
     return NullWriter.INSTANCE;
   }
@@ -346,7 +332,6 @@ public final class CharStreams {
    * @param target the object to which output will be sent
    * @return a new Writer object, unless target is a Writer, in which case the target is returned
    */
-  @Beta
   public static Writer asWriter(Appendable target) {
     if (target instanceof Writer) {
       return (Writer) target;
diff --git a/android/guava/src/com/google/common/io/Closeables.java b/android/guava/src/com/google/common/io/Closeables.java
index b45f5f0..231f164 100644
--- a/android/guava/src/com/google/common/io/Closeables.java
+++ b/android/guava/src/com/google/common/io/Closeables.java
@@ -14,9 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
@@ -31,11 +28,9 @@ import javax.annotation.CheckForNull;
  * @author Michael Lancaster
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Closeables {
-  @VisibleForTesting static final Logger logger = Logger.getLogger(Closeables.class.getName());
+  static final Logger logger = Logger.getLogger(Closeables.class.getName());
 
   private Closeables() {}
 
diff --git a/android/guava/src/com/google/common/io/Closer.java b/android/guava/src/com/google/common/io/Closer.java
index 12998ef..c1bb9c3 100644
--- a/android/guava/src/com/google/common/io/Closer.java
+++ b/android/guava/src/com/google/common/io/Closer.java
@@ -16,11 +16,7 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Throwables;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Closeable;
 import java.io.IOException;
 import java.lang.reflect.Method;
@@ -28,7 +24,6 @@ import java.util.ArrayDeque;
 import java.util.Deque;
 import java.util.logging.Level;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Closeable} that collects {@code Closeable} resources and closes them all when it is
@@ -87,8 +82,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 14.0
  */
 // Coffee's for {@link Closer closers} only.
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Closer implements Closeable {
 
@@ -105,13 +98,12 @@ public final class Closer implements Closeable {
     return new Closer(SUPPRESSOR);
   }
 
-  @VisibleForTesting final Suppressor suppressor;
+  final Suppressor suppressor;
 
   // only need space for 2 elements in most cases, so try to use the smallest array possible
   private final Deque<Closeable> stack = new ArrayDeque<>(4);
   @CheckForNull private Throwable thrown;
 
-  @VisibleForTesting
   Closer(Suppressor suppressor) {
     this.suppressor = checkNotNull(suppressor); // checkNotNull to satisfy null tests
   }
@@ -123,9 +115,8 @@ public final class Closer implements Closeable {
    * @return the given {@code closeable}
    */
   // close. this word no longer has any meaning to me.
-  @CanIgnoreReturnValue
   @ParametricNullness
-  public <C extends @Nullable Closeable> C register(@ParametricNullness C closeable) {
+  public <C extends Closeable> C register(@ParametricNullness C closeable) {
     if (closeable != null) {
       stack.addFirst(closeable);
     }
@@ -232,7 +223,6 @@ public final class Closer implements Closeable {
   }
 
   /** Suppression strategy interface. */
-  @VisibleForTesting
   interface Suppressor {
     /**
      * Suppresses the given exception ({@code suppressed}) which was thrown when attempting to close
@@ -243,7 +233,6 @@ public final class Closer implements Closeable {
   }
 
   /** Suppresses exceptions by logging them. */
-  @VisibleForTesting
   static final class LoggingSuppressor implements Suppressor {
 
     static final LoggingSuppressor INSTANCE = new LoggingSuppressor();
@@ -260,7 +249,6 @@ public final class Closer implements Closeable {
    * Suppresses exceptions by adding them to the exception that will be thrown using JDK7's
    * addSuppressed(Throwable) mechanism.
    */
-  @VisibleForTesting
   static final class SuppressingSuppressor implements Suppressor {
     @CheckForNull
     static SuppressingSuppressor tryCreate() {
diff --git a/android/guava/src/com/google/common/io/CountingInputStream.java b/android/guava/src/com/google/common/io/CountingInputStream.java
index a37807a..76c4c31 100644
--- a/android/guava/src/com/google/common/io/CountingInputStream.java
+++ b/android/guava/src/com/google/common/io/CountingInputStream.java
@@ -16,8 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -28,8 +26,6 @@ import java.io.InputStream;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class CountingInputStream extends FilterInputStream {
 
diff --git a/android/guava/src/com/google/common/io/CountingOutputStream.java b/android/guava/src/com/google/common/io/CountingOutputStream.java
index cf62b9c..270891e 100644
--- a/android/guava/src/com/google/common/io/CountingOutputStream.java
+++ b/android/guava/src/com/google/common/io/CountingOutputStream.java
@@ -16,7 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.FilterOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -27,7 +26,6 @@ import java.io.OutputStream;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class CountingOutputStream extends FilterOutputStream {
 
diff --git a/android/guava/src/com/google/common/io/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/io/ElementTypesAreNonnullByDefault.java
index 48bc10f..39c2cb6 100644
--- a/android/guava/src/com/google/common/io/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/io/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/io/FileBackedOutputStream.java b/android/guava/src/com/google/common/io/FileBackedOutputStream.java
index 9912e2f..6b07840 100644
--- a/android/guava/src/com/google/common/io/FileBackedOutputStream.java
+++ b/android/guava/src/com/google/common/io/FileBackedOutputStream.java
@@ -14,12 +14,7 @@
 
 package com.google.common.io;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -50,8 +45,6 @@ import javax.annotation.CheckForNull;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class FileBackedOutputStream extends OutputStream {
   private final int fileThreshold;
@@ -59,14 +52,11 @@ public final class FileBackedOutputStream extends OutputStream {
   private final ByteSource source;
   @CheckForNull private final File parentDirectory;
 
-  @GuardedBy("this")
   private OutputStream out;
 
-  @GuardedBy("this")
   @CheckForNull
   private MemoryOutput memory;
 
-  @GuardedBy("this")
   @CheckForNull
   private File file;
 
@@ -82,7 +72,6 @@ public final class FileBackedOutputStream extends OutputStream {
   }
 
   /** Returns the file holding the data (possibly null). */
-  @VisibleForTesting
   @CheckForNull
   synchronized File getFile() {
     return file;
@@ -222,7 +211,6 @@ public final class FileBackedOutputStream extends OutputStream {
    * Checks if writing {@code len} bytes would go over threshold, and switches to file buffering if
    * so.
    */
-  @GuardedBy("this")
   private void update(int len) throws IOException {
     if (memory != null && (memory.getCount() + len > fileThreshold)) {
       File temp = File.createTempFile("FileBackedOutputStream", null, parentDirectory);
diff --git a/android/guava/src/com/google/common/io/FileWriteMode.java b/android/guava/src/com/google/common/io/FileWriteMode.java
index 86872d1..e69ba8a 100644
--- a/android/guava/src/com/google/common/io/FileWriteMode.java
+++ b/android/guava/src/com/google/common/io/FileWriteMode.java
@@ -14,7 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.GwtIncompatible;
 
 /**
  * Modes for opening a file for writing. The default when mode when none is specified is to truncate
@@ -22,7 +21,6 @@ import com.google.common.annotations.GwtIncompatible;
  *
  * @author Colin Decker
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public enum FileWriteMode {
   /** Specifies that writes to the opened file should append to the end of the file. */
diff --git a/android/guava/src/com/google/common/io/Files.java b/android/guava/src/com/google/common/io/Files.java
index bf6289e..a45e5ec 100644
--- a/android/guava/src/com/google/common/io/Files.java
+++ b/android/guava/src/com/google/common/io/Files.java
@@ -18,20 +18,15 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.io.FileWriteMode.APPEND;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Joiner;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.graph.SuccessorsFunction;
 import com.google.common.graph.Traverser;
 import com.google.common.hash.HashCode;
 import com.google.common.hash.HashFunction;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
@@ -53,7 +48,6 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides utility methods for working with {@linkplain File files}.
@@ -65,7 +59,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Colin Decker
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Files {
 
@@ -85,7 +78,6 @@ public final class Files {
    *     helpful predefined constants
    * @return the buffered reader
    */
-  @Beta
   public static BufferedReader newReader(File file, Charset charset) throws FileNotFoundException {
     checkNotNull(file);
     checkNotNull(charset);
@@ -104,7 +96,6 @@ public final class Files {
    *     helpful predefined constants
    * @return the buffered writer
    */
-  @Beta
   public static BufferedWriter newWriter(File file, Charset charset) throws FileNotFoundException {
     checkNotNull(file);
     checkNotNull(charset);
@@ -235,7 +226,6 @@ public final class Files {
    *     (2^31 - 1)
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static byte[] toByteArray(File file) throws IOException {
     return asByteSource(file).read();
   }
@@ -251,7 +241,6 @@ public final class Files {
    * @deprecated Prefer {@code asCharSource(file, charset).read()}. This method is scheduled to be
    *     removed in October 2019.
    */
-  @Beta
   @Deprecated
   public static String toString(File file, Charset charset) throws IOException {
     return asCharSource(file, charset).read();
@@ -267,7 +256,6 @@ public final class Files {
    * @param to the destination file
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static void write(byte[] from, File to) throws IOException {
     asByteSink(to).write(from);
   }
@@ -283,7 +271,6 @@ public final class Files {
    * @deprecated Prefer {@code asCharSink(to, charset).write(from)}. This method is scheduled to be
    *     removed in October 2019.
    */
-  @Beta
   @Deprecated
   public static void write(CharSequence from, File to, Charset charset) throws IOException {
     asCharSink(to, charset).write(from);
@@ -299,7 +286,6 @@ public final class Files {
    * @param to the output stream
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static void copy(File from, OutputStream to) throws IOException {
     asByteSource(from).copyTo(to);
   }
@@ -323,7 +309,6 @@ public final class Files {
    * @throws IOException if an I/O error occurs
    * @throws IllegalArgumentException if {@code from.equals(to)}
    */
-  @Beta
   public static void copy(File from, File to) throws IOException {
     checkArgument(!from.equals(to), "Source %s and destination %s must be different", from, to);
     asByteSource(from).copyTo(asByteSink(to));
@@ -340,7 +325,6 @@ public final class Files {
    * @deprecated Prefer {@code asCharSource(from, charset).copyTo(to)}. This method is scheduled to
    *     be removed in October 2019.
    */
-  @Beta
   @Deprecated
   public
   static void copy(File from, Charset charset, Appendable to) throws IOException {
@@ -358,7 +342,6 @@ public final class Files {
    * @deprecated Prefer {@code asCharSink(to, charset, FileWriteMode.APPEND).write(from)}. This
    *     method is scheduled to be removed in October 2019.
    */
-  @Beta
   @Deprecated
   public
   static void append(CharSequence from, File to, Charset charset) throws IOException {
@@ -370,7 +353,6 @@ public final class Files {
    *
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static boolean equal(File file1, File file2) throws IOException {
     checkNotNull(file1);
     checkNotNull(file2);
@@ -421,7 +403,6 @@ public final class Files {
    *     java.nio.file.Files#createTempDirectory}, transforming it to a {@link File} using {@link
    *     java.nio.file.Path#toFile() toFile()} if needed.
    */
-  @Beta
   @Deprecated
   public static File createTempDir() {
     File baseDir = new File(System.getProperty("java.io.tmpdir"));
@@ -452,7 +433,6 @@ public final class Files {
    * @param file the file to create or update
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   @SuppressWarnings("GoodTime") // reading system time without TimeSource
   public static void touch(File file) throws IOException {
     checkNotNull(file);
@@ -470,7 +450,6 @@ public final class Files {
    *     directories of the specified file could not be created.
    * @since 4.0
    */
-  @Beta
   public static void createParentDirs(File file) throws IOException {
     checkNotNull(file);
     File parent = file.getCanonicalFile().getParentFile();
@@ -501,7 +480,6 @@ public final class Files {
    * @throws IOException if an I/O error occurs
    * @throws IllegalArgumentException if {@code from.equals(to)}
    */
-  @Beta
   public static void move(File from, File to) throws IOException {
     checkNotNull(from);
     checkNotNull(to);
@@ -530,7 +508,6 @@ public final class Files {
    * @deprecated Prefer {@code asCharSource(file, charset).readFirstLine()}. This method is
    *     scheduled to be removed in October 2019.
    */
-  @Beta
   @Deprecated
   @CheckForNull
   public
@@ -554,7 +531,6 @@ public final class Files {
    * @return a mutable {@link List} containing all the lines
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static List<String> readLines(File file, Charset charset) throws IOException {
     // don't use asCharSource(file, charset).readLines() because that returns
     // an immutable list, which would change the behavior of this method
@@ -589,12 +565,11 @@ public final class Files {
    * @deprecated Prefer {@code asCharSource(file, charset).readLines(callback)}. This method is
    *     scheduled to be removed in October 2019.
    */
-  @Beta
   @Deprecated
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
   public
-  static <T extends @Nullable Object> T readLines(
+  static <T extends Object> T readLines(
       File file, Charset charset, LineProcessor<T> callback) throws IOException {
     return asCharSource(file, charset).readLines(callback);
   }
@@ -611,12 +586,11 @@ public final class Files {
    * @deprecated Prefer {@code asByteSource(file).read(processor)}. This method is scheduled to be
    *     removed in October 2019.
    */
-  @Beta
   @Deprecated
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
   public
-  static <T extends @Nullable Object> T readBytes(File file, ByteProcessor<T> processor)
+  static <T extends Object> T readBytes(File file, ByteProcessor<T> processor)
       throws IOException {
     return asByteSource(file).read(processor);
   }
@@ -632,7 +606,6 @@ public final class Files {
    * @deprecated Prefer {@code asByteSource(file).hash(hashFunction)}. This method is scheduled to
    *     be removed in October 2019.
    */
-  @Beta
   @Deprecated
   public
   static HashCode hash(File file, HashFunction hashFunction) throws IOException {
@@ -654,7 +627,6 @@ public final class Files {
    * @see FileChannel#map(MapMode, long, long)
    * @since 2.0
    */
-  @Beta
   public static MappedByteBuffer map(File file) throws IOException {
     checkNotNull(file);
     return map(file, MapMode.READ_ONLY);
@@ -677,7 +649,6 @@ public final class Files {
    * @see FileChannel#map(MapMode, long, long)
    * @since 2.0
    */
-  @Beta
   public static MappedByteBuffer map(File file, MapMode mode) throws IOException {
     return mapInternal(file, mode, -1);
   }
@@ -701,7 +672,6 @@ public final class Files {
    * @see FileChannel#map(MapMode, long, long)
    * @since 2.0
    */
-  @Beta
   public static MappedByteBuffer map(File file, MapMode mode, long size) throws IOException {
     checkArgument(size >= 0, "size (%s) may not be negative", size);
     return mapInternal(file, mode, size);
@@ -745,7 +715,6 @@ public final class Files {
    *
    * @since 11.0
    */
-  @Beta
   public static String simplifyPath(String pathname) {
     checkNotNull(pathname);
     if (pathname.length() == 0) {
@@ -806,7 +775,6 @@ public final class Files {
    *
    * @since 11.0
    */
-  @Beta
   public static String getFileExtension(String fullName) {
     checkNotNull(fullName);
     String fileName = new File(fullName).getName();
@@ -824,7 +792,6 @@ public final class Files {
    * @return The file name without its path or extension.
    * @since 14.0
    */
-  @Beta
   public static String getNameWithoutExtension(String file) {
     checkNotNull(file);
     String fileName = new File(file).getName();
@@ -854,7 +821,6 @@ public final class Files {
    *
    * @since 23.5
    */
-  @Beta
   public static Traverser<File> fileTraverser() {
     return Traverser.forTree(FILE_TREE);
   }
@@ -880,7 +846,6 @@ public final class Files {
    *
    * @since 15.0
    */
-  @Beta
   public static Predicate<File> isDirectory() {
     return FilePredicate.IS_DIRECTORY;
   }
@@ -890,7 +855,6 @@ public final class Files {
    *
    * @since 15.0
    */
-  @Beta
   public static Predicate<File> isFile() {
     return FilePredicate.IS_FILE;
   }
diff --git a/android/guava/src/com/google/common/io/Flushables.java b/android/guava/src/com/google/common/io/Flushables.java
index 1f795a2..5cde0a8 100644
--- a/android/guava/src/com/google/common/io/Flushables.java
+++ b/android/guava/src/com/google/common/io/Flushables.java
@@ -14,8 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Flushable;
 import java.io.IOException;
 import java.util.logging.Level;
@@ -27,8 +25,6 @@ import java.util.logging.Logger;
  * @author Michael Lancaster
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Flushables {
   private static final Logger logger = Logger.getLogger(Flushables.class.getName());
diff --git a/android/guava/src/com/google/common/io/Java8Compatibility.java b/android/guava/src/com/google/common/io/Java8Compatibility.java
index 705d97b..b111de7 100644
--- a/android/guava/src/com/google/common/io/Java8Compatibility.java
+++ b/android/guava/src/com/google/common/io/Java8Compatibility.java
@@ -14,14 +14,12 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.nio.Buffer;
 
 /**
  * Wrappers around {@link Buffer} methods that are covariantly overridden in Java 9+. See
  * https://github.com/google/guava/issues/3990
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class Java8Compatibility {
   static void clear(Buffer b) {
diff --git a/android/guava/src/com/google/common/io/LineBuffer.java b/android/guava/src/com/google/common/io/LineBuffer.java
index f944abc..0206eb0 100644
--- a/android/guava/src/com/google/common/io/LineBuffer.java
+++ b/android/guava/src/com/google/common/io/LineBuffer.java
@@ -14,8 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 
 /**
@@ -29,7 +27,6 @@ import java.io.IOException;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class LineBuffer {
   /** Holds partial line contents. */
@@ -84,7 +81,6 @@ abstract class LineBuffer {
   }
 
   /** Called when a line is complete. */
-  @CanIgnoreReturnValue
   private boolean finishLine(boolean sawNewline) throws IOException {
     String separator = sawReturn ? (sawNewline ? "\r\n" : "\r") : (sawNewline ? "\n" : "");
     handleLine(line.toString(), separator);
diff --git a/android/guava/src/com/google/common/io/LineProcessor.java b/android/guava/src/com/google/common/io/LineProcessor.java
index e28bebc..d4a3b2b 100644
--- a/android/guava/src/com/google/common/io/LineProcessor.java
+++ b/android/guava/src/com/google/common/io/LineProcessor.java
@@ -14,11 +14,7 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A callback to be used with the streaming {@code readLines} methods.
@@ -29,10 +25,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Miles Barr
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public interface LineProcessor<T extends @Nullable Object> {
+public interface LineProcessor<T extends Object> {
 
   /**
    * This method will be called once for each line.
@@ -40,7 +34,7 @@ public interface LineProcessor<T extends @Nullable Object> {
    * @param line the line read from the input, without delimiter
    * @return true to continue processing, false to stop
    */
-  @CanIgnoreReturnValue // some uses know that their processor never returns false
+  // some uses know that their processor never returns false
   boolean processLine(String line) throws IOException;
 
   /** Return the result of processing all the lines. */
diff --git a/android/guava/src/com/google/common/io/LineReader.java b/android/guava/src/com/google/common/io/LineReader.java
index 2c57ac4..976e6c8 100644
--- a/android/guava/src/com/google/common/io/LineReader.java
+++ b/android/guava/src/com/google/common/io/LineReader.java
@@ -17,9 +17,6 @@ package com.google.common.io;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.io.CharStreams.createBuffer;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.Reader;
 import java.nio.CharBuffer;
@@ -35,8 +32,6 @@ import javax.annotation.CheckForNull;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class LineReader {
   private final Readable readable;
@@ -68,7 +63,7 @@ public final class LineReader {
    *     line-termination characters, or {@code null} if the end of the stream has been reached.
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip a line
+  // to skip a line
   @CheckForNull
   public String readLine() throws IOException {
     while (lines.peek() == null) {
diff --git a/android/guava/src/com/google/common/io/LittleEndianDataInputStream.java b/android/guava/src/com/google/common/io/LittleEndianDataInputStream.java
index 88c8e27..10ced0d 100644
--- a/android/guava/src/com/google/common/io/LittleEndianDataInputStream.java
+++ b/android/guava/src/com/google/common/io/LittleEndianDataInputStream.java
@@ -14,13 +14,9 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.Longs;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.io.DataInput;
 import java.io.DataInputStream;
 import java.io.EOFException;
@@ -39,8 +35,6 @@ import java.io.InputStream;
  * @author Keith Bottner
  * @since 8.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class LittleEndianDataInputStream extends FilterInputStream implements DataInput {
 
@@ -54,9 +48,8 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
   }
 
   /** This method will throw an {@link UnsupportedOperationException}. */
-  @CanIgnoreReturnValue // to skip a line
+  // to skip a line
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public String readLine() {
     throw new UnsupportedOperationException("readLine is not supported");
   }
@@ -76,7 +69,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
     return (int) in.skip(n);
   }
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   public int readUnsignedByte() throws IOException {
     int b1 = in.read();
@@ -95,7 +88,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     little-endian byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public int readUnsignedShort() throws IOException {
     byte b1 = readAndCheckByte();
@@ -112,7 +105,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public int readInt() throws IOException {
     byte b1 = readAndCheckByte();
@@ -131,7 +124,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     little-endian byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public long readLong() throws IOException {
     byte b1 = readAndCheckByte();
@@ -154,7 +147,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     little-endian byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public float readFloat() throws IOException {
     return Float.intBitsToFloat(readInt());
@@ -168,13 +161,13 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     little-endian byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public double readDouble() throws IOException {
     return Double.longBitsToDouble(readLong());
   }
 
-  @CanIgnoreReturnValue // to skip a field
+  // to skip a field
   @Override
   public String readUTF() throws IOException {
     return new DataInputStream(in).readUTF();
@@ -188,7 +181,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     byte order.
    * @throws IOException if an I/O error occurs.
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public short readShort() throws IOException {
     return (short) readUnsignedShort();
@@ -202,19 +195,19 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public char readChar() throws IOException {
     return (char) readUnsignedShort();
   }
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   public byte readByte() throws IOException {
     return (byte) readUnsignedByte();
   }
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   public boolean readBoolean() throws IOException {
     return readUnsignedByte() != 0;
diff --git a/android/guava/src/com/google/common/io/LittleEndianDataOutputStream.java b/android/guava/src/com/google/common/io/LittleEndianDataOutputStream.java
index 6e51aff..5065249 100644
--- a/android/guava/src/com/google/common/io/LittleEndianDataOutputStream.java
+++ b/android/guava/src/com/google/common/io/LittleEndianDataOutputStream.java
@@ -14,8 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.Longs;
 import java.io.DataOutput;
@@ -35,8 +33,6 @@ import java.io.OutputStream;
  * @author Keith Bottner
  * @since 8.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class LittleEndianDataOutputStream extends FilterOutputStream implements DataOutput {
 
diff --git a/android/guava/src/com/google/common/io/MultiInputStream.java b/android/guava/src/com/google/common/io/MultiInputStream.java
index 9a7e0fd..c890b88 100644
--- a/android/guava/src/com/google/common/io/MultiInputStream.java
+++ b/android/guava/src/com/google/common/io/MultiInputStream.java
@@ -16,7 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Iterator;
@@ -29,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class MultiInputStream extends InputStream {
 
diff --git a/android/guava/src/com/google/common/io/MultiReader.java b/android/guava/src/com/google/common/io/MultiReader.java
index cc36e52..af138c2 100644
--- a/android/guava/src/com/google/common/io/MultiReader.java
+++ b/android/guava/src/com/google/common/io/MultiReader.java
@@ -16,7 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import java.io.IOException;
 import java.io.Reader;
@@ -29,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Bin Zhu
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 class MultiReader extends Reader {
   private final Iterator<? extends CharSource> it;
diff --git a/android/guava/src/com/google/common/io/ParametricNullness.java b/android/guava/src/com/google/common/io/ParametricNullness.java
index afa0db1..7a138d3 100644
--- a/android/guava/src/com/google/common/io/ParametricNullness.java
+++ b/android/guava/src/com/google/common/io/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/io/PatternFilenameFilter.java b/android/guava/src/com/google/common/io/PatternFilenameFilter.java
index 3cb2371..af0f19b 100644
--- a/android/guava/src/com/google/common/io/PatternFilenameFilter.java
+++ b/android/guava/src/com/google/common/io/PatternFilenameFilter.java
@@ -14,8 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import java.io.File;
 import java.io.FilenameFilter;
@@ -29,8 +27,6 @@ import java.util.regex.PatternSyntaxException;
  * @author Apple Chow
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class PatternFilenameFilter implements FilenameFilter {
 
diff --git a/android/guava/src/com/google/common/io/ReaderInputStream.java b/android/guava/src/com/google/common/io/ReaderInputStream.java
index 75f8a3e..bfe197c 100644
--- a/android/guava/src/com/google/common/io/ReaderInputStream.java
+++ b/android/guava/src/com/google/common/io/ReaderInputStream.java
@@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.UnsignedBytes;
 import java.io.IOException;
 import java.io.InputStream;
@@ -43,7 +42,6 @@ import java.util.Arrays;
  *
  * @author Chris Nokleberg
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class ReaderInputStream extends InputStream {
   private final Reader reader;
diff --git a/android/guava/src/com/google/common/io/Resources.java b/android/guava/src/com/google/common/io/Resources.java
index cc595fc..f3fff73 100644
--- a/android/guava/src/com/google/common/io/Resources.java
+++ b/android/guava/src/com/google/common/io/Resources.java
@@ -17,19 +17,15 @@ package com.google.common.io;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Charsets;
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.Lists;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URL;
 import java.nio.charset.Charset;
 import java.util.List;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides utility methods for working with resources in the classpath. Note that even though these
@@ -43,8 +39,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Colin Decker
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Resources {
   private Resources() {}
@@ -122,9 +116,9 @@ public final class Resources {
    * @return the output of processing the lines
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
-  public static <T extends @Nullable Object> T readLines(
+  public static <T extends Object> T readLines(
       URL url, Charset charset, LineProcessor<T> callback) throws IOException {
     return asCharSource(url, charset).readLines(callback);
   }
@@ -187,7 +181,7 @@ public final class Resources {
    *
    * @throws IllegalArgumentException if the resource is not found
    */
-  @CanIgnoreReturnValue // being used to check if a resource exists
+  // being used to check if a resource exists
   // TODO(cgdecker): maybe add a better way to check if a resource exists
   // e.g. Optional<URL> tryGetResource or boolean resourceExists
   public static URL getResource(String resourceName) {
@@ -205,7 +199,7 @@ public final class Resources {
    *
    * @throws IllegalArgumentException if the resource is not found
    */
-  @CanIgnoreReturnValue // being used to check if a resource exists
+  // being used to check if a resource exists
   public static URL getResource(Class<?> contextClass, String resourceName) {
     URL url = contextClass.getResource(resourceName);
     checkArgument(
diff --git a/android/guava/src/com/google/common/io/package-info.java b/android/guava/src/com/google/common/io/package-info.java
index f0666b2..c7bac46 100644
--- a/android/guava/src/com/google/common/io/package-info.java
+++ b/android/guava/src/com/google/common/io/package-info.java
@@ -28,9 +28,7 @@
  *
  * @author Chris Nokleberg
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.io;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/math/BigDecimalMath.java b/android/guava/src/com/google/common/math/BigDecimalMath.java
index 33a55d3..38c67ba 100644
--- a/android/guava/src/com/google/common/math/BigDecimalMath.java
+++ b/android/guava/src/com/google/common/math/BigDecimalMath.java
@@ -14,7 +14,6 @@
 
 package com.google.common.math;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 
@@ -24,7 +23,6 @@ import java.math.RoundingMode;
  * @author Louis Wasserman
  * @since 30.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public class BigDecimalMath {
   private BigDecimalMath() {}
diff --git a/android/guava/src/com/google/common/math/BigIntegerMath.java b/android/guava/src/com/google/common/math/BigIntegerMath.java
index 6ef1e81..ceeb8ec 100644
--- a/android/guava/src/com/google/common/math/BigIntegerMath.java
+++ b/android/guava/src/com/google/common/math/BigIntegerMath.java
@@ -25,10 +25,6 @@ import static java.math.RoundingMode.HALF_DOWN;
 import static java.math.RoundingMode.HALF_EVEN;
 import static java.math.RoundingMode.UNNECESSARY;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.math.RoundingMode;
@@ -47,7 +43,6 @@ import java.util.List;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class BigIntegerMath {
   /**
@@ -57,7 +52,6 @@ public final class BigIntegerMath {
    * @throws IllegalArgumentException if {@code x <= 0}
    * @since 20.0
    */
-  @Beta
   public static BigInteger ceilingPowerOfTwo(BigInteger x) {
     return BigInteger.ZERO.setBit(log2(x, CEILING));
   }
@@ -69,7 +63,6 @@ public final class BigIntegerMath {
    * @throws IllegalArgumentException if {@code x <= 0}
    * @since 20.0
    */
-  @Beta
   public static BigInteger floorPowerOfTwo(BigInteger x) {
     return BigInteger.ZERO.setBit(log2(x, FLOOR));
   }
@@ -133,9 +126,8 @@ public final class BigIntegerMath {
    * of two. This can be any value, but higher values incur more class load time and linearly
    * increasing memory consumption.
    */
-  @VisibleForTesting static final int SQRT2_PRECOMPUTE_THRESHOLD = 256;
+  static final int SQRT2_PRECOMPUTE_THRESHOLD = 256;
 
-  @VisibleForTesting
   static final BigInteger SQRT2_PRECOMPUTED_BITS =
       new BigInteger("16a09e667f3bcc908b2fb1366ea957d3e3adec17512775099da2f590b0667322a", 16);
 
@@ -146,7 +138,7 @@ public final class BigIntegerMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code x}
    *     is not a power of ten
    */
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("fallthrough")
   public static int log10(BigInteger x, RoundingMode mode) {
     checkPositive("x", x);
@@ -224,7 +216,7 @@ public final class BigIntegerMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code
    *     sqrt(x)} is not an integer
    */
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("fallthrough")
   public static BigInteger sqrt(BigInteger x, RoundingMode mode) {
     checkNonNegative("x", x);
@@ -260,7 +252,7 @@ public final class BigIntegerMath {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static BigInteger sqrtFloor(BigInteger x) {
     /*
      * Adapted from Hacker's Delight, Figure 11-1.
@@ -304,7 +296,7 @@ public final class BigIntegerMath {
     return sqrt0;
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static BigInteger sqrtApproxWithDoubles(BigInteger x) {
     return DoubleMath.roundToBigInteger(Math.sqrt(DoubleUtils.bigToDouble(x)), HALF_EVEN);
   }
@@ -330,12 +322,10 @@ public final class BigIntegerMath {
    *     is not precisely representable as a {@code double}
    * @since 30.0
    */
-  @GwtIncompatible
   public static double roundToDouble(BigInteger x, RoundingMode mode) {
     return BigIntegerToDoubleRounder.INSTANCE.roundToDouble(x, mode);
   }
 
-  @GwtIncompatible
   private static class BigIntegerToDoubleRounder extends ToDoubleRounder<BigInteger> {
     static final BigIntegerToDoubleRounder INSTANCE = new BigIntegerToDoubleRounder();
 
@@ -369,7 +359,7 @@ public final class BigIntegerMath {
    * @throws ArithmeticException if {@code q == 0}, or if {@code mode == UNNECESSARY} and {@code a}
    *     is not an integer multiple of {@code b}
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static BigInteger divide(BigInteger p, BigInteger q, RoundingMode mode) {
     BigDecimal pDec = new BigDecimal(p);
     BigDecimal qDec = new BigDecimal(q);
@@ -521,7 +511,7 @@ public final class BigIntegerMath {
   }
 
   // Returns true if BigInteger.valueOf(x.longValue()).equals(x).
-  @GwtIncompatible // TODO
+  // TODO
   static boolean fitsInLong(BigInteger x) {
     return x.bitLength() <= Long.SIZE - 1;
   }
diff --git a/android/guava/src/com/google/common/math/DoubleMath.java b/android/guava/src/com/google/common/math/DoubleMath.java
index cdd0a4b..13ee002 100644
--- a/android/guava/src/com/google/common/math/DoubleMath.java
+++ b/android/guava/src/com/google/common/math/DoubleMath.java
@@ -30,11 +30,7 @@ import static java.lang.Math.getExponent;
 import static java.lang.Math.log;
 import static java.lang.Math.rint;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.primitives.Booleans;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.math.BigInteger;
 import java.math.RoundingMode;
 import java.util.Iterator;
@@ -45,14 +41,13 @@ import java.util.Iterator;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class DoubleMath {
   /*
    * This method returns a value y such that rounding y DOWN (towards zero) gives the same result as
    * rounding x according to the specified mode.
    */
-  @GwtIncompatible // #isMathematicalInteger, com.google.common.math.DoubleUtils
+  // #isMathematicalInteger, com.google.common.math.DoubleUtils
   static double roundIntermediate(double x, RoundingMode mode) {
     if (!isFinite(x)) {
       throw new ArithmeticException("input is infinite or NaN");
@@ -128,7 +123,7 @@ public final class DoubleMath {
    *           RoundingMode#UNNECESSARY}
    *     </ul>
    */
-  @GwtIncompatible // #roundIntermediate
+  // #roundIntermediate
   public static int roundToInt(double x, RoundingMode mode) {
     double z = roundIntermediate(x, mode);
     checkInRangeForRoundingInputs(
@@ -153,7 +148,7 @@ public final class DoubleMath {
    *           RoundingMode#UNNECESSARY}
    *     </ul>
    */
-  @GwtIncompatible // #roundIntermediate
+  // #roundIntermediate
   public static long roundToLong(double x, RoundingMode mode) {
     double z = roundIntermediate(x, mode);
     checkInRangeForRoundingInputs(
@@ -180,7 +175,6 @@ public final class DoubleMath {
    *     </ul>
    */
   // #roundIntermediate, java.lang.Math.getExponent, com.google.common.math.DoubleUtils
-  @GwtIncompatible
   public static BigInteger roundToBigInteger(double x, RoundingMode mode) {
     x = roundIntermediate(x, mode);
     if (MIN_LONG_AS_DOUBLE - x < 1.0 & x < MAX_LONG_AS_DOUBLE_PLUS_ONE) {
@@ -196,7 +190,7 @@ public final class DoubleMath {
    * Returns {@code true} if {@code x} is exactly equal to {@code 2^k} for some finite integer
    * {@code k}.
    */
-  @GwtIncompatible // com.google.common.math.DoubleUtils
+  // com.google.common.math.DoubleUtils
   public static boolean isPowerOfTwo(double x) {
     if (x > 0.0 && isFinite(x)) {
       long significand = getSignificand(x);
@@ -234,7 +228,7 @@ public final class DoubleMath {
    * @throws IllegalArgumentException if {@code x <= 0.0}, {@code x} is NaN, or {@code x} is
    *     infinite
    */
-  @GwtIncompatible // java.lang.Math.getExponent, com.google.common.math.DoubleUtils
+  // java.lang.Math.getExponent, com.google.common.math.DoubleUtils
   @SuppressWarnings("fallthrough")
   public static int log2(double x, RoundingMode mode) {
     checkArgument(x > 0.0 && isFinite(x), "x must be positive and finite");
@@ -283,7 +277,7 @@ public final class DoubleMath {
    * <p>This is equivalent to, but not necessarily implemented as, the expression {@code
    * !Double.isNaN(x) && !Double.isInfinite(x) && x == Math.rint(x)}.
    */
-  @GwtIncompatible // java.lang.Math.getExponent, com.google.common.math.DoubleUtils
+  // java.lang.Math.getExponent, com.google.common.math.DoubleUtils
   public static boolean isMathematicalInteger(double x) {
     return isFinite(x)
         && (x == 0.0
@@ -314,9 +308,8 @@ public final class DoubleMath {
     }
   }
 
-  @VisibleForTesting static final int MAX_FACTORIAL = 170;
+  static final int MAX_FACTORIAL = 170;
 
-  @VisibleForTesting
   static final double[] everySixteenthFactorial = {
     0x1.0p0,
     0x1.30777758p44,
@@ -404,7 +397,6 @@ public final class DoubleMath {
    */
   @Deprecated
   // com.google.common.math.DoubleUtils
-  @GwtIncompatible
   public static double mean(double... values) {
     checkArgument(values.length > 0, "Cannot take mean of 0 values");
     long count = 1;
@@ -484,7 +476,6 @@ public final class DoubleMath {
    */
   @Deprecated
   // com.google.common.math.DoubleUtils
-  @GwtIncompatible
   public static double mean(Iterable<? extends Number> values) {
     return mean(values.iterator());
   }
@@ -504,7 +495,6 @@ public final class DoubleMath {
    */
   @Deprecated
   // com.google.common.math.DoubleUtils
-  @GwtIncompatible
   public static double mean(Iterator<? extends Number> values) {
     checkArgument(values.hasNext(), "Cannot take mean of 0 values");
     long count = 1;
@@ -518,8 +508,7 @@ public final class DoubleMath {
     return mean;
   }
 
-  @GwtIncompatible // com.google.common.math.DoubleUtils
-  @CanIgnoreReturnValue
+  // com.google.common.math.DoubleUtils
   private static double checkFinite(double argument) {
     checkArgument(isFinite(argument));
     return argument;
diff --git a/android/guava/src/com/google/common/math/DoubleUtils.java b/android/guava/src/com/google/common/math/DoubleUtils.java
index d4a07e9..d655e48 100644
--- a/android/guava/src/com/google/common/math/DoubleUtils.java
+++ b/android/guava/src/com/google/common/math/DoubleUtils.java
@@ -23,8 +23,6 @@ import static java.lang.Double.isNaN;
 import static java.lang.Double.longBitsToDouble;
 import static java.lang.Math.getExponent;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.math.BigInteger;
 
 /**
@@ -32,7 +30,6 @@ import java.math.BigInteger;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class DoubleUtils {
   private DoubleUtils() {}
@@ -135,5 +132,5 @@ final class DoubleUtils {
     return Math.max(value, 0.0);
   }
 
-  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;
+  static final long ONE_BITS = 0x3ff0000000000000L;
 }
diff --git a/android/guava/src/com/google/common/math/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/math/ElementTypesAreNonnullByDefault.java
index 84999ea..004d393 100644
--- a/android/guava/src/com/google/common/math/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/math/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/math/IntMath.java b/android/guava/src/com/google/common/math/IntMath.java
index 17a18c6..60b0852 100644
--- a/android/guava/src/com/google/common/math/IntMath.java
+++ b/android/guava/src/com/google/common/math/IntMath.java
@@ -25,10 +25,6 @@ import static java.lang.Math.min;
 import static java.math.RoundingMode.HALF_EVEN;
 import static java.math.RoundingMode.HALF_UP;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.primitives.Ints;
 import java.math.BigInteger;
 import java.math.RoundingMode;
@@ -47,12 +43,11 @@ import java.math.RoundingMode;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class IntMath {
   // NOTE: Whenever both tests are cheap and functional, it's faster to use &, | instead of &&, ||
 
-  @VisibleForTesting static final int MAX_SIGNED_POWER_OF_TWO = 1 << (Integer.SIZE - 2);
+  static final int MAX_SIGNED_POWER_OF_TWO = 1 << (Integer.SIZE - 2);
 
   /**
    * Returns the smallest power of two greater than or equal to {@code x}. This is equivalent to
@@ -63,7 +58,6 @@ public final class IntMath {
    *     int}, i.e. when {@code x > 2^30}
    * @since 20.0
    */
-  @Beta
   public static int ceilingPowerOfTwo(int x) {
     checkPositive("x", x);
     if (x > MAX_SIGNED_POWER_OF_TWO) {
@@ -79,7 +73,6 @@ public final class IntMath {
    * @throws IllegalArgumentException if {@code x <= 0}
    * @since 20.0
    */
-  @Beta
   public static int floorPowerOfTwo(int x) {
     checkPositive("x", x);
     return Integer.highestOneBit(x);
@@ -100,7 +93,6 @@ public final class IntMath {
    * a signed int. The implementation is branch-free, and benchmarks suggest it is measurably (if
    * narrowly) faster than the straightforward ternary expression.
    */
-  @VisibleForTesting
   static int lessThanBranchFree(int x, int y) {
     // The double negation is optimized away by normal Java, but is necessary for GWT
     // to make sure bit twiddling works as expected.
@@ -146,7 +138,7 @@ public final class IntMath {
   }
 
   /** The biggest half power of two that can fit in an unsigned int. */
-  @VisibleForTesting static final int MAX_POWER_OF_SQRT2_UNSIGNED = 0xB504F333;
+  static final int MAX_POWER_OF_SQRT2_UNSIGNED = 0xB504F333;
 
   /**
    * Returns the base-10 logarithm of {@code x}, rounded according to the specified rounding mode.
@@ -155,7 +147,7 @@ public final class IntMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code x}
    *     is not a power of ten
    */
-  @GwtIncompatible // need BigIntegerMath to adequately test
+  // need BigIntegerMath to adequately test
   @SuppressWarnings("fallthrough")
   public static int log10(int x, RoundingMode mode) {
     checkPositive("x", x);
@@ -198,19 +190,16 @@ public final class IntMath {
   }
 
   // maxLog10ForLeadingZeros[i] == floor(log10(2^(Long.SIZE - i)))
-  @VisibleForTesting
   static final byte[] maxLog10ForLeadingZeros = {
     9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0,
     0
   };
 
-  @VisibleForTesting
   static final int[] powersOf10 = {
     1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000
   };
 
   // halfPowersOf10[i] = largest int less than 10^(i + 0.5)
-  @VisibleForTesting
   static final int[] halfPowersOf10 = {
     3, 31, 316, 3162, 31622, 316227, 3162277, 31622776, 316227766, Integer.MAX_VALUE
   };
@@ -224,7 +213,7 @@ public final class IntMath {
    *
    * @throws IllegalArgumentException if {@code k < 0}
    */
-  @GwtIncompatible // failing tests
+  // failing tests
   public static int pow(int b, int k) {
     checkNonNegative("exponent", k);
     switch (b) {
@@ -265,7 +254,7 @@ public final class IntMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code
    *     sqrt(x)} is not an integer
    */
-  @GwtIncompatible // need BigIntegerMath to adequately test
+  // need BigIntegerMath to adequately test
   @SuppressWarnings("fallthrough")
   public static int sqrt(int x, RoundingMode mode) {
     checkNonNegative("x", x);
@@ -532,7 +521,6 @@ public final class IntMath {
    *
    * @since 20.0
    */
-  @Beta
   public static int saturatedAdd(int a, int b) {
     return Ints.saturatedCast((long) a + b);
   }
@@ -543,7 +531,6 @@ public final class IntMath {
    *
    * @since 20.0
    */
-  @Beta
   public static int saturatedSubtract(int a, int b) {
     return Ints.saturatedCast((long) a - b);
   }
@@ -554,7 +541,6 @@ public final class IntMath {
    *
    * @since 20.0
    */
-  @Beta
   public static int saturatedMultiply(int a, int b) {
     return Ints.saturatedCast((long) a * b);
   }
@@ -565,7 +551,6 @@ public final class IntMath {
    *
    * @since 20.0
    */
-  @Beta
   public static int saturatedPow(int b, int k) {
     checkNonNegative("exponent", k);
     switch (b) {
@@ -612,7 +597,7 @@ public final class IntMath {
     }
   }
 
-  @VisibleForTesting static final int FLOOR_SQRT_MAX_INT = 46340;
+  static final int FLOOR_SQRT_MAX_INT = 46340;
 
   /**
    * Returns {@code n!}, that is, the product of the first {@code n} positive integers, {@code 1} if
@@ -673,7 +658,6 @@ public final class IntMath {
   }
 
   // binomial(biggestBinomials[k], k) fits in an int, but not binomial(biggestBinomials[k]+1,k).
-  @VisibleForTesting
   static int[] biggestBinomials = {
     Integer.MAX_VALUE,
     Integer.MAX_VALUE,
@@ -719,8 +703,7 @@ public final class IntMath {
    * @throws IllegalArgumentException if {@code n} is negative
    * @since 20.0
    */
-  @GwtIncompatible // TODO
-  @Beta
+  // TODO
   public static boolean isPrime(int n) {
     return LongMath.isPrime(n);
   }
diff --git a/android/guava/src/com/google/common/math/LinearTransformation.java b/android/guava/src/com/google/common/math/LinearTransformation.java
index 4cc1eb8..c1cd1b0 100644
--- a/android/guava/src/com/google/common/math/LinearTransformation.java
+++ b/android/guava/src/com/google/common/math/LinearTransformation.java
@@ -18,9 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.math.DoubleUtils.isFinite;
 import static java.lang.Double.NaN;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import javax.annotation.CheckForNull;
 
 /**
@@ -34,8 +31,6 @@ import javax.annotation.CheckForNull;
  * @author Pete Gillin
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class LinearTransformation {
 
@@ -163,7 +158,7 @@ public abstract class LinearTransformation {
     final double slope;
     final double yIntercept;
 
-    @CheckForNull @LazyInit LinearTransformation inverse;
+    @CheckForNull LinearTransformation inverse;
 
     RegularLinearTransformation(double slope, double yIntercept) {
       this.slope = slope;
@@ -221,7 +216,7 @@ public abstract class LinearTransformation {
 
     final double x;
 
-    @CheckForNull @LazyInit LinearTransformation inverse;
+    @CheckForNull LinearTransformation inverse;
 
     VerticalLinearTransformation(double x) {
       this.x = x;
diff --git a/android/guava/src/com/google/common/math/LongMath.java b/android/guava/src/com/google/common/math/LongMath.java
index 1e67812..40be516 100644
--- a/android/guava/src/com/google/common/math/LongMath.java
+++ b/android/guava/src/com/google/common/math/LongMath.java
@@ -25,10 +25,6 @@ import static java.lang.Math.min;
 import static java.math.RoundingMode.HALF_EVEN;
 import static java.math.RoundingMode.HALF_UP;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.primitives.Longs;
 import com.google.common.primitives.UnsignedLongs;
 import java.math.BigInteger;
@@ -48,12 +44,11 @@ import java.math.RoundingMode;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class LongMath {
   // NOTE: Whenever both tests are cheap and functional, it's faster to use &, | instead of &&, ||
 
-  @VisibleForTesting static final long MAX_SIGNED_POWER_OF_TWO = 1L << (Long.SIZE - 2);
+  static final long MAX_SIGNED_POWER_OF_TWO = 1L << (Long.SIZE - 2);
 
   /**
    * Returns the smallest power of two greater than or equal to {@code x}. This is equivalent to
@@ -64,7 +59,6 @@ public final class LongMath {
    *     long}, i.e. when {@code x > 2^62}
    * @since 20.0
    */
-  @Beta
   public static long ceilingPowerOfTwo(long x) {
     checkPositive("x", x);
     if (x > MAX_SIGNED_POWER_OF_TWO) {
@@ -80,7 +74,6 @@ public final class LongMath {
    * @throws IllegalArgumentException if {@code x <= 0}
    * @since 20.0
    */
-  @Beta
   public static long floorPowerOfTwo(long x) {
     checkPositive("x", x);
 
@@ -104,7 +97,6 @@ public final class LongMath {
    * signed long. The implementation is branch-free, and benchmarks suggest it is measurably faster
    * than the straightforward ternary expression.
    */
-  @VisibleForTesting
   static int lessThanBranchFree(long x, long y) {
     // Returns the sign bit of x - y.
     return (int) (~~(x - y) >>> (Long.SIZE - 1));
@@ -149,7 +141,7 @@ public final class LongMath {
   }
 
   /** The biggest half power of two that fits into an unsigned long */
-  @VisibleForTesting static final long MAX_POWER_OF_SQRT2_UNSIGNED = 0xB504F333F9DE6484L;
+  static final long MAX_POWER_OF_SQRT2_UNSIGNED = 0xB504F333F9DE6484L;
 
   /**
    * Returns the base-10 logarithm of {@code x}, rounded according to the specified rounding mode.
@@ -158,7 +150,7 @@ public final class LongMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code x}
    *     is not a power of ten
    */
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("fallthrough")
   // TODO(kevinb): remove after this warning is disabled globally
   public static int log10(long x, RoundingMode mode) {
@@ -185,7 +177,7 @@ public final class LongMath {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   static int log10Floor(long x) {
     /*
      * Based on Hacker's Delight Fig. 11-5, the two-table-lookup, branch-free implementation.
@@ -203,15 +195,13 @@ public final class LongMath {
   }
 
   // maxLog10ForLeadingZeros[i] == floor(log10(2^(Long.SIZE - i)))
-  @VisibleForTesting
   static final byte[] maxLog10ForLeadingZeros = {
     19, 18, 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12,
     12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3,
     3, 2, 2, 2, 1, 1, 1, 0, 0, 0
   };
 
-  @GwtIncompatible // TODO
-  @VisibleForTesting
+  // TODO
   static final long[] powersOf10 = {
     1L,
     10L,
@@ -235,8 +225,7 @@ public final class LongMath {
   };
 
   // halfPowersOf10[i] = largest long less than 10^(i + 0.5)
-  @GwtIncompatible // TODO
-  @VisibleForTesting
+  // TODO
   static final long[] halfPowersOf10 = {
     3L,
     31L,
@@ -266,7 +255,7 @@ public final class LongMath {
    *
    * @throws IllegalArgumentException if {@code k < 0}
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long pow(long b, int k) {
     checkNonNegative("exponent", k);
     if (-2 <= b && b <= 2) {
@@ -309,7 +298,7 @@ public final class LongMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code
    *     sqrt(x)} is not an integer
    */
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("fallthrough")
   public static long sqrt(long x, RoundingMode mode) {
     checkNonNegative("x", x);
@@ -381,7 +370,7 @@ public final class LongMath {
    * @throws ArithmeticException if {@code q == 0}, or if {@code mode == UNNECESSARY} and {@code a}
    *     is not an integer multiple of {@code b}
    */
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("fallthrough")
   public static long divide(long p, long q, RoundingMode mode) {
     checkNotNull(mode);
@@ -454,7 +443,7 @@ public final class LongMath {
    * @see <a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17.3">
    *     Remainder Operator</a>
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static int mod(long x, int m) {
     // Cast is safe because the result is guaranteed in the range [0, m)
     return (int) mod(x, (long) m);
@@ -478,7 +467,7 @@ public final class LongMath {
    * @see <a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17.3">
    *     Remainder Operator</a>
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long mod(long x, long m) {
     if (m <= 0) {
       throw new ArithmeticException("Modulus must be positive");
@@ -543,7 +532,7 @@ public final class LongMath {
    *
    * @throws ArithmeticException if {@code a + b} overflows in signed {@code long} arithmetic
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long checkedAdd(long a, long b) {
     long result = a + b;
     checkNoOverflow((a ^ b) < 0 | (a ^ result) >= 0, "checkedAdd", a, b);
@@ -555,7 +544,7 @@ public final class LongMath {
    *
    * @throws ArithmeticException if {@code a - b} overflows in signed {@code long} arithmetic
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long checkedSubtract(long a, long b) {
     long result = a - b;
     checkNoOverflow((a ^ b) >= 0 | (a ^ result) >= 0, "checkedSubtract", a, b);
@@ -600,7 +589,7 @@ public final class LongMath {
    * @throws ArithmeticException if {@code b} to the {@code k}th power overflows in signed {@code
    *     long} arithmetic
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long checkedPow(long b, int k) {
     checkNonNegative("exponent", k);
     if (b >= -2 & b <= 2) {
@@ -648,7 +637,6 @@ public final class LongMath {
    *
    * @since 20.0
    */
-  @Beta
   public static long saturatedAdd(long a, long b) {
     long naiveSum = a + b;
     if ((a ^ b) < 0 | (a ^ naiveSum) >= 0) {
@@ -666,7 +654,6 @@ public final class LongMath {
    *
    * @since 20.0
    */
-  @Beta
   public static long saturatedSubtract(long a, long b) {
     long naiveDifference = a - b;
     if ((a ^ b) >= 0 | (a ^ naiveDifference) >= 0) {
@@ -684,7 +671,6 @@ public final class LongMath {
    *
    * @since 20.0
    */
-  @Beta
   public static long saturatedMultiply(long a, long b) {
     // see checkedMultiply for explanation
     int leadingZeros =
@@ -714,7 +700,6 @@ public final class LongMath {
    *
    * @since 20.0
    */
-  @Beta
   public static long saturatedPow(long b, int k) {
     checkNonNegative("exponent", k);
     if (b >= -2 & b <= 2) {
@@ -763,7 +748,7 @@ public final class LongMath {
     }
   }
 
-  @VisibleForTesting static final long FLOOR_SQRT_MAX_LONG = 3037000499L;
+  static final long FLOOR_SQRT_MAX_LONG = 3037000499L;
 
   /**
    * Returns {@code n!}, that is, the product of the first {@code n} positive integers, {@code 1} if
@@ -771,7 +756,7 @@ public final class LongMath {
    *
    * @throws IllegalArgumentException if {@code n < 0}
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long factorial(int n) {
     checkNonNegative("n", n);
     return (n < factorials.length) ? factorials[n] : Long.MAX_VALUE;
@@ -924,7 +909,6 @@ public final class LongMath {
    * binomial(biggestSimpleBinomials[k], k) doesn't need to use the slower GCD-based impl, but
    * binomial(biggestSimpleBinomials[k] + 1, k) does.
    */
-  @VisibleForTesting
   static final int[] biggestSimpleBinomials = {
     Integer.MAX_VALUE,
     Integer.MAX_VALUE,
@@ -999,8 +983,7 @@ public final class LongMath {
    * @throws IllegalArgumentException if {@code n} is negative
    * @since 20.0
    */
-  @GwtIncompatible // TODO
-  @Beta
+  // TODO
   public static boolean isPrime(long n) {
     if (n < 2) {
       checkNonNegative("n", n);
@@ -1243,7 +1226,6 @@ public final class LongMath {
    * @since 30.0
    */
   @SuppressWarnings("deprecation")
-  @GwtIncompatible
   public static double roundToDouble(long x, RoundingMode mode) {
     // Logic adapted from ToDoubleRounder.
     double roundArbitrarily = (double) x;
diff --git a/android/guava/src/com/google/common/math/MathPreconditions.java b/android/guava/src/com/google/common/math/MathPreconditions.java
index 37d608a..fa5feb3 100644
--- a/android/guava/src/com/google/common/math/MathPreconditions.java
+++ b/android/guava/src/com/google/common/math/MathPreconditions.java
@@ -14,8 +14,6 @@
 
 package com.google.common.math;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.math.BigInteger;
 import java.math.RoundingMode;
 
@@ -24,8 +22,6 @@ import java.math.RoundingMode;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 final class MathPreconditions {
   static int checkPositive(String role, int x) {
diff --git a/android/guava/src/com/google/common/math/PairedStats.java b/android/guava/src/com/google/common/math/PairedStats.java
index 31ab9b7..c9b4879 100644
--- a/android/guava/src/com/google/common/math/PairedStats.java
+++ b/android/guava/src/com/google/common/math/PairedStats.java
@@ -21,8 +21,6 @@ import static java.lang.Double.NaN;
 import static java.lang.Double.doubleToLongBits;
 import static java.lang.Double.isNaN;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import java.io.Serializable;
@@ -37,8 +35,6 @@ import javax.annotation.CheckForNull;
  * @author Pete Gillin
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class PairedStats implements Serializable {
 
diff --git a/android/guava/src/com/google/common/math/PairedStatsAccumulator.java b/android/guava/src/com/google/common/math/PairedStatsAccumulator.java
index 072ef13..f24331b 100644
--- a/android/guava/src/com/google/common/math/PairedStatsAccumulator.java
+++ b/android/guava/src/com/google/common/math/PairedStatsAccumulator.java
@@ -19,8 +19,6 @@ import static com.google.common.primitives.Doubles.isFinite;
 import static java.lang.Double.NaN;
 import static java.lang.Double.isNaN;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Doubles;
 
 /**
@@ -30,8 +28,6 @@ import com.google.common.primitives.Doubles;
  * @author Pete Gillin
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class PairedStatsAccumulator {
 
diff --git a/android/guava/src/com/google/common/math/ParametricNullness.java b/android/guava/src/com/google/common/math/ParametricNullness.java
index c079b97..6e01027 100644
--- a/android/guava/src/com/google/common/math/ParametricNullness.java
+++ b/android/guava/src/com/google/common/math/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/math/Quantiles.java b/android/guava/src/com/google/common/math/Quantiles.java
index 6ddea9b..a8aecf6 100644
--- a/android/guava/src/com/google/common/math/Quantiles.java
+++ b/android/guava/src/com/google/common/math/Quantiles.java
@@ -21,8 +21,6 @@ import static java.lang.Double.POSITIVE_INFINITY;
 import static java.util.Arrays.sort;
 import static java.util.Collections.unmodifiableMap;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Doubles;
 import com.google.common.primitives.Ints;
 import java.math.RoundingMode;
@@ -126,8 +124,6 @@ import java.util.Map;
  * @author Pete Gillin
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Quantiles {
 
diff --git a/android/guava/src/com/google/common/math/Stats.java b/android/guava/src/com/google/common/math/Stats.java
index c083749..12ce776 100644
--- a/android/guava/src/com/google/common/math/Stats.java
+++ b/android/guava/src/com/google/common/math/Stats.java
@@ -24,8 +24,6 @@ import static java.lang.Double.NaN;
 import static java.lang.Double.doubleToLongBits;
 import static java.lang.Double.isNaN;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import java.io.Serializable;
@@ -58,8 +56,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Stats implements Serializable {
 
diff --git a/android/guava/src/com/google/common/math/StatsAccumulator.java b/android/guava/src/com/google/common/math/StatsAccumulator.java
index f7d7a62..f931b3a 100644
--- a/android/guava/src/com/google/common/math/StatsAccumulator.java
+++ b/android/guava/src/com/google/common/math/StatsAccumulator.java
@@ -20,8 +20,6 @@ import static com.google.common.primitives.Doubles.isFinite;
 import static java.lang.Double.NaN;
 import static java.lang.Double.isNaN;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Iterator;
 
 /**
@@ -32,8 +30,6 @@ import java.util.Iterator;
  * @author Kevin Bourrillion
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class StatsAccumulator {
 
diff --git a/android/guava/src/com/google/common/math/ToDoubleRounder.java b/android/guava/src/com/google/common/math/ToDoubleRounder.java
index 2e7e7fa..dd961d1 100644
--- a/android/guava/src/com/google/common/math/ToDoubleRounder.java
+++ b/android/guava/src/com/google/common/math/ToDoubleRounder.java
@@ -17,14 +17,12 @@ package com.google.common.math;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.math.MathPreconditions.checkRoundingUnnecessary;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.math.RoundingMode;
 
 /**
  * Helper type to implement rounding {@code X} to a representable {@code double} value according to
  * a {@link RoundingMode}.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class ToDoubleRounder<X extends Number & Comparable<X>> {
   /**
diff --git a/android/guava/src/com/google/common/math/package-info.java b/android/guava/src/com/google/common/math/package-info.java
index 0408246..7a00a68 100644
--- a/android/guava/src/com/google/common/math/package-info.java
+++ b/android/guava/src/com/google/common/math/package-info.java
@@ -22,8 +22,6 @@
  * href="https://github.com/google/guava/wiki/MathExplained">math utilities</a>.
  */
 @ParametersAreNonnullByDefault
-@CheckReturnValue
 package com.google.common.math;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/net/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/net/ElementTypesAreNonnullByDefault.java
index d8cfd73..4a695b0 100644
--- a/android/guava/src/com/google/common/net/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/net/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/net/HostAndPort.java b/android/guava/src/com/google/common/net/HostAndPort.java
index 19e6b67..0dbcba9 100644
--- a/android/guava/src/com/google/common/net/HostAndPort.java
+++ b/android/guava/src/com/google/common/net/HostAndPort.java
@@ -18,12 +18,9 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Objects;
 import com.google.common.base.Strings;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -60,9 +57,6 @@ import javax.annotation.CheckForNull;
  * @author Paul Marks
  * @since 10.0
  */
-@Beta
-@Immutable
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class HostAndPort implements Serializable {
   /** Magic value indicating the absence of a port number. */
diff --git a/android/guava/src/com/google/common/net/HostSpecifier.java b/android/guava/src/com/google/common/net/HostSpecifier.java
index 7448944..e568abd 100644
--- a/android/guava/src/com/google/common/net/HostSpecifier.java
+++ b/android/guava/src/com/google/common/net/HostSpecifier.java
@@ -14,8 +14,6 @@
 
 package com.google.common.net;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import java.net.InetAddress;
 import java.text.ParseException;
@@ -41,8 +39,6 @@ import javax.annotation.CheckForNull;
  * @author Craig Berry
  * @since 5.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class HostSpecifier {
 
diff --git a/android/guava/src/com/google/common/net/HttpHeaders.java b/android/guava/src/com/google/common/net/HttpHeaders.java
index f318da1..4c31fdb 100644
--- a/android/guava/src/com/google/common/net/HttpHeaders.java
+++ b/android/guava/src/com/google/common/net/HttpHeaders.java
@@ -14,8 +14,6 @@
 
 package com.google.common.net;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Contains constant definitions for the HTTP header field names. See:
@@ -31,7 +29,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Kurt Alfred Kluever
  * @since 11.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class HttpHeaders {
   private HttpHeaders() {}
@@ -102,7 +99,6 @@ public final class HttpHeaders {
    *
    * @since 17.0
    */
-  @Beta
   public static final String FOLLOW_ONLY_WHEN_PRERENDER_SHOWN = "Follow-Only-When-Prerender-Shown";
   /** The HTTP {@code Host} header field name. */
   public static final String HOST = "Host";
@@ -357,7 +353,7 @@ public final class HttpHeaders {
    *
    * @since 27.1
    */
-  @Beta public static final String SOURCE_MAP = "SourceMap";
+  public static final String SOURCE_MAP = "SourceMap";
 
   /**
    * The HTTP <a href="http://tools.ietf.org/html/rfc6797#section-6.1">{@code
@@ -455,14 +451,14 @@ public final class HttpHeaders {
    *
    * @since 15.0
    */
-  @Beta public static final String PUBLIC_KEY_PINS = "Public-Key-Pins";
+  public static final String PUBLIC_KEY_PINS = "Public-Key-Pins";
   /**
    * The HTTP <a href="http://tools.ietf.org/html/draft-evans-palmer-key-pinning">{@code
    * Public-Key-Pins-Report-Only}</a> header field name.
    *
    * @since 15.0
    */
-  @Beta public static final String PUBLIC_KEY_PINS_REPORT_ONLY = "Public-Key-Pins-Report-Only";
+  public static final String PUBLIC_KEY_PINS_REPORT_ONLY = "Public-Key-Pins-Report-Only";
   /**
    * The HTTP {@code X-Request-ID} header field name.
    *
@@ -482,7 +478,7 @@ public final class HttpHeaders {
    *
    * @since 24.1
    */
-  @Beta public static final String X_DOWNLOAD_OPTIONS = "X-Download-Options";
+  public static final String X_DOWNLOAD_OPTIONS = "X-Download-Options";
   /** The HTTP {@code X-XSS-Protection} header field name. */
   public static final String X_XSS_PROTECTION = "X-XSS-Protection";
   /**
diff --git a/android/guava/src/com/google/common/net/InetAddresses.java b/android/guava/src/com/google/common/net/InetAddresses.java
index 4e2aa69..c609d03 100644
--- a/android/guava/src/com/google/common/net/InetAddresses.java
+++ b/android/guava/src/com/google/common/net/InetAddresses.java
@@ -17,8 +17,6 @@ package com.google.common.net;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.MoreObjects;
 import com.google.common.hash.Hashing;
@@ -95,8 +93,6 @@ import javax.annotation.CheckForNull;
  * @author Erik Kline
  * @since 5.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class InetAddresses {
   private static final int IPV4_PART_COUNT = 4;
@@ -667,7 +663,6 @@ public final class InetAddresses {
    *
    * @since 5.0
    */
-  @Beta
   public static final class TeredoInfo {
     private final Inet4Address server;
     private final Inet4Address client;
diff --git a/android/guava/src/com/google/common/net/InternetDomainName.java b/android/guava/src/com/google/common/net/InternetDomainName.java
index 5873449..5ac415d 100644
--- a/android/guava/src/com/google/common/net/InternetDomainName.java
+++ b/android/guava/src/com/google/common/net/InternetDomainName.java
@@ -18,15 +18,11 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Joiner;
 import com.google.common.base.Optional;
 import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableList;
-import com.google.errorprone.annotations.Immutable;
 import com.google.thirdparty.publicsuffix.PublicSuffixPatterns;
 import com.google.thirdparty.publicsuffix.PublicSuffixType;
 import java.util.List;
@@ -71,9 +67,6 @@ import javax.annotation.CheckForNull;
  * @author Catherine Berry
  * @since 5.0
  */
-@Beta
-@GwtCompatible(emulated = true)
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class InternetDomainName {
 
diff --git a/android/guava/src/com/google/common/net/MediaType.java b/android/guava/src/com/google/common/net/MediaType.java
index ca47161..f453bc1 100644
--- a/android/guava/src/com/google/common/net/MediaType.java
+++ b/android/guava/src/com/google/common/net/MediaType.java
@@ -21,8 +21,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Function;
@@ -31,14 +29,9 @@ import com.google.common.base.Joiner.MapJoiner;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Multimaps;
-import com.google.errorprone.annotations.Immutable;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.nio.charset.Charset;
 import java.nio.charset.IllegalCharsetNameException;
 import java.nio.charset.UnsupportedCharsetException;
@@ -72,9 +65,6 @@ import javax.annotation.CheckForNull;
  * @since 12.0
  * @author Gregory Kick
  */
-@Beta
-@GwtCompatible
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class MediaType {
   private static final String CHARSET_ATTRIBUTE = "charset";
@@ -764,11 +754,11 @@ public final class MediaType {
   private final String subtype;
   private final ImmutableListMultimap<String, String> parameters;
 
-  @LazyInit @CheckForNull private String toString;
+  @CheckForNull private String toString;
 
-  @LazyInit private int hashCode;
+  private int hashCode;
 
-  @LazyInit @CheckForNull private Optional<Charset> parsedCharset;
+  @CheckForNull private Optional<Charset> parsedCharset;
 
   private MediaType(String type, String subtype, ImmutableListMultimap<String, String> parameters) {
     this.type = type;
diff --git a/android/guava/src/com/google/common/net/ParametricNullness.java b/android/guava/src/com/google/common/net/ParametricNullness.java
index acc3eab..5491552 100644
--- a/android/guava/src/com/google/common/net/ParametricNullness.java
+++ b/android/guava/src/com/google/common/net/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/net/PercentEscaper.java b/android/guava/src/com/google/common/net/PercentEscaper.java
index 7c7de9b..9ac1b2b 100644
--- a/android/guava/src/com/google/common/net/PercentEscaper.java
+++ b/android/guava/src/com/google/common/net/PercentEscaper.java
@@ -16,8 +16,6 @@ package com.google.common.net;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.UnicodeEscaper;
 import javax.annotation.CheckForNull;
 
@@ -50,8 +48,6 @@ import javax.annotation.CheckForNull;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class PercentEscaper extends UnicodeEscaper {
 
diff --git a/android/guava/src/com/google/common/net/UrlEscapers.java b/android/guava/src/com/google/common/net/UrlEscapers.java
index c7e15ef..53db211 100644
--- a/android/guava/src/com/google/common/net/UrlEscapers.java
+++ b/android/guava/src/com/google/common/net/UrlEscapers.java
@@ -14,7 +14,6 @@
 
 package com.google.common.net;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.Escaper;
 
 /**
@@ -28,7 +27,6 @@ import com.google.common.escape.Escaper;
  * @author Chris Povirk
  * @since 15.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class UrlEscapers {
   private UrlEscapers() {}
diff --git a/android/guava/src/com/google/common/primitives/Booleans.java b/android/guava/src/com/google/common/primitives/Booleans.java
index 522049b..588e822 100644
--- a/android/guava/src/com/google/common/primitives/Booleans.java
+++ b/android/guava/src/com/google/common/primitives/Booleans.java
@@ -19,8 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -41,7 +39,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Booleans {
   private Booleans() {}
@@ -80,7 +77,6 @@ public final class Booleans {
    *
    * @since 21.0
    */
-  @Beta
   public static Comparator<Boolean> trueFirst() {
     return BooleanComparator.TRUE_FIRST;
   }
@@ -93,7 +89,6 @@ public final class Booleans {
    *
    * @since 21.0
    */
-  @Beta
   public static Comparator<Boolean> falseFirst() {
     return BooleanComparator.FALSE_FIRST;
   }
@@ -375,7 +370,6 @@ public final class Booleans {
     return new BooleanArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class BooleanArrayAsList extends AbstractList<Boolean>
       implements RandomAccess, Serializable {
     final boolean[] array;
@@ -510,7 +504,6 @@ public final class Booleans {
    *
    * @since 16.0
    */
-  @Beta
   public static int countTrue(boolean... values) {
     int count = 0;
     for (boolean value : values) {
diff --git a/android/guava/src/com/google/common/primitives/Bytes.java b/android/guava/src/com/google/common/primitives/Bytes.java
index 62997f3..67b1b5e 100644
--- a/android/guava/src/com/google/common/primitives/Bytes.java
+++ b/android/guava/src/com/google/common/primitives/Bytes.java
@@ -19,7 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -43,7 +42,6 @@ import javax.annotation.CheckForNull;
  */
 // TODO(kevinb): how to prevent warning on UnsignedBytes when building GWT
 // javadoc?
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Bytes {
   private Bytes() {}
@@ -237,7 +235,6 @@ public final class Bytes {
     return new ByteArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class ByteArrayAsList extends AbstractList<Byte>
       implements RandomAccess, Serializable {
     final byte[] array;
diff --git a/android/guava/src/com/google/common/primitives/Chars.java b/android/guava/src/com/google/common/primitives/Chars.java
index 4a2e3a3..0dd62ac 100644
--- a/android/guava/src/com/google/common/primitives/Chars.java
+++ b/android/guava/src/com/google/common/primitives/Chars.java
@@ -19,9 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -45,7 +42,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Chars {
   private Chars() {}
@@ -258,7 +254,6 @@ public final class Chars {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static char constrainToRange(char value, char min, char max) {
     checkArgument(min <= max, "min (%s) must be less than or equal to max (%s)", min, max);
     return value < min ? min : value < max ? value : max;
@@ -294,7 +289,7 @@ public final class Chars {
    * use a shared {@link java.nio.ByteBuffer} instance, or use {@link
    * com.google.common.io.ByteStreams#newDataOutput()} to get a growable buffer.
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static byte[] toByteArray(char value) {
     return new byte[] {(byte) (value >> 8), (byte) value};
   }
@@ -309,7 +304,7 @@ public final class Chars {
    *
    * @throws IllegalArgumentException if {@code bytes} has fewer than 2 elements
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static char fromByteArray(byte[] bytes) {
     checkArgument(bytes.length >= BYTES, "array too small: %s < %s", bytes.length, BYTES);
     return fromBytes(bytes[0], bytes[1]);
@@ -321,7 +316,7 @@ public final class Chars {
    *
    * @since 7.0
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static char fromBytes(byte b1, byte b2) {
     return (char) ((b1 << 8) | (b2 & 0xFF));
   }
@@ -507,7 +502,6 @@ public final class Chars {
     return new CharArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class CharArrayAsList extends AbstractList<Character>
       implements RandomAccess, Serializable {
     final char[] array;
diff --git a/android/guava/src/com/google/common/primitives/Doubles.java b/android/guava/src/com/google/common/primitives/Doubles.java
index ce5df2e..3e33cd9 100644
--- a/android/guava/src/com/google/common/primitives/Doubles.java
+++ b/android/guava/src/com/google/common/primitives/Doubles.java
@@ -22,9 +22,6 @@ import static com.google.common.base.Strings.lenientFormat;
 import static java.lang.Double.NEGATIVE_INFINITY;
 import static java.lang.Double.POSITIVE_INFINITY;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import java.io.Serializable;
 import java.util.AbstractList;
@@ -46,7 +43,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Doubles extends DoublesMethodsForWeb {
   private Doubles() {}
@@ -209,8 +205,6 @@ public final class Doubles extends DoublesMethodsForWeb {
    *     the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static double min(double... array) {
     checkArgument(array.length > 0);
     double min = array[0];
@@ -229,8 +223,6 @@ public final class Doubles extends DoublesMethodsForWeb {
    *     in the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static double max(double... array) {
     checkArgument(array.length > 0);
     double max = array[0];
@@ -253,7 +245,6 @@ public final class Doubles extends DoublesMethodsForWeb {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static double constrainToRange(double value, double min, double max) {
     // avoid auto-boxing by not using Preconditions.checkArgument(); see Guava issue 3984
     // Reject NaN by testing for the good case (min <= max) instead of the bad (min > max).
@@ -318,7 +309,6 @@ public final class Doubles extends DoublesMethodsForWeb {
    *
    * @since 16.0
    */
-  @Beta
   public static Converter<String, Double> stringConverter() {
     return DoubleConverter.INSTANCE;
   }
@@ -520,7 +510,6 @@ public final class Doubles extends DoublesMethodsForWeb {
     return new DoubleArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class DoubleArrayAsList extends AbstractList<Double>
       implements RandomAccess, Serializable {
     final double[] array;
@@ -655,12 +644,12 @@ public final class Doubles extends DoublesMethodsForWeb {
    * inputs. All valid inputs must pass this regex, but it's semantically fine if not all inputs
    * that pass this regex are valid -- only a performance hit is incurred, not a semantics bug.
    */
-  @GwtIncompatible // regular expressions
+  // regular expressions
   static final
   java.util.regex.Pattern
       FLOATING_POINT_PATTERN = fpPattern();
 
-  @GwtIncompatible // regular expressions
+  // regular expressions
   private static
   java.util.regex.Pattern
       fpPattern() {
@@ -701,8 +690,7 @@ public final class Doubles extends DoublesMethodsForWeb {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 14.0
    */
-  @Beta
-  @GwtIncompatible // regular expressions
+  // regular expressions
   @CheckForNull
   public static Double tryParse(String string) {
     if (FLOATING_POINT_PATTERN.matcher(string).matches()) {
diff --git a/android/guava/src/com/google/common/primitives/DoublesMethodsForWeb.java b/android/guava/src/com/google/common/primitives/DoublesMethodsForWeb.java
index 949cbe0..3023272 100644
--- a/android/guava/src/com/google/common/primitives/DoublesMethodsForWeb.java
+++ b/android/guava/src/com/google/common/primitives/DoublesMethodsForWeb.java
@@ -14,12 +14,10 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Holder for web specializations of methods of {@code Doubles}. Intended to be empty for regular
  * version.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class DoublesMethodsForWeb {}
diff --git a/android/guava/src/com/google/common/primitives/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/primitives/ElementTypesAreNonnullByDefault.java
index 44f6869..c9c38f1 100644
--- a/android/guava/src/com/google/common/primitives/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/primitives/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/primitives/Floats.java b/android/guava/src/com/google/common/primitives/Floats.java
index b038cb2..7442e41 100644
--- a/android/guava/src/com/google/common/primitives/Floats.java
+++ b/android/guava/src/com/google/common/primitives/Floats.java
@@ -22,9 +22,6 @@ import static com.google.common.base.Strings.lenientFormat;
 import static java.lang.Float.NEGATIVE_INFINITY;
 import static java.lang.Float.POSITIVE_INFINITY;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import java.io.Serializable;
 import java.util.AbstractList;
@@ -46,7 +43,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Floats extends FloatsMethodsForWeb {
   private Floats() {}
@@ -206,8 +202,6 @@ public final class Floats extends FloatsMethodsForWeb {
    *     the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static float min(float... array) {
     checkArgument(array.length > 0);
     float min = array[0];
@@ -226,8 +220,6 @@ public final class Floats extends FloatsMethodsForWeb {
    *     in the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static float max(float... array) {
     checkArgument(array.length > 0);
     float max = array[0];
@@ -250,7 +242,6 @@ public final class Floats extends FloatsMethodsForWeb {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static float constrainToRange(float value, float min, float max) {
     // avoid auto-boxing by not using Preconditions.checkArgument(); see Guava issue 3984
     // Reject NaN by testing for the good case (min <= max) instead of the bad (min > max).
@@ -315,7 +306,6 @@ public final class Floats extends FloatsMethodsForWeb {
    *
    * @since 16.0
    */
-  @Beta
   public static Converter<String, Float> stringConverter() {
     return FloatConverter.INSTANCE;
   }
@@ -514,7 +504,6 @@ public final class Floats extends FloatsMethodsForWeb {
     return new FloatArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class FloatArrayAsList extends AbstractList<Float>
       implements RandomAccess, Serializable {
     final float[] array;
@@ -660,8 +649,7 @@ public final class Floats extends FloatsMethodsForWeb {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 14.0
    */
-  @Beta
-  @GwtIncompatible // regular expressions
+  // regular expressions
   @CheckForNull
   public static Float tryParse(String string) {
     if (Doubles.FLOATING_POINT_PATTERN.matcher(string).matches()) {
diff --git a/android/guava/src/com/google/common/primitives/FloatsMethodsForWeb.java b/android/guava/src/com/google/common/primitives/FloatsMethodsForWeb.java
index 801e2f3..2d2eb45 100644
--- a/android/guava/src/com/google/common/primitives/FloatsMethodsForWeb.java
+++ b/android/guava/src/com/google/common/primitives/FloatsMethodsForWeb.java
@@ -14,12 +14,10 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Holder for web specializations of methods of {@code Floats}. Intended to be empty for regular
  * version.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class FloatsMethodsForWeb {}
diff --git a/android/guava/src/com/google/common/primitives/ImmutableDoubleArray.java b/android/guava/src/com/google/common/primitives/ImmutableDoubleArray.java
index 1627fab..4cb3990 100644
--- a/android/guava/src/com/google/common/primitives/ImmutableDoubleArray.java
+++ b/android/guava/src/com/google/common/primitives/ImmutableDoubleArray.java
@@ -16,12 +16,7 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CheckReturnValue;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -77,9 +72,6 @@ import javax.annotation.CheckForNull;
  *
  * @since 22.0
  */
-@Beta
-@GwtCompatible
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class ImmutableDoubleArray implements Serializable {
   private static final ImmutableDoubleArray EMPTY = new ImmutableDoubleArray(new double[0]);
@@ -195,7 +187,6 @@ public final class ImmutableDoubleArray implements Serializable {
    * A builder for {@link ImmutableDoubleArray} instances; obtained using {@link
    * ImmutableDoubleArray#builder}.
    */
-  @CanIgnoreReturnValue
   public static final class Builder {
     private double[] array;
     private int count = 0; // <= array.length
@@ -294,7 +285,6 @@ public final class ImmutableDoubleArray implements Serializable {
      * no data is copied as part of this step, but this may occupy more memory than strictly
      * necessary. To copy the data to a right-sized backing array, use {@code .build().trimmed()}.
      */
-    @CheckReturnValue
     public ImmutableDoubleArray build() {
       return count == 0 ? EMPTY : new ImmutableDoubleArray(array, 0, count);
     }
diff --git a/android/guava/src/com/google/common/primitives/ImmutableIntArray.java b/android/guava/src/com/google/common/primitives/ImmutableIntArray.java
index 8f972c4..af2170e 100644
--- a/android/guava/src/com/google/common/primitives/ImmutableIntArray.java
+++ b/android/guava/src/com/google/common/primitives/ImmutableIntArray.java
@@ -16,12 +16,7 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CheckReturnValue;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -77,9 +72,6 @@ import javax.annotation.CheckForNull;
  *
  * @since 22.0
  */
-@Beta
-@GwtCompatible
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class ImmutableIntArray implements Serializable {
   private static final ImmutableIntArray EMPTY = new ImmutableIntArray(new int[0]);
@@ -192,7 +184,6 @@ public final class ImmutableIntArray implements Serializable {
    * A builder for {@link ImmutableIntArray} instances; obtained using {@link
    * ImmutableIntArray#builder}.
    */
-  @CanIgnoreReturnValue
   public static final class Builder {
     private int[] array;
     private int count = 0; // <= array.length
@@ -291,7 +282,6 @@ public final class ImmutableIntArray implements Serializable {
      * no data is copied as part of this step, but this may occupy more memory than strictly
      * necessary. To copy the data to a right-sized backing array, use {@code .build().trimmed()}.
      */
-    @CheckReturnValue
     public ImmutableIntArray build() {
       return count == 0 ? EMPTY : new ImmutableIntArray(array, 0, count);
     }
diff --git a/android/guava/src/com/google/common/primitives/ImmutableLongArray.java b/android/guava/src/com/google/common/primitives/ImmutableLongArray.java
index 4ebf5b4..70513c7 100644
--- a/android/guava/src/com/google/common/primitives/ImmutableLongArray.java
+++ b/android/guava/src/com/google/common/primitives/ImmutableLongArray.java
@@ -16,12 +16,7 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CheckReturnValue;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -77,9 +72,6 @@ import javax.annotation.CheckForNull;
  *
  * @since 22.0
  */
-@Beta
-@GwtCompatible
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class ImmutableLongArray implements Serializable {
   private static final ImmutableLongArray EMPTY = new ImmutableLongArray(new long[0]);
@@ -194,7 +186,6 @@ public final class ImmutableLongArray implements Serializable {
    * A builder for {@link ImmutableLongArray} instances; obtained using {@link
    * ImmutableLongArray#builder}.
    */
-  @CanIgnoreReturnValue
   public static final class Builder {
     private long[] array;
     private int count = 0; // <= array.length
@@ -293,7 +284,6 @@ public final class ImmutableLongArray implements Serializable {
      * no data is copied as part of this step, but this may occupy more memory than strictly
      * necessary. To copy the data to a right-sized backing array, use {@code .build().trimmed()}.
      */
-    @CheckReturnValue
     public ImmutableLongArray build() {
       return count == 0 ? EMPTY : new ImmutableLongArray(array, 0, count);
     }
diff --git a/android/guava/src/com/google/common/primitives/Ints.java b/android/guava/src/com/google/common/primitives/Ints.java
index e07bdd8..d4b8cee 100644
--- a/android/guava/src/com/google/common/primitives/Ints.java
+++ b/android/guava/src/com/google/common/primitives/Ints.java
@@ -19,9 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import java.io.Serializable;
 import java.util.AbstractList;
@@ -43,7 +40,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Ints extends IntsMethodsForWeb {
   private Ints() {}
@@ -220,8 +216,6 @@ public final class Ints extends IntsMethodsForWeb {
    *     the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static int min(int... array) {
     checkArgument(array.length > 0);
     int min = array[0];
@@ -241,8 +235,6 @@ public final class Ints extends IntsMethodsForWeb {
    *     in the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static int max(int... array) {
     checkArgument(array.length > 0);
     int max = array[0];
@@ -267,7 +259,6 @@ public final class Ints extends IntsMethodsForWeb {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static int constrainToRange(int value, int min, int max) {
     checkArgument(min <= max, "min (%s) must be less than or equal to max (%s)", min, max);
     return Math.min(Math.max(value, min), max);
@@ -372,7 +363,6 @@ public final class Ints extends IntsMethodsForWeb {
    *
    * @since 16.0
    */
-  @Beta
   public static Converter<String, Integer> stringConverter() {
     return IntConverter.INSTANCE;
   }
@@ -560,7 +550,6 @@ public final class Ints extends IntsMethodsForWeb {
     return new IntArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class IntArrayAsList extends AbstractList<Integer>
       implements RandomAccess, Serializable {
     final int[] array;
@@ -706,7 +695,6 @@ public final class Ints extends IntsMethodsForWeb {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 11.0
    */
-  @Beta
   @CheckForNull
   public static Integer tryParse(String string) {
     return tryParse(string, 10);
@@ -732,7 +720,6 @@ public final class Ints extends IntsMethodsForWeb {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 19.0
    */
-  @Beta
   @CheckForNull
   public static Integer tryParse(String string, int radix) {
     Long result = Longs.tryParse(string, radix);
diff --git a/android/guava/src/com/google/common/primitives/IntsMethodsForWeb.java b/android/guava/src/com/google/common/primitives/IntsMethodsForWeb.java
index c59c6b0..85bd1bf 100644
--- a/android/guava/src/com/google/common/primitives/IntsMethodsForWeb.java
+++ b/android/guava/src/com/google/common/primitives/IntsMethodsForWeb.java
@@ -14,12 +14,10 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Holder for web specializations of methods of {@code Ints}. Intended to be empty for regular
  * version.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class IntsMethodsForWeb {}
diff --git a/android/guava/src/com/google/common/primitives/Longs.java b/android/guava/src/com/google/common/primitives/Longs.java
index 6f60656..e9c7644 100644
--- a/android/guava/src/com/google/common/primitives/Longs.java
+++ b/android/guava/src/com/google/common/primitives/Longs.java
@@ -19,8 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Converter;
 import java.io.Serializable;
 import java.util.AbstractList;
@@ -42,7 +40,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Longs {
   private Longs() {}
@@ -234,7 +231,6 @@ public final class Longs {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static long constrainToRange(long value, long min, long max) {
     checkArgument(min <= max, "min (%s) must be less than or equal to max (%s)", min, max);
     return Math.min(Math.max(value, min), max);
@@ -361,7 +357,6 @@ public final class Longs {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 14.0
    */
-  @Beta
   @CheckForNull
   public static Long tryParse(String string) {
     return tryParse(string, 10);
@@ -387,7 +382,6 @@ public final class Longs {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 19.0
    */
-  @Beta
   @CheckForNull
   public static Long tryParse(String string, int radix) {
     if (checkNotNull(string).isEmpty()) {
@@ -467,7 +461,6 @@ public final class Longs {
    *
    * @since 16.0
    */
-  @Beta
   public static Converter<String, Long> stringConverter() {
     return LongConverter.INSTANCE;
   }
@@ -656,7 +649,6 @@ public final class Longs {
     return new LongArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class LongArrayAsList extends AbstractList<Long>
       implements RandomAccess, Serializable {
     final long[] array;
diff --git a/android/guava/src/com/google/common/primitives/ParametricNullness.java b/android/guava/src/com/google/common/primitives/ParametricNullness.java
index 17d606c..b23e60b 100644
--- a/android/guava/src/com/google/common/primitives/ParametricNullness.java
+++ b/android/guava/src/com/google/common/primitives/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/primitives/ParseRequest.java b/android/guava/src/com/google/common/primitives/ParseRequest.java
index a102d69..c63bcb6 100644
--- a/android/guava/src/com/google/common/primitives/ParseRequest.java
+++ b/android/guava/src/com/google/common/primitives/ParseRequest.java
@@ -14,10 +14,8 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /** A string to be parsed as a number and the radix to interpret it in. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class ParseRequest {
   final String rawValue;
diff --git a/android/guava/src/com/google/common/primitives/Platform.java b/android/guava/src/com/google/common/primitives/Platform.java
index 83b2485..1fe82d0 100644
--- a/android/guava/src/com/google/common/primitives/Platform.java
+++ b/android/guava/src/com/google/common/primitives/Platform.java
@@ -14,10 +14,8 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /** Methods factored out so that they can be emulated differently in GWT. */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class Platform {
   static void checkGwtRpcEnabled() {}
diff --git a/android/guava/src/com/google/common/primitives/Primitives.java b/android/guava/src/com/google/common/primitives/Primitives.java
index 7ceed03..e7945c4 100644
--- a/android/guava/src/com/google/common/primitives/Primitives.java
+++ b/android/guava/src/com/google/common/primitives/Primitives.java
@@ -16,7 +16,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -29,7 +28,6 @@ import java.util.Set;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Primitives {
   private Primitives() {}
diff --git a/android/guava/src/com/google/common/primitives/Shorts.java b/android/guava/src/com/google/common/primitives/Shorts.java
index 09e0f7c..ad250e1 100644
--- a/android/guava/src/com/google/common/primitives/Shorts.java
+++ b/android/guava/src/com/google/common/primitives/Shorts.java
@@ -19,9 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import java.io.Serializable;
 import java.util.AbstractList;
@@ -43,7 +40,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Shorts extends ShortsMethodsForWeb {
   private Shorts() {}
@@ -219,8 +215,6 @@ public final class Shorts extends ShortsMethodsForWeb {
    *     the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static short min(short... array) {
     checkArgument(array.length > 0);
     short min = array[0];
@@ -240,8 +234,6 @@ public final class Shorts extends ShortsMethodsForWeb {
    *     in the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static short max(short... array) {
     checkArgument(array.length > 0);
     short max = array[0];
@@ -266,7 +258,6 @@ public final class Shorts extends ShortsMethodsForWeb {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static short constrainToRange(short value, short min, short max) {
     checkArgument(min <= max, "min (%s) must be less than or equal to max (%s)", min, max);
     return value < min ? min : value < max ? value : max;
@@ -303,7 +294,7 @@ public final class Shorts extends ShortsMethodsForWeb {
    * use a shared {@link java.nio.ByteBuffer} instance, or use {@link
    * com.google.common.io.ByteStreams#newDataOutput()} to get a growable buffer.
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static byte[] toByteArray(short value) {
     return new byte[] {(byte) (value >> 8), (byte) value};
   }
@@ -318,7 +309,7 @@ public final class Shorts extends ShortsMethodsForWeb {
    *
    * @throws IllegalArgumentException if {@code bytes} has fewer than 2 elements
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static short fromByteArray(byte[] bytes) {
     checkArgument(bytes.length >= BYTES, "array too small: %s < %s", bytes.length, BYTES);
     return fromBytes(bytes[0], bytes[1]);
@@ -330,7 +321,7 @@ public final class Shorts extends ShortsMethodsForWeb {
    *
    * @since 7.0
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static short fromBytes(byte b1, byte b2) {
     return (short) ((b1 << 8) | (b2 & 0xFF));
   }
@@ -372,7 +363,6 @@ public final class Shorts extends ShortsMethodsForWeb {
    *
    * @since 16.0
    */
-  @Beta
   public static Converter<String, Short> stringConverter() {
     return ShortConverter.INSTANCE;
   }
@@ -559,7 +549,6 @@ public final class Shorts extends ShortsMethodsForWeb {
     return new ShortArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class ShortArrayAsList extends AbstractList<Short>
       implements RandomAccess, Serializable {
     final short[] array;
diff --git a/android/guava/src/com/google/common/primitives/ShortsMethodsForWeb.java b/android/guava/src/com/google/common/primitives/ShortsMethodsForWeb.java
index bb0ff10..aeb0825 100644
--- a/android/guava/src/com/google/common/primitives/ShortsMethodsForWeb.java
+++ b/android/guava/src/com/google/common/primitives/ShortsMethodsForWeb.java
@@ -14,12 +14,10 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Holder for web specializations of methods of {@code Shorts}. Intended to be empty for regular
  * version.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ShortsMethodsForWeb {}
diff --git a/android/guava/src/com/google/common/primitives/SignedBytes.java b/android/guava/src/com/google/common/primitives/SignedBytes.java
index 5fabaab..9416d83 100644
--- a/android/guava/src/com/google/common/primitives/SignedBytes.java
+++ b/android/guava/src/com/google/common/primitives/SignedBytes.java
@@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Arrays;
 import java.util.Comparator;
 
@@ -35,7 +34,6 @@ import java.util.Comparator;
  */
 // TODO(kevinb): how to prevent warning on UnsignedBytes when building GWT
 // javadoc?
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class SignedBytes {
   private SignedBytes() {}
diff --git a/android/guava/src/com/google/common/primitives/UnsignedBytes.java b/android/guava/src/com/google/common/primitives/UnsignedBytes.java
index bf9a306..8588e8c 100644
--- a/android/guava/src/com/google/common/primitives/UnsignedBytes.java
+++ b/android/guava/src/com/google/common/primitives/UnsignedBytes.java
@@ -17,12 +17,7 @@ package com.google.common.primitives;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteOrder;
 import java.util.Arrays;
 import java.util.Comparator;
@@ -43,7 +38,6 @@ import sun.misc.Unsafe;
  * @author Louis Wasserman
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class UnsignedBytes {
   private UnsignedBytes() {}
@@ -84,7 +78,6 @@ public final class UnsignedBytes {
    * @return the {@code byte} value that, when treated as unsigned, equals {@code value}
    * @throws IllegalArgumentException if {@code value} is negative or greater than 255
    */
-  @CanIgnoreReturnValue
   public static byte checkedCast(long value) {
     checkArgument(value >> Byte.SIZE == 0, "out of range: %s", value);
     return (byte) value;
@@ -167,7 +160,6 @@ public final class UnsignedBytes {
    *
    * @since 13.0
    */
-  @Beta
   public static String toString(byte x) {
     return toString(x, 10);
   }
@@ -182,7 +174,6 @@ public final class UnsignedBytes {
    *     and {@link Character#MAX_RADIX}.
    * @since 13.0
    */
-  @Beta
   public static String toString(byte x, int radix) {
     checkArgument(
         radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX,
@@ -201,8 +192,6 @@ public final class UnsignedBytes {
    *     Byte#parseByte(String)})
    * @since 13.0
    */
-  @Beta
-  @CanIgnoreReturnValue
   public static byte parseUnsignedByte(String string) {
     return parseUnsignedByte(string, 10);
   }
@@ -219,8 +208,6 @@ public final class UnsignedBytes {
    *     Byte#parseByte(String)})
    * @since 13.0
    */
-  @Beta
-  @CanIgnoreReturnValue
   public static byte parseUnsignedByte(String string, int radix) {
     int parse = Integer.parseInt(checkNotNull(string), radix);
     // We need to throw a NumberFormatException, so we have to duplicate checkedCast. =(
@@ -273,7 +260,6 @@ public final class UnsignedBytes {
     return LexicographicalComparatorHolder.BEST_COMPARATOR;
   }
 
-  @VisibleForTesting
   static Comparator<byte[]> lexicographicalComparatorJavaImpl() {
     return LexicographicalComparatorHolder.PureJavaComparator.INSTANCE;
   }
@@ -285,14 +271,12 @@ public final class UnsignedBytes {
    * <p>Uses reflection to gracefully fall back to the Java implementation if {@code Unsafe} isn't
    * available.
    */
-  @VisibleForTesting
   static class LexicographicalComparatorHolder {
     static final String UNSAFE_COMPARATOR_NAME =
         LexicographicalComparatorHolder.class.getName() + "$UnsafeComparator";
 
     static final Comparator<byte[]> BEST_COMPARATOR = getBestComparator();
 
-    @VisibleForTesting
     enum UnsafeComparator implements Comparator<byte[]> {
       INSTANCE;
 
diff --git a/android/guava/src/com/google/common/primitives/UnsignedInteger.java b/android/guava/src/com/google/common/primitives/UnsignedInteger.java
index 0b30cef..33b604d 100644
--- a/android/guava/src/com/google/common/primitives/UnsignedInteger.java
+++ b/android/guava/src/com/google/common/primitives/UnsignedInteger.java
@@ -20,8 +20,6 @@ import static com.google.common.primitives.UnsignedInts.INT_MASK;
 import static com.google.common.primitives.UnsignedInts.compare;
 import static com.google.common.primitives.UnsignedInts.toLong;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.math.BigInteger;
 import javax.annotation.CheckForNull;
 
@@ -38,7 +36,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class UnsignedInteger extends Number implements Comparable<UnsignedInteger> {
   public static final UnsignedInteger ZERO = fromIntBits(0);
@@ -143,7 +140,7 @@ public final class UnsignedInteger extends Number implements Comparable<Unsigned
    *
    * @since 14.0
    */
-  @GwtIncompatible // Does not truncate correctly
+  // Does not truncate correctly
   public UnsignedInteger times(UnsignedInteger val) {
     // TODO(lowasser): make this GWT-compatible
     return fromIntBits(value * checkNotNull(val).value);
diff --git a/android/guava/src/com/google/common/primitives/UnsignedInts.java b/android/guava/src/com/google/common/primitives/UnsignedInts.java
index ec6474e..4df9cd2 100644
--- a/android/guava/src/com/google/common/primitives/UnsignedInts.java
+++ b/android/guava/src/com/google/common/primitives/UnsignedInts.java
@@ -18,9 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Arrays;
 import java.util.Comparator;
 
@@ -45,8 +42,6 @@ import java.util.Comparator;
  * @author Louis Wasserman
  * @since 11.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class UnsignedInts {
   static final long INT_MASK = 0xffffffffL;
@@ -312,7 +307,6 @@ public final class UnsignedInts {
    * @throws NumberFormatException if the string does not contain a valid unsigned {@code int} value
    * @since 13.0
    */
-  @CanIgnoreReturnValue
   public static int decode(String stringValue) {
     ParseRequest request = ParseRequest.fromString(stringValue);
 
@@ -335,7 +329,6 @@ public final class UnsignedInts {
    * @throws NullPointerException if {@code s} is null (in contrast to {@link
    *     Integer#parseInt(String)})
    */
-  @CanIgnoreReturnValue
   public static int parseUnsignedInt(String s) {
     return parseUnsignedInt(s, 10);
   }
@@ -353,7 +346,6 @@ public final class UnsignedInts {
    * @throws NullPointerException if {@code s} is null (in contrast to {@link
    *     Integer#parseInt(String)})
    */
-  @CanIgnoreReturnValue
   public static int parseUnsignedInt(String string, int radix) {
     checkNotNull(string);
     long result = Long.parseLong(string, radix);
diff --git a/android/guava/src/com/google/common/primitives/UnsignedLong.java b/android/guava/src/com/google/common/primitives/UnsignedLong.java
index d803634..51a9f64 100644
--- a/android/guava/src/com/google/common/primitives/UnsignedLong.java
+++ b/android/guava/src/com/google/common/primitives/UnsignedLong.java
@@ -17,8 +17,6 @@ package com.google.common.primitives;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.math.BigInteger;
 import javax.annotation.CheckForNull;
@@ -37,7 +35,6 @@ import javax.annotation.CheckForNull;
  * @author Colin Evans
  * @since 11.0
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 public final class UnsignedLong extends Number implements Comparable<UnsignedLong>, Serializable {
 
@@ -77,7 +74,6 @@ public final class UnsignedLong extends Number implements Comparable<UnsignedLon
    * @throws IllegalArgumentException if {@code value} is negative
    * @since 14.0
    */
-  @CanIgnoreReturnValue
   public static UnsignedLong valueOf(long value) {
     checkArgument(value >= 0, "value (%s) is outside the range for an unsigned long value", value);
     return fromLongBits(value);
@@ -89,7 +85,6 @@ public final class UnsignedLong extends Number implements Comparable<UnsignedLon
    *
    * @throws IllegalArgumentException if {@code value} is negative or {@code value >= 2^64}
    */
-  @CanIgnoreReturnValue
   public static UnsignedLong valueOf(BigInteger value) {
     checkNotNull(value);
     checkArgument(
@@ -106,7 +101,6 @@ public final class UnsignedLong extends Number implements Comparable<UnsignedLon
    * @throws NumberFormatException if the string does not contain a parsable unsigned {@code long}
    *     value
    */
-  @CanIgnoreReturnValue
   public static UnsignedLong valueOf(String string) {
     return valueOf(string, 10);
   }
@@ -119,7 +113,6 @@ public final class UnsignedLong extends Number implements Comparable<UnsignedLon
    *     value, or {@code radix} is not between {@link Character#MIN_RADIX} and {@link
    *     Character#MAX_RADIX}
    */
-  @CanIgnoreReturnValue
   public static UnsignedLong valueOf(String string, int radix) {
     return fromLongBits(UnsignedLongs.parseUnsignedLong(string, radix));
   }
diff --git a/android/guava/src/com/google/common/primitives/UnsignedLongs.java b/android/guava/src/com/google/common/primitives/UnsignedLongs.java
index 31c51cc..5f18b61 100644
--- a/android/guava/src/com/google/common/primitives/UnsignedLongs.java
+++ b/android/guava/src/com/google/common/primitives/UnsignedLongs.java
@@ -18,9 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.math.BigInteger;
 import java.util.Arrays;
 import java.util.Comparator;
@@ -48,8 +45,6 @@ import java.util.Comparator;
  * @author Colin Evans
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class UnsignedLongs {
   private UnsignedLongs() {}
@@ -316,7 +311,6 @@ public final class UnsignedLongs {
    * @throws NullPointerException if {@code string} is null (in contrast to {@link
    *     Long#parseLong(String)})
    */
-  @CanIgnoreReturnValue
   public static long parseUnsignedLong(String string) {
     return parseUnsignedLong(string, 10);
   }
@@ -334,7 +328,6 @@ public final class UnsignedLongs {
    * @throws NullPointerException if {@code string} is null (in contrast to {@link
    *     Long#parseLong(String)})
    */
-  @CanIgnoreReturnValue
   public static long parseUnsignedLong(String string, int radix) {
     checkNotNull(string);
     if (string.length() == 0) {
@@ -376,7 +369,6 @@ public final class UnsignedLongs {
    *     value
    * @since 13.0
    */
-  @CanIgnoreReturnValue
   public static long decode(String stringValue) {
     ParseRequest request = ParseRequest.fromString(stringValue);
 
diff --git a/android/guava/src/com/google/common/primitives/package-info.java b/android/guava/src/com/google/common/primitives/package-info.java
index 9504fa7..e04d08c 100644
--- a/android/guava/src/com/google/common/primitives/package-info.java
+++ b/android/guava/src/com/google/common/primitives/package-info.java
@@ -61,8 +61,6 @@
  * </ul>
  */
 @ParametersAreNonnullByDefault
-@CheckReturnValue
 package com.google.common.primitives;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/reflect/AbstractInvocationHandler.java b/android/guava/src/com/google/common/reflect/AbstractInvocationHandler.java
index 4666f99..69794c0 100644
--- a/android/guava/src/com/google/common/reflect/AbstractInvocationHandler.java
+++ b/android/guava/src/com/google/common/reflect/AbstractInvocationHandler.java
@@ -14,13 +14,11 @@
 
 package com.google.common.reflect;
 
-import com.google.common.annotations.Beta;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.util.Arrays;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Abstract implementation of {@link InvocationHandler} that handles {@link Object#equals}, {@link
@@ -39,7 +37,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Ben Yu
  * @since 12.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractInvocationHandler implements InvocationHandler {
 
diff --git a/android/guava/src/com/google/common/reflect/ClassPath.java b/android/guava/src/com/google/common/reflect/ClassPath.java
index de693da..d5900f3 100644
--- a/android/guava/src/com/google/common/reflect/ClassPath.java
+++ b/android/guava/src/com/google/common/reflect/ClassPath.java
@@ -20,15 +20,10 @@ import static com.google.common.base.StandardSystemProperty.JAVA_CLASS_PATH;
 import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR;
 import static java.util.logging.Level.WARNING;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Predicate;
 import com.google.common.base.Splitter;
 import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.io.ByteSource;
 import com.google.common.io.CharSource;
@@ -92,7 +87,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 14.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class ClassPath {
   private static final Logger logger = Logger.getLogger(ClassPath.class.getName());
@@ -211,7 +205,6 @@ public final class ClassPath {
    *
    * @since 14.0
    */
-  @Beta
   public static class ResourceInfo {
     private final File file;
     private final String resourceName;
@@ -307,7 +300,6 @@ public final class ClassPath {
    *
    * @since 14.0
    */
-  @Beta
   public static final class ClassInfo extends ResourceInfo {
     private final String className;
 
@@ -587,7 +579,6 @@ public final class ClassPath {
    * File Specification</a>. If {@code manifest} is null, it means the jar file has no manifest, and
    * an empty set will be returned.
    */
-  @VisibleForTesting
   static ImmutableSet<File> getClassPathFromManifest(
       File jarFile, @CheckForNull Manifest manifest) {
     if (manifest == null) {
@@ -614,7 +605,6 @@ public final class ClassPath {
     return builder.build();
   }
 
-  @VisibleForTesting
   static ImmutableMap<File, ClassLoader> getClassPathEntries(ClassLoader classloader) {
     LinkedHashMap<File, ClassLoader> entries = Maps.newLinkedHashMap();
     // Search parent first, since it's the order ClassLoader#loadClass() uses.
@@ -647,7 +637,7 @@ public final class ClassPath {
    * Returns the URLs in the class path specified by the {@code java.class.path} {@linkplain
    * System#getProperty system property}.
    */
-  @VisibleForTesting // TODO(b/65488446): Make this a public API.
+  // TODO(b/65488446): Make this a public API.
   static ImmutableList<URL> parseJavaClassPath() {
     ImmutableList.Builder<URL> urls = ImmutableList.builder();
     for (String entry : Splitter.on(PATH_SEPARATOR.value()).split(JAVA_CLASS_PATH.value())) {
@@ -670,19 +660,16 @@ public final class ClassPath {
    * File Specification</a>. Even though the specification only talks about relative urls, absolute
    * urls are actually supported too (for example, in Maven surefire plugin).
    */
-  @VisibleForTesting
   static URL getClassPathEntry(File jarFile, String path) throws MalformedURLException {
     return new URL(jarFile.toURI().toURL(), path);
   }
 
-  @VisibleForTesting
   static String getClassName(String filename) {
     int classNameEnd = filename.length() - CLASS_FILE_NAME_EXTENSION.length();
     return filename.substring(0, classNameEnd).replace('/', '.');
   }
 
   // TODO(benyu): Try java.nio.file.Paths#get() when Guava drops JDK 6 support.
-  @VisibleForTesting
   static File toFile(URL url) {
     checkArgument(url.getProtocol().equals("file"));
     try {
diff --git a/android/guava/src/com/google/common/reflect/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/reflect/ElementTypesAreNonnullByDefault.java
index 0e8ef3c..46997d6 100644
--- a/android/guava/src/com/google/common/reflect/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/reflect/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/reflect/ImmutableTypeToInstanceMap.java b/android/guava/src/com/google/common/reflect/ImmutableTypeToInstanceMap.java
index 7fad5de..9611988 100644
--- a/android/guava/src/com/google/common/reflect/ImmutableTypeToInstanceMap.java
+++ b/android/guava/src/com/google/common/reflect/ImmutableTypeToInstanceMap.java
@@ -14,11 +14,7 @@
 
 package com.google.common.reflect;
 
-import com.google.common.annotations.Beta;
 import com.google.common.collect.ForwardingMap;
-import com.google.common.collect.ImmutableMap;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.Map;
 
 /**
@@ -28,7 +24,6 @@ import java.util.Map;
  * @author Ben Yu
  * @since 13.0
  */
-@Beta
 public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken<? extends B>, B>
     implements TypeToInstanceMap<B> {
 
@@ -58,7 +53,6 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
    *
    * @since 13.0
    */
-  @Beta
   public static final class Builder<B> {
     private final ImmutableMap.Builder<TypeToken<? extends B>, B> mapBuilder =
         ImmutableMap.builder();
@@ -69,7 +63,6 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
      * Associates {@code key} with {@code value} in the built map. Duplicate keys are not allowed,
      * and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public <T extends B> Builder<B> put(Class<T> key, T value) {
       mapBuilder.put(TypeToken.of(key), value);
       return this;
@@ -79,7 +72,6 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
      * Associates {@code key} with {@code value} in the built map. Duplicate keys are not allowed,
      * and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public <T extends B> Builder<B> put(TypeToken<T> key, T value) {
       mapBuilder.put(key.rejectTypeVariables(), value);
       return this;
@@ -117,10 +109,8 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
    * @deprecated unsupported operation
    * @throws UnsupportedOperationException always
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public <T extends B> T putInstance(TypeToken<T> type, T value) {
     throw new UnsupportedOperationException();
   }
@@ -131,10 +121,8 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
    * @deprecated unsupported operation
    * @throws UnsupportedOperationException always
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public <T extends B> T putInstance(Class<T> type, T value) {
     throw new UnsupportedOperationException();
   }
@@ -145,10 +133,8 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
    * @deprecated unsupported operation
    * @throws UnsupportedOperationException always
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public B put(TypeToken<? extends B> key, B value) {
     throw new UnsupportedOperationException();
   }
@@ -161,7 +147,6 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void putAll(Map<? extends TypeToken<? extends B>, ? extends B> map) {
     throw new UnsupportedOperationException();
   }
diff --git a/android/guava/src/com/google/common/reflect/Invokable.java b/android/guava/src/com/google/common/reflect/Invokable.java
index 8e75aa8..5e523a8 100644
--- a/android/guava/src/com/google/common/reflect/Invokable.java
+++ b/android/guava/src/com/google/common/reflect/Invokable.java
@@ -16,9 +16,6 @@ package com.google.common.reflect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.collect.ImmutableList;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.AnnotatedElement;
@@ -31,7 +28,6 @@ import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
 import java.util.Arrays;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Wrapper around either a {@link Method} or a {@link Constructor}. Convenience API is provided to
@@ -62,7 +58,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 14.0 (no longer implements {@link AccessibleObject} or {@code GenericDeclaration} since
  *     31.0)
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public abstract class Invokable<T, R> implements AnnotatedElement, Member {
   private final AccessibleObject accessibleObject;
@@ -253,7 +248,6 @@ public abstract class Invokable<T, R> implements AnnotatedElement, Member {
    */
   // All subclasses are owned by us and we'll make sure to get the R type right, including nullness.
   @SuppressWarnings({"unchecked", "nullness"})
-  @CanIgnoreReturnValue
   @CheckForNull
   public final R invoke(@CheckForNull T receiver, @Nullable Object... args)
       throws InvocationTargetException, IllegalAccessException {
diff --git a/android/guava/src/com/google/common/reflect/MutableTypeToInstanceMap.java b/android/guava/src/com/google/common/reflect/MutableTypeToInstanceMap.java
index dccd298..d4ed39e 100644
--- a/android/guava/src/com/google/common/reflect/MutableTypeToInstanceMap.java
+++ b/android/guava/src/com/google/common/reflect/MutableTypeToInstanceMap.java
@@ -16,19 +16,15 @@ package com.google.common.reflect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.collect.ForwardingMap;
 import com.google.common.collect.ForwardingMapEntry;
 import com.google.common.collect.ForwardingSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Maps;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * A mutable type-to-instance map. See also {@link ImmutableTypeToInstanceMap}.
@@ -36,34 +32,27 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  * @author Ben Yu
  * @since 13.0
  */
-@Beta
 public final class MutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken<? extends B>, B>
     implements TypeToInstanceMap<B> {
 
   private final Map<TypeToken<? extends B>, B> backingMap = Maps.newHashMap();
 
   @Override
-  @NullableDecl
   public <T extends B> T getInstance(Class<T> type) {
     return trustedGet(TypeToken.of(type));
   }
 
   @Override
-  @NullableDecl
   public <T extends B> T getInstance(TypeToken<T> type) {
     return trustedGet(type.rejectTypeVariables());
   }
 
   @Override
-  @CanIgnoreReturnValue
-  @NullableDecl
   public <T extends B> T putInstance(Class<T> type, @NullableDecl T value) {
     return trustedPut(TypeToken.of(type), value);
   }
 
   @Override
-  @CanIgnoreReturnValue
-  @NullableDecl
   public <T extends B> T putInstance(TypeToken<T> type, @NullableDecl T value) {
     return trustedPut(type.rejectTypeVariables(), value);
   }
@@ -74,10 +63,8 @@ public final class MutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken<?
    * @deprecated unsupported operation
    * @throws UnsupportedOperationException always
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public B put(TypeToken<? extends B> key, B value) {
     throw new UnsupportedOperationException("Please use putInstance() instead.");
   }
@@ -90,7 +77,6 @@ public final class MutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken<?
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void putAll(Map<? extends TypeToken<? extends B>, ? extends B> map) {
     throw new UnsupportedOperationException("Please use putInstance() instead.");
   }
@@ -106,13 +92,11 @@ public final class MutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken<?
   }
 
   @SuppressWarnings("unchecked") // value could not get in if not a T
-  @NullableDecl
   private <T extends B> T trustedPut(TypeToken<T> type, @NullableDecl T value) {
     return (T) backingMap.put(type, value);
   }
 
   @SuppressWarnings("unchecked") // value could not get in if not a T
-  @NullableDecl
   private <T extends B> T trustedGet(TypeToken<T> type) {
     return (T) backingMap.get(type);
   }
diff --git a/android/guava/src/com/google/common/reflect/Parameter.java b/android/guava/src/com/google/common/reflect/Parameter.java
index a55734a..6e7e11d 100644
--- a/android/guava/src/com/google/common/reflect/Parameter.java
+++ b/android/guava/src/com/google/common/reflect/Parameter.java
@@ -16,13 +16,10 @@ package com.google.common.reflect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.AnnotatedElement;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Represents a method or constructor parameter.
@@ -30,7 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Ben Yu
  * @since 14.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class Parameter implements AnnotatedElement {
 
@@ -103,7 +99,6 @@ public final class Parameter implements AnnotatedElement {
   /** @since 18.0 */
   // @Override on JDK8
   public <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationType) {
-    @Nullable
     A[] result = FluentIterable.from(annotations).filter(annotationType).toArray(annotationType);
     @SuppressWarnings("nullness") // safe because the input list contains no nulls
     A[] cast = (A[]) result;
diff --git a/android/guava/src/com/google/common/reflect/ParametricNullness.java b/android/guava/src/com/google/common/reflect/ParametricNullness.java
index 588aa5f..9a4c13e 100644
--- a/android/guava/src/com/google/common/reflect/ParametricNullness.java
+++ b/android/guava/src/com/google/common/reflect/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/reflect/Reflection.java b/android/guava/src/com/google/common/reflect/Reflection.java
index fa35f7f..9544963 100644
--- a/android/guava/src/com/google/common/reflect/Reflection.java
+++ b/android/guava/src/com/google/common/reflect/Reflection.java
@@ -17,7 +17,6 @@ package com.google.common.reflect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Proxy;
 
@@ -26,7 +25,6 @@ import java.lang.reflect.Proxy;
  *
  * @since 12.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class Reflection {
 
diff --git a/android/guava/src/com/google/common/reflect/TypeParameter.java b/android/guava/src/com/google/common/reflect/TypeParameter.java
index 9c64abb..69cd829 100644
--- a/android/guava/src/com/google/common/reflect/TypeParameter.java
+++ b/android/guava/src/com/google/common/reflect/TypeParameter.java
@@ -16,7 +16,6 @@ package com.google.common.reflect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.Beta;
 import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
 import javax.annotation.CheckForNull;
@@ -34,7 +33,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 12.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 /*
  * A nullable bound would let users create a TypeParameter instance for a parameter with a nullable
diff --git a/android/guava/src/com/google/common/reflect/TypeResolver.java b/android/guava/src/com/google/common/reflect/TypeResolver.java
index fbe48c1..c2411d6 100644
--- a/android/guava/src/com/google/common/reflect/TypeResolver.java
+++ b/android/guava/src/com/google/common/reflect/TypeResolver.java
@@ -19,10 +19,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Joiner;
 import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import java.lang.reflect.GenericArrayType;
 import java.lang.reflect.ParameterizedType;
@@ -51,7 +49,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 15.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class TypeResolver {
 
diff --git a/android/guava/src/com/google/common/reflect/TypeToInstanceMap.java b/android/guava/src/com/google/common/reflect/TypeToInstanceMap.java
index 80396bc..ce4267f 100644
--- a/android/guava/src/com/google/common/reflect/TypeToInstanceMap.java
+++ b/android/guava/src/com/google/common/reflect/TypeToInstanceMap.java
@@ -14,11 +14,7 @@
 
 package com.google.common.reflect;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Map;
-import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 
 /**
  * A map, each entry of which maps a {@link TypeToken} to an instance of that type. In addition to
@@ -39,8 +35,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
  * @author Ben Yu
  * @since 13.0
  */
-@Beta
-@DoNotMock("Use ImmutableTypeToInstanceMap or MutableTypeToInstanceMap")
 public interface TypeToInstanceMap<B> extends Map<TypeToken<? extends B>, B> {
 
   /**
@@ -51,7 +45,6 @@ public interface TypeToInstanceMap<B> extends Map<TypeToken<? extends B>, B> {
    * <p>{@code getInstance(Foo.class)} is equivalent to {@code
    * getInstance(TypeToken.of(Foo.class))}.
    */
-  @NullableDecl
   <T extends B> T getInstance(Class<T> type);
 
   /**
@@ -59,7 +52,6 @@ public interface TypeToInstanceMap<B> extends Map<TypeToken<? extends B>, B> {
    * present. This will only return a value that was bound to this specific type, not a value that
    * may have been bound to a subtype.
    */
-  @NullableDecl
   <T extends B> T getInstance(TypeToken<T> type);
 
   /**
@@ -72,8 +64,6 @@ public interface TypeToInstanceMap<B> extends Map<TypeToken<? extends B>, B> {
    * @return the value previously associated with this class (possibly {@code null}), or {@code
    *     null} if there was no previous entry.
    */
-  @CanIgnoreReturnValue
-  @NullableDecl
   <T extends B> T putInstance(Class<T> type, @NullableDecl T value);
 
   /**
@@ -83,7 +73,5 @@ public interface TypeToInstanceMap<B> extends Map<TypeToken<? extends B>, B> {
    * @return the value previously associated with this type (possibly {@code null}), or {@code null}
    *     if there was no previous entry.
    */
-  @CanIgnoreReturnValue
-  @NullableDecl
   <T extends B> T putInstance(TypeToken<T> type, @NullableDecl T value);
 }
diff --git a/android/guava/src/com/google/common/reflect/TypeToken.java b/android/guava/src/com/google/common/reflect/TypeToken.java
index f107b70..7627924 100644
--- a/android/guava/src/com/google/common/reflect/TypeToken.java
+++ b/android/guava/src/com/google/common/reflect/TypeToken.java
@@ -17,21 +17,14 @@ package com.google.common.reflect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Joiner;
 import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ForwardingSet;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
 import com.google.common.primitives.Primitives;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.GenericArrayType;
@@ -97,7 +90,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 12.0
  */
-@Beta
 @SuppressWarnings("serial") // SimpleTypeToken is the serialized form.
 @ElementTypesAreNonnullByDefault
 public abstract class TypeToken<T> extends TypeCapture<T> implements Serializable {
@@ -865,7 +857,6 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
    * Ensures that this type token doesn't contain type variables, which can cause unchecked type
    * errors for callers like {@link TypeToInstanceMap}.
    */
-  @CanIgnoreReturnValue
   final TypeToken<T> rejectTypeVariables() {
     new TypeVisitor() {
       @Override
@@ -1168,7 +1159,6 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
    * <p>If {@code cls} isn't parameterized and isn't a generic array, the type token of the class is
    * returned.
    */
-  @VisibleForTesting
   static <T> TypeToken<? extends T> toGenericType(Class<T> cls) {
     if (cls.isArray()) {
       Type arrayOfGenericType =
@@ -1402,7 +1392,6 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
     }
 
     /** Collects all types to map, and returns the total depth from T up to Object. */
-    @CanIgnoreReturnValue
     private int collectTypes(K type, Map<? super K, Integer> map) {
       Integer existing = map.get(type);
       if (existing != null) {
diff --git a/android/guava/src/com/google/common/reflect/TypeVisitor.java b/android/guava/src/com/google/common/reflect/TypeVisitor.java
index 416397b..174ddfa 100644
--- a/android/guava/src/com/google/common/reflect/TypeVisitor.java
+++ b/android/guava/src/com/google/common/reflect/TypeVisitor.java
@@ -21,7 +21,6 @@ import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
 import java.lang.reflect.WildcardType;
 import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Based on what a {@link Type} is, dispatch it to the corresponding {@code visit*} method. By
diff --git a/android/guava/src/com/google/common/reflect/Types.java b/android/guava/src/com/google/common/reflect/Types.java
index 0dc327d..1dd30d9 100644
--- a/android/guava/src/com/google/common/reflect/Types.java
+++ b/android/guava/src/com/google/common/reflect/Types.java
@@ -17,15 +17,11 @@ package com.google.common.reflect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.Iterables.transform;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
 import java.io.Serializable;
 import java.lang.reflect.AnnotatedElement;
@@ -46,7 +42,6 @@ import java.util.Collection;
 import java.util.Map.Entry;
 import java.util.concurrent.atomic.AtomicReference;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Utilities for working with {@link Type}.
@@ -157,13 +152,11 @@ final class Types {
   }
 
   /** Returns a new {@link WildcardType} with {@code upperBound}. */
-  @VisibleForTesting
   static WildcardType subtypeOf(Type upperBound) {
     return new WildcardTypeImpl(new Type[0], new Type[] {upperBound});
   }
 
   /** Returns a new {@link WildcardType} with {@code lowerBound}. */
-  @VisibleForTesting
   static WildcardType supertypeOf(Type lowerBound) {
     return new WildcardTypeImpl(new Type[] {lowerBound}, new Type[] {Object.class});
   }
@@ -180,7 +173,7 @@ final class Types {
   @CheckForNull
   static Type getComponentType(Type type) {
     checkNotNull(type);
-    final AtomicReference<@Nullable Type> result = new AtomicReference<>();
+    final AtomicReference<Type> result = new AtomicReference<>();
     new TypeVisitor() {
       @Override
       void visitTypeVariable(TypeVariable<?> t) {
diff --git a/android/guava/src/com/google/common/reflect/package-info.java b/android/guava/src/com/google/common/reflect/package-info.java
index 6b60471..10f5921 100644
--- a/android/guava/src/com/google/common/reflect/package-info.java
+++ b/android/guava/src/com/google/common/reflect/package-info.java
@@ -16,9 +16,7 @@
  * This package contains utilities to work with Java reflection. It is a part of the open-source <a
  * href="http://github.com/google/guava">Guava</a> library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.reflect;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/util/concurrent/AbstractCatchingFuture.java b/android/guava/src/com/google/common/util/concurrent/AbstractCatchingFuture.java
index 76eada2..01e1643 100644
--- a/android/guava/src/com/google/common/util/concurrent/AbstractCatchingFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/AbstractCatchingFuture.java
@@ -17,27 +17,22 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.Futures.getDone;
 import static com.google.common.util.concurrent.MoreExecutors.rejectionPropagatingExecutor;
-import static com.google.common.util.concurrent.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.util.concurrent.Platform.isInstanceOfThrowableClass;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.internal.InternalFutureFailureAccess;
 import com.google.common.util.concurrent.internal.InternalFutures;
-import com.google.errorprone.annotations.ForOverride;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Implementations of {@code Futures.catching*}. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 @SuppressWarnings("nullness") // TODO(b/147136275): Remove once our checker understands & and |.
 abstract class AbstractCatchingFuture<
-        V extends @Nullable Object, X extends Throwable, F, T extends @Nullable Object>
+        V extends Object, X extends Throwable, F, T extends Object>
     extends FluentFuture.TrustedFuture<V> implements Runnable {
-  static <V extends @Nullable Object, X extends Throwable> ListenableFuture<V> create(
+  static <V extends Object, X extends Throwable> ListenableFuture<V> create(
       ListenableFuture<? extends V> input,
       Class<X> exceptionType,
       Function<? super X, ? extends V> fallback,
@@ -47,7 +42,7 @@ abstract class AbstractCatchingFuture<
     return future;
   }
 
-  static <X extends Throwable, V extends @Nullable Object> ListenableFuture<V> create(
+  static <X extends Throwable, V extends Object> ListenableFuture<V> create(
       ListenableFuture<? extends V> input,
       Class<X> exceptionType,
       AsyncFunction<? super X, ? extends V> fallback,
@@ -167,12 +162,10 @@ abstract class AbstractCatchingFuture<
   }
 
   /** Template method for subtypes to actually run the fallback. */
-  @ForOverride
   @ParametricNullness
   abstract T doFallback(F fallback, X throwable) throws Exception;
 
   /** Template method for subtypes to actually set the result. */
-  @ForOverride
   abstract void setResult(@ParametricNullness T result);
 
   @Override
@@ -187,7 +180,7 @@ abstract class AbstractCatchingFuture<
    * An {@link AbstractCatchingFuture} that delegates to an {@link AsyncFunction} and {@link
    * #setFuture(ListenableFuture)}.
    */
-  private static final class AsyncCatchingFuture<V extends @Nullable Object, X extends Throwable>
+  private static final class AsyncCatchingFuture<V extends Object, X extends Throwable>
       extends AbstractCatchingFuture<
           V, X, AsyncFunction<? super X, ? extends V>, ListenableFuture<? extends V>> {
     AsyncCatchingFuture(
@@ -219,7 +212,7 @@ abstract class AbstractCatchingFuture<
    * An {@link AbstractCatchingFuture} that delegates to a {@link Function} and {@link
    * #set(Object)}.
    */
-  private static final class CatchingFuture<V extends @Nullable Object, X extends Throwable>
+  private static final class CatchingFuture<V extends Object, X extends Throwable>
       extends AbstractCatchingFuture<V, X, Function<? super X, ? extends V>, V> {
     CatchingFuture(
         ListenableFuture<? extends V> input,
diff --git a/android/guava/src/com/google/common/util/concurrent/AbstractExecutionThreadService.java b/android/guava/src/com/google/common/util/concurrent/AbstractExecutionThreadService.java
index 0dbafd3..be24bfb 100644
--- a/android/guava/src/com/google/common/util/concurrent/AbstractExecutionThreadService.java
+++ b/android/guava/src/com/google/common/util/concurrent/AbstractExecutionThreadService.java
@@ -14,10 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Supplier;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
@@ -32,7 +29,6 @@ import java.util.logging.Logger;
  * @author Jesse Wilson
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractExecutionThreadService implements Service {
   private static final Logger logger =
@@ -147,7 +143,6 @@ public abstract class AbstractExecutionThreadService implements Service {
    * implementing {@code stopping}. Note, however, that {@code stopping} does not run at exactly the
    * same times as {@code triggerShutdown}.
    */
-  @Beta
   protected void triggerShutdown() {}
 
   /**
@@ -197,7 +192,6 @@ public abstract class AbstractExecutionThreadService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service startAsync() {
     delegate.startAsync();
@@ -205,7 +199,6 @@ public abstract class AbstractExecutionThreadService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service stopAsync() {
     delegate.stopAsync();
diff --git a/android/guava/src/com/google/common/util/concurrent/AbstractFuture.java b/android/guava/src/com/google/common/util/concurrent/AbstractFuture.java
index 624caa9..e4aa6ad 100644
--- a/android/guava/src/com/google/common/util/concurrent/AbstractFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/AbstractFuture.java
@@ -19,17 +19,11 @@ import static com.google.common.base.Throwables.throwIfUnchecked;
 import static com.google.common.util.concurrent.NullnessCasts.uncheckedNull;
 import static java.lang.Integer.toHexString;
 import static java.lang.System.identityHashCode;
-import static java.util.Objects.requireNonNull;
 import static java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Strings;
 import com.google.common.util.concurrent.internal.InternalFutureFailureAccess;
 import com.google.common.util.concurrent.internal.InternalFutures;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.ForOverride;
-import com.google.j2objc.annotations.ReflectionSupport;
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
@@ -46,7 +40,6 @@ import java.util.concurrent.locks.LockSupport;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An abstract implementation of {@link ListenableFuture}, intended for advanced users only. More
@@ -71,10 +64,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
   "ShortCircuitBoolean", // we use non-short circuiting comparisons intentionally
   "nullness", // TODO(b/147136275): Remove once our checker understands & and |.
 })
-@GwtCompatible(emulated = true)
-@ReflectionSupport(value = ReflectionSupport.Level.FULL)
 @ElementTypesAreNonnullByDefault
-public abstract class AbstractFuture<V extends @Nullable Object> extends InternalFutureFailureAccess
+public abstract class AbstractFuture<V extends Object> extends InternalFutureFailureAccess
     implements ListenableFuture<V> {
   // NOTE: Whenever both tests are cheap and functional, it's faster to use &, | instead of &&, ||
 
@@ -98,22 +89,20 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    * of this interface must also be an AbstractFuture and must not override or expose for overriding
    * any of the public methods of ListenableFuture.
    */
-  interface Trusted<V extends @Nullable Object> extends ListenableFuture<V> {}
+  interface Trusted<V extends Object> extends ListenableFuture<V> {}
 
   /**
    * A less abstract subclass of AbstractFuture. This can be used to optimize setFuture by ensuring
    * that {@link #get} calls exactly the implementation of {@link AbstractFuture#get}.
    */
-  abstract static class TrustedFuture<V extends @Nullable Object> extends AbstractFuture<V>
+  abstract static class TrustedFuture<V extends Object> extends AbstractFuture<V>
       implements Trusted<V> {
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public final V get() throws InterruptedException, ExecutionException {
       return super.get();
     }
 
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public final V get(long timeout, TimeUnit unit)
@@ -136,7 +125,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
       super.addListener(listener, executor);
     }
 
-    @CanIgnoreReturnValue
     @Override
     public final boolean cancel(boolean mayInterruptIfRunning) {
       return super.cancel(mayInterruptIfRunning);
@@ -340,7 +328,7 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
   }
 
   /** A special value that encodes the 'setFuture' state. */
-  private static final class SetFuture<V extends @Nullable Object> implements Runnable {
+  private static final class SetFuture<V extends Object> implements Runnable {
     final AbstractFuture<V> owner;
     final ListenableFuture<? extends V> future;
 
@@ -422,7 +410,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    *
    * @throws CancellationException {@inheritDoc}
    */
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public V get(long timeout, TimeUnit unit)
@@ -535,7 +522,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    *
    * @throws CancellationException {@inheritDoc}
    */
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public V get() throws InterruptedException, ExecutionException {
@@ -627,7 +613,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    * <p>Beware of completing a future while holding a lock. Its listeners may do slow work or
    * acquire other locks, risking deadlocks.
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean cancel(boolean mayInterruptIfRunning) {
     Object localValue = value;
@@ -776,7 +761,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    * @param value the value to be used as the result
    * @return true if the attempt was accepted, completing the {@code Future}
    */
-  @CanIgnoreReturnValue
   protected boolean set(@ParametricNullness V value) {
     Object valueToSet = value == null ? NULL : value;
     if (ATOMIC_HELPER.casValue(this, null, valueToSet)) {
@@ -801,7 +785,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    * @param throwable the exception to be used as the failed result
    * @return true if the attempt was accepted, completing the {@code Future}
    */
-  @CanIgnoreReturnValue
   protected boolean setException(Throwable throwable) {
     Object valueToSet = new Failure(checkNotNull(throwable));
     if (ATOMIC_HELPER.casValue(this, null, valueToSet)) {
@@ -840,7 +823,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    *     cancelled or set.
    * @since 19.0
    */
-  @CanIgnoreReturnValue
   protected boolean setFuture(ListenableFuture<? extends V> future) {
     checkNotNull(future);
     Object localValue = value;
@@ -971,7 +953,7 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    * internal dependency on other /util/concurrent classes.
    */
   @ParametricNullness
-  private static <V extends @Nullable Object> V getUninterruptibly(Future<V> future)
+  private static <V extends Object> V getUninterruptibly(Future<V> future)
       throws ExecutionException {
     boolean interrupted = false;
     try {
@@ -1053,8 +1035,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    *
    * @since 20.0
    */
-  @Beta
-  @ForOverride
   protected void afterDone() {}
 
   // TODO(b/114236866): Inherit doc from InternalFutureFailureAccess. Also, -link to its URL.
diff --git a/android/guava/src/com/google/common/util/concurrent/AbstractIdleService.java b/android/guava/src/com/google/common/util/concurrent/AbstractIdleService.java
index 05bc4b9..4beff61 100644
--- a/android/guava/src/com/google/common/util/concurrent/AbstractIdleService.java
+++ b/android/guava/src/com/google/common/util/concurrent/AbstractIdleService.java
@@ -14,10 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Supplier;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
@@ -30,14 +27,12 @@ import java.util.concurrent.TimeoutException;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractIdleService implements Service {
 
   /* Thread names will look like {@code "MyService STARTING"}. */
   private final Supplier<String> threadNameSupplier = new ThreadNameSupplier();
 
-  @WeakOuter
   private final class ThreadNameSupplier implements Supplier<String> {
     @Override
     public String get() {
@@ -48,7 +43,6 @@ public abstract class AbstractIdleService implements Service {
   /* use AbstractService for state management */
   private final Service delegate = new DelegateService();
 
-  @WeakOuter
   private final class DelegateService extends AbstractService {
     @Override
     protected final void doStart() {
@@ -143,7 +137,6 @@ public abstract class AbstractIdleService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service startAsync() {
     delegate.startAsync();
@@ -151,7 +144,6 @@ public abstract class AbstractIdleService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service stopAsync() {
     delegate.stopAsync();
diff --git a/android/guava/src/com/google/common/util/concurrent/AbstractListeningExecutorService.java b/android/guava/src/com/google/common/util/concurrent/AbstractListeningExecutorService.java
index fd5c5c9..98d8ede 100644
--- a/android/guava/src/com/google/common/util/concurrent/AbstractListeningExecutorService.java
+++ b/android/guava/src/com/google/common/util/concurrent/AbstractListeningExecutorService.java
@@ -14,13 +14,9 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.AbstractExecutorService;
 import java.util.concurrent.Callable;
 import java.util.concurrent.RunnableFuture;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Abstract {@link ListeningExecutorService} implementation that creates {@link ListenableFuture}
@@ -33,23 +29,20 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Povirk
  * @since 14.0
  */
-@Beta
-@CanIgnoreReturnValue
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractListeningExecutorService extends AbstractExecutorService
     implements ListeningExecutorService {
 
   /** @since 19.0 (present with return type {@code ListenableFutureTask} since 14.0) */
   @Override
-  protected final <T extends @Nullable Object> RunnableFuture<T> newTaskFor(
+  protected final <T extends Object> RunnableFuture<T> newTaskFor(
       Runnable runnable, @ParametricNullness T value) {
     return TrustedListenableFutureTask.create(runnable, value);
   }
 
   /** @since 19.0 (present with return type {@code ListenableFutureTask} since 14.0) */
   @Override
-  protected final <T extends @Nullable Object> RunnableFuture<T> newTaskFor(Callable<T> callable) {
+  protected final <T extends Object> RunnableFuture<T> newTaskFor(Callable<T> callable) {
     return TrustedListenableFutureTask.create(callable);
   }
 
@@ -59,13 +52,13 @@ public abstract class AbstractListeningExecutorService extends AbstractExecutorS
   }
 
   @Override
-  public <T extends @Nullable Object> ListenableFuture<T> submit(
+  public <T extends Object> ListenableFuture<T> submit(
       Runnable task, @ParametricNullness T result) {
     return (ListenableFuture<T>) super.submit(task, result);
   }
 
   @Override
-  public <T extends @Nullable Object> ListenableFuture<T> submit(Callable<T> task) {
+  public <T extends Object> ListenableFuture<T> submit(Callable<T> task) {
     return (ListenableFuture<T>) super.submit(task);
   }
 }
diff --git a/android/guava/src/com/google/common/util/concurrent/AbstractScheduledService.java b/android/guava/src/com/google/common/util/concurrent/AbstractScheduledService.java
index 7288ba5..535342d 100644
--- a/android/guava/src/com/google/common/util/concurrent/AbstractScheduledService.java
+++ b/android/guava/src/com/google/common/util/concurrent/AbstractScheduledService.java
@@ -18,13 +18,8 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.Futures.immediateCancelledFuture;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Supplier;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
@@ -38,7 +33,6 @@ import java.util.concurrent.locks.ReentrantLock;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Base class for services that can implement {@link #startUp} and {@link #shutDown} but while in
@@ -97,7 +91,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Luke Sandberg
  * @since 11.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractScheduledService implements Service {
   private static final Logger logger = Logger.getLogger(AbstractScheduledService.class.getName());
@@ -172,7 +165,6 @@ public abstract class AbstractScheduledService implements Service {
   /* use AbstractService for state management */
   private final AbstractService delegate = new ServiceDelegate();
 
-  @WeakOuter
   private final class ServiceDelegate extends AbstractService {
 
     // A handle to the running task so that we can stop it when a shutdown has been requested.
@@ -186,7 +178,6 @@ public abstract class AbstractScheduledService implements Service {
     // lock.
     private final ReentrantLock lock = new ReentrantLock();
 
-    @WeakOuter
     class Task implements Runnable {
       @Override
       public void run() {
@@ -338,7 +329,6 @@ public abstract class AbstractScheduledService implements Service {
    * fails}.
    */
   protected ScheduledExecutorService executor() {
-    @WeakOuter
     class ThreadFactoryImpl implements ThreadFactory {
       @Override
       public Thread newThread(Runnable runnable) {
@@ -406,7 +396,6 @@ public abstract class AbstractScheduledService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service startAsync() {
     delegate.startAsync();
@@ -414,7 +403,6 @@ public abstract class AbstractScheduledService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service stopAsync() {
     delegate.stopAsync();
@@ -480,7 +468,7 @@ public abstract class AbstractScheduledService implements Service {
   public abstract static class CustomScheduler extends Scheduler {
 
     /** A callable class that can reschedule itself using a {@link CustomScheduler}. */
-    private final class ReschedulableCallable implements Callable<@Nullable Void> {
+    private final class ReschedulableCallable implements Callable<Void> {
 
       /** The underlying task. */
       private final Runnable wrappedRunnable;
@@ -523,7 +511,6 @@ public abstract class AbstractScheduledService implements Service {
       private final ReentrantLock lock = new ReentrantLock();
 
       /** The future that represents the next execution of this task. */
-      @GuardedBy("lock")
       @CheckForNull
       private SupplantableFuture cancellationDelegate;
 
@@ -546,7 +533,6 @@ public abstract class AbstractScheduledService implements Service {
        * Atomically reschedules this task and assigns the new future to {@link
        * #cancellationDelegate}.
        */
-      @CanIgnoreReturnValue
       public Cancellable reschedule() {
         // invoke the callback outside the lock, prevents some shenanigans.
         Schedule schedule;
@@ -586,7 +572,6 @@ public abstract class AbstractScheduledService implements Service {
         return toReturn;
       }
 
-      @GuardedBy("lock")
       /*
        * The GuardedBy checker warns us that we're not holding cancellationDelegate.lock. But in
        * fact we are holding it because it is the same as this.lock, which we know we are holding,
@@ -604,7 +589,7 @@ public abstract class AbstractScheduledService implements Service {
         return cancellationDelegate;
       }
 
-      private ScheduledFuture<@Nullable Void> submitToExecutor(Schedule schedule) {
+      private ScheduledFuture<Void> submitToExecutor(Schedule schedule) {
         return executor.schedule(this, schedule.delay, schedule.unit);
       }
     }
@@ -616,8 +601,7 @@ public abstract class AbstractScheduledService implements Service {
     private static final class SupplantableFuture implements Cancellable {
       private final ReentrantLock lock;
 
-      @GuardedBy("lock")
-      private Future<@Nullable Void> currentFuture;
+      private Future<Void> currentFuture;
 
       SupplantableFuture(ReentrantLock lock, Future<@Nullable Void> currentFuture) {
         this.lock = lock;
diff --git a/android/guava/src/com/google/common/util/concurrent/AbstractService.java b/android/guava/src/com/google/common/util/concurrent/AbstractService.java
index 1cf31bf..c3c56d6 100644
--- a/android/guava/src/com/google/common/util/concurrent/AbstractService.java
+++ b/android/guava/src/com/google/common/util/concurrent/AbstractService.java
@@ -23,16 +23,9 @@ import static com.google.common.util.concurrent.Service.State.RUNNING;
 import static com.google.common.util.concurrent.Service.State.STARTING;
 import static com.google.common.util.concurrent.Service.State.STOPPING;
 import static com.google.common.util.concurrent.Service.State.TERMINATED;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.util.concurrent.Monitor.Guard;
 import com.google.common.util.concurrent.Service.State; // javadoc needs this
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.ForOverride;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
@@ -48,7 +41,6 @@ import javax.annotation.CheckForNull;
  * @author Luke Sandberg
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractService implements Service {
   private static final ListenerCallQueue.Event<Listener> STARTING_EVENT =
@@ -121,7 +113,6 @@ public abstract class AbstractService implements Service {
 
   private final Guard isStartable = new IsStartableGuard();
 
-  @WeakOuter
   private final class IsStartableGuard extends Guard {
     IsStartableGuard() {
       super(AbstractService.this.monitor);
@@ -135,7 +126,6 @@ public abstract class AbstractService implements Service {
 
   private final Guard isStoppable = new IsStoppableGuard();
 
-  @WeakOuter
   private final class IsStoppableGuard extends Guard {
     IsStoppableGuard() {
       super(AbstractService.this.monitor);
@@ -149,7 +139,6 @@ public abstract class AbstractService implements Service {
 
   private final Guard hasReachedRunning = new HasReachedRunningGuard();
 
-  @WeakOuter
   private final class HasReachedRunningGuard extends Guard {
     HasReachedRunningGuard() {
       super(AbstractService.this.monitor);
@@ -163,7 +152,6 @@ public abstract class AbstractService implements Service {
 
   private final Guard isStopped = new IsStoppedGuard();
 
-  @WeakOuter
   private final class IsStoppedGuard extends Guard {
     IsStoppedGuard() {
       super(AbstractService.this.monitor);
@@ -202,7 +190,6 @@ public abstract class AbstractService implements Service {
    * convenient. It is invoked exactly once on service startup, even when {@link #startAsync} is
    * called multiple times.
    */
-  @ForOverride
   protected abstract void doStart();
 
   /**
@@ -219,7 +206,6 @@ public abstract class AbstractService implements Service {
    * invoked immediately. Instead, it will be deferred until after the service is {@link
    * State#RUNNING}. Services that need to cancel startup work can override {@link #doCancelStart}.
    */
-  @ForOverride
   protected abstract void doStop();
 
   /**
@@ -236,11 +222,8 @@ public abstract class AbstractService implements Service {
    *
    * @since 27.0
    */
-  @Beta
-  @ForOverride
   protected void doCancelStart() {}
 
-  @CanIgnoreReturnValue
   @Override
   public final Service startAsync() {
     if (monitor.enterIf(isStartable)) {
@@ -260,7 +243,6 @@ public abstract class AbstractService implements Service {
     return this;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public final Service stopAsync() {
     if (monitor.enterIf(isStoppable)) {
@@ -357,7 +339,6 @@ public abstract class AbstractService implements Service {
   }
 
   /** Checks that the current state is equal to the expected state. */
-  @GuardedBy("monitor")
   private void checkCurrentState(State expected) {
     State actual = state();
     if (actual != expected) {
diff --git a/android/guava/src/com/google/common/util/concurrent/AbstractTransformFuture.java b/android/guava/src/com/google/common/util/concurrent/AbstractTransformFuture.java
index dd68791..3a2413a 100644
--- a/android/guava/src/com/google/common/util/concurrent/AbstractTransformFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/AbstractTransformFuture.java
@@ -18,23 +18,19 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.Futures.getDone;
 import static com.google.common.util.concurrent.MoreExecutors.rejectionPropagatingExecutor;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
-import com.google.errorprone.annotations.ForOverride;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Implementations of {@code Futures.transform*}. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 @SuppressWarnings("nullness") // TODO(b/147136275): Remove once our checker understands & and |.
 abstract class AbstractTransformFuture<
-        I extends @Nullable Object, O extends @Nullable Object, F, T extends @Nullable Object>
+        I extends Object, O extends Object, F, T extends Object>
     extends FluentFuture.TrustedFuture<O> implements Runnable {
-  static <I extends @Nullable Object, O extends @Nullable Object> ListenableFuture<O> create(
+  static <I extends Object, O extends Object> ListenableFuture<O> create(
       ListenableFuture<I> input,
       AsyncFunction<? super I, ? extends O> function,
       Executor executor) {
@@ -44,7 +40,7 @@ abstract class AbstractTransformFuture<
     return output;
   }
 
-  static <I extends @Nullable Object, O extends @Nullable Object> ListenableFuture<O> create(
+  static <I extends Object, O extends Object> ListenableFuture<O> create(
       ListenableFuture<I> input, Function<? super I, ? extends O> function, Executor executor) {
     checkNotNull(function);
     TransformFuture<I, O> output = new TransformFuture<>(input, function);
@@ -168,12 +164,10 @@ abstract class AbstractTransformFuture<
   }
 
   /** Template method for subtypes to actually run the transform. */
-  @ForOverride
   @ParametricNullness
   abstract T doTransform(F function, @ParametricNullness I result) throws Exception;
 
   /** Template method for subtypes to actually set the result. */
-  @ForOverride
   abstract void setResult(@ParametricNullness T result);
 
   @Override
@@ -206,7 +200,7 @@ abstract class AbstractTransformFuture<
    * #setFuture(ListenableFuture)}.
    */
   private static final class AsyncTransformFuture<
-          I extends @Nullable Object, O extends @Nullable Object>
+          I extends Object, O extends Object>
       extends AbstractTransformFuture<
           I, O, AsyncFunction<? super I, ? extends O>, ListenableFuture<? extends O>> {
     AsyncTransformFuture(
@@ -237,7 +231,7 @@ abstract class AbstractTransformFuture<
    * An {@link AbstractTransformFuture} that delegates to a {@link Function} and {@link
    * #set(Object)}.
    */
-  private static final class TransformFuture<I extends @Nullable Object, O extends @Nullable Object>
+  private static final class TransformFuture<I extends Object, O extends Object>
       extends AbstractTransformFuture<I, O, Function<? super I, ? extends O>, O> {
     TransformFuture(
         ListenableFuture<? extends I> inputFuture, Function<? super I, ? extends O> function) {
diff --git a/android/guava/src/com/google/common/util/concurrent/AggregateFuture.java b/android/guava/src/com/google/common/util/concurrent/AggregateFuture.java
index a32e76c..1ebbc1b 100644
--- a/android/guava/src/com/google/common/util/concurrent/AggregateFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/AggregateFuture.java
@@ -20,19 +20,13 @@ import static com.google.common.util.concurrent.AggregateFuture.ReleaseResources
 import static com.google.common.util.concurrent.AggregateFuture.ReleaseResourcesReason.OUTPUT_FUTURE_DONE;
 import static com.google.common.util.concurrent.Futures.getDone;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
-import static java.util.Objects.requireNonNull;
 import static java.util.logging.Level.SEVERE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableCollection;
-import com.google.errorprone.annotations.ForOverride;
-import com.google.errorprone.annotations.OverridingMethodsMustInvokeSuper;
 import java.util.Set;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A future whose value is derived from a collection of input futures.
@@ -40,9 +34,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @param <InputT> the type of the individual inputs
  * @param <OutputT> the type of the output (i.e. this) future
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AggregateFuture<InputT extends @Nullable Object, OutputT extends @Nullable Object>
+abstract class AggregateFuture<InputT extends Object, OutputT extends Object>
     extends AggregateFutureState<OutputT> {
   private static final Logger logger = Logger.getLogger(AggregateFuture.class.getName());
 
@@ -318,8 +311,6 @@ abstract class AggregateFuture<InputT extends @Nullable Object, OutputT extends
    * description of CL 265462958.
    */
   // TODO(user): Write more tests for memory retention.
-  @ForOverride
-  @OverridingMethodsMustInvokeSuper
   void releaseResources(ReleaseResourcesReason reason) {
     checkNotNull(reason);
     /*
diff --git a/android/guava/src/com/google/common/util/concurrent/AggregateFutureState.java b/android/guava/src/com/google/common/util/concurrent/AggregateFutureState.java
index ee23ca0..dc4bdeb 100644
--- a/android/guava/src/com/google/common/util/concurrent/AggregateFutureState.java
+++ b/android/guava/src/com/google/common/util/concurrent/AggregateFutureState.java
@@ -15,19 +15,15 @@
 package com.google.common.util.concurrent;
 
 import static com.google.common.collect.Sets.newConcurrentHashSet;
-import static java.util.Objects.requireNonNull;
 import static java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater;
 import static java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.j2objc.annotations.ReflectionSupport;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A helper which does some thread-safe operations for aggregate futures, which must be implemented
@@ -38,10 +34,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *   <li>Decrements a counter atomically
  * </ul>
  */
-@GwtCompatible(emulated = true)
-@ReflectionSupport(value = ReflectionSupport.Level.FULL)
 @ElementTypesAreNonnullByDefault
-abstract class AggregateFutureState<OutputT extends @Nullable Object>
+abstract class AggregateFutureState<OutputT extends Object>
     extends AbstractFuture.TrustedFuture<OutputT> {
   // Lazily initialized the first time we see an exception; not released until all the input futures
   // have completed and we have processed them all.
diff --git a/android/guava/src/com/google/common/util/concurrent/AsyncCallable.java b/android/guava/src/com/google/common/util/concurrent/AsyncCallable.java
index 7ee831e..db00e29 100644
--- a/android/guava/src/com/google/common/util/concurrent/AsyncCallable.java
+++ b/android/guava/src/com/google/common/util/concurrent/AsyncCallable.java
@@ -14,10 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.Future;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Computes a value, possibly asynchronously. For an example usage and more information, see {@link
@@ -28,10 +25,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 20.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface AsyncCallable<V extends @Nullable Object> {
+public interface AsyncCallable<V extends Object> {
   /**
    * Computes a result {@code Future}. The output {@code Future} need not be {@linkplain
    * Future#isDone done}, making {@code AsyncCallable} suitable for asynchronous derivations.
diff --git a/android/guava/src/com/google/common/util/concurrent/AsyncFunction.java b/android/guava/src/com/google/common/util/concurrent/AsyncFunction.java
index cd70d20..141d796 100644
--- a/android/guava/src/com/google/common/util/concurrent/AsyncFunction.java
+++ b/android/guava/src/com/google/common/util/concurrent/AsyncFunction.java
@@ -14,9 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.Future;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Transforms a value, possibly asynchronously. For an example usage and more information, see
@@ -25,9 +23,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Povirk
  * @since 11.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface AsyncFunction<I extends @Nullable Object, O extends @Nullable Object> {
+public interface AsyncFunction<I extends Object, O extends Object> {
   /**
    * Returns an output {@code Future} to use in place of the given {@code input}. The output {@code
    * Future} need not be {@linkplain Future#isDone done}, making {@code AsyncFunction} suitable for
diff --git a/android/guava/src/com/google/common/util/concurrent/AtomicDouble.java b/android/guava/src/com/google/common/util/concurrent/AtomicDouble.java
index 161fca8..a0b4e48 100644
--- a/android/guava/src/com/google/common/util/concurrent/AtomicDouble.java
+++ b/android/guava/src/com/google/common/util/concurrent/AtomicDouble.java
@@ -17,7 +17,6 @@ package com.google.common.util.concurrent;
 import static java.lang.Double.doubleToRawLongBits;
 import static java.lang.Double.longBitsToDouble;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.atomic.AtomicLong;
 
 /**
@@ -146,7 +145,6 @@ public class AtomicDouble extends Number implements java.io.Serializable {
    * @param delta the value to add
    * @return the previous value
    */
-  @CanIgnoreReturnValue
   public final double getAndAdd(double delta) {
     while (true) {
       long current = value.get();
@@ -165,7 +163,6 @@ public class AtomicDouble extends Number implements java.io.Serializable {
    * @param delta the value to add
    * @return the updated value
    */
-  @CanIgnoreReturnValue
   public final double addAndGet(double delta) {
     while (true) {
       long current = value.get();
diff --git a/android/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java b/android/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java
index 58407f5..9b86f62 100644
--- a/android/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java
+++ b/android/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java
@@ -16,9 +16,6 @@ package com.google.common.util.concurrent;
 import static java.lang.Double.doubleToRawLongBits;
 import static java.lang.Double.longBitsToDouble;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.primitives.ImmutableLongArray;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.atomic.AtomicLongArray;
 
 /**
@@ -43,7 +40,6 @@ import java.util.concurrent.atomic.AtomicLongArray;
  * @author Martin Buchholz
  * @since 11.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public class AtomicDoubleArray implements java.io.Serializable {
   private static final long serialVersionUID = 0L;
@@ -169,7 +165,6 @@ public class AtomicDoubleArray implements java.io.Serializable {
    * @param delta the value to add
    * @return the previous value
    */
-  @CanIgnoreReturnValue
   public final double getAndAdd(int i, double delta) {
     while (true) {
       long current = longs.get(i);
@@ -189,7 +184,6 @@ public class AtomicDoubleArray implements java.io.Serializable {
    * @param delta the value to add
    * @return the updated value
    */
-  @CanIgnoreReturnValue
   public double addAndGet(int i, double delta) {
     while (true) {
       long current = longs.get(i);
diff --git a/android/guava/src/com/google/common/util/concurrent/AtomicLongMap.java b/android/guava/src/com/google/common/util/concurrent/AtomicLongMap.java
index bac02c1..f7b2834 100644
--- a/android/guava/src/com/google/common/util/concurrent/AtomicLongMap.java
+++ b/android/guava/src/com/google/common/util/concurrent/AtomicLongMap.java
@@ -16,11 +16,8 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.collect.Maps;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.util.Collections;
 import java.util.Iterator;
@@ -53,7 +50,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 11.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class AtomicLongMap<K> implements Serializable {
   private final ConcurrentHashMap<K, AtomicLong> map;
@@ -86,7 +82,6 @@ public final class AtomicLongMap<K> implements Serializable {
   /**
    * Increments by one the value currently associated with {@code key}, and returns the new value.
    */
-  @CanIgnoreReturnValue
   public long incrementAndGet(K key) {
     return addAndGet(key, 1);
   }
@@ -94,7 +89,6 @@ public final class AtomicLongMap<K> implements Serializable {
   /**
    * Decrements by one the value currently associated with {@code key}, and returns the new value.
    */
-  @CanIgnoreReturnValue
   public long decrementAndGet(K key) {
     return addAndGet(key, -1);
   }
@@ -103,7 +97,6 @@ public final class AtomicLongMap<K> implements Serializable {
    * Adds {@code delta} to the value currently associated with {@code key}, and returns the new
    * value.
    */
-  @CanIgnoreReturnValue
   public long addAndGet(K key, long delta) {
     outer:
     while (true) {
@@ -139,7 +132,6 @@ public final class AtomicLongMap<K> implements Serializable {
   /**
    * Increments by one the value currently associated with {@code key}, and returns the old value.
    */
-  @CanIgnoreReturnValue
   public long getAndIncrement(K key) {
     return getAndAdd(key, 1);
   }
@@ -147,7 +139,6 @@ public final class AtomicLongMap<K> implements Serializable {
   /**
    * Decrements by one the value currently associated with {@code key}, and returns the old value.
    */
-  @CanIgnoreReturnValue
   public long getAndDecrement(K key) {
     return getAndAdd(key, -1);
   }
@@ -156,7 +147,6 @@ public final class AtomicLongMap<K> implements Serializable {
    * Adds {@code delta} to the value currently associated with {@code key}, and returns the old
    * value.
    */
-  @CanIgnoreReturnValue
   public long getAndAdd(K key, long delta) {
     outer:
     while (true) {
@@ -193,7 +183,6 @@ public final class AtomicLongMap<K> implements Serializable {
    * Associates {@code newValue} with {@code key} in this map, and returns the value previously
    * associated with {@code key}, or zero if there was no such value.
    */
-  @CanIgnoreReturnValue
   public long put(K key, long newValue) {
     outer:
     while (true) {
@@ -241,7 +230,6 @@ public final class AtomicLongMap<K> implements Serializable {
    * Removes and returns the value associated with {@code key}. If {@code key} is not in the map,
    * this method has no effect and returns zero.
    */
-  @CanIgnoreReturnValue
   public long remove(K key) {
     AtomicLong atomic = map.get(key);
     if (atomic == null) {
@@ -290,8 +278,6 @@ public final class AtomicLongMap<K> implements Serializable {
    *
    * @since 20.0
    */
-  @Beta
-  @CanIgnoreReturnValue
   public boolean removeIfZero(K key) {
     return remove(key, 0);
   }
diff --git a/android/guava/src/com/google/common/util/concurrent/Atomics.java b/android/guava/src/com/google/common/util/concurrent/Atomics.java
index c1b6964..4fde232 100644
--- a/android/guava/src/com/google/common/util/concurrent/Atomics.java
+++ b/android/guava/src/com/google/common/util/concurrent/Atomics.java
@@ -14,10 +14,8 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.atomic.AtomicReferenceArray;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to classes in the {@code java.util.concurrent.atomic} package.
@@ -25,7 +23,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 10.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Atomics {
   private Atomics() {}
@@ -35,7 +32,7 @@ public final class Atomics {
    *
    * @return a new {@code AtomicReference} with no initial value
    */
-  public static <V> AtomicReference<@Nullable V> newReference() {
+  public static <V> AtomicReference<V> newReference() {
     return new AtomicReference<>();
   }
 
@@ -45,7 +42,7 @@ public final class Atomics {
    * @param initialValue the initial value
    * @return a new {@code AtomicReference} with the given initial value
    */
-  public static <V extends @Nullable Object> AtomicReference<V> newReference(
+  public static <V extends Object> AtomicReference<V> newReference(
       @ParametricNullness V initialValue) {
     return new AtomicReference<>(initialValue);
   }
@@ -56,7 +53,7 @@ public final class Atomics {
    * @param length the length of the array
    * @return a new {@code AtomicReferenceArray} with the given length
    */
-  public static <E> AtomicReferenceArray<@Nullable E> newReferenceArray(int length) {
+  public static <E> AtomicReferenceArray<E> newReferenceArray(int length) {
     return new AtomicReferenceArray<>(length);
   }
 
@@ -67,7 +64,7 @@ public final class Atomics {
    * @param array the array to copy elements from
    * @return a new {@code AtomicReferenceArray} copied from the given array
    */
-  public static <E extends @Nullable Object> AtomicReferenceArray<E> newReferenceArray(E[] array) {
+  public static <E extends Object> AtomicReferenceArray<E> newReferenceArray(E[] array) {
     return new AtomicReferenceArray<>(array);
   }
 }
diff --git a/android/guava/src/com/google/common/util/concurrent/Callables.java b/android/guava/src/com/google/common/util/concurrent/Callables.java
index 47b5264..b6c0f91 100644
--- a/android/guava/src/com/google/common/util/concurrent/Callables.java
+++ b/android/guava/src/com/google/common/util/concurrent/Callables.java
@@ -16,12 +16,8 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Supplier;
 import java.util.concurrent.Callable;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to the {@link Callable} interface.
@@ -29,13 +25,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Isaac Shum
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Callables {
   private Callables() {}
 
   /** Creates a {@code Callable} which immediately returns a preset value each time it is called. */
-  public static <T extends @Nullable Object> Callable<T> returning(
+  public static <T extends Object> Callable<T> returning(
       @ParametricNullness final T value) {
     return new Callable<T>() {
       @Override
@@ -54,9 +49,7 @@ public final class Callables {
    *
    * @since 20.0
    */
-  @Beta
-  @GwtIncompatible
-  public static <T extends @Nullable Object> AsyncCallable<T> asAsyncCallable(
+  public static <T extends Object> AsyncCallable<T> asAsyncCallable(
       final Callable<T> callable, final ListeningExecutorService listeningExecutorService) {
     checkNotNull(callable);
     checkNotNull(listeningExecutorService);
@@ -76,8 +69,8 @@ public final class Callables {
    * @param nameSupplier The supplier of thread names, {@link Supplier#get get} will be called once
    *     for each invocation of the wrapped callable.
    */
-  @GwtIncompatible // threads
-  static <T extends @Nullable Object> Callable<T> threadRenaming(
+  // threads
+  static <T extends Object> Callable<T> threadRenaming(
       final Callable<T> callable, final Supplier<String> nameSupplier) {
     checkNotNull(nameSupplier);
     checkNotNull(callable);
@@ -107,7 +100,7 @@ public final class Callables {
    * @param nameSupplier The supplier of thread names, {@link Supplier#get get} will be called once
    *     for each invocation of the wrapped callable.
    */
-  @GwtIncompatible // threads
+  // threads
   static Runnable threadRenaming(final Runnable task, final Supplier<String> nameSupplier) {
     checkNotNull(nameSupplier);
     checkNotNull(task);
@@ -129,7 +122,7 @@ public final class Callables {
   }
 
   /** Tries to set name of the given {@link Thread}, returns true if successful. */
-  @GwtIncompatible // threads
+  // threads
   private static boolean trySetName(final String threadName, Thread currentThread) {
     /*
      * setName should usually succeed, but the security manager can prohibit it. Is there a way to
diff --git a/android/guava/src/com/google/common/util/concurrent/ClosingFuture.java b/android/guava/src/com/google/common/util/concurrent/ClosingFuture.java
index c5ce0c4..5ea0ba5 100644
--- a/android/guava/src/com/google/common/util/concurrent/ClosingFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/ClosingFuture.java
@@ -36,17 +36,11 @@ import static java.util.logging.Level.FINER;
 import static java.util.logging.Level.SEVERE;
 import static java.util.logging.Level.WARNING;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.ClosingFuture.Combiner.AsyncCombiningCallable;
 import com.google.common.util.concurrent.ClosingFuture.Combiner.CombiningCallable;
 import com.google.common.util.concurrent.Futures.FutureCombiner;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
-import com.google.j2objc.annotations.RetainedWith;
 import java.io.Closeable;
 import java.io.IOException;
 import java.util.IdentityHashMap;
@@ -61,7 +55,6 @@ import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A step in a pipeline of an asynchronous computation. When the last step in the computation is
@@ -191,11 +184,10 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 30.0
  */
 // TODO(dpb): Consider reusing one CloseableList for the entire pipeline, modulo combinations.
-@Beta // @Beta for one release.
-@DoNotMock("Use ClosingFuture.from(Futures.immediate*Future)")
+// @Beta for one release.
 @ElementTypesAreNonnullByDefault
 // TODO(dpb): GWT compatibility.
-public final class ClosingFuture<V extends @Nullable Object> {
+public final class ClosingFuture<V extends Object> {
 
   private static final Logger logger = Logger.getLogger(ClosingFuture.class.getName());
 
@@ -204,7 +196,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * done.
    */
   public static final class DeferredCloser {
-    @RetainedWith private final CloseableList list;
+    private final CloseableList list;
 
     DeferredCloser(CloseableList list) {
       this.list = list;
@@ -233,10 +225,9 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param closingExecutor the object will be closed on this executor
      * @return the first argument
      */
-    @CanIgnoreReturnValue
     @ParametricNullness
     // TODO(b/163345357): Widen bound to AutoCloseable once we require API Level 19.
-    public <C extends @Nullable Object & @Nullable Closeable> C eventuallyClose(
+    public <C extends Object & Closeable> C eventuallyClose(
         @ParametricNullness C closeable, Executor closingExecutor) {
       checkNotNull(closingExecutor);
       if (closeable != null) {
@@ -251,7 +242,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *
    * @param <V> the type of the result
    */
-  public interface ClosingCallable<V extends @Nullable Object> {
+  public interface ClosingCallable<V extends Object> {
     /**
      * Computes a result, or throws an exception if unable to do so.
      *
@@ -269,7 +260,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V> the type of the result
    * @since 30.1
    */
-  public interface AsyncClosingCallable<V extends @Nullable Object> {
+  public interface AsyncClosingCallable<V extends Object> {
     /**
      * Computes a result, or throws an exception if unable to do so.
      *
@@ -286,7 +277,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <T> the type of the input to the function
    * @param <U> the type of the result of the function
    */
-  public interface ClosingFunction<T extends @Nullable Object, U extends @Nullable Object> {
+  public interface ClosingFunction<T extends Object, U extends Object> {
 
     /**
      * Applies this function to an input, or throws an exception if unable to do so.
@@ -305,7 +296,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <T> the type of the input to the function
    * @param <U> the type of the result of the function
    */
-  public interface AsyncClosingFunction<T extends @Nullable Object, U extends @Nullable Object> {
+  public interface AsyncClosingFunction<T extends Object, U extends Object> {
     /**
      * Applies this function to an input, or throws an exception if unable to do so.
      *
@@ -326,7 +317,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V> the type of the value of a successful operation
    * @see ClosingFuture#finishToValueAndCloser(ValueAndCloserConsumer, Executor)
    */
-  public static final class ValueAndCloser<V extends @Nullable Object> {
+  public static final class ValueAndCloser<V extends Object> {
 
     private final ClosingFuture<? extends V> closingFuture;
 
@@ -371,7 +362,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V> the type of the final value of a successful pipeline
    * @see ClosingFuture#finishToValueAndCloser(ValueAndCloserConsumer, Executor)
    */
-  public interface ValueAndCloserConsumer<V extends @Nullable Object> {
+  public interface ValueAndCloserConsumer<V extends Object> {
 
     /** Accepts a {@link ValueAndCloser} for the last step in a {@link ClosingFuture} pipeline. */
     void accept(ValueAndCloser<V> valueAndCloser);
@@ -383,7 +374,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @throws java.util.concurrent.RejectedExecutionException if the task cannot be scheduled for
    *     execution
    */
-  public static <V extends @Nullable Object> ClosingFuture<V> submit(
+  public static <V extends Object> ClosingFuture<V> submit(
       ClosingCallable<V> callable, Executor executor) {
     return new ClosingFuture<>(callable, executor);
   }
@@ -395,7 +386,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     execution
    * @since 30.1
    */
-  public static <V extends @Nullable Object> ClosingFuture<V> submitAsync(
+  public static <V extends Object> ClosingFuture<V> submitAsync(
       AsyncClosingCallable<V> callable, Executor executor) {
     return new ClosingFuture<>(callable, executor);
   }
@@ -407,7 +398,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * implements {@link Closeable}. In order to start a pipeline with a value that will be closed
    * when the pipeline is done, use {@link #submit(ClosingCallable, Executor)} instead.
    */
-  public static <V extends @Nullable Object> ClosingFuture<V> from(ListenableFuture<V> future) {
+  public static <V extends Object> ClosingFuture<V> from(ListenableFuture<V> future) {
     return new ClosingFuture<V>(future);
   }
 
@@ -434,7 +425,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    */
   @Deprecated
   // TODO(b/163345357): Widen bound to AutoCloseable once we require API Level 19.
-  public static <C extends @Nullable Object & @Nullable Closeable>
+  public static <C extends Object & Closeable>
       ClosingFuture<C> eventuallyClosing(
           ListenableFuture<C> future, final Executor closingExecutor) {
     checkNotNull(closingExecutor);
@@ -496,7 +487,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @throws IllegalStateException if a {@code ClosingFuture} has already been derived from any of
    *     the arguments, or if any has already been {@linkplain #finishToFuture() finished}
    */
-  public static <V1 extends @Nullable Object, V2 extends @Nullable Object>
+  public static <V1 extends Object, V2 extends Object>
       Combiner2<V1, V2> whenAllSucceed(ClosingFuture<V1> future1, ClosingFuture<V2> future2) {
     return new Combiner2<>(future1, future2);
   }
@@ -512,7 +503,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     the arguments, or if any has already been {@linkplain #finishToFuture() finished}
    */
   public static <
-          V1 extends @Nullable Object, V2 extends @Nullable Object, V3 extends @Nullable Object>
+          V1 extends Object, V2 extends Object, V3 extends Object>
       Combiner3<V1, V2, V3> whenAllSucceed(
           ClosingFuture<V1> future1, ClosingFuture<V2> future2, ClosingFuture<V3> future3) {
     return new Combiner3<>(future1, future2, future3);
@@ -529,10 +520,10 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     the arguments, or if any has already been {@linkplain #finishToFuture() finished}
    */
   public static <
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object,
-          V3 extends @Nullable Object,
-          V4 extends @Nullable Object>
+          V1 extends Object,
+          V2 extends Object,
+          V3 extends Object,
+          V4 extends Object>
       Combiner4<V1, V2, V3, V4> whenAllSucceed(
           ClosingFuture<V1> future1,
           ClosingFuture<V2> future2,
@@ -552,11 +543,11 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     the arguments, or if any has already been {@linkplain #finishToFuture() finished}
    */
   public static <
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object,
-          V3 extends @Nullable Object,
-          V4 extends @Nullable Object,
-          V5 extends @Nullable Object>
+          V1 extends Object,
+          V2 extends Object,
+          V3 extends Object,
+          V4 extends Object,
+          V5 extends Object>
       Combiner5<V1, V2, V3, V4, V5> whenAllSucceed(
           ClosingFuture<V1> future1,
           ClosingFuture<V2> future2,
@@ -688,7 +679,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     one, or if this {@code ClosingFuture} has already been {@linkplain #finishToFuture()
    *     finished}
    */
-  public <U extends @Nullable Object> ClosingFuture<U> transform(
+  public <U extends Object> ClosingFuture<U> transform(
       final ClosingFunction<? super V, U> function, Executor executor) {
     checkNotNull(function);
     AsyncFunction<V, U> applyFunction =
@@ -782,7 +773,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     one, or if this {@code ClosingFuture} has already been {@linkplain #finishToFuture()
    *     finished}
    */
-  public <U extends @Nullable Object> ClosingFuture<U> transformAsync(
+  public <U extends Object> ClosingFuture<U> transformAsync(
       final AsyncClosingFunction<? super V, U> function, Executor executor) {
     checkNotNull(function);
     AsyncFunction<V, U> applyFunction =
@@ -826,7 +817,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param function transforms the value of a {@code ClosingFuture} step to a {@link
    *     ListenableFuture} with the value of a derived step
    */
-  public static <V extends @Nullable Object, U extends @Nullable Object>
+  public static <V extends Object, U extends Object>
       AsyncClosingFunction<V, U> withoutCloser(final AsyncFunction<V, U> function) {
     checkNotNull(function);
     return new AsyncClosingFunction<V, U>() {
@@ -1096,7 +1087,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
         executor);
   }
 
-  private static <C extends @Nullable Object, V extends C> void provideValueAndCloser(
+  private static <C extends Object, V extends C> void provideValueAndCloser(
       ValueAndCloserConsumer<C> consumer, ClosingFuture<V> closingFuture) {
     consumer.accept(new ValueAndCloser<C>(closingFuture));
   }
@@ -1117,7 +1108,6 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @return {@code false} if the step could not be cancelled, typically because it has already
    *     completed normally; {@code true} otherwise
    */
-  @CanIgnoreReturnValue
   public boolean cancel(boolean mayInterruptIfRunning) {
     logger.log(FINER, "cancelling {0}", this);
     boolean cancelled = future.cancel(mayInterruptIfRunning);
@@ -1132,7 +1122,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
     closeables.close();
   }
 
-  private <U extends @Nullable Object> ClosingFuture<U> derive(FluentFuture<U> future) {
+  private <U extends Object> ClosingFuture<U> derive(FluentFuture<U> future) {
     ClosingFuture<U> derived = new ClosingFuture<>(future);
     becomeSubsumedInto(derived.closeables);
     return derived;
@@ -1169,7 +1159,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      *     AsyncCombiningCallable#call(DeferredCloser, Peeker)}
      */
     @ParametricNullness
-    public final <D extends @Nullable Object> D getDone(ClosingFuture<D> closingFuture)
+    public final <D extends Object> D getDone(ClosingFuture<D> closingFuture)
         throws ExecutionException {
       checkState(beingCalled);
       checkArgument(futures.contains(closingFuture));
@@ -1177,7 +1167,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
     }
 
     @ParametricNullness
-    private <V extends @Nullable Object> V call(
+    private <V extends Object> V call(
         CombiningCallable<V> combiner, CloseableList closeables) throws Exception {
       beingCalled = true;
       CloseableList newCloseables = new CloseableList();
@@ -1189,7 +1179,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
       }
     }
 
-    private <V extends @Nullable Object> FluentFuture<V> callAsync(
+    private <V extends Object> FluentFuture<V> callAsync(
         AsyncCombiningCallable<V> combiner, CloseableList closeables) throws Exception {
       beingCalled = true;
       CloseableList newCloseables = new CloseableList();
@@ -1228,8 +1218,6 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * }</pre>
    */
   // TODO(cpovirk): Use simple name instead of fully qualified after we stop building with JDK 8.
-  @com.google.errorprone.annotations.DoNotMock(
-      "Use ClosingFuture.whenAllSucceed() or .whenAllComplete() instead.")
   public static class Combiner {
 
     private final CloseableList closeables = new CloseableList();
@@ -1239,7 +1227,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      *
      * @param <V> the type of the result
      */
-    public interface CombiningCallable<V extends @Nullable Object> {
+    public interface CombiningCallable<V extends Object> {
       /**
        * Computes a result, or throws an exception if unable to do so.
        *
@@ -1259,7 +1247,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      *
      * @param <V> the type of the result
      */
-    public interface AsyncCombiningCallable<V extends @Nullable Object> {
+    public interface AsyncCombiningCallable<V extends Object> {
       /**
        * Computes a {@link ClosingFuture} result, or throws an exception if unable to do so.
        *
@@ -1298,7 +1286,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>If the combiningCallable throws an {@code ExecutionException}, the cause of the thrown
      * {@code ExecutionException} will be extracted and used as the failure of the derived step.
      */
-    public <V extends @Nullable Object> ClosingFuture<V> call(
+    public <V extends Object> ClosingFuture<V> call(
         final CombiningCallable<V> combiningCallable, Executor executor) {
       Callable<V> callable =
           new Callable<V>() {
@@ -1355,7 +1343,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>The same warnings about doing heavyweight operations within {@link
      * ClosingFuture#transformAsync(AsyncClosingFunction, Executor)} apply here.
      */
-    public <V extends @Nullable Object> ClosingFuture<V> callAsync(
+    public <V extends Object> ClosingFuture<V> callAsync(
         final AsyncCombiningCallable<V> combiningCallable, Executor executor) {
       AsyncCallable<V> asyncCallable =
           new AsyncCallable<V>() {
@@ -1375,7 +1363,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
       return derived;
     }
 
-    private FutureCombiner<@Nullable Object> futureCombiner() {
+    private FutureCombiner<Object> futureCombiner() {
       return allMustSucceed
           ? Futures.whenAllSucceed(inputFutures())
           : Futures.whenAllComplete(inputFutures());
@@ -1402,7 +1390,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V1> the type returned by the first future
    * @param <V2> the type returned by the second future
    */
-  public static final class Combiner2<V1 extends @Nullable Object, V2 extends @Nullable Object>
+  public static final class Combiner2<V1 extends Object, V2 extends Object>
       extends Combiner {
 
     /**
@@ -1414,7 +1402,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param <U> the type returned by the function
      */
     public interface ClosingFunction2<
-        V1 extends @Nullable Object, V2 extends @Nullable Object, U extends @Nullable Object> {
+        V1 extends Object, V2 extends Object, U extends Object> {
 
       /**
        * Applies this function to two inputs, or throws an exception if unable to do so.
@@ -1438,7 +1426,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param <U> the type returned by the function
      */
     public interface AsyncClosingFunction2<
-        V1 extends @Nullable Object, V2 extends @Nullable Object, U extends @Nullable Object> {
+        V1 extends Object, V2 extends Object, U extends Object> {
 
       /**
        * Applies this function to two inputs, or throws an exception if unable to do so.
@@ -1475,7 +1463,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>If the function throws an {@code ExecutionException}, the cause of the thrown {@code
      * ExecutionException} will be extracted and used as the failure of the derived step.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> call(
+    public <U extends Object> ClosingFuture<U> call(
         final ClosingFunction2<V1, V2, U> function, Executor executor) {
       return call(
           new CombiningCallable<U>() {
@@ -1529,7 +1517,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>The same warnings about doing heavyweight operations within {@link
      * ClosingFuture#transformAsync(AsyncClosingFunction, Executor)} apply here.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> callAsync(
+    public <U extends Object> ClosingFuture<U> callAsync(
         final AsyncClosingFunction2<V1, V2, U> function, Executor executor) {
       return callAsync(
           new AsyncCombiningCallable<U>() {
@@ -1557,7 +1545,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V3> the type returned by the third future
    */
   public static final class Combiner3<
-          V1 extends @Nullable Object, V2 extends @Nullable Object, V3 extends @Nullable Object>
+          V1 extends Object, V2 extends Object, V3 extends Object>
       extends Combiner {
     /**
      * A function that returns a value when applied to the values of the three futures passed to
@@ -1569,10 +1557,10 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param <U> the type returned by the function
      */
     public interface ClosingFunction3<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        U extends Object> {
       /**
        * Applies this function to three inputs, or throws an exception if unable to do so.
        *
@@ -1600,10 +1588,10 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param <U> the type returned by the function
      */
     public interface AsyncClosingFunction3<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        U extends Object> {
       /**
        * Applies this function to three inputs, or throws an exception if unable to do so.
        *
@@ -1645,7 +1633,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>If the function throws an {@code ExecutionException}, the cause of the thrown {@code
      * ExecutionException} will be extracted and used as the failure of the derived step.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> call(
+    public <U extends Object> ClosingFuture<U> call(
         final ClosingFunction3<V1, V2, V3, U> function, Executor executor) {
       return call(
           new CombiningCallable<U>() {
@@ -1703,7 +1691,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>The same warnings about doing heavyweight operations within {@link
      * ClosingFuture#transformAsync(AsyncClosingFunction, Executor)} apply here.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> callAsync(
+    public <U extends Object> ClosingFuture<U> callAsync(
         final AsyncClosingFunction3<V1, V2, V3, U> function, Executor executor) {
       return callAsync(
           new AsyncCombiningCallable<U>() {
@@ -1736,10 +1724,10 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V4> the type returned by the fourth future
    */
   public static final class Combiner4<
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object,
-          V3 extends @Nullable Object,
-          V4 extends @Nullable Object>
+          V1 extends Object,
+          V2 extends Object,
+          V3 extends Object,
+          V4 extends Object>
       extends Combiner {
     /**
      * A function that returns a value when applied to the values of the four futures passed to
@@ -1752,11 +1740,11 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param <U> the type returned by the function
      */
     public interface ClosingFunction4<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        V4 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        V4 extends Object,
+        U extends Object> {
       /**
        * Applies this function to four inputs, or throws an exception if unable to do so.
        *
@@ -1787,11 +1775,11 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param <U> the type returned by the function
      */
     public interface AsyncClosingFunction4<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        V4 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        V4 extends Object,
+        U extends Object> {
       /**
        * Applies this function to four inputs, or throws an exception if unable to do so.
        *
@@ -1839,7 +1827,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>If the function throws an {@code ExecutionException}, the cause of the thrown {@code
      * ExecutionException} will be extracted and used as the failure of the derived step.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> call(
+    public <U extends Object> ClosingFuture<U> call(
         final ClosingFunction4<V1, V2, V3, V4, U> function, Executor executor) {
       return call(
           new CombiningCallable<U>() {
@@ -1898,7 +1886,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>The same warnings about doing heavyweight operations within {@link
      * ClosingFuture#transformAsync(AsyncClosingFunction, Executor)} apply here.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> callAsync(
+    public <U extends Object> ClosingFuture<U> callAsync(
         final AsyncClosingFunction4<V1, V2, V3, V4, U> function, Executor executor) {
       return callAsync(
           new AsyncCombiningCallable<U>() {
@@ -1933,11 +1921,11 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V5> the type returned by the fifth future
    */
   public static final class Combiner5<
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object,
-          V3 extends @Nullable Object,
-          V4 extends @Nullable Object,
-          V5 extends @Nullable Object>
+          V1 extends Object,
+          V2 extends Object,
+          V3 extends Object,
+          V4 extends Object,
+          V5 extends Object>
       extends Combiner {
     /**
      * A function that returns a value when applied to the values of the five futures passed to
@@ -1952,12 +1940,12 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param <U> the type returned by the function
      */
     public interface ClosingFunction5<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        V4 extends @Nullable Object,
-        V5 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        V4 extends Object,
+        V5 extends Object,
+        U extends Object> {
       /**
        * Applies this function to five inputs, or throws an exception if unable to do so.
        *
@@ -1990,12 +1978,12 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param <U> the type returned by the function
      */
     public interface AsyncClosingFunction5<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        V4 extends @Nullable Object,
-        V5 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        V4 extends Object,
+        V5 extends Object,
+        U extends Object> {
       /**
        * Applies this function to five inputs, or throws an exception if unable to do so.
        *
@@ -2048,7 +2036,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>If the function throws an {@code ExecutionException}, the cause of the thrown {@code
      * ExecutionException} will be extracted and used as the failure of the derived step.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> call(
+    public <U extends Object> ClosingFuture<U> call(
         final ClosingFunction5<V1, V2, V3, V4, V5, U> function, Executor executor) {
       return call(
           new CombiningCallable<U>() {
@@ -2109,7 +2097,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>The same warnings about doing heavyweight operations within {@link
      * ClosingFuture#transformAsync(AsyncClosingFunction, Executor)} apply here.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> callAsync(
+    public <U extends Object> ClosingFuture<U> callAsync(
         final AsyncClosingFunction5<V1, V2, V3, V4, V5, U> function, Executor executor) {
       return callAsync(
           new AsyncCombiningCallable<U>() {
@@ -2191,7 +2179,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
     private volatile boolean closed;
     @CheckForNull private volatile CountDownLatch whenClosed;
 
-    <V extends @Nullable Object, U extends @Nullable Object>
+    <V extends Object, U extends Object>
         ListenableFuture<U> applyClosingFunction(
             ClosingFunction<? super V, U> transformation, @ParametricNullness V input)
             throws Exception {
@@ -2204,7 +2192,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
       }
     }
 
-    <V extends @Nullable Object, U extends @Nullable Object>
+    <V extends Object, U extends Object>
         FluentFuture<U> applyAsyncClosingFunction(
             AsyncClosingFunction<V, U> transformation, @ParametricNullness V input)
             throws Exception {
@@ -2274,7 +2262,6 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * Returns an object that can be used to wait until this objects' deferred closeables have all had
    * {@link Runnable}s that close them submitted to each one's closing {@link Executor}.
    */
-  @VisibleForTesting
   CountDownLatch whenClosedCountDown() {
     return closeables.whenClosedCountDown();
   }
diff --git a/android/guava/src/com/google/common/util/concurrent/CollectionFuture.java b/android/guava/src/com/google/common/util/concurrent/CollectionFuture.java
index c106c15..ac698af 100644
--- a/android/guava/src/com/google/common/util/concurrent/CollectionFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/CollectionFuture.java
@@ -17,18 +17,14 @@ package com.google.common.util.concurrent;
 import static com.google.common.collect.Lists.newArrayListWithCapacity;
 import static java.util.Collections.unmodifiableList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableCollection;
 import com.google.common.collect.Lists;
 import java.util.Collections;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Aggregate future that collects (stores) results of each future. */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable Object>
+abstract class CollectionFuture<V extends Object, C extends Object>
     extends AggregateFuture<V, C> {
   /*
    * We access this field racily but safely. For discussion of a similar situation, see the comments
@@ -36,17 +32,17 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
    * there: cancel() never reads this field, only writes to it. That makes the race here completely
    * harmless, rather than just 99.99% harmless.
    */
-  @CheckForNull private List<@Nullable Present<V>> values;
+  @CheckForNull private List<Present<V>> values;
 
   CollectionFuture(
       ImmutableCollection<? extends ListenableFuture<? extends V>> futures,
       boolean allMustSucceed) {
     super(futures, allMustSucceed, true);
 
-    List<@Nullable Present<V>> values =
+    List<Present<V>> values =
         futures.isEmpty()
-            ? Collections.<@Nullable Present<V>>emptyList()
-            : Lists.<@Nullable Present<V>>newArrayListWithCapacity(futures.size());
+            ? Collections.<Present<V>>emptyList()
+            : Lists.<Present<V>>newArrayListWithCapacity(futures.size());
 
     // Populate the results list with null initially.
     for (int i = 0; i < futures.size(); ++i) {
@@ -58,7 +54,7 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
 
   @Override
   final void collectOneValue(int index, @ParametricNullness V returnValue) {
-    List<@Nullable Present<V>> localValues = values;
+    List<Present<V>> localValues = values;
     if (localValues != null) {
       localValues.set(index, new Present<>(returnValue));
     }
@@ -66,7 +62,7 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
 
   @Override
   final void handleAllCompleted() {
-    List<@Nullable Present<V>> localValues = values;
+    List<Present<V>> localValues = values;
     if (localValues != null) {
       set(combine(localValues));
     }
@@ -81,8 +77,8 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
   abstract C combine(List<@Nullable Present<V>> values);
 
   /** Used for {@link Futures#allAsList} and {@link Futures#successfulAsList}. */
-  static final class ListFuture<V extends @Nullable Object>
-      extends CollectionFuture<V, List<@Nullable V>> {
+  static final class ListFuture<V extends Object>
+      extends CollectionFuture<V, List<V>> {
     ListFuture(
         ImmutableCollection<? extends ListenableFuture<? extends V>> futures,
         boolean allMustSucceed) {
@@ -91,8 +87,8 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
     }
 
     @Override
-    public List<@Nullable V> combine(List<@Nullable Present<V>> values) {
-      List<@Nullable V> result = newArrayListWithCapacity(values.size());
+    public List<V> combine(List<@Nullable Present<V>> values) {
+      List<V> result = newArrayListWithCapacity(values.size());
       for (Present<V> element : values) {
         result.add(element != null ? element.value : null);
       }
@@ -101,7 +97,7 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
   }
 
   /** The result of a successful {@code Future}. */
-  private static final class Present<V extends @Nullable Object> {
+  private static final class Present<V extends Object> {
     V value;
 
     Present(V value) {
diff --git a/android/guava/src/com/google/common/util/concurrent/CombinedFuture.java b/android/guava/src/com/google/common/util/concurrent/CombinedFuture.java
index c222111..fd7c950 100644
--- a/android/guava/src/com/google/common/util/concurrent/CombinedFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/CombinedFuture.java
@@ -17,22 +17,17 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.AggregateFuture.ReleaseResourcesReason.OUTPUT_FUTURE_DONE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableCollection;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.RejectedExecutionException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Aggregate future that computes its value by calling a callable. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class CombinedFuture<V extends @Nullable Object>
-    extends AggregateFuture<@Nullable Object, V> {
+final class CombinedFuture<V extends Object>
+    extends AggregateFuture<Object, V> {
   @CheckForNull private CombinedFutureInterruptibleTask<?> task;
 
   CombinedFuture(
@@ -89,8 +84,7 @@ final class CombinedFuture<V extends @Nullable Object>
     }
   }
 
-  @WeakOuter
-  private abstract class CombinedFutureInterruptibleTask<T extends @Nullable Object>
+  private abstract class CombinedFutureInterruptibleTask<T extends Object>
       extends InterruptibleTask<T> {
     private final Executor listenerExecutor;
 
@@ -150,7 +144,6 @@ final class CombinedFuture<V extends @Nullable Object>
     abstract void setValue(@ParametricNullness T value);
   }
 
-  @WeakOuter
   private final class AsyncCallableInterruptibleTask
       extends CombinedFutureInterruptibleTask<ListenableFuture<V>> {
     private final AsyncCallable<V> callable;
@@ -181,7 +174,6 @@ final class CombinedFuture<V extends @Nullable Object>
     }
   }
 
-  @WeakOuter
   private final class CallableInterruptibleTask extends CombinedFutureInterruptibleTask<V> {
     private final Callable<V> callable;
 
diff --git a/android/guava/src/com/google/common/util/concurrent/CycleDetectingLockFactory.java b/android/guava/src/com/google/common/util/concurrent/CycleDetectingLockFactory.java
index b6b161d..b98b068 100644
--- a/android/guava/src/com/google/common/util/concurrent/CycleDetectingLockFactory.java
+++ b/android/guava/src/com/google/common/util/concurrent/CycleDetectingLockFactory.java
@@ -15,20 +15,13 @@
 package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.MapMaker;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.Weak;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -160,9 +153,7 @@ import javax.annotation.CheckForNull;
  * @author Darick Tong
  * @since 13.0
  */
-@Beta
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 public class CycleDetectingLockFactory {
 
@@ -173,7 +164,6 @@ public class CycleDetectingLockFactory {
    *
    * @since 13.0
    */
-  @Beta
   public interface Policy {
 
     /**
@@ -193,7 +183,6 @@ public class CycleDetectingLockFactory {
    *
    * @since 13.0
    */
-  @Beta
   public enum Policies implements Policy {
     /**
      * When potential deadlock is detected, this policy results in the throwing of the {@code
@@ -304,7 +293,6 @@ public class CycleDetectingLockFactory {
    * disallowedPriorLocks} prepopulated with nodes according to the natural ordering of the
    * associated Enum values.
    */
-  @VisibleForTesting
   static <E extends Enum<E>> Map<E, LockGraphNode> createNodes(Class<E> clazz) {
     EnumMap<E, LockGraphNode> map = Maps.newEnumMap(clazz);
     E[] keys = clazz.getEnumConstants();
@@ -394,13 +382,11 @@ public class CycleDetectingLockFactory {
    * @param <E> The Enum type representing the explicit lock ordering.
    * @since 13.0
    */
-  @Beta
   public static final class WithExplicitOrdering<E extends Enum<E>>
       extends CycleDetectingLockFactory {
 
     private final Map<E, LockGraphNode> lockGraphNodes;
 
-    @VisibleForTesting
     WithExplicitOrdering(Policy policy, Map<E, LockGraphNode> lockGraphNodes) {
       super(policy);
       this.lockGraphNodes = lockGraphNodes;
@@ -534,7 +520,6 @@ public class CycleDetectingLockFactory {
    *
    * @since 13.0
    */
-  @Beta
   public static final class PotentialDeadlockException extends ExampleStackTrace {
 
     private final ExampleStackTrace conflictingStackTrace;
@@ -863,7 +848,7 @@ public class CycleDetectingLockFactory {
 
   private class CycleDetectingReentrantReadLock extends ReentrantReadWriteLock.ReadLock {
 
-    @Weak final CycleDetectingReentrantReadWriteLock readWriteLock;
+    final CycleDetectingReentrantReadWriteLock readWriteLock;
 
     CycleDetectingReentrantReadLock(CycleDetectingReentrantReadWriteLock readWriteLock) {
       super(readWriteLock);
@@ -922,7 +907,7 @@ public class CycleDetectingLockFactory {
 
   private class CycleDetectingReentrantWriteLock extends ReentrantReadWriteLock.WriteLock {
 
-    @Weak final CycleDetectingReentrantReadWriteLock readWriteLock;
+    final CycleDetectingReentrantReadWriteLock readWriteLock;
 
     CycleDetectingReentrantWriteLock(CycleDetectingReentrantReadWriteLock readWriteLock) {
       super(readWriteLock);
diff --git a/android/guava/src/com/google/common/util/concurrent/DirectExecutor.java b/android/guava/src/com/google/common/util/concurrent/DirectExecutor.java
index 0c3a46b..4d12e1e 100644
--- a/android/guava/src/com/google/common/util/concurrent/DirectExecutor.java
+++ b/android/guava/src/com/google/common/util/concurrent/DirectExecutor.java
@@ -14,14 +14,12 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.Executor;
 
 /**
  * An {@link Executor} that runs each task in the thread that invokes {@link Executor#execute
  * execute}.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 enum DirectExecutor implements Executor {
   INSTANCE;
diff --git a/android/guava/src/com/google/common/util/concurrent/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/util/concurrent/ElementTypesAreNonnullByDefault.java
index 3487125..669a53b 100644
--- a/android/guava/src/com/google/common/util/concurrent/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/util/concurrent/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/util/concurrent/ExecutionError.java b/android/guava/src/com/google/common/util/concurrent/ExecutionError.java
index deaff15..7df64a4 100644
--- a/android/guava/src/com/google/common/util/concurrent/ExecutionError.java
+++ b/android/guava/src/com/google/common/util/concurrent/ExecutionError.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -27,7 +26,6 @@ import javax.annotation.CheckForNull;
  * @author Chris Povirk
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class ExecutionError extends Error {
   /*
diff --git a/android/guava/src/com/google/common/util/concurrent/ExecutionList.java b/android/guava/src/com/google/common/util/concurrent/ExecutionList.java
index 96fc51c..35e6ce9 100644
--- a/android/guava/src/com/google/common/util/concurrent/ExecutionList.java
+++ b/android/guava/src/com/google/common/util/concurrent/ExecutionList.java
@@ -16,8 +16,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.util.concurrent.Executor;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -39,7 +37,6 @@ import javax.annotation.CheckForNull;
  * @author Sven Mawson
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ExecutionList {
   /** Logger to log exceptions caught when running runnables. */
@@ -49,11 +46,9 @@ public final class ExecutionList {
    * The runnable, executor pairs to execute. This acts as a stack threaded through the {@link
    * RunnableExecutorPair#next} field.
    */
-  @GuardedBy("this")
   @CheckForNull
   private RunnableExecutorPair runnables;
 
-  @GuardedBy("this")
   private boolean executed;
 
   /** Creates a new, empty {@link ExecutionList}. */
diff --git a/android/guava/src/com/google/common/util/concurrent/ExecutionSequencer.java b/android/guava/src/com/google/common/util/concurrent/ExecutionSequencer.java
index 148f50b..86a977f 100644
--- a/android/guava/src/com/google/common/util/concurrent/ExecutionSequencer.java
+++ b/android/guava/src/com/google/common/util/concurrent/ExecutionSequencer.java
@@ -23,14 +23,11 @@ import static com.google.common.util.concurrent.Futures.immediateCancelledFuture
 import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static com.google.common.util.concurrent.Futures.immediateVoidFuture;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Executor;
 import java.util.concurrent.atomic.AtomicReference;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Serializes execution of tasks, somewhat like an "asynchronous {@code synchronized} block." Each
@@ -80,7 +77,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 26.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class ExecutionSequencer {
 
@@ -92,7 +88,7 @@ public final class ExecutionSequencer {
   }
 
   /** This reference acts as a pointer tracking the head of a linked list of ListenableFutures. */
-  private final AtomicReference<ListenableFuture<@Nullable Void>> ref =
+  private final AtomicReference<ListenableFuture<Void>> ref =
       new AtomicReference<>(immediateVoidFuture());
 
   private ThreadConfinedTaskQueue latestTaskQueue = new ThreadConfinedTaskQueue();
@@ -140,7 +136,7 @@ public final class ExecutionSequencer {
    * execute, but if the output future is cancelled before {@link Callable#call()} is invoked,
    * {@link Callable#call()} will not be invoked.
    */
-  public <T extends @Nullable Object> ListenableFuture<T> submit(
+  public <T extends Object> ListenableFuture<T> submit(
       final Callable<T> callable, Executor executor) {
     checkNotNull(callable);
     checkNotNull(executor);
@@ -166,7 +162,7 @@ public final class ExecutionSequencer {
    * callable} or a callable that has begun to execute, but if the output future is cancelled before
    * {@link AsyncCallable#call()} is invoked, {@link AsyncCallable#call()} will not be invoked.
    */
-  public <T extends @Nullable Object> ListenableFuture<T> submitAsync(
+  public <T extends Object> ListenableFuture<T> submitAsync(
       final AsyncCallable<T> callable, final Executor executor) {
     checkNotNull(callable);
     checkNotNull(executor);
@@ -197,9 +193,9 @@ public final class ExecutionSequencer {
      * have completed - namely after oldFuture is done, and taskFuture has either completed or been
      * cancelled before the callable started execution.
      */
-    final SettableFuture<@Nullable Void> newFuture = SettableFuture.create();
+    final SettableFuture<Void> newFuture = SettableFuture.create();
 
-    final ListenableFuture<@Nullable Void> oldFuture = ref.getAndSet(newFuture);
+    final ListenableFuture<Void> oldFuture = ref.getAndSet(newFuture);
 
     // Invoke our task once the previous future completes.
     final TrustedListenableFutureTask<T> taskFuture = TrustedListenableFutureTask.create(task);
diff --git a/android/guava/src/com/google/common/util/concurrent/FakeTimeLimiter.java b/android/guava/src/com/google/common/util/concurrent/FakeTimeLimiter.java
index ddc9440..dfdc9b7 100644
--- a/android/guava/src/com/google/common/util/concurrent/FakeTimeLimiter.java
+++ b/android/guava/src/com/google/common/util/concurrent/FakeTimeLimiter.java
@@ -16,13 +16,9 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A TimeLimiter implementation which actually does not attempt to limit time at all. This may be
@@ -34,9 +30,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jens Nyman
  * @since 1.0
  */
-@Beta
-@CanIgnoreReturnValue
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class FakeTimeLimiter implements TimeLimiter {
   @Override
@@ -50,7 +43,7 @@ public final class FakeTimeLimiter implements TimeLimiter {
 
   @Override
   @ParametricNullness
-  public <T extends @Nullable Object> T callWithTimeout(
+  public <T extends Object> T callWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit) throws ExecutionException {
     checkNotNull(callable);
     checkNotNull(timeoutUnit);
@@ -71,7 +64,7 @@ public final class FakeTimeLimiter implements TimeLimiter {
 
   @Override
   @ParametricNullness
-  public <T extends @Nullable Object> T callUninterruptiblyWithTimeout(
+  public <T extends Object> T callUninterruptiblyWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit) throws ExecutionException {
     return callWithTimeout(callable, timeoutDuration, timeoutUnit);
   }
diff --git a/android/guava/src/com/google/common/util/concurrent/FluentFuture.java b/android/guava/src/com/google/common/util/concurrent/FluentFuture.java
index 2b6ef9f..de92b37 100644
--- a/android/guava/src/com/google/common/util/concurrent/FluentFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/FluentFuture.java
@@ -16,18 +16,12 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link ListenableFuture} that supports fluent chains of operations. For example:
@@ -70,27 +64,22 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 23.0
  */
-@Beta
-@DoNotMock("Use FluentFuture.from(Futures.immediate*Future) or SettableFuture")
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public abstract class FluentFuture<V extends @Nullable Object>
+public abstract class FluentFuture<V extends Object>
     extends GwtFluentFutureCatchingSpecialization<V> {
 
   /**
    * A less abstract subclass of AbstractFuture. This can be used to optimize setFuture by ensuring
    * that {@link #get} calls exactly the implementation of {@link AbstractFuture#get}.
    */
-  abstract static class TrustedFuture<V extends @Nullable Object> extends FluentFuture<V>
+  abstract static class TrustedFuture<V extends Object> extends FluentFuture<V>
       implements AbstractFuture.Trusted<V> {
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public final V get() throws InterruptedException, ExecutionException {
       return super.get();
     }
 
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public final V get(long timeout, TimeUnit unit)
@@ -113,7 +102,6 @@ public abstract class FluentFuture<V extends @Nullable Object>
       super.addListener(listener, executor);
     }
 
-    @CanIgnoreReturnValue
     @Override
     public final boolean cancel(boolean mayInterruptIfRunning) {
       return super.cancel(mayInterruptIfRunning);
@@ -129,7 +117,7 @@ public abstract class FluentFuture<V extends @Nullable Object>
    * directly. If not, it is wrapped in a {@code FluentFuture} that delegates all calls to the
    * original {@code ListenableFuture}.
    */
-  public static <V extends @Nullable Object> FluentFuture<V> from(ListenableFuture<V> future) {
+  public static <V extends Object> FluentFuture<V> from(ListenableFuture<V> future) {
     return future instanceof FluentFuture
         ? (FluentFuture<V>) future
         : new ForwardingFluentFuture<V>(future);
@@ -142,7 +130,7 @@ public abstract class FluentFuture<V extends @Nullable Object>
    * @since 28.0
    */
   @Deprecated
-  public static <V extends @Nullable Object> FluentFuture<V> from(FluentFuture<V> future) {
+  public static <V extends Object> FluentFuture<V> from(FluentFuture<V> future) {
     return checkNotNull(future);
   }
 
@@ -183,7 +171,6 @@ public abstract class FluentFuture<V extends @Nullable Object>
    *     {@code get()} throws a different kind of exception, that exception itself.
    * @param executor the executor that runs {@code fallback} if the input fails
    */
-  @Partially.GwtIncompatible("AVAILABLE but requires exceptionType to be Throwable.class")
   public final <X extends Throwable> FluentFuture<V> catching(
       Class<X> exceptionType, Function<? super X, ? extends V> fallback, Executor executor) {
     return (FluentFuture<V>) Futures.catching(this, exceptionType, fallback, executor);
@@ -247,7 +234,6 @@ public abstract class FluentFuture<V extends @Nullable Object>
    *     {@code get()} throws a different kind of exception, that exception itself.
    * @param executor the executor that runs {@code fallback} if the input fails
    */
-  @Partially.GwtIncompatible("AVAILABLE but requires exceptionType to be Throwable.class")
   public final <X extends Throwable> FluentFuture<V> catchingAsync(
       Class<X> exceptionType, AsyncFunction<? super X, ? extends V> fallback, Executor executor) {
     return (FluentFuture<V>) Futures.catchingAsync(this, exceptionType, fallback, executor);
@@ -263,7 +249,7 @@ public abstract class FluentFuture<V extends @Nullable Object>
    * @param unit the time unit of the time parameter
    * @param scheduledExecutor The executor service to enforce the timeout.
    */
-  @GwtIncompatible // ScheduledExecutorService
+  // ScheduledExecutorService
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public final FluentFuture<V> withTimeout(
       long timeout, TimeUnit unit, ScheduledExecutorService scheduledExecutor) {
@@ -309,7 +295,7 @@ public abstract class FluentFuture<V extends @Nullable Object>
    * @return A future that holds result of the function (if the input succeeded) or the original
    *     input's failure (if not)
    */
-  public final <T extends @Nullable Object> FluentFuture<T> transformAsync(
+  public final <T extends Object> FluentFuture<T> transformAsync(
       AsyncFunction<? super V, T> function, Executor executor) {
     return (FluentFuture<T>) Futures.transformAsync(this, function, executor);
   }
@@ -346,7 +332,7 @@ public abstract class FluentFuture<V extends @Nullable Object>
    * @param executor Executor to run the function in.
    * @return A future that holds result of the transformation.
    */
-  public final <T extends @Nullable Object> FluentFuture<T> transform(
+  public final <T extends Object> FluentFuture<T> transform(
       Function<? super V, T> function, Executor executor) {
     return (FluentFuture<T>) Futures.transform(this, function, executor);
   }
diff --git a/android/guava/src/com/google/common/util/concurrent/ForwardingBlockingDeque.java b/android/guava/src/com/google/common/util/concurrent/ForwardingBlockingDeque.java
index d0d72a8..7506825 100644
--- a/android/guava/src/com/google/common/util/concurrent/ForwardingBlockingDeque.java
+++ b/android/guava/src/com/google/common/util/concurrent/ForwardingBlockingDeque.java
@@ -16,7 +16,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ForwardingDeque;
 import java.util.Collection;
 import java.util.concurrent.BlockingDeque;
@@ -44,7 +43,6 @@ import javax.annotation.CheckForNull;
  * @author Emily Soldal
  * @since 21.0 (since 14.0 as {@link com.google.common.collect.ForwardingBlockingDeque})
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingBlockingDeque<E> extends ForwardingDeque<E>
     implements BlockingDeque<E> {
diff --git a/android/guava/src/com/google/common/util/concurrent/ForwardingBlockingQueue.java b/android/guava/src/com/google/common/util/concurrent/ForwardingBlockingQueue.java
index dc8511d..088804c 100644
--- a/android/guava/src/com/google/common/util/concurrent/ForwardingBlockingQueue.java
+++ b/android/guava/src/com/google/common/util/concurrent/ForwardingBlockingQueue.java
@@ -14,9 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ForwardingQueue;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.TimeUnit;
@@ -36,8 +34,7 @@ import javax.annotation.CheckForNull;
  * @param <E> the type of elements held in this collection
  * @since 4.0
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingBlockingQueue<E> extends ForwardingQueue<E>
     implements BlockingQueue<E> {
diff --git a/android/guava/src/com/google/common/util/concurrent/ForwardingExecutorService.java b/android/guava/src/com/google/common/util/concurrent/ForwardingExecutorService.java
index ed78b86..0122143 100644
--- a/android/guava/src/com/google/common/util/concurrent/ForwardingExecutorService.java
+++ b/android/guava/src/com/google/common/util/concurrent/ForwardingExecutorService.java
@@ -14,9 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ForwardingObject;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -25,7 +23,6 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An executor service which forwards all its method calls to another executor service. Subclasses
@@ -35,8 +32,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 10.0
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingExecutorService extends ForwardingObject
     implements ExecutorService {
@@ -52,26 +48,26 @@ public abstract class ForwardingExecutorService extends ForwardingObject
   }
 
   @Override
-  public <T extends @Nullable Object> List<Future<T>> invokeAll(
+  public <T extends Object> List<Future<T>> invokeAll(
       Collection<? extends Callable<T>> tasks) throws InterruptedException {
     return delegate().invokeAll(tasks);
   }
 
   @Override
-  public <T extends @Nullable Object> List<Future<T>> invokeAll(
+  public <T extends Object> List<Future<T>> invokeAll(
       Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
       throws InterruptedException {
     return delegate().invokeAll(tasks, timeout, unit);
   }
 
   @Override
-  public <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)
+  public <T extends Object> T invokeAny(Collection<? extends Callable<T>> tasks)
       throws InterruptedException, ExecutionException {
     return delegate().invokeAny(tasks);
   }
 
   @Override
-  public <T extends @Nullable Object> T invokeAny(
+  public <T extends Object> T invokeAny(
       Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
       throws InterruptedException, ExecutionException, TimeoutException {
     return delegate().invokeAny(tasks, timeout, unit);
@@ -103,7 +99,7 @@ public abstract class ForwardingExecutorService extends ForwardingObject
   }
 
   @Override
-  public <T extends @Nullable Object> Future<T> submit(Callable<T> task) {
+  public <T extends Object> Future<T> submit(Callable<T> task) {
     return delegate().submit(task);
   }
 
@@ -113,7 +109,7 @@ public abstract class ForwardingExecutorService extends ForwardingObject
   }
 
   @Override
-  public <T extends @Nullable Object> Future<T> submit(
+  public <T extends Object> Future<T> submit(
       Runnable task, @ParametricNullness T result) {
     return delegate().submit(task, result);
   }
diff --git a/android/guava/src/com/google/common/util/concurrent/ForwardingFluentFuture.java b/android/guava/src/com/google/common/util/concurrent/ForwardingFluentFuture.java
index cb779c3..ce517a2 100644
--- a/android/guava/src/com/google/common/util/concurrent/ForwardingFluentFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/ForwardingFluentFuture.java
@@ -16,12 +16,10 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * {@link FluentFuture} that forwards all calls to a delegate.
@@ -33,9 +31,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * existing {@code ListenableFuture}, implemented atop a {@link ForwardingListenableFuture} that
  * forwards to that future and adds the desired methods.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class ForwardingFluentFuture<V extends @Nullable Object> extends FluentFuture<V> {
+final class ForwardingFluentFuture<V extends Object> extends FluentFuture<V> {
   private final ListenableFuture<V> delegate;
 
   ForwardingFluentFuture(ListenableFuture<V> delegate) {
diff --git a/android/guava/src/com/google/common/util/concurrent/ForwardingFuture.java b/android/guava/src/com/google/common/util/concurrent/ForwardingFuture.java
index 47002b0..2c1d21a 100644
--- a/android/guava/src/com/google/common/util/concurrent/ForwardingFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/ForwardingFuture.java
@@ -14,15 +14,12 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ForwardingObject;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Future} which forwards all its method calls to another future. Subclasses should
@@ -34,10 +31,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 1.0
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtCompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingFuture<V extends @Nullable Object> extends ForwardingObject
+public abstract class ForwardingFuture<V extends Object> extends ForwardingObject
     implements Future<V> {
   /** Constructor for use by subclasses. */
   protected ForwardingFuture() {}
@@ -80,7 +76,7 @@ public abstract class ForwardingFuture<V extends @Nullable Object> extends Forwa
    *
    * @since 9.0
    */
-  public abstract static class SimpleForwardingFuture<V extends @Nullable Object>
+  public abstract static class SimpleForwardingFuture<V extends Object>
       extends ForwardingFuture<V> {
     private final Future<V> delegate;
 
diff --git a/android/guava/src/com/google/common/util/concurrent/ForwardingListenableFuture.java b/android/guava/src/com/google/common/util/concurrent/ForwardingListenableFuture.java
index 3868091..078e6d3 100644
--- a/android/guava/src/com/google/common/util/concurrent/ForwardingListenableFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/ForwardingListenableFuture.java
@@ -14,11 +14,8 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.Executor;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link ListenableFuture} which forwards all its method calls to another future. Subclasses
@@ -30,10 +27,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Shardul Deo
  * @since 4.0
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtCompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingListenableFuture<V extends @Nullable Object>
+public abstract class ForwardingListenableFuture<V extends Object>
     extends ForwardingFuture<V> implements ListenableFuture<V> {
 
   /** Constructor for use by subclasses. */
@@ -54,7 +50,7 @@ public abstract class ForwardingListenableFuture<V extends @Nullable Object>
    *
    * @since 9.0
    */
-  public abstract static class SimpleForwardingListenableFuture<V extends @Nullable Object>
+  public abstract static class SimpleForwardingListenableFuture<V extends Object>
       extends ForwardingListenableFuture<V> {
     private final ListenableFuture<V> delegate;
 
diff --git a/android/guava/src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java b/android/guava/src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java
index fe25b86..12fdb81 100644
--- a/android/guava/src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java
+++ b/android/guava/src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java
@@ -14,10 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.Callable;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A listening executor service which forwards all its method calls to another listening executor
@@ -28,8 +25,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Isaac Shum
  * @since 10.0
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingListeningExecutorService extends ForwardingExecutorService
     implements ListeningExecutorService {
@@ -40,7 +36,7 @@ public abstract class ForwardingListeningExecutorService extends ForwardingExecu
   protected abstract ListeningExecutorService delegate();
 
   @Override
-  public <T extends @Nullable Object> ListenableFuture<T> submit(Callable<T> task) {
+  public <T extends Object> ListenableFuture<T> submit(Callable<T> task) {
     return delegate().submit(task);
   }
 
@@ -50,7 +46,7 @@ public abstract class ForwardingListeningExecutorService extends ForwardingExecu
   }
 
   @Override
-  public <T extends @Nullable Object> ListenableFuture<T> submit(
+  public <T extends Object> ListenableFuture<T> submit(
       Runnable task, @ParametricNullness T result) {
     return delegate().submit(task, result);
   }
diff --git a/android/guava/src/com/google/common/util/concurrent/FutureCallback.java b/android/guava/src/com/google/common/util/concurrent/FutureCallback.java
index f5684e7..0abb16c 100644
--- a/android/guava/src/com/google/common/util/concurrent/FutureCallback.java
+++ b/android/guava/src/com/google/common/util/concurrent/FutureCallback.java
@@ -14,10 +14,8 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A callback for accepting the results of a {@link java.util.concurrent.Future} computation
@@ -28,9 +26,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Anthony Zana
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface FutureCallback<V extends @Nullable Object> {
+public interface FutureCallback<V extends Object> {
   /** Invoked with the result of the {@code Future} computation when it is successful. */
   void onSuccess(@ParametricNullness V result);
 
diff --git a/android/guava/src/com/google/common/util/concurrent/Futures.java b/android/guava/src/com/google/common/util/concurrent/Futures.java
index e6bf7a7..33c9301 100644
--- a/android/guava/src/com/google/common/util/concurrent/Futures.java
+++ b/android/guava/src/com/google/common/util/concurrent/Futures.java
@@ -18,21 +18,15 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.CollectionFuture.ListFuture;
 import com.google.common.util.concurrent.ImmediateFuture.ImmediateCancelledFuture;
 import com.google.common.util.concurrent.ImmediateFuture.ImmediateFailedFuture;
 import com.google.common.util.concurrent.internal.InternalFutureFailureAccess;
 import com.google.common.util.concurrent.internal.InternalFutures;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -46,7 +40,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicInteger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to the {@link Future} interface.
@@ -72,7 +65,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Futures extends GwtFuturesCatchingSpecialization {
 
@@ -128,7 +120,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * getters just return the value. This {@code Future} can't be canceled or timed out and its
    * {@code isDone()} method always returns {@code true}.
    */
-  public static <V extends @Nullable Object> ListenableFuture<V> immediateFuture(
+  public static <V extends Object> ListenableFuture<V> immediateFuture(
       @ParametricNullness V value) {
     if (value == null) {
       // This cast is safe because null is assignable to V for all V (i.e. it is bivariant)
@@ -146,7 +138,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @since 29.0
    */
   @SuppressWarnings("unchecked")
-  public static ListenableFuture<@Nullable Void> immediateVoidFuture() {
+  public static ListenableFuture<Void> immediateVoidFuture() {
     return (ListenableFuture<@Nullable Void>) ImmediateFuture.NULL;
   }
 
@@ -157,7 +149,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * returns {@code true}. Calling {@code get()} will immediately throw the provided {@code
    * Throwable} wrapped in an {@code ExecutionException}.
    */
-  public static <V extends @Nullable Object> ListenableFuture<V> immediateFailedFuture(
+  public static <V extends Object> ListenableFuture<V> immediateFailedFuture(
       Throwable throwable) {
     checkNotNull(throwable);
     return new ImmediateFailedFuture<V>(throwable);
@@ -169,7 +161,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 14.0
    */
-  public static <V extends @Nullable Object> ListenableFuture<V> immediateCancelledFuture() {
+  public static <V extends Object> ListenableFuture<V> immediateCancelledFuture() {
     return new ImmediateCancelledFuture<V>();
   }
 
@@ -179,8 +171,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws RejectedExecutionException if the task cannot be scheduled for execution
    * @since 28.2
    */
-  @Beta
-  public static <O extends @Nullable Object> ListenableFuture<O> submit(
+  public static <O extends Object> ListenableFuture<O> submit(
       Callable<O> callable, Executor executor) {
     TrustedListenableFutureTask<O> task = TrustedListenableFutureTask.create(callable);
     executor.execute(task);
@@ -194,9 +185,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws RejectedExecutionException if the task cannot be scheduled for execution
    * @since 28.2
    */
-  @Beta
-  public static ListenableFuture<@Nullable Void> submit(Runnable runnable, Executor executor) {
-    TrustedListenableFutureTask<@Nullable Void> task =
+  public static ListenableFuture<Void> submit(Runnable runnable, Executor executor) {
+    TrustedListenableFutureTask<Void> task =
         TrustedListenableFutureTask.create(runnable, null);
     executor.execute(task);
     return task;
@@ -208,8 +198,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws RejectedExecutionException if the task cannot be scheduled for execution
    * @since 23.0
    */
-  @Beta
-  public static <O extends @Nullable Object> ListenableFuture<O> submitAsync(
+  public static <O extends Object> ListenableFuture<O> submitAsync(
       AsyncCallable<O> callable, Executor executor) {
     TrustedListenableFutureTask<O> task = TrustedListenableFutureTask.create(callable);
     executor.execute(task);
@@ -222,10 +211,9 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws RejectedExecutionException if the task cannot be scheduled for execution
    * @since 23.0
    */
-  @Beta
-  @GwtIncompatible // java.util.concurrent.ScheduledExecutorService
+  // java.util.concurrent.ScheduledExecutorService
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
-  public static <O extends @Nullable Object> ListenableFuture<O> scheduleAsync(
+  public static <O extends Object> ListenableFuture<O> scheduleAsync(
       AsyncCallable<O> callable,
       long delay,
       TimeUnit timeUnit,
@@ -280,9 +268,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @param executor the executor that runs {@code fallback} if {@code input} fails
    * @since 19.0
    */
-  @Beta
-  @Partially.GwtIncompatible("AVAILABLE but requires exceptionType to be Throwable.class")
-  public static <V extends @Nullable Object, X extends Throwable> ListenableFuture<V> catching(
+  public static <V extends Object, X extends Throwable> ListenableFuture<V> catching(
       ListenableFuture<? extends V> input,
       Class<X> exceptionType,
       Function<? super X, ? extends V> fallback,
@@ -345,9 +331,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @param executor the executor that runs {@code fallback} if {@code input} fails
    * @since 19.0 (similar functionality in 14.0 as {@code withFallback})
    */
-  @Beta
-  @Partially.GwtIncompatible("AVAILABLE but requires exceptionType to be Throwable.class")
-  public static <V extends @Nullable Object, X extends Throwable> ListenableFuture<V> catchingAsync(
+  public static <V extends Object, X extends Throwable> ListenableFuture<V> catchingAsync(
       ListenableFuture<? extends V> input,
       Class<X> exceptionType,
       AsyncFunction<? super X, ? extends V> fallback,
@@ -367,10 +351,9 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @param scheduledExecutor The executor service to enforce the timeout.
    * @since 19.0
    */
-  @Beta
-  @GwtIncompatible // java.util.concurrent.ScheduledExecutorService
+  // java.util.concurrent.ScheduledExecutorService
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
-  public static <V extends @Nullable Object> ListenableFuture<V> withTimeout(
+  public static <V extends Object> ListenableFuture<V> withTimeout(
       ListenableFuture<V> delegate,
       long time,
       TimeUnit unit,
@@ -413,8 +396,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *     input's failure (if not)
    * @since 19.0 (in 11.0 as {@code transform})
    */
-  @Beta
-  public static <I extends @Nullable Object, O extends @Nullable Object>
+  public static <I extends Object, O extends Object>
       ListenableFuture<O> transformAsync(
           ListenableFuture<I> input,
           AsyncFunction<? super I, ? extends O> function,
@@ -451,8 +433,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @return A future that holds result of the transformation.
    * @since 9.0 (in 2.0 as {@code compose})
    */
-  @Beta
-  public static <I extends @Nullable Object, O extends @Nullable Object>
+  public static <I extends Object, O extends Object>
       ListenableFuture<O> transform(
           ListenableFuture<I> input, Function<? super I, ? extends O> function, Executor executor) {
     return AbstractTransformFuture.create(input, function, executor);
@@ -478,9 +459,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @return A future that returns the result of the transformation.
    * @since 10.0
    */
-  @Beta
-  @GwtIncompatible // TODO
-  public static <I extends @Nullable Object, O extends @Nullable Object> Future<O> lazyTransform(
+  // TODO
+  public static <I extends Object, O extends Object> Future<O> lazyTransform(
       final Future<I> input, final Function<? super I, ? extends O> function) {
     checkNotNull(input);
     checkNotNull(function);
@@ -538,11 +518,10 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @return a future that provides a list of the results of the component futures
    * @since 10.0
    */
-  @Beta
   @SafeVarargs
-  public static <V extends @Nullable Object> ListenableFuture<List<V>> allAsList(
+  public static <V extends Object> ListenableFuture<List<V>> allAsList(
       ListenableFuture<? extends V>... futures) {
-    ListenableFuture<List<@Nullable V>> nullable =
+    ListenableFuture<List<V>> nullable =
         new ListFuture<V>(ImmutableList.copyOf(futures), true);
     // allAsList ensures that it fills the output list with V instances.
     @SuppressWarnings("nullness")
@@ -566,10 +545,9 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @return a future that provides a list of the results of the component futures
    * @since 10.0
    */
-  @Beta
-  public static <V extends @Nullable Object> ListenableFuture<List<V>> allAsList(
+  public static <V extends Object> ListenableFuture<List<V>> allAsList(
       Iterable<? extends ListenableFuture<? extends V>> futures) {
-    ListenableFuture<List<@Nullable V>> nullable =
+    ListenableFuture<List<V>> nullable =
         new ListFuture<V>(ImmutableList.copyOf(futures), true);
     // allAsList ensures that it fills the output list with V instances.
     @SuppressWarnings("nullness")
@@ -585,9 +563,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 20.0
    */
-  @Beta
   @SafeVarargs
-  public static <V extends @Nullable Object> FutureCombiner<V> whenAllComplete(
+  public static <V extends Object> FutureCombiner<V> whenAllComplete(
       ListenableFuture<? extends V>... futures) {
     return new FutureCombiner<V>(false, ImmutableList.copyOf(futures));
   }
@@ -600,8 +577,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 20.0
    */
-  @Beta
-  public static <V extends @Nullable Object> FutureCombiner<V> whenAllComplete(
+  public static <V extends Object> FutureCombiner<V> whenAllComplete(
       Iterable<? extends ListenableFuture<? extends V>> futures) {
     return new FutureCombiner<V>(false, ImmutableList.copyOf(futures));
   }
@@ -613,9 +589,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 20.0
    */
-  @Beta
   @SafeVarargs
-  public static <V extends @Nullable Object> FutureCombiner<V> whenAllSucceed(
+  public static <V extends Object> FutureCombiner<V> whenAllSucceed(
       ListenableFuture<? extends V>... futures) {
     return new FutureCombiner<V>(true, ImmutableList.copyOf(futures));
   }
@@ -627,8 +602,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 20.0
    */
-  @Beta
-  public static <V extends @Nullable Object> FutureCombiner<V> whenAllSucceed(
+  public static <V extends Object> FutureCombiner<V> whenAllSucceed(
       Iterable<? extends ListenableFuture<? extends V>> futures) {
     return new FutureCombiner<V>(true, ImmutableList.copyOf(futures));
   }
@@ -659,10 +633,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 20.0
    */
-  @Beta
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing, especially if we provide run(Runnable)
-  @GwtCompatible
-  public static final class FutureCombiner<V extends @Nullable Object> {
+  // TODO(cpovirk): Consider removing, especially if we provide run(Runnable)
+  public static final class FutureCombiner<V extends Object> {
     private final boolean allMustSucceed;
     private final ImmutableList<ListenableFuture<? extends V>> futures;
 
@@ -686,7 +658,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
      *
      * <p>Canceling this future will attempt to cancel all the component futures.
      */
-    public <C extends @Nullable Object> ListenableFuture<C> callAsync(
+    public <C extends Object> ListenableFuture<C> callAsync(
         AsyncCallable<C> combiner, Executor executor) {
       return new CombinedFuture<C>(futures, allMustSucceed, executor, combiner);
     }
@@ -705,8 +677,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
      *
      * <p>Canceling this future will attempt to cancel all the component futures.
      */
-    @CanIgnoreReturnValue // TODO(cpovirk): Remove this
-    public <C extends @Nullable Object> ListenableFuture<C> call(
+    // TODO(cpovirk): Remove this
+    public <C extends Object> ListenableFuture<C> call(
         Callable<C> combiner, Executor executor) {
       return new CombinedFuture<C>(futures, allMustSucceed, executor, combiner);
     }
@@ -743,8 +715,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 15.0
    */
-  @Beta
-  public static <V extends @Nullable Object> ListenableFuture<V> nonCancellationPropagating(
+  public static <V extends Object> ListenableFuture<V> nonCancellationPropagating(
       ListenableFuture<V> future) {
     if (future.isDone()) {
       return future;
@@ -755,7 +726,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
   }
 
   /** A wrapped future that does not propagate cancellation to its delegate. */
-  private static final class NonCancellationPropagatingFuture<V extends @Nullable Object>
+  private static final class NonCancellationPropagatingFuture<V extends Object>
       extends AbstractFuture.TrustedFuture<V> implements Runnable {
     @CheckForNull private ListenableFuture<V> delegate;
 
@@ -819,9 +790,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * whenAllComplete().collectSuccesses(). That API would have a signature more like the current
    * one.
    */
-  @Beta
   @SafeVarargs
-  public static <V extends @Nullable Object> ListenableFuture<List<@Nullable V>> successfulAsList(
+  public static <V extends Object> ListenableFuture<List<V>> successfulAsList(
       ListenableFuture<? extends V>... futures) {
     return new ListFuture<V>(ImmutableList.copyOf(futures), false);
   }
@@ -844,8 +814,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @return a future that provides a list of the results of the component futures
    * @since 10.0
    */
-  @Beta
-  public static <V extends @Nullable Object> ListenableFuture<List<@Nullable V>> successfulAsList(
+  public static <V extends Object> ListenableFuture<List<V>> successfulAsList(
       Iterable<? extends ListenableFuture<? extends V>> futures) {
     return new ListFuture<V>(ImmutableList.copyOf(futures), false);
   }
@@ -871,8 +840,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 17.0
    */
-  @Beta
-  public static <T extends @Nullable Object> ImmutableList<ListenableFuture<T>> inCompletionOrder(
+  public static <T extends Object> ImmutableList<ListenableFuture<T>> inCompletionOrder(
       Iterable<? extends ListenableFuture<? extends T>> futures) {
     ListenableFuture<? extends T>[] copy = gwtCompatibleToArray(futures);
     final InCompletionOrderState<T> state = new InCompletionOrderState<>(copy);
@@ -902,7 +870,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
 
   /** Can't use Iterables.toArray because it's not gwt compatible */
   @SuppressWarnings("unchecked")
-  private static <T extends @Nullable Object> ListenableFuture<? extends T>[] gwtCompatibleToArray(
+  private static <T extends Object> ListenableFuture<? extends T>[] gwtCompatibleToArray(
       Iterable<? extends ListenableFuture<? extends T>> futures) {
     final Collection<ListenableFuture<? extends T>> collection;
     if (futures instanceof Collection) {
@@ -916,7 +884,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
   // This can't be a TrustedFuture, because TrustedFuture has clever optimizations that
   // mean cancel won't be called if this Future is passed into setFuture, and then
   // cancelled.
-  private static final class InCompletionOrderFuture<T extends @Nullable Object>
+  private static final class InCompletionOrderFuture<T extends Object>
       extends AbstractFuture<T> {
     @CheckForNull private InCompletionOrderState<T> state;
 
@@ -964,7 +932,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
     }
   }
 
-  private static final class InCompletionOrderState<T extends @Nullable Object> {
+  private static final class InCompletionOrderState<T extends Object> {
     // A happens-before edge between the writes of these fields and their reads exists, because
     // in order to read these fields, the corresponding write to incompleteOutputCount must have
     // been read.
@@ -972,7 +940,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
     private boolean shouldInterrupt = true;
     private final AtomicInteger incompleteOutputCount;
     // We set the elements of the array to null as they complete.
-    private final @Nullable ListenableFuture<? extends T>[] inputFutures;
+    private final ListenableFuture<? extends T>[] inputFutures;
     private volatile int delegateIndex = 0;
 
     private InCompletionOrderState(ListenableFuture<? extends T>[] inputFutures) {
@@ -1065,7 +1033,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @param executor The executor to run {@code callback} when the future completes.
    * @since 10.0
    */
-  public static <V extends @Nullable Object> void addCallback(
+  public static <V extends Object> void addCallback(
       final ListenableFuture<V> future,
       final FutureCallback<? super V> callback,
       Executor executor) {
@@ -1074,7 +1042,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
   }
 
   /** See {@link #addCallback(ListenableFuture, FutureCallback, Executor)} for behavioral notes. */
-  private static final class CallbackListener<V extends @Nullable Object> implements Runnable {
+  private static final class CallbackListener<V extends Object> implements Runnable {
     final Future<V> future;
     final FutureCallback<? super V> callback;
 
@@ -1131,10 +1099,9 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws IllegalStateException if the {@code Future} is not done
    * @since 20.0
    */
-  @CanIgnoreReturnValue
   // TODO(cpovirk): Consider calling getDone() in our own code.
   @ParametricNullness
-  public static <V extends @Nullable Object> V getDone(Future<V> future) throws ExecutionException {
+  public static <V extends Object> V getDone(Future<V> future) throws ExecutionException {
     /*
      * We throw IllegalStateException, since the call could succeed later. Perhaps we "should" throw
      * IllegalArgumentException, since the call could succeed with a different argument. Those
@@ -1191,11 +1158,9 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *     does not have a suitable constructor
    * @since 19.0 (in 10.0 as {@code get})
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // reflection
+  // reflection
   @ParametricNullness
-  public static <V extends @Nullable Object, X extends Exception> V getChecked(
+  public static <V extends Object, X extends Exception> V getChecked(
       Future<V> future, Class<X> exceptionClass) throws X {
     return FuturesGetChecked.getChecked(future, exceptionClass);
   }
@@ -1243,12 +1208,10 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *     does not have a suitable constructor
    * @since 19.0 (in 10.0 as {@code get} and with different parameter order)
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // reflection
+  // reflection
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   @ParametricNullness
-  public static <V extends @Nullable Object, X extends Exception> V getChecked(
+  public static <V extends Object, X extends Exception> V getChecked(
       Future<V> future, Class<X> exceptionClass, long timeout, TimeUnit unit) throws X {
     return FuturesGetChecked.getChecked(future, exceptionClass, timeout, unit);
   }
@@ -1287,9 +1250,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws CancellationException if {@code get} throws a {@code CancellationException}
    * @since 10.0
    */
-  @CanIgnoreReturnValue
   @ParametricNullness
-  public static <V extends @Nullable Object> V getUnchecked(Future<V> future) {
+  public static <V extends Object> V getUnchecked(Future<V> future) {
     checkNotNull(future);
     try {
       return getUninterruptibly(future);
diff --git a/android/guava/src/com/google/common/util/concurrent/FuturesGetChecked.java b/android/guava/src/com/google/common/util/concurrent/FuturesGetChecked.java
index 04564f3..a196260 100644
--- a/android/guava/src/com/google/common/util/concurrent/FuturesGetChecked.java
+++ b/android/guava/src/com/google/common/util/concurrent/FuturesGetChecked.java
@@ -18,12 +18,8 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static java.lang.Thread.currentThread;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.collect.Ordering;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import java.lang.ref.WeakReference;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Arrays;
@@ -35,24 +31,19 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Static methods used to implement {@link Futures#getChecked(Future, Class)}. */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class FuturesGetChecked {
-  @CanIgnoreReturnValue
   @ParametricNullness
-  static <V extends @Nullable Object, X extends Exception> V getChecked(
+  static <V extends Object, X extends Exception> V getChecked(
       Future<V> future, Class<X> exceptionClass) throws X {
     return getChecked(bestGetCheckedTypeValidator(), future, exceptionClass);
   }
 
   /** Implementation of {@link Futures#getChecked(Future, Class)}. */
-  @CanIgnoreReturnValue
-  @VisibleForTesting
   @ParametricNullness
-  static <V extends @Nullable Object, X extends Exception> V getChecked(
+  static <V extends Object, X extends Exception> V getChecked(
       GetCheckedTypeValidator validator, Future<V> future, Class<X> exceptionClass) throws X {
     validator.validateClass(exceptionClass);
     try {
@@ -67,9 +58,8 @@ final class FuturesGetChecked {
   }
 
   /** Implementation of {@link Futures#getChecked(Future, Class, long, TimeUnit)}. */
-  @CanIgnoreReturnValue
   @ParametricNullness
-  static <V extends @Nullable Object, X extends Exception> V getChecked(
+  static <V extends Object, X extends Exception> V getChecked(
       Future<V> future, Class<X> exceptionClass, long timeout, TimeUnit unit) throws X {
     // TODO(cpovirk): benchmark a version of this method that accepts a GetCheckedTypeValidator
     bestGetCheckedTypeValidator().validateClass(exceptionClass);
@@ -86,7 +76,6 @@ final class FuturesGetChecked {
     }
   }
 
-  @VisibleForTesting
   interface GetCheckedTypeValidator {
     void validateClass(Class<? extends Exception> exceptionClass);
   }
@@ -95,7 +84,6 @@ final class FuturesGetChecked {
     return GetCheckedTypeValidatorHolder.BEST_VALIDATOR;
   }
 
-  @VisibleForTesting
   static GetCheckedTypeValidator weakSetValidator() {
     return GetCheckedTypeValidatorHolder.WeakSetValidator.INSTANCE;
   }
@@ -106,7 +94,6 @@ final class FuturesGetChecked {
    *
    * <p>Uses reflection to gracefully fall back to when certain implementations aren't available.
    */
-  @VisibleForTesting
   static class GetCheckedTypeValidatorHolder {
     static final GetCheckedTypeValidator BEST_VALIDATOR = getBestValidator();
 
@@ -247,12 +234,10 @@ final class FuturesGetChecked {
     }
   }
 
-  @VisibleForTesting
   static boolean isCheckedException(Class<? extends Exception> type) {
     return !RuntimeException.class.isAssignableFrom(type);
   }
 
-  @VisibleForTesting
   static void checkExceptionClassValidity(Class<? extends Exception> exceptionClass) {
     checkArgument(
         isCheckedException(exceptionClass),
diff --git a/android/guava/src/com/google/common/util/concurrent/GwtFluentFutureCatchingSpecialization.java b/android/guava/src/com/google/common/util/concurrent/GwtFluentFutureCatchingSpecialization.java
index d29a673..0545c34 100644
--- a/android/guava/src/com/google/common/util/concurrent/GwtFluentFutureCatchingSpecialization.java
+++ b/android/guava/src/com/google/common/util/concurrent/GwtFluentFutureCatchingSpecialization.java
@@ -14,17 +14,14 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Hidden superclass of {@link FluentFuture} that provides us a place to declare special GWT
  * versions of the {@link FluentFuture#catching(Class, com.google.common.base.Function)
  * FluentFuture.catching} family of methods. Those versions have slightly different signatures.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class GwtFluentFutureCatchingSpecialization<V extends @Nullable Object>
+abstract class GwtFluentFutureCatchingSpecialization<V extends Object>
     extends AbstractFuture<V> {
   /*
    * This server copy of the class is empty. The corresponding GWT copy contains alternative
diff --git a/android/guava/src/com/google/common/util/concurrent/GwtFuturesCatchingSpecialization.java b/android/guava/src/com/google/common/util/concurrent/GwtFuturesCatchingSpecialization.java
index 95131ce..1be8753 100644
--- a/android/guava/src/com/google/common/util/concurrent/GwtFuturesCatchingSpecialization.java
+++ b/android/guava/src/com/google/common/util/concurrent/GwtFuturesCatchingSpecialization.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Hidden superclass of {@link Futures} that provides us a place to declare special GWT versions of
@@ -22,7 +21,6 @@ import com.google.common.annotations.GwtCompatible;
  * java.util.concurrent.Executor) Futures.catching} family of methods. Those versions have slightly
  * different signatures.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class GwtFuturesCatchingSpecialization {
   /*
diff --git a/android/guava/src/com/google/common/util/concurrent/ImmediateFuture.java b/android/guava/src/com/google/common/util/concurrent/ImmediateFuture.java
index 81912f5..43b247c 100644
--- a/android/guava/src/com/google/common/util/concurrent/ImmediateFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/ImmediateFuture.java
@@ -16,21 +16,18 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.util.concurrent.AbstractFuture.TrustedFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Implementation of {@link Futures#immediateFuture}. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 // TODO(cpovirk): Make this final (but that may break Mockito spy calls).
-class ImmediateFuture<V extends @Nullable Object> implements ListenableFuture<V> {
-  static final ListenableFuture<?> NULL = new ImmediateFuture<@Nullable Object>(null);
+class ImmediateFuture<V extends Object> implements ListenableFuture<V> {
+  static final ListenableFuture<?> NULL = new ImmediateFuture<Object>(null);
 
   private static final Logger log = Logger.getLogger(ImmediateFuture.class.getName());
 
@@ -91,13 +88,13 @@ class ImmediateFuture<V extends @Nullable Object> implements ListenableFuture<V>
     return super.toString() + "[status=SUCCESS, result=[" + value + "]]";
   }
 
-  static final class ImmediateFailedFuture<V extends @Nullable Object> extends TrustedFuture<V> {
+  static final class ImmediateFailedFuture<V extends Object> extends TrustedFuture<V> {
     ImmediateFailedFuture(Throwable thrown) {
       setException(thrown);
     }
   }
 
-  static final class ImmediateCancelledFuture<V extends @Nullable Object> extends TrustedFuture<V> {
+  static final class ImmediateCancelledFuture<V extends Object> extends TrustedFuture<V> {
     ImmediateCancelledFuture() {
       cancel(false);
     }
diff --git a/android/guava/src/com/google/common/util/concurrent/InterruptibleTask.java b/android/guava/src/com/google/common/util/concurrent/InterruptibleTask.java
index 168adf2..bf8eb01 100644
--- a/android/guava/src/com/google/common/util/concurrent/InterruptibleTask.java
+++ b/android/guava/src/com/google/common/util/concurrent/InterruptibleTask.java
@@ -14,26 +14,19 @@
 
 package com.google.common.util.concurrent;
 
-import static com.google.common.util.concurrent.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.j2objc.annotations.ReflectionSupport;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.locks.AbstractOwnableSynchronizer;
 import java.util.concurrent.locks.LockSupport;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
-@GwtCompatible(emulated = true)
-@ReflectionSupport(value = ReflectionSupport.Level.FULL)
 @ElementTypesAreNonnullByDefault
 // Some Android 5.0.x Samsung devices have bugs in JDK reflection APIs that cause
 // getDeclaredField to throw a NoSuchFieldException when the field is definitely there.
 // Since this class only needs CAS on one field, we can avoid this bug by extending AtomicReference
 // instead of using an AtomicReferenceFieldUpdater. This reference stores Thread instances
 // and DONE/INTERRUPTED - they have a common ancestor of Runnable.
-abstract class InterruptibleTask<T extends @Nullable Object>
-    extends AtomicReference<@Nullable Runnable> implements Runnable {
+abstract class InterruptibleTask<T extends Object>
+    extends AtomicReference<Runnable> implements Runnable {
   static {
     // Prevent rare disastrous classloading in first call to LockSupport.park.
     // See: https://bugs.openjdk.java.net/browse/JDK-8074773
@@ -216,7 +209,6 @@ abstract class InterruptibleTask<T extends @Nullable Object>
    * currentRunner thread is blocked on the progress of the interruptor thread, which can help
    * identify deadlocks.
    */
-  @VisibleForTesting
   static final class Blocker extends AbstractOwnableSynchronizer implements Runnable {
     private final InterruptibleTask<?> task;
 
diff --git a/android/guava/src/com/google/common/util/concurrent/JdkFutureAdapters.java b/android/guava/src/com/google/common/util/concurrent/JdkFutureAdapters.java
index 82f8d95..7f11423 100644
--- a/android/guava/src/com/google/common/util/concurrent/JdkFutureAdapters.java
+++ b/android/guava/src/com/google/common/util/concurrent/JdkFutureAdapters.java
@@ -17,14 +17,11 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicBoolean;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Utilities necessary for working with libraries that supply plain {@link Future} instances. Note
@@ -34,8 +31,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 10.0 (replacing {@code Futures.makeListenable}, which existed in 1.0)
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class JdkFutureAdapters {
   /**
@@ -51,7 +46,7 @@ public final class JdkFutureAdapters {
    * ListenableFutureTask}, {@link AbstractFuture}, and other utilities over creating plain {@code
    * Future} instances to be upgraded to {@code ListenableFuture} after the fact.
    */
-  public static <V extends @Nullable Object> ListenableFuture<V> listenInPoolThread(
+  public static <V extends Object> ListenableFuture<V> listenInPoolThread(
       Future<V> future) {
     if (future instanceof ListenableFuture) {
       return (ListenableFuture<V>) future;
@@ -79,7 +74,7 @@ public final class JdkFutureAdapters {
    *
    * @since 12.0
    */
-  public static <V extends @Nullable Object> ListenableFuture<V> listenInPoolThread(
+  public static <V extends Object> ListenableFuture<V> listenInPoolThread(
       Future<V> future, Executor executor) {
     checkNotNull(executor);
     if (future instanceof ListenableFuture) {
@@ -97,7 +92,7 @@ public final class JdkFutureAdapters {
    * <p>If the delegate future is interrupted or throws an unexpected unchecked exception, the
    * listeners will not be invoked.
    */
-  private static class ListenableFutureAdapter<V extends @Nullable Object>
+  private static class ListenableFutureAdapter<V extends Object>
       extends ForwardingFuture<V> implements ListenableFuture<V> {
 
     private static final ThreadFactory threadFactory =
diff --git a/android/guava/src/com/google/common/util/concurrent/ListenableFuture.java b/android/guava/src/com/google/common/util/concurrent/ListenableFuture.java
index cf0199a..70d9342 100644
--- a/android/guava/src/com/google/common/util/concurrent/ListenableFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/ListenableFuture.java
@@ -14,11 +14,9 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
 import java.util.concurrent.RejectedExecutionException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Future} that accepts completion listeners. Each listener has an associated executor, and
@@ -115,7 +113,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * that affects users, especially users of the Android Gradle Plugin, since the plugin developers
  * put in a special hack for us: https://issuetracker.google.com/issues/131431257)
  */
-@DoNotMock("Use the methods in Futures (like immediateFuture) or SettableFuture")
 /*
  * It would make sense to also annotate this class with @ElementTypesAreNonnullByDefault. However,
  * it makes no difference because this class is already covered by the package-level
@@ -125,7 +122,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * we're seeing a breakage internally when we add that annotation :)
  *
  */
-public interface ListenableFuture<V extends @Nullable Object> extends Future<V> {
+public interface ListenableFuture<V extends Object> extends Future<V> {
   /**
    * Registers a listener to be {@linkplain Executor#execute(Runnable) run} on the given executor.
    * The listener will run when the {@code Future}'s computation is {@linkplain Future#isDone()
diff --git a/android/guava/src/com/google/common/util/concurrent/ListenableFutureTask.java b/android/guava/src/com/google/common/util/concurrent/ListenableFutureTask.java
index 9fdcc53..a49cbd8 100644
--- a/android/guava/src/com/google/common/util/concurrent/ListenableFutureTask.java
+++ b/android/guava/src/com/google/common/util/concurrent/ListenableFutureTask.java
@@ -17,15 +17,12 @@ package com.google.common.util.concurrent;
 import static java.lang.Math.min;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link FutureTask} that also implements the {@link ListenableFuture} interface. Unlike {@code
@@ -40,9 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public class ListenableFutureTask<V extends @Nullable Object> extends FutureTask<V>
+public class ListenableFutureTask<V extends Object> extends FutureTask<V>
     implements ListenableFuture<V> {
   // TODO(cpovirk): explore ways of making ListenableFutureTask final. There are some valid reasons
   // such as BoundedQueueExecutorService to allow extends but it would be nice to make it final to
@@ -58,7 +54,7 @@ public class ListenableFutureTask<V extends @Nullable Object> extends FutureTask
    * @param callable the callable task
    * @since 10.0
    */
-  public static <V extends @Nullable Object> ListenableFutureTask<V> create(Callable<V> callable) {
+  public static <V extends Object> ListenableFutureTask<V> create(Callable<V> callable) {
     return new ListenableFutureTask<V>(callable);
   }
 
@@ -72,7 +68,7 @@ public class ListenableFutureTask<V extends @Nullable Object> extends FutureTask
    *     ListenableFutureTask.create(runnable, null)}
    * @since 10.0
    */
-  public static <V extends @Nullable Object> ListenableFutureTask<V> create(
+  public static <V extends Object> ListenableFutureTask<V> create(
       Runnable runnable, @ParametricNullness V result) {
     return new ListenableFutureTask<V>(runnable, result);
   }
@@ -90,7 +86,6 @@ public class ListenableFutureTask<V extends @Nullable Object> extends FutureTask
     executionList.add(listener, exec);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public V get(long timeout, TimeUnit unit)
diff --git a/android/guava/src/com/google/common/util/concurrent/ListenableScheduledFuture.java b/android/guava/src/com/google/common/util/concurrent/ListenableScheduledFuture.java
index e5aa5e3..823b660 100644
--- a/android/guava/src/com/google/common/util/concurrent/ListenableScheduledFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/ListenableScheduledFuture.java
@@ -14,10 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.ScheduledFuture;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Helper interface to implement both {@link ListenableFuture} and {@link ScheduledFuture}.
@@ -25,8 +22,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Anthony Zana
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface ListenableScheduledFuture<V extends @Nullable Object>
+public interface ListenableScheduledFuture<V extends Object>
     extends ScheduledFuture<V>, ListenableFuture<V> {}
diff --git a/android/guava/src/com/google/common/util/concurrent/ListenerCallQueue.java b/android/guava/src/com/google/common/util/concurrent/ListenerCallQueue.java
index ed8c906..12dca44 100644
--- a/android/guava/src/com/google/common/util/concurrent/ListenerCallQueue.java
+++ b/android/guava/src/com/google/common/util/concurrent/ListenerCallQueue.java
@@ -16,10 +16,8 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Queues;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -52,7 +50,6 @@ import java.util.logging.Logger;
  * the listeners can be delayed slightly so that locks can be dropped. Also, because {@link
  * #dispatch} is expected to be called concurrently, it is idempotent.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class ListenerCallQueue<L> {
   // TODO(cpovirk): consider using the logger associated with listener.getClass().
@@ -133,13 +130,10 @@ final class ListenerCallQueue<L> {
     final L listener;
     final Executor executor;
 
-    @GuardedBy("this")
     final Queue<ListenerCallQueue.Event<L>> waitQueue = Queues.newArrayDeque();
 
-    @GuardedBy("this")
     final Queue<Object> labelQueue = Queues.newArrayDeque();
 
-    @GuardedBy("this")
     boolean isThreadScheduled;
 
     PerListenerQueue(L listener, Executor executor) {
diff --git a/android/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java b/android/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
index 83ea759..dc96275 100644
--- a/android/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
+++ b/android/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
@@ -14,8 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -23,7 +21,6 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An {@link ExecutorService} that returns {@link ListenableFuture} instances. To create an instance
@@ -33,10 +30,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Povirk
  * @since 10.0
  */
-@DoNotMock(
-    "Use TestingExecutors.sameThreadScheduledExecutor, or wrap a real Executor from "
-        + "java.util.concurrent.Executors with MoreExecutors.listeningDecorator")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface ListeningExecutorService extends ExecutorService {
   /**
@@ -44,7 +37,7 @@ public interface ListeningExecutorService extends ExecutorService {
    * @throws RejectedExecutionException {@inheritDoc}
    */
   @Override
-  <T extends @Nullable Object> ListenableFuture<T> submit(Callable<T> task);
+  <T extends Object> ListenableFuture<T> submit(Callable<T> task);
 
   /**
    * @return a {@code ListenableFuture} representing pending completion of the task
@@ -58,7 +51,7 @@ public interface ListeningExecutorService extends ExecutorService {
    * @throws RejectedExecutionException {@inheritDoc}
    */
   @Override
-  <T extends @Nullable Object> ListenableFuture<T> submit(
+  <T extends Object> ListenableFuture<T> submit(
       Runnable task, @ParametricNullness T result);
 
   /**
@@ -80,7 +73,7 @@ public interface ListeningExecutorService extends ExecutorService {
    * @throws NullPointerException if any task is null
    */
   @Override
-  <T extends @Nullable Object> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
+  <T extends Object> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
       throws InterruptedException;
 
   /**
@@ -103,7 +96,7 @@ public interface ListeningExecutorService extends ExecutorService {
    * @throws NullPointerException if any task is null
    */
   @Override
-  <T extends @Nullable Object> List<Future<T>> invokeAll(
+  <T extends Object> List<Future<T>> invokeAll(
       Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
       throws InterruptedException;
 }
diff --git a/android/guava/src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java b/android/guava/src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java
index a6be949..deaa100 100644
--- a/android/guava/src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java
+++ b/android/guava/src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java
@@ -14,11 +14,9 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link ScheduledExecutorService} that returns {@link ListenableFuture} instances from its
@@ -29,7 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Povirk
  * @since 10.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface ListeningScheduledExecutorService
     extends ScheduledExecutorService, ListeningExecutorService {
@@ -40,7 +37,7 @@ public interface ListeningScheduledExecutorService
 
   /** @since 15.0 (previously returned ScheduledFuture) */
   @Override
-  <V extends @Nullable Object> ListenableScheduledFuture<V> schedule(
+  <V extends Object> ListenableScheduledFuture<V> schedule(
       Callable<V> callable, long delay, TimeUnit unit);
 
   /** @since 15.0 (previously returned ScheduledFuture) */
diff --git a/android/guava/src/com/google/common/util/concurrent/Monitor.java b/android/guava/src/com/google/common/util/concurrent/Monitor.java
index d88a8bc..68d86aa 100644
--- a/android/guava/src/com/google/common/util/concurrent/Monitor.java
+++ b/android/guava/src/com/google/common/util/concurrent/Monitor.java
@@ -16,11 +16,7 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Longs;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.Weak;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.ReentrantLock;
@@ -197,8 +193,6 @@ import javax.annotation.CheckForNull;
  * @author Martin Buchholz
  * @since 10.0
  */
-@Beta
-@GwtIncompatible
 @SuppressWarnings("GuardedBy") // TODO(b/35466881): Fix or suppress.
 @ElementTypesAreNonnullByDefault
 public final class Monitor {
@@ -301,17 +295,14 @@ public final class Monitor {
    *
    * @since 10.0
    */
-  @Beta
   public abstract static class Guard {
 
-    @Weak final Monitor monitor;
+    final Monitor monitor;
     final Condition condition;
 
-    @GuardedBy("monitor.lock")
     int waiterCount = 0;
 
     /** The next active guard */
-    @GuardedBy("monitor.lock")
     @CheckForNull
     Guard next;
 
@@ -338,7 +329,6 @@ public final class Monitor {
    * The guards associated with this monitor that currently have waiters ({@code waiterCount > 0}).
    * A linked list threaded through the Guard.next field.
    */
-  @GuardedBy("lock")
   @CheckForNull
   private Guard activeGuards = null;
 
@@ -978,7 +968,6 @@ public final class Monitor {
    * <p>This method must not be called from within a beginWaitingFor/endWaitingFor block, or else
    * the current thread's guard might be mistakenly signalled, leading to a lost signal.
    */
-  @GuardedBy("lock")
   private void signalNextWaiter() {
     for (Guard guard = activeGuards; guard != null; guard = guard.next) {
       if (isSatisfied(guard)) {
@@ -1010,7 +999,6 @@ public final class Monitor {
    * Exactly like guard.isSatisfied(), but in addition signals all waiting threads in the (hopefully
    * unlikely) event that isSatisfied() throws.
    */
-  @GuardedBy("lock")
   private boolean isSatisfied(Guard guard) {
     try {
       return guard.isSatisfied();
@@ -1021,7 +1009,6 @@ public final class Monitor {
   }
 
   /** Signals all threads waiting on guards. */
-  @GuardedBy("lock")
   private void signalAllWaiters() {
     for (Guard guard = activeGuards; guard != null; guard = guard.next) {
       guard.condition.signalAll();
@@ -1029,7 +1016,6 @@ public final class Monitor {
   }
 
   /** Records that the current thread is about to wait on the specified guard. */
-  @GuardedBy("lock")
   private void beginWaitingFor(Guard guard) {
     int waiters = guard.waiterCount++;
     if (waiters == 0) {
@@ -1040,7 +1026,6 @@ public final class Monitor {
   }
 
   /** Records that the current thread is no longer waiting on the specified guard. */
-  @GuardedBy("lock")
   private void endWaitingFor(Guard guard) {
     int waiters = --guard.waiterCount;
     if (waiters == 0) {
@@ -1065,7 +1050,6 @@ public final class Monitor {
    * responsibility to ensure that the guard is *not* currently satisfied.
    */
 
-  @GuardedBy("lock")
   private void await(Guard guard, boolean signalBeforeWaiting) throws InterruptedException {
     if (signalBeforeWaiting) {
       signalNextWaiter();
@@ -1080,7 +1064,6 @@ public final class Monitor {
     }
   }
 
-  @GuardedBy("lock")
   private void awaitUninterruptibly(Guard guard, boolean signalBeforeWaiting) {
     if (signalBeforeWaiting) {
       signalNextWaiter();
@@ -1096,7 +1079,6 @@ public final class Monitor {
   }
 
   /** Caller should check before calling that guard is not satisfied. */
-  @GuardedBy("lock")
   private boolean awaitNanos(Guard guard, long nanos, boolean signalBeforeWaiting)
       throws InterruptedException {
     boolean firstTime = true;
diff --git a/android/guava/src/com/google/common/util/concurrent/MoreExecutors.java b/android/guava/src/com/google/common/util/concurrent/MoreExecutors.java
index eaf6501..49a8c4f 100644
--- a/android/guava/src/com/google/common/util/concurrent/MoreExecutors.java
+++ b/android/guava/src/com/google/common/util/concurrent/MoreExecutors.java
@@ -17,17 +17,11 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Supplier;
 import com.google.common.base.Throwables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Queues;
 import com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Collection;
 import java.util.Collections;
@@ -49,7 +43,6 @@ import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Factory and utility methods for {@link java.util.concurrent.Executor}, {@link ExecutorService},
@@ -60,7 +53,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Justin Mahoney
  * @since 3.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class MoreExecutors {
   private MoreExecutors() {}
@@ -78,8 +70,7 @@ public final class MoreExecutors {
    * @param timeUnit unit of time for the time parameter
    * @return an unmodifiable version of the input which will not hang the JVM
    */
-  @Beta
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static ExecutorService getExitingExecutorService(
       ThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) {
@@ -99,8 +90,7 @@ public final class MoreExecutors {
    * @param executor the executor to modify to make sure it exits when the application is finished
    * @return an unmodifiable version of the input which will not hang the JVM
    */
-  @Beta
-  @GwtIncompatible // concurrency
+  // concurrency
   public static ExecutorService getExitingExecutorService(ThreadPoolExecutor executor) {
     return new Application().getExitingExecutorService(executor);
   }
@@ -118,8 +108,7 @@ public final class MoreExecutors {
    * @param timeUnit unit of time for the time parameter
    * @return an unmodifiable version of the input which will not hang the JVM
    */
-  @Beta
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static ScheduledExecutorService getExitingScheduledExecutorService(
       ScheduledThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) {
@@ -140,8 +129,7 @@ public final class MoreExecutors {
    * @param executor the executor to modify to make sure it exits when the application is finished
    * @return an unmodifiable version of the input which will not hang the JVM
    */
-  @Beta
-  @GwtIncompatible // TODO
+  // TODO
   public static ScheduledExecutorService getExitingScheduledExecutorService(
       ScheduledThreadPoolExecutor executor) {
     return new Application().getExitingScheduledExecutorService(executor);
@@ -158,8 +146,7 @@ public final class MoreExecutors {
    *     JVM
    * @param timeUnit unit of time for the time parameter
    */
-  @Beta
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static void addDelayedShutdownHook(
       ExecutorService service, long terminationTimeout, TimeUnit timeUnit) {
@@ -167,8 +154,7 @@ public final class MoreExecutors {
   }
 
   /** Represents the current application to register shutdown hooks. */
-  @GwtIncompatible // TODO
-  @VisibleForTesting
+  // TODO
   static class Application {
 
     final ExecutorService getExitingExecutorService(
@@ -221,13 +207,12 @@ public final class MoreExecutors {
               }));
     }
 
-    @VisibleForTesting
     void addShutdownHook(Thread hook) {
       Runtime.getRuntime().addShutdownHook(hook);
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static void useDaemonThreadFactory(ThreadPoolExecutor executor) {
     executor.setThreadFactory(
         new ThreadFactoryBuilder()
@@ -237,7 +222,7 @@ public final class MoreExecutors {
   }
 
   // See newDirectExecutorService javadoc for behavioral notes.
-  @GwtIncompatible // TODO
+  // TODO
   private static final class DirectExecutorService extends AbstractListeningExecutorService {
     /** Lock used whenever accessing the state variables (runningTasks, shutdown) of the executor */
     private final Object lock = new Object();
@@ -249,10 +234,8 @@ public final class MoreExecutors {
      *   - Shutdown: runningTasks > 0 and shutdown == true
      *   - Terminated: runningTasks == 0 and shutdown == true
      */
-    @GuardedBy("lock")
     private int runningTasks = 0;
 
-    @GuardedBy("lock")
     private boolean shutdown = false;
 
     @Override
@@ -365,7 +348,7 @@ public final class MoreExecutors {
    *
    * @since 18.0 (present as MoreExecutors.sameThreadExecutor() since 10.0)
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static ListeningExecutorService newDirectExecutorService() {
     return new DirectExecutorService();
   }
@@ -466,8 +449,6 @@ public final class MoreExecutors {
    *
    * @since 23.3 (since 23.1 as {@code sequentialExecutor})
    */
-  @Beta
-  @GwtIncompatible
   public static Executor newSequentialExecutor(Executor delegate) {
     return new SequentialExecutor(delegate);
   }
@@ -487,7 +468,7 @@ public final class MoreExecutors {
    *
    * @since 10.0
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static ListeningExecutorService listeningDecorator(ExecutorService delegate) {
     return (delegate instanceof ListeningExecutorService)
         ? (ListeningExecutorService) delegate
@@ -512,7 +493,7 @@ public final class MoreExecutors {
    *
    * @since 10.0
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static ListeningScheduledExecutorService listeningDecorator(
       ScheduledExecutorService delegate) {
     return (delegate instanceof ListeningScheduledExecutorService)
@@ -520,7 +501,7 @@ public final class MoreExecutors {
         : new ScheduledListeningDecorator(delegate);
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static class ListeningDecorator extends AbstractListeningExecutorService {
     private final ExecutorService delegate;
 
@@ -564,7 +545,7 @@ public final class MoreExecutors {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static final class ScheduledListeningDecorator extends ListeningDecorator
       implements ListeningScheduledExecutorService {
     @SuppressWarnings("hiding")
@@ -577,14 +558,14 @@ public final class MoreExecutors {
 
     @Override
     public ListenableScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) {
-      TrustedListenableFutureTask<@Nullable Void> task =
+      TrustedListenableFutureTask<Void> task =
           TrustedListenableFutureTask.create(command, null);
       ScheduledFuture<?> scheduled = delegate.schedule(task, delay, unit);
-      return new ListenableScheduledTask<@Nullable Void>(task, scheduled);
+      return new ListenableScheduledTask<Void>(task, scheduled);
     }
 
     @Override
-    public <V extends @Nullable Object> ListenableScheduledFuture<V> schedule(
+    public <V extends Object> ListenableScheduledFuture<V> schedule(
         Callable<V> callable, long delay, TimeUnit unit) {
       TrustedListenableFutureTask<V> task = TrustedListenableFutureTask.create(callable);
       ScheduledFuture<?> scheduled = delegate.schedule(task, delay, unit);
@@ -596,7 +577,7 @@ public final class MoreExecutors {
         Runnable command, long initialDelay, long period, TimeUnit unit) {
       NeverSuccessfulListenableFutureTask task = new NeverSuccessfulListenableFutureTask(command);
       ScheduledFuture<?> scheduled = delegate.scheduleAtFixedRate(task, initialDelay, period, unit);
-      return new ListenableScheduledTask<@Nullable Void>(task, scheduled);
+      return new ListenableScheduledTask<Void>(task, scheduled);
     }
 
     @Override
@@ -605,10 +586,10 @@ public final class MoreExecutors {
       NeverSuccessfulListenableFutureTask task = new NeverSuccessfulListenableFutureTask(command);
       ScheduledFuture<?> scheduled =
           delegate.scheduleWithFixedDelay(task, initialDelay, delay, unit);
-      return new ListenableScheduledTask<@Nullable Void>(task, scheduled);
+      return new ListenableScheduledTask<Void>(task, scheduled);
     }
 
-    private static final class ListenableScheduledTask<V extends @Nullable Object>
+    private static final class ListenableScheduledTask<V extends Object>
         extends SimpleForwardingListenableFuture<V> implements ListenableScheduledFuture<V> {
 
       private final ScheduledFuture<?> scheduledDelegate;
@@ -642,9 +623,9 @@ public final class MoreExecutors {
       }
     }
 
-    @GwtIncompatible // TODO
+    // TODO
     private static final class NeverSuccessfulListenableFutureTask
-        extends AbstractFuture.TrustedFuture<@Nullable Void> implements Runnable {
+        extends AbstractFuture.TrustedFuture<Void> implements Runnable {
       private final Runnable delegate;
 
       public NeverSuccessfulListenableFutureTask(Runnable delegate) {
@@ -684,9 +665,8 @@ public final class MoreExecutors {
    * implementations.
    */
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
-  @GwtIncompatible
   @ParametricNullness
-  static <T extends @Nullable Object> T invokeAnyImpl(
+  static <T extends Object> T invokeAnyImpl(
       ListeningExecutorService executorService,
       Collection<? extends Callable<T>> tasks,
       boolean timed,
@@ -765,8 +745,8 @@ public final class MoreExecutors {
   /**
    * Submits the task and adds a listener that adds the future to {@code queue} when it completes.
    */
-  @GwtIncompatible // TODO
-  private static <T extends @Nullable Object> ListenableFuture<T> submitAndAddQueueListener(
+  // TODO
+  private static <T extends Object> ListenableFuture<T> submitAndAddQueueListener(
       ListeningExecutorService executorService,
       Callable<T> task,
       final BlockingQueue<Future<T>> queue) {
@@ -792,8 +772,7 @@ public final class MoreExecutors {
    *
    * @since 14.0
    */
-  @Beta
-  @GwtIncompatible // concurrency
+  // concurrency
   public static ThreadFactory platformThreadFactory() {
     if (!isAppEngineWithApiClasses()) {
       return Executors.defaultThreadFactory();
@@ -819,7 +798,7 @@ public final class MoreExecutors {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static boolean isAppEngineWithApiClasses() {
     if (System.getProperty("com.google.appengine.runtime.environment") == null) {
       return false;
@@ -854,7 +833,7 @@ public final class MoreExecutors {
    * Creates a thread using {@link #platformThreadFactory}, and sets its name to {@code name} unless
    * changing the name is forbidden by the security manager.
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   static Thread newThread(String name, Runnable runnable) {
     checkNotNull(name);
     checkNotNull(runnable);
@@ -881,7 +860,7 @@ public final class MoreExecutors {
    * @param executor The executor to decorate
    * @param nameSupplier The source of names for each task
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   static Executor renamingDecorator(final Executor executor, final Supplier<String> nameSupplier) {
     checkNotNull(executor);
     checkNotNull(nameSupplier);
@@ -904,14 +883,14 @@ public final class MoreExecutors {
    * @param service The executor to decorate
    * @param nameSupplier The source of names for each task
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   static ExecutorService renamingDecorator(
       final ExecutorService service, final Supplier<String> nameSupplier) {
     checkNotNull(service);
     checkNotNull(nameSupplier);
     return new WrappingExecutorService(service) {
       @Override
-      protected <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable) {
+      protected <T extends Object> Callable<T> wrapTask(Callable<T> callable) {
         return Callables.threadRenaming(callable, nameSupplier);
       }
 
@@ -933,14 +912,14 @@ public final class MoreExecutors {
    * @param service The executor to decorate
    * @param nameSupplier The source of names for each task
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   static ScheduledExecutorService renamingDecorator(
       final ScheduledExecutorService service, final Supplier<String> nameSupplier) {
     checkNotNull(service);
     checkNotNull(nameSupplier);
     return new WrappingScheduledExecutorService(service) {
       @Override
-      protected <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable) {
+      protected <T extends Object> Callable<T> wrapTask(Callable<T> callable) {
         return Callables.threadRenaming(callable, nameSupplier);
       }
 
@@ -975,9 +954,7 @@ public final class MoreExecutors {
    *     if the call timed out or was interrupted
    * @since 17.0
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean shutdownAndAwaitTermination(
       ExecutorService service, long timeout, TimeUnit unit) {
diff --git a/android/guava/src/com/google/common/util/concurrent/NullnessCasts.java b/android/guava/src/com/google/common/util/concurrent/NullnessCasts.java
index 0a0d719..73a074a 100644
--- a/android/guava/src/com/google/common/util/concurrent/NullnessCasts.java
+++ b/android/guava/src/com/google/common/util/concurrent/NullnessCasts.java
@@ -14,12 +14,9 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** A utility method to perform unchecked casts to suppress errors produced by nullness analyses. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class NullnessCasts {
   /**
@@ -52,7 +49,7 @@ final class NullnessCasts {
    */
   @SuppressWarnings("nullness")
   @ParametricNullness
-  static <T extends @Nullable Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
+  static <T extends Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
     return t;
   }
 
@@ -67,7 +64,7 @@ final class NullnessCasts {
    */
   @SuppressWarnings("nullness")
   @ParametricNullness
-  static <T extends @Nullable Object> T uncheckedNull() {
+  static <T extends Object> T uncheckedNull() {
     return null;
   }
 
diff --git a/android/guava/src/com/google/common/util/concurrent/ParametricNullness.java b/android/guava/src/com/google/common/util/concurrent/ParametricNullness.java
index ebc5928..7a8b24a 100644
--- a/android/guava/src/com/google/common/util/concurrent/ParametricNullness.java
+++ b/android/guava/src/com/google/common/util/concurrent/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/util/concurrent/Partially.java b/android/guava/src/com/google/common/util/concurrent/Partially.java
index 7aa16e7..be93681 100644
--- a/android/guava/src/com/google/common/util/concurrent/Partially.java
+++ b/android/guava/src/com/google/common/util/concurrent/Partially.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
@@ -31,7 +30,6 @@ import java.lang.annotation.Target;
  * compiler to autostrip the normal server method in order to expose the special, inherited GWT
  * version.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class Partially {
   /**
diff --git a/android/guava/src/com/google/common/util/concurrent/Platform.java b/android/guava/src/com/google/common/util/concurrent/Platform.java
index cfb96a0..9e7916d 100644
--- a/android/guava/src/com/google/common/util/concurrent/Platform.java
+++ b/android/guava/src/com/google/common/util/concurrent/Platform.java
@@ -14,11 +14,9 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /** Methods factored out so that they can be emulated differently in GWT. */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class Platform {
   static boolean isInstanceOfThrowableClass(
diff --git a/android/guava/src/com/google/common/util/concurrent/RateLimiter.java b/android/guava/src/com/google/common/util/concurrent/RateLimiter.java
index 9bcf118..8380e2a 100644
--- a/android/guava/src/com/google/common/util/concurrent/RateLimiter.java
+++ b/android/guava/src/com/google/common/util/concurrent/RateLimiter.java
@@ -20,13 +20,9 @@ import static java.lang.Math.max;
 import static java.util.concurrent.TimeUnit.MICROSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Stopwatch;
 import com.google.common.util.concurrent.SmoothRateLimiter.SmoothBursty;
 import com.google.common.util.concurrent.SmoothRateLimiter.SmoothWarmingUp;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Locale;
 import java.util.concurrent.TimeUnit;
 import javax.annotation.CheckForNull;
@@ -90,8 +86,6 @@ import javax.annotation.CheckForNull;
  */
 // TODO(user): switch to nano precision. A natural unit of cost is "bytes", and a micro precision
 // would mean a maximum rate of "1MB/s", which might be small in some cases.
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class RateLimiter {
   /**
@@ -128,7 +122,6 @@ public abstract class RateLimiter {
     return create(permitsPerSecond, SleepingStopwatch.createFromSystemTimer());
   }
 
-  @VisibleForTesting
   static RateLimiter create(double permitsPerSecond, SleepingStopwatch stopwatch) {
     RateLimiter rateLimiter = new SmoothBursty(stopwatch, 1.0 /* maxBurstSeconds */);
     rateLimiter.setRate(permitsPerSecond);
@@ -166,7 +159,6 @@ public abstract class RateLimiter {
         permitsPerSecond, warmupPeriod, unit, 3.0, SleepingStopwatch.createFromSystemTimer());
   }
 
-  @VisibleForTesting
   static RateLimiter create(
       double permitsPerSecond,
       long warmupPeriod,
@@ -255,7 +247,6 @@ public abstract class RateLimiter {
    * @return time spent sleeping to enforce rate, in seconds; 0.0 if not rate-limited
    * @since 16.0 (present in 13.0 with {@code void} return type})
    */
-  @CanIgnoreReturnValue
   public double acquire() {
     return acquire(1);
   }
@@ -269,7 +260,6 @@ public abstract class RateLimiter {
    * @throws IllegalArgumentException if the requested number of permits is negative or zero
    * @since 16.0 (present in 13.0 with {@code void} return type})
    */
-  @CanIgnoreReturnValue
   public double acquire(int permits) {
     long microsToWait = reserve(permits);
     stopwatch.sleepMicrosUninterruptibly(microsToWait);
diff --git a/android/guava/src/com/google/common/util/concurrent/Runnables.java b/android/guava/src/com/google/common/util/concurrent/Runnables.java
index 5503f68..a0610ef 100644
--- a/android/guava/src/com/google/common/util/concurrent/Runnables.java
+++ b/android/guava/src/com/google/common/util/concurrent/Runnables.java
@@ -14,16 +14,12 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Static utility methods pertaining to the {@link Runnable} interface.
  *
  * @since 16.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Runnables {
 
diff --git a/android/guava/src/com/google/common/util/concurrent/SequentialExecutor.java b/android/guava/src/com/google/common/util/concurrent/SequentialExecutor.java
index 052c7e0..8f29b93 100644
--- a/android/guava/src/com/google/common/util/concurrent/SequentialExecutor.java
+++ b/android/guava/src/com/google/common/util/concurrent/SequentialExecutor.java
@@ -21,10 +21,7 @@ import static com.google.common.util.concurrent.SequentialExecutor.WorkerRunning
 import static com.google.common.util.concurrent.SequentialExecutor.WorkerRunningState.RUNNING;
 import static java.lang.System.identityHashCode;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.RetainedWith;
 import java.util.ArrayDeque;
 import java.util.Deque;
 import java.util.concurrent.Executor;
@@ -47,7 +44,6 @@ import javax.annotation.CheckForNull;
  * If an {@code Error} is thrown, the error will propagate and execution will stop until it is
  * restarted by a call to {@link #execute}.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class SequentialExecutor implements Executor {
   private static final Logger log = Logger.getLogger(SequentialExecutor.class.getName());
@@ -65,11 +61,9 @@ final class SequentialExecutor implements Executor {
   /** Underlying executor that all submitted Runnable objects are run on. */
   private final Executor executor;
 
-  @GuardedBy("queue")
   private final Deque<Runnable> queue = new ArrayDeque<>();
 
   /** see {@link WorkerRunningState} */
-  @GuardedBy("queue")
   private WorkerRunningState workerRunningState = IDLE;
 
   /**
@@ -79,10 +73,9 @@ final class SequentialExecutor implements Executor {
    * it would observe the QUEUING state and set it to QUEUED, and the worker would never be
    * scheduled again for future submissions.
    */
-  @GuardedBy("queue")
   private long workerRunCount = 0;
 
-  @RetainedWith private final QueueWorker worker = new QueueWorker();
+  private final QueueWorker worker = new QueueWorker();
 
   /** Use {@link MoreExecutors#newSequentialExecutor} */
   SequentialExecutor(Executor executor) {
diff --git a/android/guava/src/com/google/common/util/concurrent/Service.java b/android/guava/src/com/google/common/util/concurrent/Service.java
index 0999a30..854c643 100644
--- a/android/guava/src/com/google/common/util/concurrent/Service.java
+++ b/android/guava/src/com/google/common/util/concurrent/Service.java
@@ -14,9 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
@@ -51,8 +48,6 @@ import java.util.concurrent.TimeoutException;
  * @author Luke Sandberg
  * @since 9.0 (in 1.0 as {@code com.google.common.base.Service})
  */
-@DoNotMock("Create an AbstractIdleService")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface Service {
   /**
@@ -63,7 +58,6 @@ public interface Service {
    * @throws IllegalStateException if the service is not {@link State#NEW}
    * @since 15.0
    */
-  @CanIgnoreReturnValue
   Service startAsync();
 
   /** Returns {@code true} if this service is {@linkplain State#RUNNING running}. */
@@ -82,7 +76,6 @@ public interface Service {
    * @return this
    * @since 15.0
    */
-  @CanIgnoreReturnValue
   Service stopAsync();
 
   /**
diff --git a/android/guava/src/com/google/common/util/concurrent/ServiceManager.java b/android/guava/src/com/google/common/util/concurrent/ServiceManager.java
index 2e1c21a..6db018f 100644
--- a/android/guava/src/com/google/common/util/concurrent/ServiceManager.java
+++ b/android/guava/src/com/google/common/util/concurrent/ServiceManager.java
@@ -30,16 +30,10 @@ import static com.google.common.util.concurrent.Service.State.STOPPING;
 import static com.google.common.util.concurrent.Service.State.TERMINATED;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Stopwatch;
 import com.google.common.collect.Collections2;
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.MultimapBuilder;
@@ -48,10 +42,6 @@ import com.google.common.collect.Multiset;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.SetMultimap;
 import com.google.common.util.concurrent.Service.State;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.WeakOuter;
-import java.lang.ref.WeakReference;
 import java.util.Collections;
 import java.util.EnumSet;
 import java.util.List;
@@ -117,7 +107,6 @@ import java.util.logging.Logger;
  * @author Luke Sandberg
  * @since 14.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ServiceManager implements ServiceManagerBridge {
   private static final Logger logger = Logger.getLogger(ServiceManager.class.getName());
@@ -259,7 +248,6 @@ public final class ServiceManager implements ServiceManagerBridge {
    * @throws IllegalStateException if any of the Services are not {@link State#NEW new} when the
    *     method is called.
    */
-  @CanIgnoreReturnValue
   public ServiceManager startAsync() {
     for (Service service : services) {
       State state = service.state();
@@ -314,7 +302,6 @@ public final class ServiceManager implements ServiceManagerBridge {
    *
    * @return this
    */
-  @CanIgnoreReturnValue
   public ServiceManager stopAsync() {
     for (Service service : services) {
       service.stopAsync();
@@ -398,14 +385,11 @@ public final class ServiceManager implements ServiceManagerBridge {
   private static final class ServiceManagerState {
     final Monitor monitor = new Monitor();
 
-    @GuardedBy("monitor")
     final SetMultimap<State, Service> servicesByState =
         MultimapBuilder.enumKeys(State.class).linkedHashSetValues().build();
 
-    @GuardedBy("monitor")
     final Multiset<State> states = servicesByState.keys();
 
-    @GuardedBy("monitor")
     final Map<Service, Stopwatch> startupTimers = Maps.newIdentityHashMap();
 
     /**
@@ -421,10 +405,8 @@ public final class ServiceManager implements ServiceManagerBridge {
      * to any service performing a transition, then we can fail in the ServiceManager constructor
      * rather than in a Service.Listener callback.
      */
-    @GuardedBy("monitor")
     boolean ready;
 
-    @GuardedBy("monitor")
     boolean transitioned;
 
     final int numberOfServices;
@@ -435,14 +417,12 @@ public final class ServiceManager implements ServiceManagerBridge {
      */
     final Monitor.Guard awaitHealthGuard = new AwaitHealthGuard();
 
-    @WeakOuter
     final class AwaitHealthGuard extends Monitor.Guard {
       AwaitHealthGuard() {
         super(ServiceManagerState.this.monitor);
       }
 
       @Override
-      @GuardedBy("ServiceManagerState.this.monitor")
       public boolean isSatisfied() {
         // All services have started or some service has terminated/failed.
         return states.count(RUNNING) == numberOfServices
@@ -455,14 +435,12 @@ public final class ServiceManager implements ServiceManagerBridge {
     /** Controls how long to wait for all services to reach a terminal state. */
     final Monitor.Guard stoppedGuard = new StoppedGuard();
 
-    @WeakOuter
     final class StoppedGuard extends Monitor.Guard {
       StoppedGuard() {
         super(ServiceManagerState.this.monitor);
       }
 
       @Override
-      @GuardedBy("ServiceManagerState.this.monitor")
       public boolean isSatisfied() {
         return states.count(TERMINATED) + states.count(FAILED) == numberOfServices;
       }
@@ -715,7 +693,6 @@ public final class ServiceManager implements ServiceManagerBridge {
       listeners.dispatch();
     }
 
-    @GuardedBy("monitor")
     void checkHealthy() {
       if (states.count(RUNNING) != numberOfServices) {
         IllegalStateException exception =
diff --git a/android/guava/src/com/google/common/util/concurrent/ServiceManagerBridge.java b/android/guava/src/com/google/common/util/concurrent/ServiceManagerBridge.java
index 7ae430e..d139bc2 100644
--- a/android/guava/src/com/google/common/util/concurrent/ServiceManagerBridge.java
+++ b/android/guava/src/com/google/common/util/concurrent/ServiceManagerBridge.java
@@ -16,8 +16,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMultimap;
 import com.google.common.util.concurrent.Service.State;
 
 /**
@@ -25,7 +23,6 @@ import com.google.common.util.concurrent.Service.State;
  * servicesByState()}, to ensure binary compatibility with older Guava versions that specified
  * {@code servicesByState()} to return {@code ImmutableMultimap}.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 interface ServiceManagerBridge {
   ImmutableMultimap<State, Service> servicesByState();
diff --git a/android/guava/src/com/google/common/util/concurrent/SettableFuture.java b/android/guava/src/com/google/common/util/concurrent/SettableFuture.java
index 893161e..e721982 100644
--- a/android/guava/src/com/google/common/util/concurrent/SettableFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/SettableFuture.java
@@ -14,9 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link ListenableFuture} whose result can be set by a {@link #set(Object)}, {@link
@@ -32,30 +29,26 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 9.0 (in 1.0 as {@code ValueFuture})
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public final class SettableFuture<V extends @Nullable Object>
+public final class SettableFuture<V extends Object>
     extends AbstractFuture.TrustedFuture<V> {
   /**
    * Creates a new {@code SettableFuture} that can be completed or cancelled by a later method call.
    */
-  public static <V extends @Nullable Object> SettableFuture<V> create() {
+  public static <V extends Object> SettableFuture<V> create() {
     return new SettableFuture<V>();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean set(@ParametricNullness V value) {
     return super.set(value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean setException(Throwable throwable) {
     return super.setException(throwable);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean setFuture(ListenableFuture<? extends V> future) {
     return super.setFuture(future);
diff --git a/android/guava/src/com/google/common/util/concurrent/SimpleTimeLimiter.java b/android/guava/src/com/google/common/util/concurrent/SimpleTimeLimiter.java
index 5a1969e..3f9b5a4 100644
--- a/android/guava/src/com/google/common/util/concurrent/SimpleTimeLimiter.java
+++ b/android/guava/src/com/google/common/util/concurrent/SimpleTimeLimiter.java
@@ -17,11 +17,8 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ObjectArrays;
 import com.google.common.collect.Sets;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -35,7 +32,6 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A TimeLimiter that runs method calls in the background using an {@link ExecutorService}. If the
@@ -45,8 +41,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jens Nyman
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class SimpleTimeLimiter implements TimeLimiter {
 
@@ -92,8 +86,8 @@ public final class SimpleTimeLimiter implements TimeLimiter {
           public Object invoke(
               Object obj, final Method method, @CheckForNull final @Nullable Object[] args)
               throws Throwable {
-            Callable<@Nullable Object> callable =
-                new Callable<@Nullable Object>() {
+            Callable<Object> callable =
+                new Callable<Object>() {
                   @Override
                   @CheckForNull
                   public Object call() throws Exception {
@@ -119,7 +113,7 @@ public final class SimpleTimeLimiter implements TimeLimiter {
     return interfaceType.cast(object);
   }
 
-  private <T extends @Nullable Object> T callWithTimeout(
+  private <T extends Object> T callWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit, boolean amInterruptible)
       throws Exception {
     checkNotNull(callable);
@@ -147,9 +141,8 @@ public final class SimpleTimeLimiter implements TimeLimiter {
     }
   }
 
-  @CanIgnoreReturnValue
   @Override
-  public <T extends @Nullable Object> T callWithTimeout(
+  public <T extends Object> T callWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit)
       throws TimeoutException, InterruptedException, ExecutionException {
     checkNotNull(callable);
@@ -169,9 +162,8 @@ public final class SimpleTimeLimiter implements TimeLimiter {
     }
   }
 
-  @CanIgnoreReturnValue
   @Override
-  public <T extends @Nullable Object> T callUninterruptiblyWithTimeout(
+  public <T extends Object> T callUninterruptiblyWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit)
       throws TimeoutException, ExecutionException {
     checkNotNull(callable);
diff --git a/android/guava/src/com/google/common/util/concurrent/SmoothRateLimiter.java b/android/guava/src/com/google/common/util/concurrent/SmoothRateLimiter.java
index ca78905..9314fd8 100644
--- a/android/guava/src/com/google/common/util/concurrent/SmoothRateLimiter.java
+++ b/android/guava/src/com/google/common/util/concurrent/SmoothRateLimiter.java
@@ -17,11 +17,9 @@ package com.google.common.util.concurrent;
 import static java.lang.Math.min;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.math.LongMath;
 import java.util.concurrent.TimeUnit;
 
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class SmoothRateLimiter extends RateLimiter {
   /*
diff --git a/android/guava/src/com/google/common/util/concurrent/Striped.java b/android/guava/src/com/google/common/util/concurrent/Striped.java
index fc8bcd8..c7c09bb 100644
--- a/android/guava/src/com/google/common/util/concurrent/Striped.java
+++ b/android/guava/src/com/google/common/util/concurrent/Striped.java
@@ -16,19 +16,14 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.collect.Lists.newArrayList;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.MapMaker;
 import com.google.common.math.IntMath;
 import com.google.common.primitives.Ints;
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
 import java.math.RoundingMode;
 import java.util.Arrays;
 import java.util.Collections;
@@ -41,7 +36,6 @@ import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A striped {@code Lock/Semaphore/ReadWriteLock}. This offers the underlying lock striping similar
@@ -82,8 +76,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Dimitris Andreou
  * @since 13.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class Striped<L> {
   /**
@@ -436,9 +428,8 @@ public abstract class Striped<L> {
    * AtomicReferenceArray of size 2^k. To map a user key into a stripe, we take a k-bit slice of the
    * user key's (smeared) hashCode(). The stripes are lazily initialized and are weakly referenced.
    */
-  @VisibleForTesting
   static class SmallLazyStriped<L> extends PowerOfTwoStriped<L> {
-    final AtomicReferenceArray<@Nullable ArrayReference<? extends L>> locks;
+    final AtomicReferenceArray<ArrayReference<? extends L>> locks;
     final Supplier<L> supplier;
     final int size;
     final ReferenceQueue<L> queue = new ReferenceQueue<L>();
@@ -508,7 +499,6 @@ public abstract class Striped<L> {
    * where the key domain is [0..2^k). To map a user key into a stripe, we take a k-bit slice of the
    * user key's (smeared) hashCode(). The stripes are lazily initialized and are weakly referenced.
    */
-  @VisibleForTesting
   static class LargeLazyStriped<L> extends PowerOfTwoStriped<L> {
     final ConcurrentMap<Integer, L> locks;
     final Supplier<L> supplier;
diff --git a/android/guava/src/com/google/common/util/concurrent/ThreadFactoryBuilder.java b/android/guava/src/com/google/common/util/concurrent/ThreadFactoryBuilder.java
index 1027f3c..146e43b 100644
--- a/android/guava/src/com/google/common/util/concurrent/ThreadFactoryBuilder.java
+++ b/android/guava/src/com/google/common/util/concurrent/ThreadFactoryBuilder.java
@@ -16,11 +16,7 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CheckReturnValue;
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.util.Locale;
 import java.util.concurrent.Executors;
@@ -45,8 +41,6 @@ import javax.annotation.CheckForNull;
  * @author Kurt Alfred Kluever
  * @since 4.0
  */
-@CanIgnoreReturnValue
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ThreadFactoryBuilder {
   @CheckForNull private String nameFormat = null;
@@ -143,7 +137,6 @@ public final class ThreadFactoryBuilder {
    *
    * @return the fully constructed {@link ThreadFactory}
    */
-  @CheckReturnValue
   public ThreadFactory build() {
     return doBuild(this);
   }
diff --git a/android/guava/src/com/google/common/util/concurrent/TimeLimiter.java b/android/guava/src/com/google/common/util/concurrent/TimeLimiter.java
index 0883bcc..54e3bc9 100644
--- a/android/guava/src/com/google/common/util/concurrent/TimeLimiter.java
+++ b/android/guava/src/com/google/common/util/concurrent/TimeLimiter.java
@@ -14,15 +14,10 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Imposes a time limit on method calls.
@@ -31,9 +26,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jens Nyman
  * @since 1.0
  */
-@Beta
-@DoNotMock("Use FakeTimeLimiter")
-@GwtIncompatible
 @SuppressWarnings("GoodTime") // should have java.time.Duration overloads
 @ElementTypesAreNonnullByDefault
 public interface TimeLimiter {
@@ -98,8 +90,7 @@ public interface TimeLimiter {
    * @throws ExecutionError if {@code callable} throws an {@code Error}
    * @since 22.0
    */
-  @CanIgnoreReturnValue
-  <T extends @Nullable Object> T callWithTimeout(
+  <T extends Object> T callWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit)
       throws TimeoutException, InterruptedException, ExecutionException;
 
@@ -122,8 +113,7 @@ public interface TimeLimiter {
    * @throws ExecutionError if {@code callable} throws an {@code Error}
    * @since 22.0
    */
-  @CanIgnoreReturnValue
-  <T extends @Nullable Object> T callUninterruptiblyWithTimeout(
+  <T extends Object> T callUninterruptiblyWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit)
       throws TimeoutException, ExecutionException;
 
diff --git a/android/guava/src/com/google/common/util/concurrent/TimeoutFuture.java b/android/guava/src/com/google/common/util/concurrent/TimeoutFuture.java
index 219a098..3e6d5a6 100644
--- a/android/guava/src/com/google/common/util/concurrent/TimeoutFuture.java
+++ b/android/guava/src/com/google/common/util/concurrent/TimeoutFuture.java
@@ -16,7 +16,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
@@ -25,7 +24,6 @@ import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@code Futures#withTimeout}.
@@ -34,10 +32,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * in an {@link ExecutionException}) if the specified duration expires. The delegate future is
  * interrupted and cancelled if it times out.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-final class TimeoutFuture<V extends @Nullable Object> extends FluentFuture.TrustedFuture<V> {
-  static <V extends @Nullable Object> ListenableFuture<V> create(
+final class TimeoutFuture<V extends Object> extends FluentFuture.TrustedFuture<V> {
+  static <V extends Object> ListenableFuture<V> create(
       ListenableFuture<V> delegate,
       long time,
       TimeUnit unit,
@@ -81,7 +78,7 @@ final class TimeoutFuture<V extends @Nullable Object> extends FluentFuture.Trust
   }
 
   /** A runnable that is called when the delegate or the timer completes. */
-  private static final class Fire<V extends @Nullable Object> implements Runnable {
+  private static final class Fire<V extends Object> implements Runnable {
     @CheckForNull TimeoutFuture<V> timeoutFutureRef;
 
     Fire(TimeoutFuture<V> timeoutFuture) {
diff --git a/android/guava/src/com/google/common/util/concurrent/TrustedListenableFutureTask.java b/android/guava/src/com/google/common/util/concurrent/TrustedListenableFutureTask.java
index a2c2115..aafe622 100644
--- a/android/guava/src/com/google/common/util/concurrent/TrustedListenableFutureTask.java
+++ b/android/guava/src/com/google/common/util/concurrent/TrustedListenableFutureTask.java
@@ -16,13 +16,10 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Executors;
 import java.util.concurrent.RunnableFuture;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link RunnableFuture} that also implements the {@link ListenableFuture} interface.
@@ -30,17 +27,16 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * <p>This should be used in preference to {@link ListenableFutureTask} when possible for
  * performance reasons.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-class TrustedListenableFutureTask<V extends @Nullable Object> extends FluentFuture.TrustedFuture<V>
+class TrustedListenableFutureTask<V extends Object> extends FluentFuture.TrustedFuture<V>
     implements RunnableFuture<V> {
 
-  static <V extends @Nullable Object> TrustedListenableFutureTask<V> create(
+  static <V extends Object> TrustedListenableFutureTask<V> create(
       AsyncCallable<V> callable) {
     return new TrustedListenableFutureTask<V>(callable);
   }
 
-  static <V extends @Nullable Object> TrustedListenableFutureTask<V> create(Callable<V> callable) {
+  static <V extends Object> TrustedListenableFutureTask<V> create(Callable<V> callable) {
     return new TrustedListenableFutureTask<V>(callable);
   }
 
@@ -53,7 +49,7 @@ class TrustedListenableFutureTask<V extends @Nullable Object> extends FluentFutu
    *     result, consider using constructions of the form: {@code ListenableFuture<?> f =
    *     ListenableFutureTask.create(runnable, null)}
    */
-  static <V extends @Nullable Object> TrustedListenableFutureTask<V> create(
+  static <V extends Object> TrustedListenableFutureTask<V> create(
       Runnable runnable, @ParametricNullness V result) {
     return new TrustedListenableFutureTask<V>(Executors.callable(runnable, result));
   }
@@ -112,7 +108,6 @@ class TrustedListenableFutureTask<V extends @Nullable Object> extends FluentFutu
     return super.pendingToString();
   }
 
-  @WeakOuter
   private final class TrustedFutureInterruptibleTask extends InterruptibleTask<V> {
     private final Callable<V> callable;
 
@@ -147,7 +142,6 @@ class TrustedListenableFutureTask<V extends @Nullable Object> extends FluentFutu
     }
   }
 
-  @WeakOuter
   private final class TrustedFutureInterruptibleAsyncTask
       extends InterruptibleTask<ListenableFuture<V>> {
     private final AsyncCallable<V> callable;
diff --git a/android/guava/src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java b/android/guava/src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java
index a1add8b..5d543e8 100644
--- a/android/guava/src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java
+++ b/android/guava/src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java
@@ -16,8 +16,6 @@ package com.google.common.util.concurrent;
 
 import static java.util.logging.Level.SEVERE;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.util.Locale;
 import java.util.logging.Logger;
@@ -28,7 +26,6 @@ import java.util.logging.Logger;
  * @author Gregory Kick
  * @since 8.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class UncaughtExceptionHandlers {
   private UncaughtExceptionHandlers() {}
@@ -53,7 +50,6 @@ public final class UncaughtExceptionHandlers {
     return new Exiter(Runtime.getRuntime());
   }
 
-  @VisibleForTesting
   static final class Exiter implements UncaughtExceptionHandler {
     private static final Logger logger = Logger.getLogger(Exiter.class.getName());
 
diff --git a/android/guava/src/com/google/common/util/concurrent/UncheckedExecutionException.java b/android/guava/src/com/google/common/util/concurrent/UncheckedExecutionException.java
index 713f4a6..9fe4b10 100644
--- a/android/guava/src/com/google/common/util/concurrent/UncheckedExecutionException.java
+++ b/android/guava/src/com/google/common/util/concurrent/UncheckedExecutionException.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -32,7 +31,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class UncheckedExecutionException extends RuntimeException {
   /*
diff --git a/android/guava/src/com/google/common/util/concurrent/UncheckedTimeoutException.java b/android/guava/src/com/google/common/util/concurrent/UncheckedTimeoutException.java
index 8e30fca..9a02731 100644
--- a/android/guava/src/com/google/common/util/concurrent/UncheckedTimeoutException.java
+++ b/android/guava/src/com/google/common/util/concurrent/UncheckedTimeoutException.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -23,7 +22,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public class UncheckedTimeoutException extends RuntimeException {
   public UncheckedTimeoutException() {}
diff --git a/android/guava/src/com/google/common/util/concurrent/Uninterruptibles.java b/android/guava/src/com/google/common/util/concurrent/Uninterruptibles.java
index a33ba82..8493e3e 100644
--- a/android/guava/src/com/google/common/util/concurrent/Uninterruptibles.java
+++ b/android/guava/src/com/google/common/util/concurrent/Uninterruptibles.java
@@ -17,11 +17,7 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Verify.verify;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.CountDownLatch;
@@ -33,7 +29,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Utilities for treating interruptible operations as uninterruptible. In all cases, if a thread is
@@ -43,7 +38,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Anthony Zana
  * @since 10.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Uninterruptibles {
 
@@ -51,7 +45,7 @@ public final class Uninterruptibles {
   // methods is identical, save for method being invoked.
 
   /** Invokes {@code latch.}{@link CountDownLatch#await() await()} uninterruptibly. */
-  @GwtIncompatible // concurrency
+  // concurrency
   public static void awaitUninterruptibly(CountDownLatch latch) {
     boolean interrupted = false;
     try {
@@ -74,8 +68,8 @@ public final class Uninterruptibles {
    * Invokes {@code latch.}{@link CountDownLatch#await(long, TimeUnit) await(timeout, unit)}
    * uninterruptibly.
    */
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-  @GwtIncompatible // concurrency
+  // TODO(cpovirk): Consider being more strict.
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean awaitUninterruptibly(CountDownLatch latch, long timeout, TimeUnit unit) {
     boolean interrupted = false;
@@ -105,7 +99,7 @@ public final class Uninterruptibles {
    *
    * @since 23.6
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean awaitUninterruptibly(Condition condition, long timeout, TimeUnit unit) {
     boolean interrupted = false;
@@ -129,7 +123,7 @@ public final class Uninterruptibles {
   }
 
   /** Invokes {@code toJoin.}{@link Thread#join() join()} uninterruptibly. */
-  @GwtIncompatible // concurrency
+  // concurrency
   public static void joinUninterruptibly(Thread toJoin) {
     boolean interrupted = false;
     try {
@@ -152,7 +146,7 @@ public final class Uninterruptibles {
    * Invokes {@code unit.}{@link TimeUnit#timedJoin(Thread, long) timedJoin(toJoin, timeout)}
    * uninterruptibly.
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static void joinUninterruptibly(Thread toJoin, long timeout, TimeUnit unit) {
     Preconditions.checkNotNull(toJoin);
@@ -194,9 +188,8 @@ public final class Uninterruptibles {
    * @throws ExecutionException if the computation threw an exception
    * @throws CancellationException if the computation was cancelled
    */
-  @CanIgnoreReturnValue
   @ParametricNullness
-  public static <V extends @Nullable Object> V getUninterruptibly(Future<V> future)
+  public static <V extends Object> V getUninterruptibly(Future<V> future)
       throws ExecutionException {
     boolean interrupted = false;
     try {
@@ -232,11 +225,10 @@ public final class Uninterruptibles {
    * @throws CancellationException if the computation was cancelled
    * @throws TimeoutException if the wait timed out
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   @ParametricNullness
-  public static <V extends @Nullable Object> V getUninterruptibly(
+  public static <V extends Object> V getUninterruptibly(
       Future<V> future, long timeout, TimeUnit unit) throws ExecutionException, TimeoutException {
     boolean interrupted = false;
     try {
@@ -260,7 +252,7 @@ public final class Uninterruptibles {
   }
 
   /** Invokes {@code queue.}{@link BlockingQueue#take() take()} uninterruptibly. */
-  @GwtIncompatible // concurrency
+  // concurrency
   public static <E> E takeUninterruptibly(BlockingQueue<E> queue) {
     boolean interrupted = false;
     try {
@@ -286,7 +278,7 @@ public final class Uninterruptibles {
    * @throws IllegalArgumentException if some property of the specified element prevents it from
    *     being added to the given queue
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   public static <E> void putUninterruptibly(BlockingQueue<E> queue, E element) {
     boolean interrupted = false;
     try {
@@ -307,7 +299,7 @@ public final class Uninterruptibles {
 
   // TODO(user): Support Sleeper somehow (wrapper or interface method)?
   /** Invokes {@code unit.}{@link TimeUnit#sleep(long) sleep(sleepFor)} uninterruptibly. */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static void sleepUninterruptibly(long sleepFor, TimeUnit unit) {
     boolean interrupted = false;
@@ -337,7 +329,7 @@ public final class Uninterruptibles {
    *
    * @since 18.0
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean tryAcquireUninterruptibly(
       Semaphore semaphore, long timeout, TimeUnit unit) {
@@ -350,7 +342,7 @@ public final class Uninterruptibles {
    *
    * @since 18.0
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean tryAcquireUninterruptibly(
       Semaphore semaphore, int permits, long timeout, TimeUnit unit) {
@@ -381,7 +373,7 @@ public final class Uninterruptibles {
    *
    * @since 30.0
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean tryLockUninterruptibly(Lock lock, long timeout, TimeUnit unit) {
     boolean interrupted = false;
@@ -410,8 +402,7 @@ public final class Uninterruptibles {
    *
    * @since 30.0
    */
-  @Beta
-  @GwtIncompatible // concurrency
+  // concurrency
   public static void awaitTerminationUninterruptibly(ExecutorService executor) {
     // TODO(cpovirk): We could optimize this to avoid calling nanoTime() at all.
     verify(awaitTerminationUninterruptibly(executor, Long.MAX_VALUE, NANOSECONDS));
@@ -423,8 +414,7 @@ public final class Uninterruptibles {
    *
    * @since 30.0
    */
-  @Beta
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime")
   public static boolean awaitTerminationUninterruptibly(
       ExecutorService executor, long timeout, TimeUnit unit) {
diff --git a/android/guava/src/com/google/common/util/concurrent/WrappingExecutorService.java b/android/guava/src/com/google/common/util/concurrent/WrappingExecutorService.java
index 03c08cc..95fc84b 100644
--- a/android/guava/src/com/google/common/util/concurrent/WrappingExecutorService.java
+++ b/android/guava/src/com/google/common/util/concurrent/WrappingExecutorService.java
@@ -17,9 +17,6 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.throwIfUnchecked;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -29,7 +26,6 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)
@@ -41,8 +37,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Chris Nokleberg
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 abstract class WrappingExecutorService implements ExecutorService {
   private final ExecutorService delegate;
@@ -55,7 +50,7 @@ abstract class WrappingExecutorService implements ExecutorService {
    * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied
    * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.
    */
-  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);
+  protected abstract <T extends Object> Callable<T> wrapTask(Callable<T> callable);
 
   /**
    * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation
@@ -81,7 +76,7 @@ abstract class WrappingExecutorService implements ExecutorService {
    *
    * @throws NullPointerException if any element of {@code tasks} is null
    */
-  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(
+  private <T extends Object> ImmutableList<Callable<T>> wrapTasks(
       Collection<? extends Callable<T>> tasks) {
     ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();
     for (Callable<T> task : tasks) {
@@ -97,7 +92,7 @@ abstract class WrappingExecutorService implements ExecutorService {
   }
 
   @Override
-  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {
+  public final <T extends Object> Future<T> submit(Callable<T> task) {
     return delegate.submit(wrapTask(checkNotNull(task)));
   }
 
@@ -107,32 +102,32 @@ abstract class WrappingExecutorService implements ExecutorService {
   }
 
   @Override
-  public final <T extends @Nullable Object> Future<T> submit(
+  public final <T extends Object> Future<T> submit(
       Runnable task, @ParametricNullness T result) {
     return delegate.submit(wrapTask(task), result);
   }
 
   @Override
-  public final <T extends @Nullable Object> List<Future<T>> invokeAll(
+  public final <T extends Object> List<Future<T>> invokeAll(
       Collection<? extends Callable<T>> tasks) throws InterruptedException {
     return delegate.invokeAll(wrapTasks(tasks));
   }
 
   @Override
-  public final <T extends @Nullable Object> List<Future<T>> invokeAll(
+  public final <T extends Object> List<Future<T>> invokeAll(
       Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
       throws InterruptedException {
     return delegate.invokeAll(wrapTasks(tasks), timeout, unit);
   }
 
   @Override
-  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)
+  public final <T extends Object> T invokeAny(Collection<? extends Callable<T>> tasks)
       throws InterruptedException, ExecutionException {
     return delegate.invokeAny(wrapTasks(tasks));
   }
 
   @Override
-  public final <T extends @Nullable Object> T invokeAny(
+  public final <T extends Object> T invokeAny(
       Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
       throws InterruptedException, ExecutionException, TimeoutException {
     return delegate.invokeAny(wrapTasks(tasks), timeout, unit);
diff --git a/android/guava/src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java b/android/guava/src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java
index 48f23c1..7d52c99 100644
--- a/android/guava/src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java
+++ b/android/guava/src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java
@@ -14,13 +14,10 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An abstract {@code ScheduledExecutorService} that allows subclasses to {@linkplain
@@ -30,8 +27,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Luke Sandberg
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 abstract class WrappingScheduledExecutorService extends WrappingExecutorService
     implements ScheduledExecutorService {
@@ -48,7 +44,7 @@ abstract class WrappingScheduledExecutorService extends WrappingExecutorService
   }
 
   @Override
-  public final <V extends @Nullable Object> ScheduledFuture<V> schedule(
+  public final <V extends Object> ScheduledFuture<V> schedule(
       Callable<V> task, long delay, TimeUnit unit) {
     return delegate.schedule(wrapTask(task), delay, unit);
   }
diff --git a/android/guava/src/com/google/common/util/concurrent/package-info.java b/android/guava/src/com/google/common/util/concurrent/package-info.java
index a2533c1..ab9565a 100644
--- a/android/guava/src/com/google/common/util/concurrent/package-info.java
+++ b/android/guava/src/com/google/common/util/concurrent/package-info.java
@@ -25,9 +25,7 @@
  * <p>This package is a part of the open-source <a href="http://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.util.concurrent;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/common/xml/ElementTypesAreNonnullByDefault.java b/android/guava/src/com/google/common/xml/ElementTypesAreNonnullByDefault.java
index b4fb4e3..c4dc0b2 100644
--- a/android/guava/src/com/google/common/xml/ElementTypesAreNonnullByDefault.java
+++ b/android/guava/src/com/google/common/xml/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/android/guava/src/com/google/common/xml/ParametricNullness.java b/android/guava/src/com/google/common/xml/ParametricNullness.java
index a476558..42f29cd 100644
--- a/android/guava/src/com/google/common/xml/ParametricNullness.java
+++ b/android/guava/src/com/google/common/xml/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/android/guava/src/com/google/common/xml/XmlEscapers.java b/android/guava/src/com/google/common/xml/XmlEscapers.java
index a1c637c..7d73cef 100644
--- a/android/guava/src/com/google/common/xml/XmlEscapers.java
+++ b/android/guava/src/com/google/common/xml/XmlEscapers.java
@@ -14,8 +14,6 @@
 
 package com.google.common.xml;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.Escaper;
 import com.google.common.escape.Escapers;
 
@@ -38,8 +36,6 @@ import com.google.common.escape.Escapers;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class XmlEscapers {
   private XmlEscapers() {}
diff --git a/android/guava/src/com/google/common/xml/package-info.java b/android/guava/src/com/google/common/xml/package-info.java
index bd4c952..87eafd4 100644
--- a/android/guava/src/com/google/common/xml/package-info.java
+++ b/android/guava/src/com/google/common/xml/package-info.java
@@ -20,9 +20,7 @@
  * <p>This package is a part of the open-source <a href="http://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.xml;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixPatterns.java b/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixPatterns.java
index 9e5f173..67534d2 100644
--- a/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixPatterns.java
+++ b/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixPatterns.java
@@ -18,9 +18,6 @@
 
 package com.google.thirdparty.publicsuffix;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 
 /**
  * <b>Do not use this class directly. For access to public-suffix information, use {@link
@@ -34,8 +31,6 @@ import com.google.common.collect.ImmutableMap;
  *
  * @since 16.0
  */
-@GwtCompatible
-@Beta
 public final class PublicSuffixPatterns {
   private PublicSuffixPatterns() {}
 
diff --git a/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixType.java b/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixType.java
index be1d07f..af4ba69 100644
--- a/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixType.java
+++ b/android/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixType.java
@@ -14,8 +14,6 @@
 
 package com.google.thirdparty.publicsuffix;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * <b>Do not use this class directly. For access to public-suffix information, use {@link
@@ -25,8 +23,6 @@ import com.google.common.annotations.GwtCompatible;
  *
  * @since 23.3
  */
-@Beta
-@GwtCompatible
 public enum PublicSuffixType {
 
   /** Public suffix that is provided by a private company, e.g. "blogspot.com" */
diff --git a/android/guava/src/com/google/thirdparty/publicsuffix/TrieParser.java b/android/guava/src/com/google/thirdparty/publicsuffix/TrieParser.java
index dd77780..4207567 100644
--- a/android/guava/src/com/google/thirdparty/publicsuffix/TrieParser.java
+++ b/android/guava/src/com/google/thirdparty/publicsuffix/TrieParser.java
@@ -14,14 +14,11 @@
 
 package com.google.thirdparty.publicsuffix;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Queues;
 import java.util.Deque;
 
 /** Parser for a map of reversed domain names stored as a serialized radix tree. */
-@GwtCompatible
 final class TrieParser {
   private static final Joiner PREFIX_JOINER = Joiner.on("");
 
diff --git a/futures/listenablefuture1/src/com/google/common/util/concurrent/ListenableFuture.java b/futures/listenablefuture1/src/com/google/common/util/concurrent/ListenableFuture.java
index cf0199a..70d9342 100644
--- a/futures/listenablefuture1/src/com/google/common/util/concurrent/ListenableFuture.java
+++ b/futures/listenablefuture1/src/com/google/common/util/concurrent/ListenableFuture.java
@@ -14,11 +14,9 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
 import java.util.concurrent.RejectedExecutionException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Future} that accepts completion listeners. Each listener has an associated executor, and
@@ -115,7 +113,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * that affects users, especially users of the Android Gradle Plugin, since the plugin developers
  * put in a special hack for us: https://issuetracker.google.com/issues/131431257)
  */
-@DoNotMock("Use the methods in Futures (like immediateFuture) or SettableFuture")
 /*
  * It would make sense to also annotate this class with @ElementTypesAreNonnullByDefault. However,
  * it makes no difference because this class is already covered by the package-level
@@ -125,7 +122,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * we're seeing a breakage internally when we add that annotation :)
  *
  */
-public interface ListenableFuture<V extends @Nullable Object> extends Future<V> {
+public interface ListenableFuture<V extends Object> extends Future<V> {
   /**
    * Registers a listener to be {@linkplain Executor#execute(Runnable) run} on the given executor.
    * The listener will run when the {@code Future}'s computation is {@linkplain Future#isDone()
diff --git a/guava-gwt/src-super/com/google/common/base/super/com/google/common/base/ExtraObjectsMethodsForWeb.java b/guava-gwt/src-super/com/google/common/base/super/com/google/common/base/ExtraObjectsMethodsForWeb.java
index 9e3c89e..8511e4a 100644
--- a/guava-gwt/src-super/com/google/common/base/super/com/google/common/base/ExtraObjectsMethodsForWeb.java
+++ b/guava-gwt/src-super/com/google/common/base/super/com/google/common/base/ExtraObjectsMethodsForWeb.java
@@ -14,7 +14,6 @@
 
 package com.google.common.base;
 
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Holder for extra methods of {@code Objects} only in web. */
 abstract class ExtraObjectsMethodsForWeb {
diff --git a/guava-gwt/src-super/com/google/common/base/super/com/google/common/base/Platform.java b/guava-gwt/src-super/com/google/common/base/super/com/google/common/base/Platform.java
index 2e17c9a..ac26b09 100644
--- a/guava-gwt/src-super/com/google/common/base/super/com/google/common/base/Platform.java
+++ b/guava-gwt/src-super/com/google/common/base/super/com/google/common/base/Platform.java
@@ -21,7 +21,6 @@ import static jsinterop.annotations.JsPackage.GLOBAL;
 import java.util.concurrent.TimeUnit;
 import jsinterop.annotations.JsMethod;
 import jsinterop.annotations.JsType;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** @author Jesse Wilson */
 final class Platform {
diff --git a/guava-gwt/src-super/com/google/common/cache/super/com/google/common/cache/LocalCache.java b/guava-gwt/src-super/com/google/common/cache/super/com/google/common/cache/LocalCache.java
index 8530def..97d34e4 100644
--- a/guava-gwt/src-super/com/google/common/cache/super/com/google/common/cache/LocalCache.java
+++ b/guava-gwt/src-super/com/google/common/cache/super/com/google/common/cache/LocalCache.java
@@ -16,14 +16,12 @@
 
 package com.google.common.cache;
 
-import static com.google.common.base.MoreObjects.firstNonNull;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
 import com.google.common.base.Equivalence;
 import com.google.common.base.Ticker;
 import com.google.common.cache.AbstractCache.StatsCounter;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.ExecutionError;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import java.util.AbstractCollection;
@@ -39,7 +37,6 @@ import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ExecutionException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * LocalCache emulation for GWT.
@@ -378,7 +375,7 @@ public class LocalCache<K, V> implements ConcurrentMap<K, V> {
     }
 
     @Override
-    public @Nullable V getIfPresent(Object key) {
+    public V getIfPresent(Object key) {
       return localCache.getIfPresent(key);
     }
 
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/AbstractSortedMultiset.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/AbstractSortedMultiset.java
index 88cc536..7ed3639 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/AbstractSortedMultiset.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/AbstractSortedMultiset.java
@@ -16,11 +16,9 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.SortedSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * This class provides a skeletal implementation of the {@link SortedMultiset} interface.
@@ -31,7 +29,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 abstract class AbstractSortedMultiset<E> extends AbstractMultiset<E> implements SortedMultiset<E> {
   @GwtTransient final Comparator<? super E> comparator;
 
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java
index 55af586..348c43c 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java
@@ -16,11 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Map;
 
-@GwtCompatible(emulated = true)
 abstract class ArrayListMultimapGwtSerializationDependencies<K, V>
     extends AbstractListMultimap<K, V> {
   ArrayListMultimapGwtSerializationDependencies(Map<K, Collection<V>> map) {
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/DescendingMultiset.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/DescendingMultiset.java
index 9a4d383..194cecf 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/DescendingMultiset.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/DescendingMultiset.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.Set;
@@ -28,7 +27,6 @@ import java.util.SortedSet;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 abstract class DescendingMultiset<E> extends ForwardingMultiset<E> implements SortedMultiset<E> {
   abstract SortedMultiset<E> forwardMultiset();
 
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableCollection.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableCollection.java
index a541c77..582a69e 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableCollection.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableCollection.java
@@ -17,7 +17,6 @@
 package com.google.common.collect;
 
 import java.util.Collection;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A GWT-only class only used by GWT emulations. It is used to consolidate the definitions of method
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableList.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableList.java
index a54c383..0f8b644 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableList.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableList.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import java.util.Collection;
 import java.util.List;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * GWT emulated version of {@link ImmutableList}. TODO(cpovirk): more doc
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableMap.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableMap.java
index 68cce93..6f8b86f 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableMap.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableMap.java
@@ -21,7 +21,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * GWT implementation of {@link ImmutableMap} that forwards to another map.
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableSet.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableSet.java
index 09fcd9e..43e971b 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableSet.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ForwardingImmutableSet.java
@@ -19,7 +19,6 @@ package com.google.common.collect;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * GWT implementation of {@link ImmutableSet} that forwards to another {@code Set} implementation.
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/HashMultimapGwtSerializationDependencies.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/HashMultimapGwtSerializationDependencies.java
index a38f9e8..76c8130 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/HashMultimapGwtSerializationDependencies.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/HashMultimapGwtSerializationDependencies.java
@@ -16,11 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Map;
 
-@GwtCompatible(emulated = true)
 abstract class HashMultimapGwtSerializationDependencies<K, V> extends AbstractSetMultimap<K, V> {
   HashMultimapGwtSerializationDependencies(Map<K, Collection<V>> map) {
     super(map);
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableCollection.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableCollection.java
index ccab6d8..010ba0a 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableCollection.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableCollection.java
@@ -24,7 +24,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.Spliterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * GWT emulated version of {@link ImmutableCollection}.
@@ -90,7 +89,7 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
   }
 
   /** If this collection is backed by an array of its elements in insertion order, returns it. */
-  Object @Nullable [] internalArray() {
+  Object [] internalArray() {
     return null;
   }
 
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableList.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableList.java
index 7f7b72b..b2c6324 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableList.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableList.java
@@ -19,7 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.ObjectArrays.checkElementsNotNull;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -29,7 +28,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.RandomAccess;
 import java.util.stream.Collector;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * GWT emulated version of {@link com.google.common.collect.ImmutableList}. TODO(cpovirk): more doc
@@ -304,21 +302,18 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
       contents = Lists.newArrayListWithCapacity(capacity);
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E element) {
       contents.add(checkNotNull(element));
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterable<? extends E> elements) {
       super.addAll(elements);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E... elements) {
       checkNotNull(elements); // for GWT
@@ -326,14 +321,12 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterator<? extends E> elements) {
       super.addAll(elements);
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<E> combine(Builder<E> builder) {
       checkNotNull(builder);
       contents.addAll(builder.contents);
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableMap.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableMap.java
index cef789a..75949f0 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableMap.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableMap.java
@@ -36,7 +36,6 @@ import java.util.function.BinaryOperator;
 import java.util.function.Function;
 import java.util.stream.Collector;
 import java.util.stream.Collectors;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * GWT emulation of {@link com.google.common.collect.ImmutableMap}. For non sorted maps, it is a
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java
index 7eaf55d..b822da8 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java
@@ -16,9 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
-@GwtCompatible(emulated = true)
 abstract class ImmutableMultisetGwtSerializationDependencies<E> extends ImmutableCollection<E> {
   E dummy;
 }
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableSet.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableSet.java
index d5a8dad..58facde 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableSet.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableSet.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -176,7 +175,7 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
   public abstract UnmodifiableIterator<E> iterator();
 
   abstract static class CachingAsList<E> extends ImmutableSet<E> {
-    @LazyInit private transient ImmutableList<E> asList;
+    private transient ImmutableList<E> asList;
 
     @Override
     public ImmutableList<E> asList() {
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableSortedSet.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableSortedSet.java
index ce09f61..036389f 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableSortedSet.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/ImmutableSortedSet.java
@@ -28,7 +28,6 @@ import java.util.List;
 import java.util.SortedSet;
 import java.util.TreeSet;
 import java.util.stream.Collector;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * GWT emulation of {@link com.google.common.collect.ImmutableSortedSet}.
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java
index 6410801..3afcc01 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java
@@ -16,11 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Map;
 
-@GwtCompatible(emulated = true)
 abstract class LinkedHashMultimapGwtSerializationDependencies<K, V>
     extends AbstractSetMultimap<K, V> {
   LinkedHashMultimapGwtSerializationDependencies(Map<K, Collection<V>> map) {
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/RangeGwtSerializationDependencies.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/RangeGwtSerializationDependencies.java
index 3e8f7ab..9df5a5e 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/RangeGwtSerializationDependencies.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/RangeGwtSerializationDependencies.java
@@ -16,10 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 
-@GwtCompatible(emulated = true)
 abstract class RangeGwtSerializationDependencies<C extends Comparable> implements Serializable {
   C dummy;
 }
diff --git a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/SortedMultiset.java b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/SortedMultiset.java
index 5adb9db..e4c0a63 100644
--- a/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/SortedMultiset.java
+++ b/guava-gwt/src-super/com/google/common/collect/super/com/google/common/collect/SortedMultiset.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
 import java.util.Comparator;
 import java.util.SortedSet;
 
@@ -27,7 +26,6 @@ import java.util.SortedSet;
  * @author Louis Wasserman
  * @since 11.0
  */
-@Beta
 public interface SortedMultiset<E> extends Multiset<E>, SortedIterable<E> {
   Comparator<? super E> comparator();
 
diff --git a/guava-gwt/src-super/com/google/common/util/concurrent/super/com/google/common/util/concurrent/AbstractFuture.java b/guava-gwt/src-super/com/google/common/util/concurrent/super/com/google/common/util/concurrent/AbstractFuture.java
index 0f22cac..d40fd32 100644
--- a/guava-gwt/src-super/com/google/common/util/concurrent/super/com/google/common/util/concurrent/AbstractFuture.java
+++ b/guava-gwt/src-super/com/google/common/util/concurrent/super/com/google/common/util/concurrent/AbstractFuture.java
@@ -33,7 +33,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Emulation for AbstractFuture in GWT. */
 @SuppressWarnings("nullness") // TODO(b/147136275): Remove once our checker understands & and |.
@@ -271,7 +270,6 @@ public abstract class AbstractFuture<V> extends InternalFutureFailureAccess
    *
    * @return null if an explanation cannot be provided because the future is done.
    */
-  @Nullable
   String pendingToString() {
     if (state == State.DELEGATED) {
       return "setFuture=[" + delegate + "]";
diff --git a/guava-gwt/src-super/com/google/common/util/concurrent/super/com/google/common/util/concurrent/InterruptibleTask.java b/guava-gwt/src-super/com/google/common/util/concurrent/super/com/google/common/util/concurrent/InterruptibleTask.java
index 1cd9f3e..0f8a6e3 100644
--- a/guava-gwt/src-super/com/google/common/util/concurrent/super/com/google/common/util/concurrent/InterruptibleTask.java
+++ b/guava-gwt/src-super/com/google/common/util/concurrent/super/com/google/common/util/concurrent/InterruptibleTask.java
@@ -16,7 +16,6 @@
 
 package com.google.common.util.concurrent;
 
-import static com.google.common.util.concurrent.NullnessCasts.uncheckedCastNullableTToT;
 
 /** Emulation for InterruptibleTask in GWT. */
 abstract class InterruptibleTask<T> implements Runnable {
diff --git a/guava-gwt/test-super/com/google/common/collect/testing/super/com/google/common/collect/testing/testers/Platform.java b/guava-gwt/test-super/com/google/common/collect/testing/super/com/google/common/collect/testing/testers/Platform.java
index 479b80f..5cc1e26 100644
--- a/guava-gwt/test-super/com/google/common/collect/testing/super/com/google/common/collect/testing/testers/Platform.java
+++ b/guava-gwt/test-super/com/google/common/collect/testing/super/com/google/common/collect/testing/testers/Platform.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.gwt.core.client.GWT;
 
 /**
@@ -24,7 +23,6 @@ import com.google.gwt.core.client.GWT;
  *
  * @author Hayward Chan
  */
-@GwtCompatible(emulated = true)
 final class Platform {
 
   // Use fewer steps in the ListIteratorTester in ListListIteratorTester because it's slow in prod
diff --git a/guava-gwt/test-super/com/google/common/math/super/com/google/common/math/TestPlatform.java b/guava-gwt/test-super/com/google/common/math/super/com/google/common/math/TestPlatform.java
index 7d355cf..fb36027 100644
--- a/guava-gwt/test-super/com/google/common/math/super/com/google/common/math/TestPlatform.java
+++ b/guava-gwt/test-super/com/google/common/math/super/com/google/common/math/TestPlatform.java
@@ -16,10 +16,8 @@
 
 package com.google.common.math;
 
-import com.google.common.annotations.GwtCompatible;
 
 /** @author Chris Povirk */
-@GwtCompatible(emulated = true)
 class TestPlatform {
   static boolean intsCanGoOutOfRange() {
     return true;
diff --git a/guava-gwt/test-super/com/google/common/primitives/super/com/google/common/primitives/TestPlatform.java b/guava-gwt/test-super/com/google/common/primitives/super/com/google/common/primitives/TestPlatform.java
index a7ff27c..32515b7 100644
--- a/guava-gwt/test-super/com/google/common/primitives/super/com/google/common/primitives/TestPlatform.java
+++ b/guava-gwt/test-super/com/google/common/primitives/super/com/google/common/primitives/TestPlatform.java
@@ -16,9 +16,7 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
-@GwtCompatible(emulated = true)
 class TestPlatform {
   static int reduceIterationsIfGwt(int iterations) {
     return iterations / 10;
diff --git a/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTestSuiteBuilder.java
index 02efe30..c5eedc7 100644
--- a/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.testers.CollectionAddAllTester;
 import com.google.common.collect.testing.testers.CollectionAddTester;
 import com.google.common.collect.testing.testers.CollectionClearTester;
@@ -46,7 +45,6 @@ import java.util.List;
  *
  * @author George van den Driessche
  */
-@GwtIncompatible
 public abstract class AbstractCollectionTestSuiteBuilder<
         B extends AbstractCollectionTestSuiteBuilder<B, E>, E>
     extends PerCollectionSizeTestSuiteBuilder<B, TestCollectionGenerator<E>, Collection<E>, E> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTester.java b/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTester.java
index c5191be..0dd364b 100644
--- a/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/AbstractCollectionTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import org.junit.Ignore;
 
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  * @param <E> the element type of the collection to be tested.
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractCollectionTester<E>
     extends AbstractContainerTester<Collection<E>, E> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/AbstractContainerTester.java b/guava-testlib/src/com/google/common/collect/testing/AbstractContainerTester.java
index a5674d3..5d5e20f 100644
--- a/guava-testlib/src/com/google/common/collect/testing/AbstractContainerTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/AbstractContainerTester.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.OverridingMethodsMustInvokeSuper;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -33,7 +31,6 @@ import org.junit.Ignore;
  * @param <E> the type of the container's contents
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractContainerTester<C, E>
     extends AbstractTester<OneSizeTestContainerGenerator<C, E>> {
@@ -41,7 +38,6 @@ public abstract class AbstractContainerTester<C, E>
   protected C container;
 
   @Override
-  @OverridingMethodsMustInvokeSuper
   public void setUp() throws Exception {
     super.setUp();
     samples = this.getSubjectGenerator().samples();
diff --git a/guava-testlib/src/com/google/common/collect/testing/AbstractIteratorTester.java b/guava-testlib/src/com/google/common/collect/testing/AbstractIteratorTester.java
index f1b8f86..4778605 100644
--- a/guava-testlib/src/com/google/common/collect/testing/AbstractIteratorTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/AbstractIteratorTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.fail;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -40,7 +39,6 @@ import junit.framework.AssertionFailedError;
  * @author Kevin Bourrillion
  * @author Chris Povirk
  */
-@GwtCompatible
 abstract class AbstractIteratorTester<E, I extends Iterator<E>> {
   private Stimulus<E, ? super I>[] stimuli;
   private final Iterator<E> elementsToInsert;
diff --git a/guava-testlib/src/com/google/common/collect/testing/AbstractMapTester.java b/guava-testlib/src/com/google/common/collect/testing/AbstractMapTester.java
index 090442e..db966b7 100644
--- a/guava-testlib/src/com/google/common/collect/testing/AbstractMapTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/AbstractMapTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  * @param <V> the value type of the map to be tested.
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractMapTester<K, V>
     extends AbstractContainerTester<Map<K, V>, Entry<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/AbstractTester.java b/guava-testlib/src/com/google/common/collect/testing/AbstractTester.java
index dc1e1a0..b15ec06 100644
--- a/guava-testlib/src/com/google/common/collect/testing/AbstractTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/AbstractTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -30,7 +29,6 @@ import junit.framework.TestCase;
  *     parameterize the test.
  * @author George van den Driessche
  */
-@GwtCompatible
 public class AbstractTester<G> extends TestCase {
   private G subjectGenerator;
   private String suiteName;
diff --git a/guava-testlib/src/com/google/common/collect/testing/AnEnum.java b/guava-testlib/src/com/google/common/collect/testing/AnEnum.java
index 1d35795..5200e9e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/AnEnum.java
+++ b/guava-testlib/src/com/google/common/collect/testing/AnEnum.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A sample enumerated type we use for testing.
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public enum AnEnum {
   A,
   B,
diff --git a/guava-testlib/src/com/google/common/collect/testing/BaseComparable.java b/guava-testlib/src/com/google/common/collect/testing/BaseComparable.java
index 3847709..780f909 100644
--- a/guava-testlib/src/com/google/common/collect/testing/BaseComparable.java
+++ b/guava-testlib/src/com/google/common/collect/testing/BaseComparable.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 
 /**
@@ -24,7 +23,6 @@ import java.io.Serializable;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class BaseComparable implements Comparable<BaseComparable>, Serializable {
   private final String s;
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/CollectionTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/CollectionTestSuiteBuilder.java
index 5f9aff4..627e8ca 100644
--- a/guava-testlib/src/com/google/common/collect/testing/CollectionTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/CollectionTestSuiteBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.testing.SerializableTester;
 import java.util.ArrayList;
@@ -37,7 +36,6 @@ import junit.framework.TestSuite;
  * @author Chris Povirk
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class CollectionTestSuiteBuilder<E>
     extends AbstractCollectionTestSuiteBuilder<CollectionTestSuiteBuilder<E>, E> {
   public static <E> CollectionTestSuiteBuilder<E> using(TestCollectionGenerator<E> generator) {
diff --git a/guava-testlib/src/com/google/common/collect/testing/ConcurrentMapTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/ConcurrentMapTestSuiteBuilder.java
index 47220b0..272e7ea 100644
--- a/guava-testlib/src/com/google/common/collect/testing/ConcurrentMapTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/ConcurrentMapTestSuiteBuilder.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.testers.ConcurrentMapPutIfAbsentTester;
 import com.google.common.collect.testing.testers.ConcurrentMapRemoveTester;
 import com.google.common.collect.testing.testers.ConcurrentMapReplaceEntryTester;
@@ -28,7 +27,6 @@ import java.util.List;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class ConcurrentMapTestSuiteBuilder<K, V> extends MapTestSuiteBuilder<K, V> {
   public static <K, V> ConcurrentMapTestSuiteBuilder<K, V> using(TestMapGenerator<K, V> generator) {
     ConcurrentMapTestSuiteBuilder<K, V> result = new ConcurrentMapTestSuiteBuilder<>();
diff --git a/guava-testlib/src/com/google/common/collect/testing/ConcurrentNavigableMapTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/ConcurrentNavigableMapTestSuiteBuilder.java
index cccd06e..a8cbf82 100644
--- a/guava-testlib/src/com/google/common/collect/testing/ConcurrentNavigableMapTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/ConcurrentNavigableMapTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.List;
 
 /**
@@ -25,7 +24,6 @@ import java.util.List;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class ConcurrentNavigableMapTestSuiteBuilder<K, V>
     extends NavigableMapTestSuiteBuilder<K, V> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/DerivedCollectionGenerators.java b/guava-testlib/src/com/google/common/collect/testing/DerivedCollectionGenerators.java
index 3588e85..0d765be 100644
--- a/guava-testlib/src/com/google/common/collect/testing/DerivedCollectionGenerators.java
+++ b/guava-testlib/src/com/google/common/collect/testing/DerivedCollectionGenerators.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.Helpers.equal;
 import static com.google.common.collect.testing.Helpers.mapEntry;
 import static java.util.Collections.sort;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -39,7 +38,6 @@ import java.util.SortedSet;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public final class DerivedCollectionGenerators {
   public static class MapEntrySetGenerator<K, V>
       implements TestSetGenerator<Entry<K, V>>, DerivedGenerator {
diff --git a/guava-testlib/src/com/google/common/collect/testing/DerivedComparable.java b/guava-testlib/src/com/google/common/collect/testing/DerivedComparable.java
index 5b0d16f..ec8e072 100644
--- a/guava-testlib/src/com/google/common/collect/testing/DerivedComparable.java
+++ b/guava-testlib/src/com/google/common/collect/testing/DerivedComparable.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Simple derived class to verify that we handle generics correctly.
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class DerivedComparable extends BaseComparable {
   public DerivedComparable(String s) {
     super(s);
diff --git a/guava-testlib/src/com/google/common/collect/testing/DerivedGenerator.java b/guava-testlib/src/com/google/common/collect/testing/DerivedGenerator.java
index d80f5a9..54c025d 100644
--- a/guava-testlib/src/com/google/common/collect/testing/DerivedGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/DerivedGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A generator that relies on a preexisting generator for most of its work. For example, a derived
@@ -29,7 +28,6 @@ import com.google.common.annotations.GwtCompatible;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 public interface DerivedGenerator {
   TestSubjectGenerator<?> getInnerGenerator();
 }
diff --git a/guava-testlib/src/com/google/common/collect/testing/DerivedTestIteratorGenerator.java b/guava-testlib/src/com/google/common/collect/testing/DerivedTestIteratorGenerator.java
index ce0b125..246dc3f 100644
--- a/guava-testlib/src/com/google/common/collect/testing/DerivedTestIteratorGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/DerivedTestIteratorGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Iterator;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public final class DerivedTestIteratorGenerator<E>
     implements TestIteratorGenerator<E>, DerivedGenerator {
   private final TestSubjectGenerator<? extends Iterable<E>> collectionGenerator;
diff --git a/guava-testlib/src/com/google/common/collect/testing/FeatureSpecificTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/FeatureSpecificTestSuiteBuilder.java
index b629fa9..208b09a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/FeatureSpecificTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/FeatureSpecificTestSuiteBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static java.util.Collections.disjoint;
 import static java.util.logging.Level.FINER;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.ConflictingRequirementsException;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.collect.testing.features.FeatureUtil;
@@ -51,7 +50,6 @@ import junit.framework.TestSuite;
  *     information required to parameterize the test.
  * @author George van den Driessche
  */
-@GwtIncompatible
 public abstract class FeatureSpecificTestSuiteBuilder<
     B extends FeatureSpecificTestSuiteBuilder<B, G>, G> {
   @SuppressWarnings("unchecked")
diff --git a/guava-testlib/src/com/google/common/collect/testing/Helpers.java b/guava-testlib/src/com/google/common/collect/testing/Helpers.java
index 8efafc3..bbdda08 100644
--- a/guava-testlib/src/com/google/common/collect/testing/Helpers.java
+++ b/guava-testlib/src/com/google/common/collect/testing/Helpers.java
@@ -21,8 +21,6 @@ import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
@@ -40,7 +38,6 @@ import java.util.Set;
 import junit.framework.Assert;
 import junit.framework.AssertionFailedError;
 
-@GwtCompatible(emulated = true)
 public class Helpers {
   // Clone of Objects.equal
   static boolean equal(Object a, Object b) {
@@ -514,7 +511,7 @@ public class Helpers {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getMethod(Class<?> clazz, String name) {
     try {
       return clazz.getMethod(name);
diff --git a/guava-testlib/src/com/google/common/collect/testing/IteratorFeature.java b/guava-testlib/src/com/google/common/collect/testing/IteratorFeature.java
index c447e29..e3dc4f8 100644
--- a/guava-testlib/src/com/google/common/collect/testing/IteratorFeature.java
+++ b/guava-testlib/src/com/google/common/collect/testing/IteratorFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.EnumSet;
 import java.util.Iterator;
@@ -30,7 +29,6 @@ import java.util.Set;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 public enum IteratorFeature {
   /** Support for {@link Iterator#remove()}. */
   SUPPORTS_REMOVE,
diff --git a/guava-testlib/src/com/google/common/collect/testing/IteratorTester.java b/guava-testlib/src/com/google/common/collect/testing/IteratorTester.java
index fdc418a..23c5f99 100644
--- a/guava-testlib/src/com/google/common/collect/testing/IteratorTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/IteratorTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.Iterator;
 
@@ -83,7 +82,6 @@ import java.util.Iterator;
  * @author Kevin Bourrillion
  * @author Chris Povirk
  */
-@GwtCompatible
 public abstract class IteratorTester<E> extends AbstractIteratorTester<E, Iterator<E>> {
   /**
    * Creates an IteratorTester.
diff --git a/guava-testlib/src/com/google/common/collect/testing/ListIteratorTester.java b/guava-testlib/src/com/google/common/collect/testing/ListIteratorTester.java
index 126eb86..9f1e7b3 100644
--- a/guava-testlib/src/com/google/common/collect/testing/ListIteratorTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/ListIteratorTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.ListIterator;
@@ -34,7 +33,6 @@ import java.util.ListIterator;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 public abstract class ListIteratorTester<E> extends AbstractIteratorTester<E, ListIterator<E>> {
   protected ListIteratorTester(
       int steps,
diff --git a/guava-testlib/src/com/google/common/collect/testing/ListTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/ListTestSuiteBuilder.java
index 492a50c..365448b 100644
--- a/guava-testlib/src/com/google/common/collect/testing/ListTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/ListTestSuiteBuilder.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.KNOWN
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.collect.testing.testers.CollectionSerializationEqualTester;
@@ -57,7 +56,6 @@ import junit.framework.TestSuite;
  *
  * @author George van den Driessche
  */
-@GwtIncompatible
 public final class ListTestSuiteBuilder<E>
     extends AbstractCollectionTestSuiteBuilder<ListTestSuiteBuilder<E>, E> {
   public static <E> ListTestSuiteBuilder<E> using(TestListGenerator<E> generator) {
diff --git a/guava-testlib/src/com/google/common/collect/testing/MapInterfaceTest.java b/guava-testlib/src/com/google/common/collect/testing/MapInterfaceTest.java
index b8b5c28..47b2e6a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/MapInterfaceTest.java
+++ b/guava-testlib/src/com/google/common/collect/testing/MapInterfaceTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static java.util.Collections.singleton;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -41,7 +40,6 @@ import junit.framework.TestCase;
 // TODO: Add another constructor parameter indicating whether the class under test is ordered, and
 // check the order if so.
 // TODO: Refactor to share code with SetTestBuilder etc.
-@GwtCompatible
 public abstract class MapInterfaceTest<K, V> extends TestCase {
 
   /** A key type that is not assignable to any classes but Object. */
diff --git a/guava-testlib/src/com/google/common/collect/testing/MapTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/MapTestSuiteBuilder.java
index d1ce341..ca5c4b1 100644
--- a/guava-testlib/src/com/google/common/collect/testing/MapTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/MapTestSuiteBuilder.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static com.google.common.collect.testing.DerivedCollectionGenerators.keySetGenerator;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedCollectionGenerators.MapEntrySetGenerator;
 import com.google.common.collect.testing.DerivedCollectionGenerators.MapValueCollectionGenerator;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -65,7 +64,6 @@ import junit.framework.TestSuite;
  *
  * @author George van den Driessche
  */
-@GwtIncompatible
 public class MapTestSuiteBuilder<K, V>
     extends PerCollectionSizeTestSuiteBuilder<
         MapTestSuiteBuilder<K, V>, TestMapGenerator<K, V>, Map<K, V>, Entry<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/MinimalCollection.java b/guava-testlib/src/com/google/common/collect/testing/MinimalCollection.java
index a6ec93d..1f92d82 100644
--- a/guava-testlib/src/com/google/common/collect/testing/MinimalCollection.java
+++ b/guava-testlib/src/com/google/common/collect/testing/MinimalCollection.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.AbstractCollection;
 import java.util.Arrays;
 import java.util.Collection;
@@ -28,7 +27,6 @@ import java.util.Iterator;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class MinimalCollection<E> extends AbstractCollection<E> {
   // TODO: expose allow nulls parameter?
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/MinimalIterable.java b/guava-testlib/src/com/google/common/collect/testing/MinimalIterable.java
index c151c15..61a18b4 100644
--- a/guava-testlib/src/com/google/common/collect/testing/MinimalIterable.java
+++ b/guava-testlib/src/com/google/common/collect/testing/MinimalIterable.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
@@ -46,7 +45,6 @@ import java.util.Iterator;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public final class MinimalIterable<E> implements Iterable<E> {
   /** Returns an iterable whose iterator returns the given elements in order. */
   public static <E> MinimalIterable<E> of(E... elements) {
diff --git a/guava-testlib/src/com/google/common/collect/testing/MinimalSet.java b/guava-testlib/src/com/google/common/collect/testing/MinimalSet.java
index 988dd3f..1307170 100644
--- a/guava-testlib/src/com/google/common/collect/testing/MinimalSet.java
+++ b/guava-testlib/src/com/google/common/collect/testing/MinimalSet.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -30,7 +29,6 @@ import java.util.Set;
  *
  * @author Regina O'Dell
  */
-@GwtCompatible
 public class MinimalSet<E> extends MinimalCollection<E> implements Set<E> {
 
   @SuppressWarnings("unchecked") // empty Object[] as E[]
diff --git a/guava-testlib/src/com/google/common/collect/testing/NavigableMapTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/NavigableMapTestSuiteBuilder.java
index 77a1984..368b0af 100644
--- a/guava-testlib/src/com/google/common/collect/testing/NavigableMapTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/NavigableMapTestSuiteBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static com.google.common.collect.testing.Helpers.castOrCopyToList;
 import static java.util.Collections.reverse;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedCollectionGenerators.Bound;
 import com.google.common.collect.testing.DerivedCollectionGenerators.ForwardingTestMapGenerator;
 import com.google.common.collect.testing.DerivedCollectionGenerators.SortedMapSubmapTestMapGenerator;
@@ -37,7 +36,6 @@ import junit.framework.TestSuite;
  * Creates, based on your criteria, a JUnit test suite that exhaustively tests a NavigableMap
  * implementation.
  */
-@GwtIncompatible
 public class NavigableMapTestSuiteBuilder<K, V> extends SortedMapTestSuiteBuilder<K, V> {
   public static <K, V> NavigableMapTestSuiteBuilder<K, V> using(
       TestSortedMapGenerator<K, V> generator) {
diff --git a/guava-testlib/src/com/google/common/collect/testing/NavigableSetTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/NavigableSetTestSuiteBuilder.java
index 38eb56e..962ceae 100644
--- a/guava-testlib/src/com/google/common/collect/testing/NavigableSetTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/NavigableSetTestSuiteBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static com.google.common.collect.testing.features.CollectionFeature.DESCENDING_VIEW;
 import static com.google.common.collect.testing.features.CollectionFeature.SUBSET_VIEW;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedCollectionGenerators.Bound;
 import com.google.common.collect.testing.DerivedCollectionGenerators.SortedSetSubsetTestSetGenerator;
 import com.google.common.collect.testing.features.Feature;
@@ -37,7 +36,6 @@ import junit.framework.TestSuite;
  * Creates, based on your criteria, a JUnit test suite that exhaustively tests a NavigableSet
  * implementation.
  */
-@GwtIncompatible
 public final class NavigableSetTestSuiteBuilder<E> extends SortedSetTestSuiteBuilder<E> {
   public static <E> NavigableSetTestSuiteBuilder<E> using(TestSortedSetGenerator<E> generator) {
     NavigableSetTestSuiteBuilder<E> builder = new NavigableSetTestSuiteBuilder<E>();
diff --git a/guava-testlib/src/com/google/common/collect/testing/OneSizeGenerator.java b/guava-testlib/src/com/google/common/collect/testing/OneSizeGenerator.java
index 1b8924c..62b2af8 100644
--- a/guava-testlib/src/com/google/common/collect/testing/OneSizeGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/OneSizeGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -28,7 +27,6 @@ import java.util.List;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public final class OneSizeGenerator<T, E> implements OneSizeTestContainerGenerator<T, E> {
   private final TestContainerGenerator<T, E> generator;
   private final CollectionSize collectionSize;
diff --git a/guava-testlib/src/com/google/common/collect/testing/OneSizeTestContainerGenerator.java b/guava-testlib/src/com/google/common/collect/testing/OneSizeTestContainerGenerator.java
index 7e727cd..a74e040 100644
--- a/guava-testlib/src/com/google/common/collect/testing/OneSizeTestContainerGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/OneSizeTestContainerGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.Collection;
 
@@ -30,7 +29,6 @@ import java.util.Collection;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface OneSizeTestContainerGenerator<T, E>
     extends TestSubjectGenerator<T>, TestContainerGenerator<T, E> {
   TestContainerGenerator<T, E> getInnerGenerator();
diff --git a/guava-testlib/src/com/google/common/collect/testing/PerCollectionSizeTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/PerCollectionSizeTestSuiteBuilder.java
index c0068b4..2aa0a08 100644
--- a/guava-testlib/src/com/google/common/collect/testing/PerCollectionSizeTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/PerCollectionSizeTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.collect.testing.features.FeatureUtil;
@@ -41,7 +40,6 @@ import junit.framework.TestSuite;
  * @see FeatureSpecificTestSuiteBuilder
  * @author George van den Driessche
  */
-@GwtIncompatible
 public abstract class PerCollectionSizeTestSuiteBuilder<
         B extends PerCollectionSizeTestSuiteBuilder<B, G, T, E>,
         G extends TestContainerGenerator<T, E>,
diff --git a/guava-testlib/src/com/google/common/collect/testing/Platform.java b/guava-testlib/src/com/google/common/collect/testing/Platform.java
index a2c020c..614562a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/Platform.java
+++ b/guava-testlib/src/com/google/common/collect/testing/Platform.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Locale;
 
 /**
@@ -26,7 +25,6 @@ import java.util.Locale;
  *
  * @author Hayward Chan
  */
-@GwtCompatible
 final class Platform {
   static <T> T[] clone(T[] array) {
     return array.clone();
diff --git a/guava-testlib/src/com/google/common/collect/testing/QueueTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/QueueTestSuiteBuilder.java
index ac62d44..147376c 100644
--- a/guava-testlib/src/com/google/common/collect/testing/QueueTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/QueueTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.testers.QueueElementTester;
 import com.google.common.collect.testing.testers.QueueOfferTester;
 import com.google.common.collect.testing.testers.QueuePeekTester;
@@ -31,7 +30,6 @@ import java.util.List;
  *
  * @author Jared Levy
  */
-@GwtIncompatible
 public final class QueueTestSuiteBuilder<E>
     extends AbstractCollectionTestSuiteBuilder<QueueTestSuiteBuilder<E>, E> {
   public static <E> QueueTestSuiteBuilder<E> using(TestQueueGenerator<E> generator) {
diff --git a/guava-testlib/src/com/google/common/collect/testing/ReserializingTestCollectionGenerator.java b/guava-testlib/src/com/google/common/collect/testing/ReserializingTestCollectionGenerator.java
index 28d6f79..4e72af0 100644
--- a/guava-testlib/src/com/google/common/collect/testing/ReserializingTestCollectionGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/ReserializingTestCollectionGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -32,7 +31,6 @@ import java.util.List;
  *
  * @author Jesse Wilson
  */
-@GwtIncompatible
 public class ReserializingTestCollectionGenerator<E> implements TestCollectionGenerator<E> {
   private final TestCollectionGenerator<E> delegate;
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/ReserializingTestSetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/ReserializingTestSetGenerator.java
index c92a3ff..38c10f2 100644
--- a/guava-testlib/src/com/google/common/collect/testing/ReserializingTestSetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/ReserializingTestSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Set;
 
 /**
@@ -26,7 +25,6 @@ import java.util.Set;
  *
  * @author Jesse Wilson
  */
-@GwtIncompatible
 public class ReserializingTestSetGenerator<E> extends ReserializingTestCollectionGenerator<E>
     implements TestSetGenerator<E> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/SafeTreeMap.java b/guava-testlib/src/com/google/common/collect/testing/SafeTreeMap.java
index 5856e3b..17da137 100644
--- a/guava-testlib/src/com/google/common/collect/testing/SafeTreeMap.java
+++ b/guava-testlib/src/com/google/common/collect/testing/SafeTreeMap.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.AbstractSet;
 import java.util.Collection;
@@ -35,7 +34,6 @@ import java.util.TreeMap;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public final class SafeTreeMap<K, V> implements Serializable, NavigableMap<K, V> {
   @SuppressWarnings("unchecked")
   private static final Comparator<Object> NATURAL_ORDER =
diff --git a/guava-testlib/src/com/google/common/collect/testing/SafeTreeSet.java b/guava-testlib/src/com/google/common/collect/testing/SafeTreeSet.java
index 8ed4810..715d9af 100644
--- a/guava-testlib/src/com/google/common/collect/testing/SafeTreeSet.java
+++ b/guava-testlib/src/com/google/common/collect/testing/SafeTreeSet.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.Comparator;
@@ -31,7 +30,6 @@ import java.util.TreeSet;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public final class SafeTreeSet<E> implements Serializable, NavigableSet<E> {
   @SuppressWarnings("unchecked")
   private static final Comparator<Object> NATURAL_ORDER =
diff --git a/guava-testlib/src/com/google/common/collect/testing/SampleElements.java b/guava-testlib/src/com/google/common/collect/testing/SampleElements.java
index 400107d..73a6003 100644
--- a/guava-testlib/src/com/google/common/collect/testing/SampleElements.java
+++ b/guava-testlib/src/com/google/common/collect/testing/SampleElements.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
@@ -27,7 +26,6 @@ import java.util.Map.Entry;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class SampleElements<E> implements Iterable<E> {
   // TODO: rename e3, e4 => missing1, missing2
   private final E e0;
diff --git a/guava-testlib/src/com/google/common/collect/testing/SetTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/SetTestSuiteBuilder.java
index 4ac51a4..9979cff 100644
--- a/guava-testlib/src/com/google/common/collect/testing/SetTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/SetTestSuiteBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.collect.testing.testers.CollectionSerializationEqualTester;
 import com.google.common.collect.testing.testers.SetAddAllTester;
@@ -41,7 +40,6 @@ import junit.framework.TestSuite;
  *
  * @author George van den Driessche
  */
-@GwtIncompatible
 public class SetTestSuiteBuilder<E>
     extends AbstractCollectionTestSuiteBuilder<SetTestSuiteBuilder<E>, E> {
   public static <E> SetTestSuiteBuilder<E> using(TestSetGenerator<E> generator) {
diff --git a/guava-testlib/src/com/google/common/collect/testing/SortedMapInterfaceTest.java b/guava-testlib/src/com/google/common/collect/testing/SortedMapInterfaceTest.java
index 829c4cc..cec44bf 100644
--- a/guava-testlib/src/com/google/common/collect/testing/SortedMapInterfaceTest.java
+++ b/guava-testlib/src/com/google/common/collect/testing/SortedMapInterfaceTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 import java.util.Map.Entry;
 import java.util.SortedMap;
@@ -28,7 +27,6 @@ import java.util.SortedMap;
  * @author Jared Levy
  */
 // TODO: Use this class to test classes besides ImmutableSortedMap.
-@GwtCompatible
 public abstract class SortedMapInterfaceTest<K, V> extends MapInterfaceTest<K, V> {
 
   protected SortedMapInterfaceTest(
diff --git a/guava-testlib/src/com/google/common/collect/testing/SortedMapTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/SortedMapTestSuiteBuilder.java
index aa1d6d5..6d564d6 100644
--- a/guava-testlib/src/com/google/common/collect/testing/SortedMapTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/SortedMapTestSuiteBuilder.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static com.google.common.collect.testing.features.CollectionFeature.KNOWN_ORDER;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedCollectionGenerators.Bound;
 import com.google.common.collect.testing.DerivedCollectionGenerators.SortedMapSubmapTestMapGenerator;
 import com.google.common.collect.testing.features.Feature;
@@ -35,7 +34,6 @@ import junit.framework.TestSuite;
  * Creates, based on your criteria, a JUnit test suite that exhaustively tests a SortedMap
  * implementation.
  */
-@GwtIncompatible
 public class SortedMapTestSuiteBuilder<K, V> extends MapTestSuiteBuilder<K, V> {
   public static <K, V> SortedMapTestSuiteBuilder<K, V> using(
       TestSortedMapGenerator<K, V> generator) {
diff --git a/guava-testlib/src/com/google/common/collect/testing/SortedSetTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/SortedSetTestSuiteBuilder.java
index 5092661..d8efa1c 100644
--- a/guava-testlib/src/com/google/common/collect/testing/SortedSetTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/SortedSetTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedCollectionGenerators.Bound;
 import com.google.common.collect.testing.DerivedCollectionGenerators.SortedSetSubsetTestSetGenerator;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -31,7 +30,6 @@ import junit.framework.TestSuite;
  * Creates, based on your criteria, a JUnit test suite that exhaustively tests a SortedSet
  * implementation.
  */
-@GwtIncompatible
 public class SortedSetTestSuiteBuilder<E> extends SetTestSuiteBuilder<E> {
   public static <E> SortedSetTestSuiteBuilder<E> using(TestSortedSetGenerator<E> generator) {
     SortedSetTestSuiteBuilder<E> builder = new SortedSetTestSuiteBuilder<E>();
diff --git a/guava-testlib/src/com/google/common/collect/testing/SpliteratorTester.java b/guava-testlib/src/com/google/common/collect/testing/SpliteratorTester.java
index 08c771e..a2c5a8c 100644
--- a/guava-testlib/src/com/google/common/collect/testing/SpliteratorTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/SpliteratorTester.java
@@ -25,8 +25,6 @@ import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
 import static junit.framework.Assert.fail;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Ordering;
 import com.google.common.primitives.Ints;
 import java.util.ArrayList;
@@ -38,10 +36,8 @@ import java.util.Spliterator;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Supplier;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Tester for {@code Spliterator} implementations. */
-@GwtCompatible
 public final class SpliteratorTester<E> {
   /** Return type from "contains the following elements" assertions. */
   public interface Ordered {
@@ -199,7 +195,7 @@ public final class SpliteratorTester<E> {
     abstract <E> void forEach(GeneralSpliterator<E> spliterator, Consumer<? super E> consumer);
   }
 
-  private static <E> @Nullable GeneralSpliterator<E> trySplitTestingSize(
+  private static <E> GeneralSpliterator<E> trySplitTestingSize(
       GeneralSpliterator<E> spliterator) {
     boolean subsized = spliterator.hasCharacteristics(Spliterator.SUBSIZED);
     long originalSize = spliterator.estimateSize();
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestCharacterListGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestCharacterListGenerator.java
index b7542b5..2ccb8fe 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestCharacterListGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestCharacterListGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Chars;
 import java.util.List;
 
@@ -26,7 +25,6 @@ import java.util.List;
  * @author Kevin Bourrillion
  * @author Louis Wasserman
  */
-@GwtCompatible
 public abstract class TestCharacterListGenerator implements TestListGenerator<Character> {
   @Override
   public SampleElements<Character> samples() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestCollectionGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestCollectionGenerator.java
index f1df8c9..c91b30f 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestCollectionGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestCollectionGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 
 /**
@@ -24,5 +23,4 @@ import java.util.Collection;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public interface TestCollectionGenerator<E> extends TestContainerGenerator<Collection<E>, E> {}
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestCollidingSetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestCollidingSetGenerator.java
index 6aa0c33..8f46c09 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestCollidingSetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestCollidingSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Colliders;
 import java.util.List;
 
@@ -25,7 +24,6 @@ import java.util.List;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public abstract class TestCollidingSetGenerator implements TestSetGenerator<Object> {
   @Override
   public SampleElements<Object> samples() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestContainerGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestContainerGenerator.java
index d08cf90..c3a7e13 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestContainerGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestContainerGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -28,7 +27,6 @@ import java.util.Map;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface TestContainerGenerator<T, E> {
   /** Returns the sample elements that this generate populates its container with. */
   SampleElements<E> samples();
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestEnumMapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestEnumMapGenerator.java
index c117fcd..5bd0588 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestEnumMapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestEnumMapGenerator.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static com.google.common.collect.testing.Helpers.orderEntriesByKey;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -28,7 +27,6 @@ import java.util.Map.Entry;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public abstract class TestEnumMapGenerator implements TestMapGenerator<AnEnum, String> {
 
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestEnumSetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestEnumSetGenerator.java
index 88391ef..889a086 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestEnumSetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestEnumSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Enums;
 import java.util.Collections;
 import java.util.List;
@@ -27,7 +26,6 @@ import java.util.Set;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public abstract class TestEnumSetGenerator implements TestSetGenerator<AnEnum> {
   @Override
   public SampleElements<AnEnum> samples() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestIntegerSetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestIntegerSetGenerator.java
index 9cd9ecb..65643f6 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestIntegerSetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestIntegerSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Ints;
 import java.util.List;
 import java.util.Set;
@@ -26,7 +25,6 @@ import java.util.Set;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 public abstract class TestIntegerSetGenerator implements TestSetGenerator<Integer> {
   @Override
   public SampleElements<Integer> samples() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestIntegerSortedSetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestIntegerSortedSetGenerator.java
index babac37..b9d664a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestIntegerSortedSetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestIntegerSortedSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.List;
 import java.util.SortedSet;
@@ -27,7 +26,6 @@ import java.util.SortedSet;
  * @author Chris Povirk
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestIntegerSortedSetGenerator extends TestIntegerSetGenerator {
   @Override
   protected abstract SortedSet<Integer> create(Integer[] elements);
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestIteratorGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestIteratorGenerator.java
index 8e06bbe..1f05c5a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestIteratorGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestIteratorGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 
 /**
@@ -25,7 +24,6 @@ import java.util.Iterator;
  * @param <E> the element type of the iterator.
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface TestIteratorGenerator<E> {
   Iterator<E> get();
 }
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestListGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestListGenerator.java
index 99f95d0..53d74e3 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestListGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestListGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.List;
 
 /**
@@ -24,7 +23,6 @@ import java.util.List;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public interface TestListGenerator<E> extends TestCollectionGenerator<E> {
   @Override
   List<E> create(Object... elements);
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestMapEntrySetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestMapEntrySetGenerator.java
index 0c298cc..841130b 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestMapEntrySetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestMapEntrySetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -27,7 +26,6 @@ import java.util.Set;
  *
  * @author Jesse Wilson
  */
-@GwtCompatible
 public abstract class TestMapEntrySetGenerator<K, V> implements TestSetGenerator<Map.Entry<K, V>> {
   private final SampleElements<K> keys;
   private final SampleElements<V> values;
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestMapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestMapGenerator.java
index 2267a04..5ffc4dd 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestMapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestMapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Map;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface TestMapGenerator<K, V> extends TestContainerGenerator<Map<K, V>, Map.Entry<K, V>> {
   K[] createKeyArray(int length);
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestQueueGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestQueueGenerator.java
index 939b485..d5f6c4c 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestQueueGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestQueueGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Queue;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Queue;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public interface TestQueueGenerator<E> extends TestCollectionGenerator<E> {
   @Override
   Queue<E> create(Object... elements);
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestSetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestSetGenerator.java
index 680ff44..12ab4d9 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestSetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Set;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Set;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public interface TestSetGenerator<E> extends TestCollectionGenerator<E> {
   @Override
   Set<E> create(Object... elements);
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestSortedMapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestSortedMapGenerator.java
index 5d90218..ab7515c 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestSortedMapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestSortedMapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map.Entry;
 import java.util.SortedMap;
 
@@ -25,7 +24,6 @@ import java.util.SortedMap;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestSortedMapGenerator<K, V> extends TestMapGenerator<K, V> {
   @Override
   SortedMap<K, V> create(Object... elements);
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestSortedSetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestSortedSetGenerator.java
index 8f7ee5c..19c622b 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestSortedSetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestSortedSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.SortedSet;
 
 /**
@@ -24,7 +23,6 @@ import java.util.SortedSet;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestSortedSetGenerator<E> extends TestSetGenerator<E> {
   @Override
   SortedSet<E> create(Object... elements);
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestStringCollectionGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestStringCollectionGenerator.java
index f9c58cd..f4e7d4f 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestStringCollectionGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestStringCollectionGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Strings;
 import java.util.Collection;
 import java.util.List;
@@ -26,7 +25,6 @@ import java.util.List;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestStringCollectionGenerator implements TestCollectionGenerator<String> {
   @Override
   public SampleElements<String> samples() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestStringListGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestStringListGenerator.java
index 7e22ab1..4047c70 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestStringListGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestStringListGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Strings;
 import java.util.List;
 
@@ -25,7 +24,6 @@ import java.util.List;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public abstract class TestStringListGenerator implements TestListGenerator<String> {
   @Override
   public SampleElements<String> samples() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestStringMapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestStringMapGenerator.java
index 3449d3a..aef51bc 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestStringMapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestStringMapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -28,7 +27,6 @@ import java.util.Map.Entry;
  * @author Jared Levy
  * @author George van den Driessche
  */
-@GwtCompatible
 public abstract class TestStringMapGenerator implements TestMapGenerator<String, String> {
 
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestStringQueueGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestStringQueueGenerator.java
index 16cb253..ba7ca2f 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestStringQueueGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestStringQueueGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Strings;
 import java.util.List;
 import java.util.Queue;
@@ -26,7 +25,6 @@ import java.util.Queue;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestStringQueueGenerator implements TestQueueGenerator<String> {
   @Override
   public SampleElements<String> samples() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestStringSetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestStringSetGenerator.java
index 1724bb2..5a8cc04 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestStringSetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestStringSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Strings;
 import java.util.List;
 import java.util.Set;
@@ -26,7 +25,6 @@ import java.util.Set;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public abstract class TestStringSetGenerator implements TestSetGenerator<String> {
   @Override
   public SampleElements<String> samples() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestStringSortedMapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestStringSortedMapGenerator.java
index c1878be..fde5f8a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestStringSortedMapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestStringSortedMapGenerator.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static com.google.common.collect.testing.Helpers.orderEntriesByKey;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.SortedMap;
@@ -28,7 +27,6 @@ import java.util.SortedMap;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 public abstract class TestStringSortedMapGenerator extends TestStringMapGenerator
     implements TestSortedMapGenerator<String, String> {
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestStringSortedSetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestStringSortedSetGenerator.java
index 7f5453d..6941741 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestStringSortedSetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestStringSortedSetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.List;
 import java.util.SortedSet;
@@ -26,7 +25,6 @@ import java.util.SortedSet;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestStringSortedSetGenerator extends TestStringSetGenerator
     implements TestSortedSetGenerator<String> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestSubjectGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestSubjectGenerator.java
index 4a8ae76..df4e879 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestSubjectGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestSubjectGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * To be implemented by test generators that can produce test subjects without requiring any
@@ -25,7 +24,6 @@ import com.google.common.annotations.GwtCompatible;
  * @param <T> the type created by this generator.
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface TestSubjectGenerator<T> {
   T createTestSubject();
 }
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestUnhashableCollectionGenerator.java b/guava-testlib/src/com/google/common/collect/testing/TestUnhashableCollectionGenerator.java
index 9b4602d..b80b793 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestUnhashableCollectionGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestUnhashableCollectionGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.SampleElements.Unhashables;
 import java.util.Collection;
 import java.util.List;
@@ -26,7 +25,6 @@ import java.util.List;
  *
  * @author Regina O'Dell
  */
-@GwtCompatible
 public abstract class TestUnhashableCollectionGenerator<T extends Collection<UnhashableObject>>
     implements TestCollectionGenerator<UnhashableObject> {
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestsForListsInJavaUtil.java b/guava-testlib/src/com/google/common/collect/testing/TestsForListsInJavaUtil.java
index e8eae2c..b31d4d1 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestsForListsInJavaUtil.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestsForListsInJavaUtil.java
@@ -16,15 +16,12 @@
 
 package com.google.common.collect.testing;
 
-import static com.google.common.collect.testing.testers.CollectionSpliteratorTester.getSpliteratorNotImmutableCollectionAllowsAddMethod;
-import static com.google.common.collect.testing.testers.CollectionSpliteratorTester.getSpliteratorNotImmutableCollectionAllowsRemoveMethod;
 import static com.google.common.collect.testing.testers.ListListIteratorTester.getListIteratorFullyModifiableMethod;
 import static com.google.common.collect.testing.testers.ListSubListTester.getSubListOriginalListSetAffectsSubListLargeListMethod;
 import static com.google.common.collect.testing.testers.ListSubListTester.getSubListOriginalListSetAffectsSubListMethod;
 import static com.google.common.collect.testing.testers.ListSubListTester.getSubListSubListRemoveAffectsOriginalLargeListMethod;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.ListFeature;
@@ -49,7 +46,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtIncompatible
 public class TestsForListsInJavaUtil {
   public static Test suite() {
     return new TestsForListsInJavaUtil().allTests();
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestsForMapsInJavaUtil.java b/guava-testlib/src/com/google/common/collect/testing/TestsForMapsInJavaUtil.java
index fed059c..a412783 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestsForMapsInJavaUtil.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestsForMapsInJavaUtil.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -48,7 +47,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtIncompatible
 public class TestsForMapsInJavaUtil {
 
   public static Test suite() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestsForQueuesInJavaUtil.java b/guava-testlib/src/com/google/common/collect/testing/TestsForQueuesInJavaUtil.java
index 1a9870d..2f49d9c 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestsForQueuesInJavaUtil.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestsForQueuesInJavaUtil.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.lang.reflect.Method;
@@ -41,7 +40,6 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtIncompatible
 public class TestsForQueuesInJavaUtil {
   public static Test suite() {
     return new TestsForQueuesInJavaUtil().allTests();
diff --git a/guava-testlib/src/com/google/common/collect/testing/TestsForSetsInJavaUtil.java b/guava-testlib/src/com/google/common/collect/testing/TestsForSetsInJavaUtil.java
index 0141d8d..c424538 100644
--- a/guava-testlib/src/com/google/common/collect/testing/TestsForSetsInJavaUtil.java
+++ b/guava-testlib/src/com/google/common/collect/testing/TestsForSetsInJavaUtil.java
@@ -16,11 +16,8 @@
 
 package com.google.common.collect.testing;
 
-import static com.google.common.collect.testing.testers.CollectionSpliteratorTester.getSpliteratorNotImmutableCollectionAllowsAddMethod;
-import static com.google.common.collect.testing.testers.CollectionSpliteratorTester.getSpliteratorNotImmutableCollectionAllowsRemoveMethod;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.SetFeature;
@@ -49,7 +46,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtIncompatible
 public class TestsForSetsInJavaUtil {
   public static Test suite() {
     return new TestsForSetsInJavaUtil().allTests();
diff --git a/guava-testlib/src/com/google/common/collect/testing/UnhashableObject.java b/guava-testlib/src/com/google/common/collect/testing/UnhashableObject.java
index 69d263b..19ed4da 100644
--- a/guava-testlib/src/com/google/common/collect/testing/UnhashableObject.java
+++ b/guava-testlib/src/com/google/common/collect/testing/UnhashableObject.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * An unhashable object to be used in testing as values in our collections.
  *
  * @author Regina O'Dell
  */
-@GwtCompatible
 public class UnhashableObject implements Comparable<UnhashableObject> {
   private final int value;
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/WrongType.java b/guava-testlib/src/com/google/common/collect/testing/WrongType.java
index 65a523c..1a0aa72 100644
--- a/guava-testlib/src/com/google/common/collect/testing/WrongType.java
+++ b/guava-testlib/src/com/google/common/collect/testing/WrongType.java
@@ -16,13 +16,11 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A type which will never be used as the element type of any collection in our tests, and so can be
  * used to test how a Collection behaves when given input of the wrong type.
  */
-@GwtCompatible
 public enum WrongType {
   VALUE
 }
diff --git a/guava-testlib/src/com/google/common/collect/testing/features/CollectionFeature.java b/guava-testlib/src/com/google/common/collect/testing/features/CollectionFeature.java
index 0f0a123..0c1f7be 100644
--- a/guava-testlib/src/com/google/common/collect/testing/features/CollectionFeature.java
+++ b/guava-testlib/src/com/google/common/collect/testing/features/CollectionFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
@@ -33,7 +32,6 @@ import java.util.SortedSet;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum CollectionFeature implements Feature<Collection> {
   /**
    * The collection must not throw {@code NullPointerException} on calls such as {@code
diff --git a/guava-testlib/src/com/google/common/collect/testing/features/CollectionSize.java b/guava-testlib/src/com/google/common/collect/testing/features/CollectionSize.java
index 6203e51..c80f12e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/features/CollectionSize.java
+++ b/guava-testlib/src/com/google/common/collect/testing/features/CollectionSize.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
@@ -43,7 +42,6 @@ import java.util.Set;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum CollectionSize implements Feature<Collection>, Comparable<CollectionSize> {
   /** Test an empty collection. */
   ZERO(0),
diff --git a/guava-testlib/src/com/google/common/collect/testing/features/ConflictingRequirementsException.java b/guava-testlib/src/com/google/common/collect/testing/features/ConflictingRequirementsException.java
index 9096a11..89a6bf7 100644
--- a/guava-testlib/src/com/google/common/collect/testing/features/ConflictingRequirementsException.java
+++ b/guava-testlib/src/com/google/common/collect/testing/features/ConflictingRequirementsException.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Set;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Set;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public class ConflictingRequirementsException extends Exception {
   private Set<Feature<?>> conflicts;
   private Object source;
diff --git a/guava-testlib/src/com/google/common/collect/testing/features/Feature.java b/guava-testlib/src/com/google/common/collect/testing/features/Feature.java
index 9b15a6b..d661489 100644
--- a/guava-testlib/src/com/google/common/collect/testing/features/Feature.java
+++ b/guava-testlib/src/com/google/common/collect/testing/features/Feature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Set;
 
 /**
@@ -25,7 +24,6 @@ import java.util.Set;
  * @param <T> The interface whose features are to be enumerated.
  * @author George van den Driessche
  */
-@GwtCompatible
 public interface Feature<T> {
   /** Returns the set of features that are implied by this feature. */
   Set<Feature<? super T>> getImpliedFeatures();
diff --git a/guava-testlib/src/com/google/common/collect/testing/features/FeatureUtil.java b/guava-testlib/src/com/google/common/collect/testing/features/FeatureUtil.java
index 95cbc0b..bce9421 100644
--- a/guava-testlib/src/com/google/common/collect/testing/features/FeatureUtil.java
+++ b/guava-testlib/src/com/google/common/collect/testing/features/FeatureUtil.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.AnnotatedElement;
@@ -37,7 +36,6 @@ import java.util.Set;
  *
  * @author George van den Driessche
  */
-@GwtIncompatible
 public class FeatureUtil {
   /** A cache of annotated objects (typically a Class or Method) to its set of annotations. */
   private static Map<AnnotatedElement, List<Annotation>> annotationCache = new HashMap<>();
diff --git a/guava-testlib/src/com/google/common/collect/testing/features/ListFeature.java b/guava-testlib/src/com/google/common/collect/testing/features/ListFeature.java
index 1427efa..39f9e84 100644
--- a/guava-testlib/src/com/google/common/collect/testing/features/ListFeature.java
+++ b/guava-testlib/src/com/google/common/collect/testing/features/ListFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
@@ -31,7 +30,6 @@ import java.util.Set;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum ListFeature implements Feature<List> {
   SUPPORTS_SET,
   SUPPORTS_ADD_WITH_INDEX(CollectionFeature.SUPPORTS_ADD),
diff --git a/guava-testlib/src/com/google/common/collect/testing/features/MapFeature.java b/guava-testlib/src/com/google/common/collect/testing/features/MapFeature.java
index dff7b12..fc700d2 100644
--- a/guava-testlib/src/com/google/common/collect/testing/features/MapFeature.java
+++ b/guava-testlib/src/com/google/common/collect/testing/features/MapFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
@@ -31,7 +30,6 @@ import java.util.Set;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum MapFeature implements Feature<Map> {
   /**
    * The map does not throw {@code NullPointerException} on calls such as {@code containsKey(null)},
diff --git a/guava-testlib/src/com/google/common/collect/testing/features/SetFeature.java b/guava-testlib/src/com/google/common/collect/testing/features/SetFeature.java
index 7b5dcd9..0f5dfec 100644
--- a/guava-testlib/src/com/google/common/collect/testing/features/SetFeature.java
+++ b/guava-testlib/src/com/google/common/collect/testing/features/SetFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
@@ -30,7 +29,6 @@ import java.util.Set;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum SetFeature implements Feature<Set> {
   GENERAL_PURPOSE(CollectionFeature.GENERAL_PURPOSE);
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/features/TesterAnnotation.java b/guava-testlib/src/com/google/common/collect/testing/features/TesterAnnotation.java
index 1831e41..fc9d407 100644
--- a/guava-testlib/src/com/google/common/collect/testing/features/TesterAnnotation.java
+++ b/guava-testlib/src/com/google/common/collect/testing/features/TesterAnnotation.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -32,5 +31,4 @@ import java.lang.annotation.Target;
 @Target(value = {java.lang.annotation.ElementType.ANNOTATION_TYPE})
 @Retention(value = RetentionPolicy.RUNTIME)
 @Documented
-@GwtCompatible
 public @interface TesterAnnotation {}
diff --git a/guava-testlib/src/com/google/common/collect/testing/features/TesterRequirements.java b/guava-testlib/src/com/google/common/collect/testing/features/TesterRequirements.java
index 4780b1b..1171e53 100644
--- a/guava-testlib/src/com/google/common/collect/testing/features/TesterRequirements.java
+++ b/guava-testlib/src/com/google/common/collect/testing/features/TesterRequirements.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.features;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import java.util.Collections;
 import java.util.Set;
@@ -27,7 +26,6 @@ import java.util.Set;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public final class TesterRequirements {
   private final Set<Feature<?>> presentFeatures;
   private final Set<Feature<?>> absentFeatures;
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/AbstractBiMapTester.java b/guava-testlib/src/com/google/common/collect/testing/google/AbstractBiMapTester.java
index 85ddb44..038f584 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/AbstractBiMapTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/AbstractBiMapTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
@@ -27,7 +26,6 @@ import java.util.Map.Entry;
 import org.junit.Ignore;
 
 /** Skeleton for a tester of a {@code BiMap}. */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractBiMapTester<K, V> extends AbstractMapTester<K, V> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/AbstractListMultimapTester.java b/guava-testlib/src/com/google/common/collect/testing/google/AbstractListMultimapTester.java
index 7bce8b0..00f5b57 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/AbstractListMultimapTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/AbstractListMultimapTester.java
@@ -16,7 +16,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.Helpers.assertEqualInOrder;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import java.util.Arrays;
 import java.util.Collection;
@@ -27,7 +26,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class AbstractListMultimapTester<K, V>
     extends AbstractMultimapTester<K, V, ListMultimap<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultimapTester.java b/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultimapTester.java
index 7b7801d..10c5454 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultimapTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultimapTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.Helpers.assertEqualIgnoringOrder;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.AbstractContainerTester;
 import com.google.common.collect.testing.Helpers;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractMultimapTester<K, V, M extends Multimap<K, V>>
     extends AbstractContainerTester<M, Entry<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetSetCountTester.java b/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetSetCountTester.java
index a72fd9f..5ab6392 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetSetCountTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetSetCountTester.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Multiset.Entry;
 import com.google.common.collect.testing.Helpers;
@@ -46,7 +44,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractMultisetSetCountTester<E> extends AbstractMultisetTester<E> {
   /*
@@ -384,7 +381,7 @@ public abstract class AbstractMultisetSetCountTester<E> extends AbstractMultiset
    * Returns {@link Method} instances for the {@code setCount()} tests that assume multisets support
    * duplicates so that the test of {@code Multisets.forSet()} can suppress them.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getSetCountDuplicateInitializingMethods() {
     return Arrays.asList(
         getMethod("testSetCount_threeToThree_removeSupported"),
@@ -392,7 +389,7 @@ public abstract class AbstractMultisetSetCountTester<E> extends AbstractMultiset
         getMethod("testSetCount_threeToOne_supported"));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static Method getMethod(String methodName) {
     return Helpers.getMethod(AbstractMultisetSetCountTester.class, methodName);
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetTester.java b/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetTester.java
index 18ffcbc..f21673e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/AbstractMultisetTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import org.junit.Ignore;
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class AbstractMultisetTester<E> extends AbstractCollectionTester<E> {
   protected final Multiset<E> getMultiset() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/BiMapClearTester.java b/guava-testlib/src/com/google/common/collect/testing/google/BiMapClearTester.java
index 4319a85..4d31610 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/BiMapClearTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/BiMapClearTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.features.MapFeature;
 import org.junit.Ignore;
@@ -28,7 +27,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class BiMapClearTester<K, V> extends AbstractBiMapTester<K, V> {
   @MapFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/BiMapEntrySetTester.java b/guava-testlib/src/com/google/common/collect/testing/google/BiMapEntrySetTester.java
index 5c9a479..c17399e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/BiMapEntrySetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/BiMapEntrySetTester.java
@@ -21,14 +21,12 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.Map.Entry;
 import org.junit.Ignore;
 
 /** Tester for {@code BiMap.entrySet} and methods on the entries in the set. */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class BiMapEntrySetTester<K, V> extends AbstractBiMapTester<K, V> {
   @MapFeature.Require(SUPPORTS_PUT)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java b/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java
index 13efdcd..3de220e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/BiMapGenerators.java
@@ -16,9 +16,7 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
-import com.google.common.collect.ImmutableBiMap;
 import com.google.common.collect.Maps;
 import java.util.Arrays;
 import java.util.Map;
@@ -30,7 +28,6 @@ import java.util.Map.Entry;
  * @author Jared Levy
  * @author Hayward Chan
  */
-@GwtCompatible
 public class BiMapGenerators {
   public static class ImmutableBiMapGenerator extends TestStringBiMapGenerator {
     @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/BiMapInverseTester.java b/guava-testlib/src/com/google/common/collect/testing/google/BiMapInverseTester.java
index 984558e..bb85b8c 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/BiMapInverseTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/BiMapInverseTester.java
@@ -18,8 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -38,7 +36,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class BiMapInverseTester<K, V> extends AbstractBiMapTester<K, V> {
 
@@ -72,12 +69,12 @@ public class BiMapInverseTester<K, V> extends AbstractBiMapTester<K, V> {
    * Returns {@link Method} instances for the tests that assume that the inverse will be the same
    * after serialization.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getInverseSameAfterSerializingMethods() {
     return Collections.singletonList(getMethod("testInverseSerialization"));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static Method getMethod(String methodName) {
     return Helpers.getMethod(BiMapInverseTester.class, methodName);
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/BiMapPutTester.java b/guava-testlib/src/com/google/common/collect/testing/google/BiMapPutTester.java
index 4bb72a2..50e6951 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/BiMapPutTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/BiMapPutTester.java
@@ -23,14 +23,12 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
 import org.junit.Ignore;
 
 /** Tester for {@code BiMap.put} and {@code BiMap.forcePut}. */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class BiMapPutTester<K, V> extends AbstractBiMapTester<K, V> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/BiMapRemoveTester.java b/guava-testlib/src/com/google/common/collect/testing/google/BiMapRemoveTester.java
index e54256a..640106a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/BiMapRemoveTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/BiMapRemoveTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class BiMapRemoveTester<K, V> extends AbstractBiMapTester<K, V> {
   @SuppressWarnings("unchecked")
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/BiMapTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/google/BiMapTestSuiteBuilder.java
index 0821fb0..27dd547 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/BiMapTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/BiMapTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.AbstractTester;
 import com.google.common.collect.testing.FeatureSpecificTestSuiteBuilder;
@@ -45,7 +44,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class BiMapTestSuiteBuilder<K, V>
     extends PerCollectionSizeTestSuiteBuilder<
         BiMapTestSuiteBuilder<K, V>, TestBiMapGenerator<K, V>, BiMap<K, V>, Entry<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/DerivedGoogleCollectionGenerators.java b/guava-testlib/src/com/google/common/collect/testing/google/DerivedGoogleCollectionGenerators.java
index bbeefd2..a5dff16 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/DerivedGoogleCollectionGenerators.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/DerivedGoogleCollectionGenerators.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.DerivedGenerator;
 import com.google.common.collect.testing.Helpers;
@@ -38,7 +37,6 @@ import java.util.Set;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public final class DerivedGoogleCollectionGenerators {
   public static class MapGenerator<K, V> implements TestMapGenerator<K, V>, DerivedGenerator {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/GoogleHelpers.java b/guava-testlib/src/com/google/common/collect/testing/google/GoogleHelpers.java
index cf856fa..0c381e1 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/GoogleHelpers.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/GoogleHelpers.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static junit.framework.Assert.fail;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 
 /**
@@ -26,7 +25,6 @@ import com.google.common.collect.Multimap;
  *
  * @author Colin Decker
  */
-@GwtCompatible
 final class GoogleHelpers {
 
   private GoogleHelpers() {}
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/ListGenerators.java b/guava-testlib/src/com/google/common/collect/testing/google/ListGenerators.java
index 0839f09..23d7abf 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/ListGenerators.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/ListGenerators.java
@@ -18,8 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.testing.TestCharacterListGenerator;
 import com.google.common.collect.testing.TestListGenerator;
@@ -36,7 +34,6 @@ import java.util.List;
  *
  * @author Hayward Chan
  */
-@GwtCompatible
 public final class ListGenerators {
 
   private ListGenerators() {}
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapAsMapTester.java b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapAsMapTester.java
index ca6f21a..4899439 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapAsMapTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapAsMapTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  * @param <K> The key type of the tested multimap.
  * @param <V> The value type of the tested multimap.
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapAsMapTester<K, V> extends AbstractListMultimapTester<K, V> {
   public void testAsMapValuesImplementList() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapEqualsTester.java b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapEqualsTester.java
index 2a9b144..cb1772e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapEqualsTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapEqualsTester.java
@@ -16,7 +16,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -28,7 +27,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapEqualsTester<K, V> extends AbstractListMultimapTester<K, V> {
   @CollectionSize.Require(SEVERAL)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutAllTester.java b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutAllTester.java
index 2433616..9ac2496 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutAllTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.Helpers.copyToList;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.Arrays;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapPutAllTester<K, V> extends AbstractListMultimapTester<K, V> {
   @MapFeature.Require(SUPPORTS_PUT)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutTester.java b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutTester.java
index c459496..b4c8329 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapPutTester.java
@@ -18,7 +18,6 @@ import static com.google.common.collect.testing.Helpers.copyToList;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapPutTester<K, V> extends AbstractListMultimapTester<K, V> {
   // MultimapPutTester tests non-duplicate values, but ignores ordering
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapRemoveTester.java b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapRemoveTester.java
index 04ac0a2..65ea2bc 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapRemoveTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapRemoveTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.Helpers.mapEntry;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapRemoveTester<K, V> extends AbstractListMultimapTester<K, V> {
   @SuppressWarnings("unchecked")
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapReplaceValuesTester.java b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapReplaceValuesTester.java
index b070165..4311bf4 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapReplaceValuesTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapReplaceValuesTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.Arrays;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListMultimapReplaceValuesTester<K, V> extends AbstractListMultimapTester<K, V> {
   @MapFeature.Require({SUPPORTS_PUT, SUPPORTS_REMOVE})
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapTestSuiteBuilder.java
index b55c7d6..8a64032 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/ListMultimapTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.AbstractTester;
 import com.google.common.collect.testing.FeatureSpecificTestSuiteBuilder;
@@ -41,7 +40,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class ListMultimapTestSuiteBuilder<K, V>
     extends MultimapTestSuiteBuilder<K, V, ListMultimap<K, V>> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MapGenerators.java b/guava-testlib/src/com/google/common/collect/testing/google/MapGenerators.java
index bb84ea1..e7d10cf 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MapGenerators.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MapGenerators.java
@@ -18,9 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.Helpers.mapEntry;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
@@ -45,7 +42,6 @@ import java.util.Map.Entry;
  *
  * @author Hayward Chan
  */
-@GwtCompatible
 public class MapGenerators {
   public static class ImmutableMapGenerator extends TestStringMapGenerator {
     @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapGetTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapGetTester.java
index dadb9a3..cb3fecd 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapGetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapGetTester.java
@@ -25,7 +25,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapAsMapGetTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapTester.java
index 23b2351..1cc3194 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapAsMapTester.java
@@ -25,7 +25,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
@@ -45,7 +44,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapAsMapTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testAsMapGet() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapClearTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapClearTester.java
index 6ce9907..4a33a14 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapClearTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapClearTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 import static com.google.common.collect.testing.google.GoogleHelpers.assertEmpty;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapClearTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsEntryTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsEntryTester.java
index 9da7fe3..c3de01d 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsEntryTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsEntryTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapContainsEntryTester<K, V>
     extends AbstractMultimapTester<K, V, Multimap<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsKeyTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsKeyTester.java
index a7dcd66..b16605f 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsKeyTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsKeyTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapContainsKeyTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsValueTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsValueTester.java
index 00ca12a..5c8ce2d 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsValueTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapContainsValueTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapContainsValueTester<K, V>
     extends AbstractMultimapTester<K, V, Multimap<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapEntriesTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapEntriesTester.java
index 9874b88..e24ecdc 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapEntriesTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapEntriesTester.java
@@ -25,7 +25,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapEntriesTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testEntries() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapEqualsTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapEqualsTester.java
index 2116360..2ce7e04 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapEqualsTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapEqualsTester.java
@@ -18,7 +18,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapEqualsTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testEqualsTrue() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapFeature.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapFeature.java
index 8c1bdaa..5a33995 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapFeature.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.Feature;
@@ -33,7 +32,6 @@ import java.util.Set;
  */
 // Enum values use constructors with generic varargs.
 @SuppressWarnings("unchecked")
-@GwtCompatible
 public enum MultimapFeature implements Feature<Multimap> {
   VALUE_COLLECTIONS_SUPPORT_ITERATOR_REMOVE;
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapForEachTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapForEachTester.java
index bde3f9e..2da01a4 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapForEachTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapForEachTester.java
@@ -19,7 +19,6 @@ import static com.google.common.collect.testing.Helpers.assertEqualIgnoringOrder
 import static com.google.common.collect.testing.Helpers.mapEntry;
 import static com.google.common.collect.testing.features.CollectionFeature.KNOWN_ORDER;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionFeature;
 import java.util.ArrayList;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapForEachTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testForEach() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapGetTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapGetTester.java
index 6978473..f537b5b 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapGetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapGetTester.java
@@ -26,7 +26,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -40,7 +39,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapGetTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testGetEmpty() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeySetTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeySetTester.java
index 100b15b..7a2bff2 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeySetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeySetTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapKeySetTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testKeySet() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeysTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeysTester.java
index 6b2a93c..2237904 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeysTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapKeysTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Multisets;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapKeysTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @CollectionSize.Require(SEVERAL)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutAllMultimapTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutAllMultimapTester.java
index 9262293..da43112 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutAllMultimapTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutAllMultimapTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.MapFeature;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapPutAllMultimapTester<K, V>
     extends AbstractMultimapTester<K, V, Multimap<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutIterableTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutIterableTester.java
index b360378..d271012 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutIterableTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutIterableTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Multimap;
@@ -39,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapPutIterableTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutTester.java
index c108e85..4916b28 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapPutTester.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
@@ -42,7 +40,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapPutTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @MapFeature.Require(absent = SUPPORTS_PUT)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveAllTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveAllTester.java
index 185ba2c..6cf53a8 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveAllTester.java
@@ -25,7 +25,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 import static com.google.common.collect.testing.google.GoogleHelpers.assertEmpty;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapRemoveAllTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @MapFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveEntryTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveEntryTester.java
index 250a691..ba14126 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveEntryTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapRemoveEntryTester.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -41,7 +39,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapRemoveEntryTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @MapFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapReplaceValuesTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapReplaceValuesTester.java
index 3e2597d..247dc8b 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapReplaceValuesTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapReplaceValuesTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -40,7 +39,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapReplaceValuesTester<K, V>
     extends AbstractMultimapTester<K, V, Multimap<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapSizeTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapSizeTester.java
index 23d6bdf..ec341b6 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapSizeTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapSizeTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapSizeTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapTestSuiteBuilder.java
index af9d261..80d016d 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapTestSuiteBuilder.java
@@ -19,9 +19,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.collect.testing.Helpers.mapEntry;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMultimap;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.AbstractTester;
@@ -62,7 +59,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class MultimapTestSuiteBuilder<K, V, M extends Multimap<K, V>>
     extends PerCollectionSizeTestSuiteBuilder<
         MultimapTestSuiteBuilder<K, V, M>, TestMultimapGenerator<K, V, M>, M, Entry<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapToStringTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapToStringTester.java
index 203f278..c5c6a08 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapToStringTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapToStringTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapToStringTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   @CollectionSize.Require(ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultimapValuesTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultimapValuesTester.java
index ab7afce..e8728b5 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultimapValuesTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultimapValuesTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.KNOWN
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ITERATOR_REMOVE;
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultimapValuesTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
   public void testValues() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetAddTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetAddTester.java
index fa8874d..9074c4d 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetAddTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetAddTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import java.util.Arrays;
 import java.util.Collections;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetAddTester<E> extends AbstractMultisetTester<E> {
   @CollectionFeature.Require(absent = SUPPORTS_ADD)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetContainsTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetContainsTester.java
index bdbd090..f2b2fd3 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetContainsTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetContainsTester.java
@@ -16,7 +16,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.Arrays;
 import org.junit.Ignore;
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetContainsTester<E> extends AbstractMultisetTester<E> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetCountTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetCountTester.java
index 7c07cd3..c48acc1 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetCountTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetCountTester.java
@@ -21,8 +21,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -37,7 +35,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetCountTester<E> extends AbstractMultisetTester<E> {
 
@@ -86,7 +83,7 @@ public class MultisetCountTester<E> extends AbstractMultisetTester<E> {
    * Returns {@link Method} instances for the read tests that assume multisets support duplicates so
    * that the test of {@code Multisets.forSet()} can suppress them.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getCountDuplicateInitializingMethods() {
     return Arrays.asList(Helpers.getMethod(MultisetCountTester.class, "testCount_3"));
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetElementSetTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetElementSetTester.java
index baa6071..5084999 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetElementSetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetElementSetTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -39,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetElementSetTester<E> extends AbstractMultisetTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
@@ -99,7 +96,7 @@ public class MultisetElementSetTester<E> extends AbstractMultisetTester<E> {
    * Returns {@link Method} instances for the read tests that assume multisets support duplicates so
    * that the test of {@code Multisets.forSet()} can suppress them.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getElementSetDuplicateInitializingMethods() {
     return Arrays.asList(
         Helpers.getMethod(
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetEntrySetTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetEntrySetTester.java
index 3bec616..0e74c13 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetEntrySetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetEntrySetTester.java
@@ -24,7 +24,6 @@ import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.google.MultisetFeature.ENTRIES_ARE_VIEWS;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Multisets;
@@ -39,7 +38,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetEntrySetTester<E> extends AbstractMultisetTester<E> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetEqualsTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetEqualsTester.java
index 9d9fee0..76b7daf 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetEqualsTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetEqualsTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.testing.EqualsTester;
@@ -28,7 +27,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetEqualsTester<E> extends AbstractMultisetTester<E> {
   public void testEqualsSameContents() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetFeature.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetFeature.java
index d05c560..ce4e05f 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetFeature.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetFeature.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.features.Feature;
 import com.google.common.collect.testing.features.TesterAnnotation;
@@ -31,7 +30,6 @@ import java.util.Set;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public enum MultisetFeature implements Feature<Multiset> {
   /**
    * Indicates that elements from {@code Multiset.entrySet()} update to reflect changes in the
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetForEachEntryTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetForEachEntryTester.java
index 50c2ad5..b0ee673 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetForEachEntryTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetForEachEntryTester.java
@@ -18,8 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionFeature.KNOWN_ORDER;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Multiset.Entry;
 import com.google.common.collect.Multisets;
 import com.google.common.collect.testing.Helpers;
@@ -36,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetForEachEntryTester<E> extends AbstractMultisetTester<E> {
   public void testForEachEntry() {
@@ -69,7 +66,7 @@ public class MultisetForEachEntryTester<E> extends AbstractMultisetTester<E> {
    * Returns {@link Method} instances for the remove tests that assume multisets support duplicates
    * so that the test of {@code Multisets.forSet()} can suppress them.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getForEachEntryDuplicateInitializingMethods() {
     return Arrays.asList(
         Helpers.getMethod(MultisetForEachEntryTester.class, "testForEachEntryDuplicates"));
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetIteratorTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetIteratorTester.java
index 34a8c72..9b72744 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetIteratorTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetIteratorTester.java
@@ -19,8 +19,6 @@ import static com.google.common.collect.testing.IteratorFeature.UNMODIFIABLE;
 import static com.google.common.collect.testing.features.CollectionFeature.KNOWN_ORDER;
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ITERATOR_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.IteratorTester;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -36,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetIteratorTester<E> extends AbstractMultisetTester<E> {
   @SuppressWarnings("unchecked")
@@ -103,7 +100,7 @@ public class MultisetIteratorTester<E> extends AbstractMultisetTester<E> {
    * Returns {@link Method} instances for the tests that assume multisets support duplicates so that
    * the test of {@code Multisets.forSet()} can suppress them.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getIteratorDuplicateInitializingMethods() {
     return Arrays.asList(
         Helpers.getMethod(MultisetIteratorTester.class, "testIteratorKnownOrder"),
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetNavigationTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetNavigationTester.java
index b65cd96..26b5fd0 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetNavigationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetNavigationTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BoundType;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Multiset;
@@ -44,7 +43,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetNavigationTester<E> extends AbstractMultisetTester<E> {
   private SortedMultiset<E> sortedMultiset;
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetReadsTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetReadsTester.java
index 3a0cf59..fbafcbb 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetReadsTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetReadsTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.HashMultiset;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Multisets;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetReadsTester<E> extends AbstractMultisetTester<E> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetRemoveTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetRemoveTester.java
index e6594c1..69e702a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetRemoveTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetRemoveTester.java
@@ -23,8 +23,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -41,7 +39,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetRemoveTester<E> extends AbstractMultisetTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
@@ -188,7 +185,7 @@ public class MultisetRemoveTester<E> extends AbstractMultisetTester<E> {
    * Returns {@link Method} instances for the remove tests that assume multisets support duplicates
    * so that the test of {@code Multisets.forSet()} can suppress them.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static List<Method> getRemoveDuplicateInitializingMethods() {
     return Arrays.asList(
         Helpers.getMethod(MultisetRemoveTester.class, "testRemove_some_occurrences_present"));
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetSerializationTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetSerializationTester.java
index 0303970..30ba4d3 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetSerializationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetSerializationTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.testing.SerializableTester;
@@ -31,7 +30,7 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible // but no-op
+// but no-op
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetSerializationTester<E> extends AbstractMultisetTester<E> {
   @CollectionFeature.Require(SERIALIZABLE_INCLUDING_VIEWS)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountConditionallyTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountConditionallyTester.java
index d5e6963..d2241a0 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountConditionallyTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountConditionallyTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static java.util.Collections.nCopies;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetSetCountConditionallyTester<E> extends AbstractMultisetSetCountTester<E> {
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountUnconditionallyTester.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountUnconditionallyTester.java
index ec5436d..43280a0 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountUnconditionallyTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetSetCountUnconditionallyTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import org.junit.Ignore;
 
 /**
@@ -25,7 +24,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MultisetSetCountUnconditionallyTester<E> extends AbstractMultisetSetCountTester<E> {
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/MultisetTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/google/MultisetTestSuiteBuilder.java
index 91d7a60..ba015b3 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/MultisetTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/MultisetTestSuiteBuilder.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Multiset.Entry;
 import com.google.common.collect.Multisets;
@@ -52,7 +51,6 @@ import junit.framework.TestSuite;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class MultisetTestSuiteBuilder<E>
     extends AbstractCollectionTestSuiteBuilder<MultisetTestSuiteBuilder<E>, E> {
   public static <E> MultisetTestSuiteBuilder<E> using(TestMultisetGenerator<E> generator) {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java b/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java
index 0b55a27..4b62b61 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SetGenerators.java
@@ -25,12 +25,8 @@ import static com.google.common.collect.testing.SampleElements.Strings.BEFORE_FI
 import static com.google.common.collect.testing.SampleElements.Strings.BEFORE_FIRST_2;
 import static junit.framework.Assert.assertEquals;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ContiguousSet;
 import com.google.common.collect.DiscreteDomain;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSortedSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.Range;
@@ -58,7 +54,6 @@ import java.util.SortedSet;
  * @author Jared Levy
  * @author Hayward Chan
  */
-@GwtCompatible(emulated = true)
 public class SetGenerators {
 
   public static class ImmutableSetCopyOfGenerator extends TestStringSetGenerator {
@@ -171,7 +166,7 @@ public class SetGenerators {
     }
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public static class ImmutableSortedSetDescendingGenerator extends TestStringSortedSetGenerator {
     @Override
     protected SortedSet<String> create(String[] elements) {
@@ -263,7 +258,7 @@ public class SetGenerators {
     }
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public static class ImmutableSortedSetDescendingAsListGenerator extends TestStringListGenerator {
     @Override
     protected List<String> create(String[] elements) {
@@ -390,7 +385,7 @@ public class SetGenerators {
     }
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public static class ContiguousSetDescendingGenerator extends AbstractContiguousSetGenerator {
     @Override
     protected SortedSet<Integer> create(Integer[] elements) {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapAsMapTester.java b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapAsMapTester.java
index 49187dd..44e2b6b 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapAsMapTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapAsMapTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Maps;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.Sets;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  * @param <K> The key type of the tested multimap.
  * @param <V> The value type of the tested multimap.
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetMultimapAsMapTester<K, V> extends AbstractMultimapTester<K, V, SetMultimap<K, V>> {
   public void testAsMapValuesImplementSet() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapEqualsTester.java b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapEqualsTester.java
index 18d3823..a8c003a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapEqualsTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapEqualsTester.java
@@ -16,7 +16,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -28,7 +27,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetMultimapEqualsTester<K, V> extends AbstractMultimapTester<K, V, SetMultimap<K, V>> {
   @CollectionSize.Require(SEVERAL)
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutAllTester.java b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutAllTester.java
index ca02b56..d6eb113 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutAllTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.Helpers.copyToSet;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.Arrays;
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetMultimapPutAllTester<K, V> extends AbstractMultimapTester<K, V, SetMultimap<K, V>> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutTester.java b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutTester.java
index 7aaf9dc..d1facbb 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapPutTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetMultimapPutTester<K, V> extends AbstractMultimapTester<K, V, SetMultimap<K, V>> {
   // Tests for non-duplicate values are in MultimapPutTester
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapReplaceValuesTester.java b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapReplaceValuesTester.java
index 67b6aec..9990bc1 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapReplaceValuesTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapReplaceValuesTester.java
@@ -17,7 +17,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.Arrays;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetMultimapReplaceValuesTester<K, V>
     extends AbstractMultimapTester<K, V, SetMultimap<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapTestSuiteBuilder.java
index 4368cee..16cf7de 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SetMultimapTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.AbstractTester;
 import com.google.common.collect.testing.FeatureSpecificTestSuiteBuilder;
@@ -39,7 +38,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class SetMultimapTestSuiteBuilder<K, V>
     extends MultimapTestSuiteBuilder<K, V, SetMultimap<K, V>> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SortedMapGenerators.java b/guava-testlib/src/com/google/common/collect/testing/google/SortedMapGenerators.java
index 424fbb1..15ec27a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SortedMapGenerators.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SortedMapGenerators.java
@@ -19,8 +19,6 @@ package com.google.common.collect.testing.google;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.testing.Helpers.mapEntry;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableSortedMap;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -41,7 +39,6 @@ import java.util.SortedMap;
  * @author Chris Povirk
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class SortedMapGenerators {
   public static class ImmutableSortedMapGenerator extends TestStringSortedMapGenerator {
     @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SortedMultisetTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/google/SortedMultisetTestSuiteBuilder.java
index dafd521..92a50e4 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SortedMultisetTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SortedMultisetTestSuiteBuilder.java
@@ -21,9 +21,7 @@ import static com.google.common.collect.testing.features.CollectionFeature.RESTR
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE_INCLUDING_VIEWS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.BoundType;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.SortedMultiset;
@@ -53,7 +51,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class SortedMultisetTestSuiteBuilder<E> extends MultisetTestSuiteBuilder<E> {
   public static <E> SortedMultisetTestSuiteBuilder<E> using(TestMultisetGenerator<E> generator) {
     SortedMultisetTestSuiteBuilder<E> result = new SortedMultisetTestSuiteBuilder<E>();
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapAsMapTester.java b/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapAsMapTester.java
index 1c00f09..f655769 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapAsMapTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapAsMapTester.java
@@ -16,7 +16,6 @@ package com.google.common.collect.testing.google;
 
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SortedSetMultimap;
 import com.google.common.collect.testing.features.MapFeature;
 import java.util.ArrayList;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  * @param <K> The key type of the tested multimap.
  * @param <V> The value type of the tested multimap.
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SortedSetMultimapAsMapTester<K, V>
     extends AbstractMultimapTester<K, V, SortedSetMultimap<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapGetTester.java b/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapGetTester.java
index 5244b57..6fa30c5 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapGetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapGetTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SortedSetMultimap;
 import org.junit.Ignore;
 
@@ -25,7 +24,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SortedSetMultimapGetTester<K, V>
     extends AbstractMultimapTester<K, V, SortedSetMultimap<K, V>> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapTestSuiteBuilder.java b/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapTestSuiteBuilder.java
index 66c5a8e..f937e2d 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapTestSuiteBuilder.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/SortedSetMultimapTestSuiteBuilder.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.AbstractTester;
 import com.google.common.collect.testing.FeatureSpecificTestSuiteBuilder;
@@ -38,7 +37,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 public class SortedSetMultimapTestSuiteBuilder<K, V>
     extends MultimapTestSuiteBuilder<K, V, SetMultimap<K, V>> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/TestBiMapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/google/TestBiMapGenerator.java
index 11c353b..c676ebc 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/TestBiMapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/TestBiMapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.TestContainerGenerator;
 import java.util.Map.Entry;
@@ -26,7 +25,6 @@ import java.util.Map.Entry;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestBiMapGenerator<K, V> extends TestContainerGenerator<BiMap<K, V>, Entry<K, V>> {
   K[] createKeyArray(int length);
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/TestEnumMultisetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/google/TestEnumMultisetGenerator.java
index 851e221..ed4e670 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/TestEnumMultisetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/TestEnumMultisetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.AnEnum;
 import com.google.common.collect.testing.SampleElements;
@@ -29,7 +28,6 @@ import java.util.List;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestEnumMultisetGenerator implements TestMultisetGenerator<AnEnum> {
   @Override
   public SampleElements<AnEnum> samples() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/TestListMultimapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/google/TestListMultimapGenerator.java
index 1ab668f..43ff9bf 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/TestListMultimapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/TestListMultimapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 
 /**
@@ -24,6 +23,5 @@ import com.google.common.collect.ListMultimap;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestListMultimapGenerator<K, V>
     extends TestMultimapGenerator<K, V, ListMultimap<K, V>> {}
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/TestMultimapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/google/TestMultimapGenerator.java
index 06ce43f..b78cb6f 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/TestMultimapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/TestMultimapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestContainerGenerator;
@@ -28,7 +27,6 @@ import java.util.Map.Entry;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestMultimapGenerator<K, V, M extends Multimap<K, V>>
     extends TestContainerGenerator<M, Entry<K, V>> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/TestMultisetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/google/TestMultisetGenerator.java
index d3b5acd..9868410 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/TestMultisetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/TestMultisetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.TestCollectionGenerator;
 
@@ -25,7 +24,6 @@ import com.google.common.collect.testing.TestCollectionGenerator;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public interface TestMultisetGenerator<E> extends TestCollectionGenerator<E> {
   @Override
   Multiset<E> create(Object... elements);
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/TestSetMultimapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/google/TestSetMultimapGenerator.java
index 579dcbd..640235c 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/TestSetMultimapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/TestSetMultimapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 
 /**
@@ -24,6 +23,5 @@ import com.google.common.collect.SetMultimap;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public interface TestSetMultimapGenerator<K, V>
     extends TestMultimapGenerator<K, V, SetMultimap<K, V>> {}
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/TestStringBiMapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/google/TestStringBiMapGenerator.java
index d475397..2f69a77 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/TestStringBiMapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/TestStringBiMapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.SampleElements;
@@ -31,7 +30,6 @@ import java.util.Map.Entry;
  * @author George van den Driessche
  * @author Louis Wasserman
  */
-@GwtCompatible
 public abstract class TestStringBiMapGenerator implements TestBiMapGenerator<String, String> {
 
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/TestStringListMultimapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/google/TestStringListMultimapGenerator.java
index 64b33af..1d838ce 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/TestStringListMultimapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/TestStringListMultimapGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.SampleElements;
@@ -29,7 +28,6 @@ import java.util.Map.Entry;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public abstract class TestStringListMultimapGenerator
     implements TestListMultimapGenerator<String, String> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/TestStringMultisetGenerator.java b/guava-testlib/src/com/google/common/collect/testing/google/TestStringMultisetGenerator.java
index eeacf5d..ff2257f 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/TestStringMultisetGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/TestStringMultisetGenerator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.SampleElements.Strings;
@@ -27,7 +26,6 @@ import java.util.List;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class TestStringMultisetGenerator implements TestMultisetGenerator<String> {
   @Override
   public SampleElements<String> samples() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/TestStringSetMultimapGenerator.java b/guava-testlib/src/com/google/common/collect/testing/google/TestStringSetMultimapGenerator.java
index e49ccff..9e8e213 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/TestStringSetMultimapGenerator.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/TestStringSetMultimapGenerator.java
@@ -15,7 +15,6 @@
  */
 package com.google.common.collect.testing.google;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.SetMultimap;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.SampleElements;
@@ -28,7 +27,6 @@ import java.util.Map.Entry;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public abstract class TestStringSetMultimapGenerator
     implements TestSetMultimapGenerator<String, String> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/google/UnmodifiableCollectionTests.java b/guava-testlib/src/com/google/common/collect/testing/google/UnmodifiableCollectionTests.java
index 005746f..838f0c4 100644
--- a/guava-testlib/src/com/google/common/collect/testing/google/UnmodifiableCollectionTests.java
+++ b/guava-testlib/src/com/google/common/collect/testing/google/UnmodifiableCollectionTests.java
@@ -20,7 +20,6 @@ import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.assertTrue;
 import static junit.framework.TestCase.fail;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.LinkedHashMultiset;
@@ -42,7 +41,6 @@ import java.util.Set;
  *
  * @author Robert Konigsberg
  */
-@GwtCompatible
 public class UnmodifiableCollectionTests {
 
   public static void assertMapEntryIsUnmodifiable(Entry<?, ?> entry) {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListIndexOfTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListIndexOfTester.java
index 46bd529..cdb40ea 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListIndexOfTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListIndexOfTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public abstract class AbstractListIndexOfTester<E> extends AbstractListTester<E> {
   /** Override to call {@code indexOf()} or {@code lastIndexOf()}. */
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListTester.java
index 5275acb..d241070 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/AbstractListTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import java.util.Collection;
@@ -28,7 +27,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class AbstractListTester<E> extends AbstractCollectionTester<E> {
   /*
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/AbstractQueueTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/AbstractQueueTester.java
index 7476340..0994b66 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/AbstractQueueTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/AbstractQueueTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import java.util.Queue;
 import org.junit.Ignore;
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class AbstractQueueTester<E> extends AbstractCollectionTester<E> {
   protected final Queue<E> getQueue() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/AbstractSetTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/AbstractSetTester.java
index b7409af..261505e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/AbstractSetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/AbstractSetTester.java
@@ -16,13 +16,11 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import java.util.Set;
 import org.junit.Ignore;
 
 /** @author George van den Driessche */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class AbstractSetTester<E> extends AbstractCollectionTester<E> {
   /*
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddAllTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddAllTester.java
index 5c21c9a..7d86c7e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddAllTester.java
@@ -23,8 +23,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static java.util.Collections.singletonList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.MinimalCollection;
@@ -44,7 +42,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionAddAllTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
@@ -167,7 +164,7 @@ public class CollectionAddAllTester<E> extends AbstractCollectionTester<E> {
    * suppress it with {@code FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddAllNullUnsupportedMethod() {
     return Helpers.getMethod(CollectionAddAllTester.class, "testAddAll_nullUnsupported");
   }
@@ -178,7 +175,7 @@ public class CollectionAddAllTester<E> extends AbstractCollectionTester<E> {
    * figure out what to do with <a href="http://goo.gl/qJBruX">{@code ConcurrentHashMap} support for
    * {@code entrySet().add()}</a>.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddAllUnsupportedNonePresentMethod() {
     return Helpers.getMethod(CollectionAddAllTester.class, "testAddAll_unsupportedNonePresent");
   }
@@ -189,7 +186,7 @@ public class CollectionAddAllTester<E> extends AbstractCollectionTester<E> {
    * figure out what to do with <a href="http://goo.gl/qJBruX">{@code ConcurrentHashMap} support for
    * {@code entrySet().add()}</a>.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddAllUnsupportedSomePresentMethod() {
     return Helpers.getMethod(CollectionAddAllTester.class, "testAddAll_unsupportedSomePresent");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddTester.java
index bed257c..84d6702 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionAddTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.RESTR
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -41,7 +39,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionAddTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
@@ -112,7 +109,7 @@ public class CollectionAddTester<E> extends AbstractCollectionTester<E> {
    * will be to permit them, as it seems more likely that code would depend on that behavior than on
    * the other. Thus, we say the bug is in add(), which fails to support null.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddNullSupportedMethod() {
     return Helpers.getMethod(CollectionAddTester.class, "testAdd_nullSupported");
   }
@@ -123,7 +120,7 @@ public class CollectionAddTester<E> extends AbstractCollectionTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddNullUnsupportedMethod() {
     return Helpers.getMethod(CollectionAddTester.class, "testAdd_nullUnsupported");
   }
@@ -134,7 +131,7 @@ public class CollectionAddTester<E> extends AbstractCollectionTester<E> {
    * what to do with <a href="http://goo.gl/qJBruX">{@code ConcurrentHashMap} support for {@code
    * entrySet().add()}</a>.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddUnsupportedNotPresentMethod() {
     return Helpers.getMethod(CollectionAddTester.class, "testAdd_unsupportedNotPresent");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionClearTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionClearTester.java
index 9b97fff..59318ab 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionClearTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionClearTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionClearTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsAllTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsAllTester.java
index 8d03271..fbcedb0 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsAllTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.WrongType;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionContainsAllTester<E> extends AbstractCollectionTester<E> {
   public void testContainsAll_empty() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsTester.java
index 47e0dd6..820ead6 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionContainsTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionContainsTester<E> extends AbstractCollectionTester<E> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionCreationTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionCreationTester.java
index 848fdd6..3608471 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionCreationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionCreationTester.java
@@ -19,8 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -35,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionCreationTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(ALLOWS_NULL_VALUES)
@@ -63,7 +60,7 @@ public class CollectionCreationTester<E> extends AbstractCollectionTester<E> {
    * can suppress it with {@code FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getCreateWithNullUnsupportedMethod() {
     return Helpers.getMethod(CollectionCreationTester.class, "testCreateWithNull_unsupported");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionEqualsTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionEqualsTester.java
index e8276cb..733817e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionEqualsTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionEqualsTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import org.junit.Ignore;
 
@@ -25,7 +24,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionEqualsTester<E> extends AbstractCollectionTester<E> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionForEachTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionForEachTester.java
index d1a36af..b2c53f0 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionForEachTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionForEachTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.KNOWN_ORDER;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionForEachTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(absent = KNOWN_ORDER)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIsEmptyTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIsEmptyTester.java
index 419e049..676fbe8 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIsEmptyTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIsEmptyTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionIsEmptyTester<E> extends AbstractCollectionTester<E> {
   @CollectionSize.Require(ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIteratorTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIteratorTester.java
index b170497..081ab9f 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIteratorTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionIteratorTester.java
@@ -25,7 +25,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.IteratorFeature;
@@ -47,7 +46,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionIteratorTester<E> extends AbstractCollectionTester<E> {
   public void testIterator() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveAllTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveAllTester.java
index 0d59097..34f24ca 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveAllTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.WrongType;
@@ -42,7 +41,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionRemoveAllTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveIfTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveIfTester.java
index bc0139f..2fe2c3b 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveIfTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveIfTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionRemoveIfTester<E> extends AbstractCollectionTester<E> {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveTester.java
index 49568fc..dfdf840 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRemoveTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -39,7 +38,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionRemoveTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRetainAllTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRetainAllTester.java
index db7aef1..5f1ca13 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRetainAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionRetainAllTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -39,7 +38,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionRetainAllTester<E> extends AbstractCollectionTester<E> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationEqualTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationEqualTester.java
index 38c770d..4ad19f2 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationEqualTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationEqualTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.testing.SerializableTester;
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionSerializationEqualTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SERIALIZABLE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationTester.java
index 18f8c66..c3522bb 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSerializationTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionSerializationTester<E> extends AbstractCollectionTester<E> {
   @CollectionFeature.Require(SERIALIZABLE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSizeTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSizeTester.java
index 64d07a0..b80ea32 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSizeTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSizeTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import org.junit.Ignore;
 
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionSizeTester<E> extends AbstractCollectionTester<E> {
   public void testSize() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSpliteratorTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSpliteratorTester.java
index fdc8bff..fb6c8e9 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSpliteratorTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionSpliteratorTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_REMOVE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.SpliteratorTester;
@@ -39,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionSpliteratorTester<E> extends AbstractCollectionTester<E> {
 
@@ -82,13 +79,13 @@ public class CollectionSpliteratorTester<E> extends AbstractCollectionTester<E>
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSpliteratorNotImmutableCollectionAllowsAddMethod() {
     return Helpers.getMethod(
         CollectionSpliteratorTester.class, "testSpliteratorNotImmutable_CollectionAllowsAdd");
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSpliteratorNotImmutableCollectionAllowsRemoveMethod() {
     return Helpers.getMethod(
         CollectionSpliteratorTester.class, "testSpliteratorNotImmutable_CollectionAllowsRemove");
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionStreamTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionStreamTester.java
index 38bbb90..d49a99d 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionStreamTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionStreamTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.KNOWN_ORDER;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionStreamTester<E> extends AbstractCollectionTester<E> {
   /*
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToArrayTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToArrayTester.java
index b40fc36..bf641d5 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToArrayTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToArrayTester.java
@@ -19,8 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.KNOWN_ORDER;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.WrongType;
@@ -39,7 +37,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionToArrayTester<E> extends AbstractCollectionTester<E> {
   public void testToArray_noArgs() {
@@ -194,7 +191,7 @@ public class CollectionToArrayTester<E> extends AbstractCollectionTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6260652">Sun bug 6260652</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getToArrayIsPlainObjectArrayMethod() {
     return Helpers.getMethod(CollectionToArrayTester.class, "testToArray_isPlainObjectArray");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToStringTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToStringTester.java
index f138ccf..951de46 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToStringTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/CollectionToStringTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractCollectionTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -36,7 +35,6 @@ import org.junit.Ignore;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class CollectionToStringTester<E> extends AbstractCollectionTester<E> {
   public void testToString_minimal() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapPutIfAbsentTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapPutIfAbsentTester.java
index 6cf5be2..8d4c03d 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapPutIfAbsentTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapPutIfAbsentTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -36,7 +35,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ConcurrentMapPutIfAbsentTester<K, V> extends AbstractMapTester<K, V> {
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapRemoveTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapRemoveTester.java
index 87cc319..987d0e1 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapRemoveTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapRemoveTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ConcurrentMapRemoveTester<K, V> extends AbstractMapTester<K, V> {
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceEntryTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceEntryTester.java
index 57f631c..f439102 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceEntryTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceEntryTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ConcurrentMapReplaceEntryTester<K, V> extends AbstractMapTester<K, V> {
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceTester.java
index f0bc164..6ceeab5 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ConcurrentMapReplaceTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -36,7 +35,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ConcurrentMapReplaceTester<K, V> extends AbstractMapTester<K, V> {
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllAtIndexTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllAtIndexTester.java
index c3e338f..fe17b01 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllAtIndexTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllAtIndexTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_ADD_WITH_INDEX;
 import static java.util.Collections.singletonList;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -37,7 +36,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListAddAllAtIndexTester<E> extends AbstractListTester<E> {
   @ListFeature.Require(SUPPORTS_ADD_WITH_INDEX)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllTester.java
index 1504f1a..91990d7 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAllTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListAddAllTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAtIndexTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAtIndexTester.java
index 32310b8..9d93ce9 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAtIndexTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListAddAtIndexTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_ADD_WITH_INDEX;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -40,7 +38,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListAddAtIndexTester<E> extends AbstractListTester<E> {
   @ListFeature.Require(SUPPORTS_ADD_WITH_INDEX)
@@ -154,7 +151,7 @@ public class ListAddAtIndexTester<E> extends AbstractListTester<E> {
    * Returns the {@link Method} instance for {@link #testAddAtIndex_nullSupported()} so that tests
    * can suppress it. See {@link CollectionAddTester#getAddNullSupportedMethod()} for details.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddNullSupportedMethod() {
     return Helpers.getMethod(ListAddAtIndexTester.class, "testAddAtIndex_nullSupported");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListAddTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListAddTester.java
index 8559d34..0ef67c4 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListAddTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListAddTester.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -36,7 +34,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListAddTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
@@ -76,7 +73,7 @@ public class ListAddTester<E> extends AbstractListTester<E> {
    * Returns the {@link Method} instance for {@link #testAdd_supportedNullPresent()} so that tests
    * can suppress it. See {@link CollectionAddTester#getAddNullSupportedMethod()} for details.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddSupportedNullPresentMethod() {
     return Helpers.getMethod(ListAddTester.class, "testAdd_supportedNullPresent");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListCreationTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListCreationTester.java
index 9d0b77a..adc70b9 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListCreationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListCreationTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.REJEC
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListCreationTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(absent = REJECTS_DUPLICATES_AT_CREATION)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListEqualsTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListEqualsTester.java
index 3a09586..5af576c 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListEqualsTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListEqualsTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalSet;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListEqualsTester<E> extends AbstractListTester<E> {
   public void testEquals_otherListWithSameElements() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListGetTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListGetTester.java
index 2ca16c4..ea23cd8 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListGetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListGetTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import org.junit.Ignore;
 
 /**
@@ -25,7 +24,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListGetTester<E> extends AbstractListTester<E> {
   public void testGet_valid() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListHashCodeTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListHashCodeTester.java
index 93a8526..1319f3a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListHashCodeTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListHashCodeTester.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import java.lang.reflect.Method;
 import org.junit.Ignore;
@@ -27,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListHashCodeTester<E> extends AbstractListTester<E> {
   public void testHashCode() {
@@ -45,7 +42,7 @@ public class ListHashCodeTester<E> extends AbstractListTester<E> {
    * Returns the {@link Method} instance for {@link #testHashCode()} so that list tests on
    * unhashable objects can suppress it with {@code FeatureSpecificTestSuiteBuilder.suppressing()}.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getHashCodeMethod() {
     return Helpers.getMethod(ListHashCodeTester.class, "testHashCode");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListIndexOfTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListIndexOfTester.java
index 7afb8c8..9f7c470 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListIndexOfTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListIndexOfTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.REJEC
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListIndexOfTester<E> extends AbstractListIndexOfTester<E> {
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListLastIndexOfTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListLastIndexOfTester.java
index 19f7f1e..2430c46 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListLastIndexOfTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListLastIndexOfTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.REJEC
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListLastIndexOfTester<E> extends AbstractListIndexOfTester<E> {
   @Override
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListListIteratorTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListListIteratorTester.java
index 0d4b13e..9960ebd 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListListIteratorTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListListIteratorTester.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_SE
 import static com.google.common.collect.testing.testers.Platform.listListIteratorTesterNumIterations;
 import static java.util.Collections.singleton;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.IteratorFeature;
 import com.google.common.collect.testing.ListIteratorTester;
@@ -45,7 +43,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListListIteratorTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(absent = SUPPORTS_REMOVE)
@@ -111,7 +108,7 @@ public class ListListIteratorTester<E> extends AbstractListTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570575">Sun bug 6570575</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getListIteratorFullyModifiableMethod() {
     return Helpers.getMethod(ListListIteratorTester.class, "testListIterator_fullyModifiable");
   }
@@ -120,7 +117,7 @@ public class ListListIteratorTester<E> extends AbstractListTester<E> {
    * Returns the {@link Method} instance for {@link #testListIterator_unmodifiable()} so that it can
    * be suppressed in GWT tests.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getListIteratorUnmodifiableMethod() {
     return Helpers.getMethod(ListListIteratorTester.class, "testListIterator_unmodifiable");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAllTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAllTester.java
index 513134c..78503e5 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAllTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListRemoveAllTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAtIndexTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAtIndexTester.java
index 9714251..bd51122 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAtIndexTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveAtIndexTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_REMOVE_WITH_INDEX;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -37,7 +36,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListRemoveAtIndexTester<E> extends AbstractListTester<E> {
   @ListFeature.Require(absent = SUPPORTS_REMOVE_WITH_INDEX)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveTester.java
index 9c2c688..de9fcbd 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListRemoveTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SUPPO
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListRemoveTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListReplaceAllTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListReplaceAllTester.java
index 05d436d..79b9aee 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListReplaceAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListReplaceAllTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_SET;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.ListFeature;
 import java.util.Collections;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListReplaceAllTester<E> extends AbstractListTester<E> {
   @ListFeature.Require(SUPPORTS_SET)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListRetainAllTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListRetainAllTester.java
index 96bd3b4..58dcc93 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListRetainAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListRetainAllTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListRetainAllTester<E> extends AbstractListTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListSetTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListSetTester.java
index 844f1b4..9495cd3 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListSetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListSetTester.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_SET;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -35,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListSetTester<E> extends AbstractListTester<E> {
   @ListFeature.Require(SUPPORTS_SET)
@@ -142,7 +139,7 @@ public class ListSetTester<E> extends AbstractListTester<E> {
    * will be to permit them, as it seems more likely that code would depend on that behavior than on
    * the other. Thus, we say the bug is in set(), which fails to support null.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSetNullSupportedMethod() {
     return Helpers.getMethod(ListSetTester.class, "testSet_null");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListSubListTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListSubListTester.java
index 553b693..12aa66d 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListSubListTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListSubListTester.java
@@ -25,8 +25,6 @@ import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_RE
 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_SET;
 import static java.util.Collections.emptyList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -46,7 +44,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListSubListTester<E> extends AbstractListTester<E> {
   public void testSubList_startNegative() {
@@ -319,7 +316,7 @@ public class ListSubListTester<E> extends AbstractListTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570631">Sun bug 6570631</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSubListOriginalListSetAffectsSubListMethod() {
     return getMethod(ListSubListTester.class, "testSubList_originalListSetAffectsSubList");
   }
@@ -331,7 +328,7 @@ public class ListSubListTester<E> extends AbstractListTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570631">Sun bug 6570631</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSubListOriginalListSetAffectsSubListLargeListMethod() {
     return getMethod(ListSubListTester.class, "testSubList_originalListSetAffectsSubListLargeList");
   }
@@ -343,7 +340,7 @@ public class ListSubListTester<E> extends AbstractListTester<E> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570575">Sun bug 6570575</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSubListSubListRemoveAffectsOriginalLargeListMethod() {
     return getMethod(ListSubListTester.class, "testSubList_subListRemoveAffectsOriginalLargeList");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/ListToArrayTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/ListToArrayTester.java
index 4c5eb09..c0193bf 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/ListToArrayTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/ListToArrayTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.Arrays;
 import org.junit.Ignore;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class ListToArrayTester<E> extends AbstractListTester<E> {
   // CollectionToArrayTester tests everything except ordering.
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapClearTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapClearTester.java
index 64f5127..6fb2d48 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapClearTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapClearTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.FAILS_FAST_ON_CONCURRENT_MODIFICATION;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -37,7 +36,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapClearTester<K, V> extends AbstractMapTester<K, V> {
   @MapFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeIfAbsentTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeIfAbsentTester.java
index a6ca7be..b47b050 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeIfAbsentTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeIfAbsentTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapComputeIfAbsentTester<K, V> extends AbstractMapTester<K, V> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeIfPresentTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeIfPresentTester.java
index 02e097a..4f9bbbe 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeIfPresentTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeIfPresentTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -36,7 +35,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapComputeIfPresentTester<K, V> extends AbstractMapTester<K, V> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeTester.java
index eb79e08..99496d5 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapComputeTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapComputeTester<K, V> extends AbstractMapTester<K, V> {
   @MapFeature.Require({SUPPORTS_PUT, SUPPORTS_REMOVE})
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsKeyTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsKeyTester.java
index 3721db1..f83877c 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsKeyTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsKeyTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapContainsKeyTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsValueTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsValueTester.java
index 044562a..c7f3f5e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsValueTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapContainsValueTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapContainsValueTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapCreationTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapCreationTester.java
index 0810dea..2394c1e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapCreationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapCreationTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.REJECTS_DUPLICATES_AT_CREATION;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -42,7 +40,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapCreationTester<K, V> extends AbstractMapTester<K, V> {
   @MapFeature.Require(ALLOWS_NULL_KEYS)
@@ -147,7 +144,7 @@ public class MapCreationTester<K, V> extends AbstractMapTester<K, V> {
    * tests can suppress it with {@code FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getCreateWithNullKeyUnsupportedMethod() {
     return Helpers.getMethod(MapCreationTester.class, "testCreateWithNullKeyUnsupported");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapEntrySetTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapEntrySetTester.java
index 537f091..232538b 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapEntrySetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapEntrySetTester.java
@@ -25,8 +25,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -45,7 +43,6 @@ import org.junit.Ignore;
  * @param <K> The key type of the map implementation under test.
  * @param <V> The value type of the map implementation under test.
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapEntrySetTester<K, V> extends AbstractMapTester<K, V> {
   private enum IncomparableType {
@@ -141,27 +138,27 @@ public class MapEntrySetTester<K, V> extends AbstractMapTester<K, V> {
     expectUnchanged();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getContainsEntryWithIncomparableKeyMethod() {
     return Helpers.getMethod(MapEntrySetTester.class, "testContainsEntryWithIncomparableKey");
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getContainsEntryWithIncomparableValueMethod() {
     return Helpers.getMethod(MapEntrySetTester.class, "testContainsEntryWithIncomparableValue");
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSetValueMethod() {
     return Helpers.getMethod(MapEntrySetTester.class, "testSetValue");
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSetValueWithNullValuesPresentMethod() {
     return Helpers.getMethod(MapEntrySetTester.class, "testSetValueWithNullValuesPresent");
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getSetValueWithNullValuesAbsentMethod() {
     return Helpers.getMethod(MapEntrySetTester.class, "testSetValueWithNullValuesAbsent");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapEqualsTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapEqualsTester.java
index 2408ad4..71b06db 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapEqualsTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapEqualsTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -36,7 +35,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapEqualsTester<K, V> extends AbstractMapTester<K, V> {
   public void testEquals_otherMapWithSameEntries() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapForEachTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapForEachTester.java
index 40086a8..31d7236 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapForEachTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapForEachTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -40,7 +39,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapForEachTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionFeature.Require(KNOWN_ORDER)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapGetOrDefaultTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapGetOrDefaultTester.java
index 92094a8..7b31c91 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapGetOrDefaultTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapGetOrDefaultTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapGetOrDefaultTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapGetTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapGetTester.java
index 89610f2..a36cd3d 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapGetTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapGetTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapGetTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionSize.Require(absent = ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapHashCodeTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapHashCodeTester.java
index 97ad5c4..925fc85 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapHashCodeTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapHashCodeTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  * @author George van den Driessche
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapHashCodeTester<K, V> extends AbstractMapTester<K, V> {
   public void testHashCode() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapIsEmptyTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapIsEmptyTester.java
index 548ebe5..89e186a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapIsEmptyTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapIsEmptyTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -29,7 +28,6 @@ import org.junit.Ignore;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapIsEmptyTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionSize.Require(ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapMergeTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapMergeTester.java
index c001afa..82d2916 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapMergeTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapMergeTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -39,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapMergeTester<K, V> extends AbstractMapTester<K, V> {
   @MapFeature.Require(SUPPORTS_PUT)
@@ -189,7 +186,7 @@ public class MapMergeTester<K, V> extends AbstractMapTester<K, V> {
    * Returns the {@link Method} instance for {@link #testMergeNullValue()} so that tests of {@link
    * Hashtable} can suppress it with {@code FeatureSpecificTestSuiteBuilder.suppressing()}.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getMergeNullValueMethod() {
     return Helpers.getMethod(MapMergeTester.class, "testMergeNullValue");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapPutAllTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapPutAllTester.java
index 21d89d8..c0b0617 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapPutAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapPutAllTester.java
@@ -23,8 +23,6 @@ import static com.google.common.collect.testing.features.MapFeature.FAILS_FAST_O
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 import static java.util.Collections.singletonList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.MinimalCollection;
@@ -48,7 +46,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapPutAllTester<K, V> extends AbstractMapTester<K, V> {
   private List<Entry<K, V>> containsNullKey;
@@ -196,7 +193,7 @@ public class MapPutAllTester<K, V> extends AbstractMapTester<K, V> {
    * can suppress it with {@code FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getPutAllNullKeyUnsupportedMethod() {
     return Helpers.getMethod(MapPutAllTester.class, "testPutAll_nullKeyUnsupported");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapPutIfAbsentTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapPutIfAbsentTester.java
index c9aa930..cf239e7 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapPutIfAbsentTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapPutIfAbsentTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapPutIfAbsentTester<K, V> extends AbstractMapTester<K, V> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapPutTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapPutTester.java
index c9a745d..e435b6a 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapPutTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapPutTester.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.FAILS_FAST_ON_CONCURRENT_MODIFICATION;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -42,7 +40,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapPutTester<K, V> extends AbstractMapTester<K, V> {
   private Entry<K, V> nullKeyEntry;
@@ -255,7 +252,7 @@ public class MapPutTester<K, V> extends AbstractMapTester<K, V> {
    * FeatureSpecificTestSuiteBuilder.suppressing()} until <a
    * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147">Sun bug 5045147</a> is fixed.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getPutNullKeyUnsupportedMethod() {
     return Helpers.getMethod(MapPutTester.class, "testPut_nullKeyUnsupported");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveEntryTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveEntryTester.java
index a59a74a..e754984 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveEntryTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveEntryTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapRemoveEntryTester<K, V> extends AbstractMapTester<K, V> {
   @MapFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveTester.java
index 00c074e..e854cbb 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapRemoveTester.java
@@ -23,7 +23,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.FAILS_FAST_ON_CONCURRENT_MODIFICATION;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.WrongType;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  * @author Chris Povirk
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapRemoveTester<K, V> extends AbstractMapTester<K, V> {
   @MapFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceAllTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceAllTester.java
index 4808f54..4af147e 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceAllTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.KNOWN
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.SampleElements;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapReplaceAllTester<K, V> extends AbstractMapTester<K, V> {
   private SampleElements<K> keys() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceEntryTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceEntryTester.java
index 8a619da..5b47dc8 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceEntryTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceEntryTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapReplaceEntryTester<K, V> extends AbstractMapTester<K, V> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceTester.java
index b4101f2..3c6cccf 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapReplaceTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUE_QUERIES;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_PUT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapReplaceTester<K, V> extends AbstractMapTester<K, V> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapSerializationTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapSerializationTester.java
index dfa0a1e..8f5a346 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapSerializationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapSerializationTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.testing.EqualsTester;
@@ -31,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapSerializationTester<K, V> extends AbstractMapTester<K, V> {
   @CollectionFeature.Require(SERIALIZABLE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapSizeTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapSizeTester.java
index b35d64a..c33e654 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapSizeTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapSizeTester.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import org.junit.Ignore;
 
@@ -26,7 +25,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapSizeTester<K, V> extends AbstractMapTester<K, V> {
   public void testSize() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/MapToStringTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/MapToStringTester.java
index 429f8f4..b5d6c24 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/MapToStringTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/MapToStringTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -38,7 +37,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class MapToStringTester<K, V> extends AbstractMapTester<K, V> {
   public void testToString_minimal() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/NavigableMapNavigationTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/NavigableMapNavigationTester.java
index ebb86b6..5579a09 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/NavigableMapNavigationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/NavigableMapNavigationTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -40,7 +39,6 @@ import org.junit.Ignore;
  * @author Jesse Wilson
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class NavigableMapNavigationTester<K, V> extends AbstractMapTester<K, V> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/NavigableSetNavigationTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/NavigableSetNavigationTester.java
index 3901616..abe32b4 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/NavigableSetNavigationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/NavigableSetNavigationTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  * @author Jesse Wilson
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class NavigableSetNavigationTester<E> extends AbstractSetTester<E> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/Platform.java b/guava-testlib/src/com/google/common/collect/testing/testers/Platform.java
index aed6e76..0be9dd5 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/Platform.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/Platform.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing.testers;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Locale;
 
 /**
@@ -24,7 +23,6 @@ import java.util.Locale;
  *
  * @author Hayward Chan
  */
-@GwtCompatible
 final class Platform {
 
   /** Format the template with args, only supports the placeholder {@code %s}. */
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/QueueElementTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/QueueElementTester.java
index 3275e43..8f29e6f 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/QueueElementTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/QueueElementTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.NoSuchElementException;
@@ -33,7 +32,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class QueueElementTester<E> extends AbstractQueueTester<E> {
   @CollectionSize.Require(ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/QueueOfferTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/QueueOfferTester.java
index 3b17289..67f0d91 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/QueueOfferTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/QueueOfferTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import org.junit.Ignore;
 
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  * @author Jared Levy
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class QueueOfferTester<E> extends AbstractQueueTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/QueuePeekTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/QueuePeekTester.java
index 641f171..c0f4364 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/QueuePeekTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/QueuePeekTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class QueuePeekTester<E> extends AbstractQueueTester<E> {
   @CollectionSize.Require(ZERO)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/QueuePollTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/QueuePollTester.java
index 544b14a..7c5b6b8 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/QueuePollTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/QueuePollTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -34,7 +33,6 @@ import org.junit.Ignore;
  * @author Jared Levy
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class QueuePollTester<E> extends AbstractQueueTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/QueueRemoveTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/QueueRemoveTester.java
index 2b02cea..ddfe494 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/QueueRemoveTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/QueueRemoveTester.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.NoSuchElementException;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  * @author Jared Levy
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class QueueRemoveTester<E> extends AbstractQueueTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/SetAddAllTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/SetAddAllTester.java
index 8e917cd..04bdc18 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/SetAddAllTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/SetAddAllTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("unchecked") // too many "unchecked generic array creations"
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetAddAllTester<E> extends AbstractSetTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/SetAddTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/SetAddTester.java
index 1974968..44e6604 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/SetAddTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/SetAddTester.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -34,7 +32,6 @@ import org.junit.Ignore;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetAddTester<E> extends AbstractSetTester<E> {
   @CollectionFeature.Require(SUPPORTS_ADD)
@@ -57,7 +54,7 @@ public class SetAddTester<E> extends AbstractSetTester<E> {
    * Returns the {@link Method} instance for {@link #testAdd_supportedNullPresent()} so that tests
    * can suppress it. See {@link CollectionAddTester#getAddNullSupportedMethod()} for details.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method getAddSupportedNullPresentMethod() {
     return Helpers.getMethod(SetAddTester.class, "testAdd_supportedNullPresent");
   }
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/SetCreationTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/SetCreationTester.java
index 0c1be6b..8b5cb72 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/SetCreationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/SetCreationTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.REJEC
 import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.Arrays;
@@ -35,7 +34,6 @@ import org.junit.Ignore;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetCreationTester<E> extends AbstractSetTester<E> {
   @CollectionFeature.Require(value = ALLOWS_NULL_VALUES, absent = REJECTS_DUPLICATES_AT_CREATION)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/SetEqualsTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/SetEqualsTester.java
index 839e173..903f1cf 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/SetEqualsTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/SetEqualsTester.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.MinimalSet;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -32,7 +31,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetEqualsTester<E> extends AbstractSetTester<E> {
   public void testEquals_otherSetWithSameElements() {
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/SetHashCodeTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/SetHashCodeTester.java
index 5f60327..4920758 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/SetHashCodeTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/SetHashCodeTester.java
@@ -18,8 +18,6 @@ package com.google.common.collect.testing.testers;
 
 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -32,7 +30,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible(emulated = true)
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetHashCodeTester<E> extends AbstractSetTester<E> {
   public void testHashCode() {
@@ -69,7 +66,7 @@ public class SetHashCodeTester<E> extends AbstractSetTester<E> {
    * hashCode()} on the set values so that set tests on unhashable objects can suppress it with
    * {@code FeatureSpecificTestSuiteBuilder.suppressing()}.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Method[] getHashCodeMethods() {
     return new Method[] {
       Helpers.getMethod(SetHashCodeTester.class, "testHashCode"),
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/SetRemoveTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/SetRemoveTester.java
index 7f1f88d..32ab4d3 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/SetRemoveTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/SetRemoveTester.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing.testers;
 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_REMOVE;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import org.junit.Ignore;
@@ -30,7 +29,6 @@ import org.junit.Ignore;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SetRemoveTester<E> extends AbstractSetTester<E> {
   @CollectionFeature.Require(SUPPORTS_REMOVE)
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/SortedMapNavigationTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/SortedMapNavigationTester.java
index 691fee1..375b2d5 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/SortedMapNavigationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/SortedMapNavigationTester.java
@@ -21,7 +21,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.AbstractMapTester;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -41,7 +40,6 @@ import org.junit.Ignore;
  * @author Jesse Wilson
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SortedMapNavigationTester<K, V> extends AbstractMapTester<K, V> {
 
diff --git a/guava-testlib/src/com/google/common/collect/testing/testers/SortedSetNavigationTester.java b/guava-testlib/src/com/google/common/collect/testing/testers/SortedSetNavigationTester.java
index bf5ac22..1666027 100644
--- a/guava-testlib/src/com/google/common/collect/testing/testers/SortedSetNavigationTester.java
+++ b/guava-testlib/src/com/google/common/collect/testing/testers/SortedSetNavigationTester.java
@@ -20,7 +20,6 @@ import static com.google.common.collect.testing.features.CollectionSize.ONE;
 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL;
 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.features.CollectionSize;
 import java.util.Collections;
@@ -36,7 +35,6 @@ import org.junit.Ignore;
  * @author Jesse Wilson
  * @author Louis Wasserman
  */
-@GwtCompatible
 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests.
 public class SortedSetNavigationTester<E> extends AbstractSetTester<E> {
 
diff --git a/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java b/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java
index 3920afe..e1de546 100644
--- a/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java
+++ b/guava-testlib/src/com/google/common/escape/testing/EscaperAsserts.java
@@ -18,8 +18,6 @@ package com.google.common.escape.testing;
 
 import static com.google.common.escape.Escapers.computeReplacement;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.CharEscaper;
 import com.google.common.escape.Escaper;
 import com.google.common.escape.UnicodeEscaper;
@@ -32,8 +30,6 @@ import junit.framework.Assert;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 public final class EscaperAsserts {
   private EscaperAsserts() {}
 
diff --git a/guava-testlib/src/com/google/common/escape/testing/package-info.java b/guava-testlib/src/com/google/common/escape/testing/package-info.java
index 8698847..f6963ab 100644
--- a/guava-testlib/src/com/google/common/escape/testing/package-info.java
+++ b/guava-testlib/src/com/google/common/escape/testing/package-info.java
@@ -20,7 +20,5 @@
  * <p>This package is a part of the open-source <a href="http://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 package com.google.common.escape.testing;
 
-import com.google.errorprone.annotations.CheckReturnValue;
diff --git a/guava-testlib/src/com/google/common/testing/AbstractPackageSanityTests.java b/guava-testlib/src/com/google/common/testing/AbstractPackageSanityTests.java
index 962b15f..169bf13 100644
--- a/guava-testlib/src/com/google/common/testing/AbstractPackageSanityTests.java
+++ b/guava-testlib/src/com/google/common/testing/AbstractPackageSanityTests.java
@@ -20,13 +20,9 @@ import static com.google.common.base.Predicates.and;
 import static com.google.common.base.Predicates.not;
 import static com.google.common.testing.AbstractPackageSanityTests.Chopper.suffix;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.collect.HashMultimap;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -34,7 +30,6 @@ import com.google.common.collect.Multimap;
 import com.google.common.collect.Sets;
 import com.google.common.reflect.ClassPath;
 import com.google.common.testing.NullPointerTester.Visibility;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
 import java.io.IOException;
 import java.io.Serializable;
 import java.util.LinkedHashSet;
@@ -101,11 +96,9 @@ import org.junit.Test;
  * @author Ben Yu
  * @since 14.0
  */
-@Beta
 // TODO: Switch to JUnit 4 and use @Parameterized and @BeforeClass
 // Note: @Test annotations are deliberate, as some subclasses specify @RunWith(JUnit4).
-@GwtIncompatible
-@J2ObjCIncompatible // com.google.common.reflect.ClassPath
+// com.google.common.reflect.ClassPath
 public abstract class AbstractPackageSanityTests extends TestCase {
 
   /**
@@ -337,7 +330,6 @@ public abstract class AbstractPackageSanityTests extends TestCase {
    * Finds the classes not ending with a test suffix and not covered by an explicit test whose name
    * is {@code explicitTestName}.
    */
-  @VisibleForTesting
   List<Class<?>> findClassesToTest(
       Iterable<? extends Class<?>> classes, Iterable<String> explicitTestNames) {
     // "a.b.Foo" -> a.b.Foo.class
diff --git a/guava-testlib/src/com/google/common/testing/ArbitraryInstances.java b/guava-testlib/src/com/google/common/testing/ArbitraryInstances.java
index f38c52e..41644f2 100644
--- a/guava-testlib/src/com/google/common/testing/ArbitraryInstances.java
+++ b/guava-testlib/src/com/google/common/testing/ArbitraryInstances.java
@@ -18,8 +18,6 @@ package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Charsets;
 import com.google.common.base.Defaults;
@@ -32,20 +30,6 @@ import com.google.common.base.Stopwatch;
 import com.google.common.base.Ticker;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.ClassToInstanceMap;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableClassToInstanceMap;
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
-import com.google.common.collect.ImmutableSortedMap;
-import com.google.common.collect.ImmutableSortedMultiset;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.MapDifference;
@@ -147,7 +131,6 @@ import java.util.regex.MatchResult;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Stream;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Supplies an arbitrary "default" instance for a wide range of types, often useful in testing
@@ -171,8 +154,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Ben Yu
  * @since 12.0
  */
-@Beta
-@GwtIncompatible
 public final class ArbitraryInstances {
 
   private static final Ordering<Field> BY_FIELD_NAME =
@@ -336,7 +317,7 @@ public final class ArbitraryInstances {
   }
 
   @SuppressWarnings("unchecked") // it's a subtype map
-  private static <T> @Nullable Class<? extends T> getImplementation(Class<T> type) {
+  private static <T> Class<? extends T> getImplementation(Class<T> type) {
     return (Class<? extends T>) implementations.get(type);
   }
 
@@ -346,7 +327,7 @@ public final class ArbitraryInstances {
    * Returns an arbitrary instance for {@code type}, or {@code null} if no arbitrary instance can be
    * determined.
    */
-  public static <T> @Nullable T get(Class<T> type) {
+  public static <T> T get(Class<T> type) {
     T defaultValue = DEFAULTS.getInstance(type);
     if (defaultValue != null) {
       return defaultValue;
@@ -396,7 +377,7 @@ public final class ArbitraryInstances {
     }
   }
 
-  private static <T> @Nullable T arbitraryConstantInstanceOrNull(Class<T> type) {
+  private static <T> T arbitraryConstantInstanceOrNull(Class<T> type) {
     Field[] fields = type.getDeclaredFields();
     Arrays.sort(fields, BY_FIELD_NAME);
     for (Field field : fields) {
diff --git a/guava-testlib/src/com/google/common/testing/ClassSanityTester.java b/guava-testlib/src/com/google/common/testing/ClassSanityTester.java
index 0c8daf0..5bbf90b 100644
--- a/guava-testlib/src/com/google/common/testing/ClassSanityTester.java
+++ b/guava-testlib/src/com/google/common/testing/ClassSanityTester.java
@@ -19,15 +19,10 @@ package com.google.common.testing;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.throwIfUnchecked;
-import static com.google.common.testing.NullPointerTester.isNullable;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Joiner;
 import com.google.common.base.Objects;
 import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.MutableClassToInstanceMap;
@@ -52,7 +47,6 @@ import java.util.Map.Entry;
 import java.util.Set;
 import junit.framework.Assert;
 import junit.framework.AssertionFailedError;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tester that runs automated sanity tests for any given class. A typical use case is to test static
@@ -78,8 +72,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Ben Yu
  * @since 14.0
  */
-@Beta
-@GwtIncompatible
 public final class ClassSanityTester {
 
   private static final Ordering<Invokable<?, ?>> BY_METHOD_NAME =
@@ -334,7 +326,7 @@ public final class ClassSanityTester {
    * @return The instantiated instance, or {@code null} if the class has no non-private constructor
    *     or factory method to be constructed.
    */
-  <T> @Nullable T instantiate(Class<T> cls)
+  <T> T instantiate(Class<T> cls)
       throws ParameterNotInstantiableException, IllegalAccessException, InvocationTargetException,
           FactoryMethodReturnsNullException {
     if (cls.isEnum()) {
@@ -382,7 +374,7 @@ public final class ClassSanityTester {
    *     class, preventing its methods from being accessible.
    * @throws InvocationTargetException if a static method threw exception.
    */
-  private <T> @Nullable T instantiate(Invokable<?, ? extends T> factory)
+  private <T> T instantiate(Invokable<?, ? extends T> factory)
       throws ParameterNotInstantiableException, InvocationTargetException, IllegalAccessException {
     return invoke(factory, getDummyArguments(factory));
   }
@@ -662,7 +654,7 @@ public final class ClassSanityTester {
     return generator;
   }
 
-  private static @Nullable Object generateDummyArg(Parameter param, FreshValueGenerator generator)
+  private static Object generateDummyArg(Parameter param, FreshValueGenerator generator)
       throws ParameterNotInstantiableException {
     if (isNullable(param)) {
       return null;
@@ -758,7 +750,7 @@ public final class ClassSanityTester {
     return instance;
   }
 
-  private static <T> @Nullable T invoke(Invokable<?, ? extends T> factory, List<?> args)
+  private static <T> T invoke(Invokable<?, ? extends T> factory, List<?> args)
       throws InvocationTargetException, IllegalAccessException {
     T returnValue = factory.invoke(null, args.toArray());
     if (returnValue == null) {
@@ -772,7 +764,6 @@ public final class ClassSanityTester {
    * Thrown if the test tries to invoke a constructor or static factory method but failed because
    * the dummy value of a constructor or method parameter is unknown.
    */
-  @VisibleForTesting
   static class ParameterNotInstantiableException extends Exception {
     public ParameterNotInstantiableException(Parameter parameter) {
       super(
@@ -788,7 +779,6 @@ public final class ClassSanityTester {
    * parameter in order to test {@link Object#equals} and {@link Object#hashCode} of the declaring
    * class.
    */
-  @VisibleForTesting
   static class ParameterHasNoDistinctValueException extends Exception {
     ParameterHasNoDistinctValueException(Parameter parameter) {
       super(
@@ -803,7 +793,6 @@ public final class ClassSanityTester {
    * Thrown if the test tries to invoke a static factory method to test instance methods but the
    * factory returned null.
    */
-  @VisibleForTesting
   static class FactoryMethodReturnsNullException extends Exception {
     public FactoryMethodReturnsNullException(Invokable<?, ?> factory) {
       super(factory + " returns null and cannot be used to test instance methods.");
diff --git a/guava-testlib/src/com/google/common/testing/ClusterException.java b/guava-testlib/src/com/google/common/testing/ClusterException.java
index 7665ab1..7c6e601 100644
--- a/guava-testlib/src/com/google/common/testing/ClusterException.java
+++ b/guava-testlib/src/com/google/common/testing/ClusterException.java
@@ -16,7 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -58,7 +57,6 @@ import java.util.Collections;
  *
  * @author Luiz-Otavio Zorzella
  */
-@GwtCompatible
 final class ClusterException extends RuntimeException {
 
   public final Collection<? extends Throwable> exceptions;
diff --git a/guava-testlib/src/com/google/common/testing/CollectorTester.java b/guava-testlib/src/com/google/common/testing/CollectorTester.java
index 9478a1f..80dd399 100644
--- a/guava-testlib/src/com/google/common/testing/CollectorTester.java
+++ b/guava-testlib/src/com/google/common/testing/CollectorTester.java
@@ -19,8 +19,6 @@ package com.google.common.testing;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static junit.framework.Assert.assertTrue;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -29,7 +27,6 @@ import java.util.List;
 import java.util.Objects;
 import java.util.function.BiPredicate;
 import java.util.stream.Collector;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tester for {@code Collector} implementations.
@@ -46,8 +43,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 21.0
  */
-@Beta
-@GwtCompatible
 public final class CollectorTester<T, A, R> {
   /**
    * Creates a {@code CollectorTester} for the specified {@code Collector}. The result of the {@code
diff --git a/guava-testlib/src/com/google/common/testing/DummyProxy.java b/guava-testlib/src/com/google/common/testing/DummyProxy.java
index 85e229d..3c2ba4c 100644
--- a/guava-testlib/src/com/google/common/testing/DummyProxy.java
+++ b/guava-testlib/src/com/google/common/testing/DummyProxy.java
@@ -17,10 +17,7 @@
 package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.testing.NullPointerTester.isNullable;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Sets;
 import com.google.common.reflect.AbstractInvocationHandler;
 import com.google.common.reflect.Invokable;
@@ -36,7 +33,6 @@ import java.util.Set;
  *
  * @author Ben Yu
  */
-@GwtIncompatible
 abstract class DummyProxy {
 
   /**
diff --git a/guava-testlib/src/com/google/common/testing/EqualsTester.java b/guava-testlib/src/com/google/common/testing/EqualsTester.java
index 2c8e08b..acc03bc 100644
--- a/guava-testlib/src/com/google/common/testing/EqualsTester.java
+++ b/guava-testlib/src/com/google/common/testing/EqualsTester.java
@@ -20,10 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertTrue;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Equivalence;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import java.util.List;
@@ -74,8 +71,6 @@ import java.util.List;
  * @author Jige Yu
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public final class EqualsTester {
   private static final int REPETITIONS = 3;
 
diff --git a/guava-testlib/src/com/google/common/testing/EquivalenceTester.java b/guava-testlib/src/com/google/common/testing/EquivalenceTester.java
index ce1dc98..17aeea6 100644
--- a/guava-testlib/src/com/google/common/testing/EquivalenceTester.java
+++ b/guava-testlib/src/com/google/common/testing/EquivalenceTester.java
@@ -20,10 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertTrue;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Equivalence;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.testing.RelationshipTester.ItemReporter;
 import java.util.List;
@@ -49,8 +46,6 @@ import java.util.List;
  * @author Gregory Kick
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public final class EquivalenceTester<T> {
   private static final int REPETITIONS = 3;
 
diff --git a/guava-testlib/src/com/google/common/testing/FakeTicker.java b/guava-testlib/src/com/google/common/testing/FakeTicker.java
index cc18e65..150157a 100644
--- a/guava-testlib/src/com/google/common/testing/FakeTicker.java
+++ b/guava-testlib/src/com/google/common/testing/FakeTicker.java
@@ -18,9 +18,6 @@ package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ticker;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
@@ -36,8 +33,6 @@ import java.util.concurrent.atomic.AtomicLong;
  * @author Jige Yu
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public class FakeTicker extends Ticker {
 
   private final AtomicLong nanos = new AtomicLong();
@@ -61,7 +56,6 @@ public class FakeTicker extends Ticker {
    *
    * @since 28.0
    */
-  @GwtIncompatible
   public FakeTicker advance(java.time.Duration duration) {
     return advance(duration.toNanos());
   }
@@ -87,7 +81,6 @@ public class FakeTicker extends Ticker {
    *
    * @since 28.0
    */
-  @GwtIncompatible
   public FakeTicker setAutoIncrementStep(java.time.Duration autoIncrementStep) {
     return setAutoIncrementStep(autoIncrementStep.toNanos(), TimeUnit.NANOSECONDS);
   }
diff --git a/guava-testlib/src/com/google/common/testing/ForwardingWrapperTester.java b/guava-testlib/src/com/google/common/testing/ForwardingWrapperTester.java
index 4ee461e..747cef9 100644
--- a/guava-testlib/src/com/google/common/testing/ForwardingWrapperTester.java
+++ b/guava-testlib/src/com/google/common/testing/ForwardingWrapperTester.java
@@ -22,8 +22,6 @@ import static com.google.common.base.Throwables.throwIfUnchecked;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.fail;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Throwables;
 import com.google.common.collect.Lists;
@@ -53,8 +51,6 @@ import java.util.concurrent.atomic.AtomicInteger;
  * @author Ben Yu
  * @since 14.0
  */
-@Beta
-@GwtIncompatible
 public final class ForwardingWrapperTester {
 
   private boolean testsEquals = false;
diff --git a/guava-testlib/src/com/google/common/testing/FreshValueGenerator.java b/guava-testlib/src/com/google/common/testing/FreshValueGenerator.java
index e34b399..3a7f2c0 100644
--- a/guava-testlib/src/com/google/common/testing/FreshValueGenerator.java
+++ b/guava-testlib/src/com/google/common/testing/FreshValueGenerator.java
@@ -19,7 +19,6 @@ package com.google.common.testing;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.throwIfUnchecked;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Charsets;
 import com.google.common.base.Equivalence;
@@ -32,19 +31,6 @@ import com.google.common.collect.HashBasedTable;
 import com.google.common.collect.HashBiMap;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.HashMultiset;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
-import com.google.common.collect.ImmutableSortedMap;
-import com.google.common.collect.ImmutableSortedMultiset;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.LinkedHashMultimap;
 import com.google.common.collect.LinkedHashMultiset;
@@ -122,14 +108,12 @@ import java.util.TreeSet;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.regex.Pattern;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Generates fresh instances of types that are different from each other (if possible).
  *
  * @author Ben Yu
  */
-@GwtIncompatible
 class FreshValueGenerator {
 
   private static final ImmutableMap<Class<?>, Method> GENERATORS;
@@ -179,7 +163,7 @@ class FreshValueGenerator {
    *   <li>null if no value can be generated.
    * </ul>
    */
-  final @Nullable Object generateFresh(TypeToken<?> type) {
+  final Object generateFresh(TypeToken<?> type) {
     Object generated = generate(type);
     if (generated != null) {
       freshness.incrementAndGet();
@@ -187,7 +171,7 @@ class FreshValueGenerator {
     return generated;
   }
 
-  final <T> @Nullable T generateFresh(Class<T> type) {
+  final <T> T generateFresh(Class<T> type) {
     return Primitives.wrap(type).cast(generateFresh(TypeToken.of(type)));
   }
 
diff --git a/guava-testlib/src/com/google/common/testing/GcFinalization.java b/guava-testlib/src/com/google/common/testing/GcFinalization.java
index 015afea..f2e4950 100644
--- a/guava-testlib/src/com/google/common/testing/GcFinalization.java
+++ b/guava-testlib/src/com/google/common/testing/GcFinalization.java
@@ -18,11 +18,6 @@ package com.google.common.testing;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotMock;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
-import java.lang.ref.WeakReference;
 import java.util.Locale;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.CountDownLatch;
@@ -103,9 +98,7 @@ import java.util.concurrent.TimeoutException;
  * @author Martin Buchholz
  * @since 11.0
  */
-@Beta
-@GwtIncompatible
-@J2ObjCIncompatible // gc
+// gc
 public final class GcFinalization {
   private GcFinalization() {}
 
@@ -242,7 +235,6 @@ public final class GcFinalization {
    *   <li>enqueuing weak references to unreachable referents in their reference queue
    * </ul>
    */
-  @DoNotMock("Implement with a lambda")
   public interface FinalizationPredicate {
     boolean isDone();
   }
diff --git a/guava-testlib/src/com/google/common/testing/NullPointerTester.java b/guava-testlib/src/com/google/common/testing/NullPointerTester.java
index 8986d15..4259842 100644
--- a/guava-testlib/src/com/google/common/testing/NullPointerTester.java
+++ b/guava-testlib/src/com/google/common/testing/NullPointerTester.java
@@ -19,13 +19,9 @@ package com.google.common.testing;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.base.Objects;
 import com.google.common.collect.ClassToInstanceMap;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.MutableClassToInstanceMap;
@@ -49,7 +45,6 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.function.Function;
 import junit.framework.Assert;
 import junit.framework.AssertionFailedError;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A test utility that verifies that your methods and constructors throw {@link
@@ -68,8 +63,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@Beta
-@GwtIncompatible
 public final class NullPointerTester {
 
   private final ClassToInstanceMap<Object> defaults = MutableClassToInstanceMap.create();
diff --git a/guava-testlib/src/com/google/common/testing/Platform.java b/guava-testlib/src/com/google/common/testing/Platform.java
index b107966..fa4ccdb 100644
--- a/guava-testlib/src/com/google/common/testing/Platform.java
+++ b/guava-testlib/src/com/google/common/testing/Platform.java
@@ -18,7 +18,6 @@ package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -30,7 +29,6 @@ import java.io.ObjectOutputStream;
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 final class Platform {
   /** Serializes and deserializes the specified object. */
   @SuppressWarnings("unchecked")
diff --git a/guava-testlib/src/com/google/common/testing/RelationshipTester.java b/guava-testlib/src/com/google/common/testing/RelationshipTester.java
index 5adf010..04bd05f 100644
--- a/guava-testlib/src/com/google/common/testing/RelationshipTester.java
+++ b/guava-testlib/src/com/google/common/testing/RelationshipTester.java
@@ -18,9 +18,7 @@ package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Equivalence;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import java.util.List;
 import junit.framework.AssertionFailedError;
@@ -31,7 +29,6 @@ import junit.framework.AssertionFailedError;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 final class RelationshipTester<T> {
 
   static class ItemReporter {
diff --git a/guava-testlib/src/com/google/common/testing/SerializableTester.java b/guava-testlib/src/com/google/common/testing/SerializableTester.java
index 6298076..55b4533 100644
--- a/guava-testlib/src/com/google/common/testing/SerializableTester.java
+++ b/guava-testlib/src/com/google/common/testing/SerializableTester.java
@@ -16,8 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.Assert;
 import junit.framework.AssertionFailedError;
 
@@ -32,8 +30,7 @@ import junit.framework.AssertionFailedError;
  * @author Mike Bostock
  * @since 10.0
  */
-@Beta
-@GwtCompatible // but no-op!
+// but no-op!
 public final class SerializableTester {
   private SerializableTester() {}
 
diff --git a/guava-testlib/src/com/google/common/testing/SloppyTearDown.java b/guava-testlib/src/com/google/common/testing/SloppyTearDown.java
index 95ff34e..abba185 100644
--- a/guava-testlib/src/com/google/common/testing/SloppyTearDown.java
+++ b/guava-testlib/src/com/google/common/testing/SloppyTearDown.java
@@ -16,8 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -30,8 +28,6 @@ import java.util.logging.Logger;
  * @author Luiz-Otavio Zorzella
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public abstract class SloppyTearDown implements TearDown {
   private static final Logger logger = Logger.getLogger(SloppyTearDown.class.getName());
 
diff --git a/guava-testlib/src/com/google/common/testing/TearDown.java b/guava-testlib/src/com/google/common/testing/TearDown.java
index 9582525..f6e55f5 100644
--- a/guava-testlib/src/com/google/common/testing/TearDown.java
+++ b/guava-testlib/src/com/google/common/testing/TearDown.java
@@ -16,8 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * An object that can perform a {@link #tearDown} operation.
@@ -25,9 +23,7 @@ import com.google.common.annotations.GwtCompatible;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@Beta
 @FunctionalInterface
-@GwtCompatible
 public interface TearDown {
   /**
    * Performs a <b>single</b> tear-down operation. See test-libraries-for-java's {@code
diff --git a/guava-testlib/src/com/google/common/testing/TearDownAccepter.java b/guava-testlib/src/com/google/common/testing/TearDownAccepter.java
index bad1f19..96d2183 100644
--- a/guava-testlib/src/com/google/common/testing/TearDownAccepter.java
+++ b/guava-testlib/src/com/google/common/testing/TearDownAccepter.java
@@ -16,9 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Any object which can accept registrations of {@link TearDown} instances.
@@ -26,9 +23,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@Beta
-@DoNotMock("Implement with a lambda")
-@GwtCompatible
 public interface TearDownAccepter {
   /**
    * Registers a TearDown implementor which will be run after the test proper.
diff --git a/guava-testlib/src/com/google/common/testing/TearDownStack.java b/guava-testlib/src/com/google/common/testing/TearDownStack.java
index bab025a..0596404 100644
--- a/guava-testlib/src/com/google/common/testing/TearDownStack.java
+++ b/guava-testlib/src/com/google/common/testing/TearDownStack.java
@@ -18,10 +18,7 @@ package com.google.common.testing;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Lists;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
@@ -36,12 +33,9 @@ import java.util.logging.Logger;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public class TearDownStack implements TearDownAccepter {
   private static final Logger logger = Logger.getLogger(TearDownStack.class.getName());
 
-  @GuardedBy("stack")
   final LinkedList<TearDown> stack = new LinkedList<>();
 
   private final boolean suppressThrows;
diff --git a/guava-testlib/src/com/google/common/testing/TestLogHandler.java b/guava-testlib/src/com/google/common/testing/TestLogHandler.java
index e63d11f..96e5ee2 100644
--- a/guava-testlib/src/com/google/common/testing/TestLogHandler.java
+++ b/guava-testlib/src/com/google/common/testing/TestLogHandler.java
@@ -16,14 +16,11 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.logging.Handler;
 import java.util.logging.LogRecord;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tests may use this to intercept messages that are logged by the code under test. Example:
@@ -52,8 +49,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 public class TestLogHandler extends Handler {
   /** We will keep a private list of all logged records */
   private final List<LogRecord> list = new ArrayList<>();
diff --git a/guava-testlib/src/com/google/common/util/concurrent/testing/AbstractListenableFutureTest.java b/guava-testlib/src/com/google/common/util/concurrent/testing/AbstractListenableFutureTest.java
index 2ba7515..c438306 100644
--- a/guava-testlib/src/com/google/common/util/concurrent/testing/AbstractListenableFutureTest.java
+++ b/guava-testlib/src/com/google/common/util/concurrent/testing/AbstractListenableFutureTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.util.concurrent.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.CountDownLatch;
@@ -36,8 +34,6 @@ import junit.framework.TestCase;
  * @author Sven Mawson
  * @since 10.0
  */
-@Beta
-@GwtIncompatible
 public abstract class AbstractListenableFutureTest extends TestCase {
 
   protected CountDownLatch latch;
diff --git a/guava-testlib/src/com/google/common/util/concurrent/testing/MockFutureListener.java b/guava-testlib/src/com/google/common/util/concurrent/testing/MockFutureListener.java
index fc3ed21..987fd65 100644
--- a/guava-testlib/src/com/google/common/util/concurrent/testing/MockFutureListener.java
+++ b/guava-testlib/src/com/google/common/util/concurrent/testing/MockFutureListener.java
@@ -18,8 +18,6 @@ package com.google.common.util.concurrent.testing;
 
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
@@ -32,8 +30,6 @@ import junit.framework.Assert;
  * @author Nishant Thakkar
  * @since 10.0
  */
-@Beta
-@GwtIncompatible
 public class MockFutureListener implements Runnable {
   private final CountDownLatch countDownLatch;
   private final ListenableFuture<?> future;
diff --git a/guava-testlib/src/com/google/common/util/concurrent/testing/SameThreadScheduledExecutorService.java b/guava-testlib/src/com/google/common/util/concurrent/testing/SameThreadScheduledExecutorService.java
index c232218..b2595bd 100644
--- a/guava-testlib/src/com/google/common/util/concurrent/testing/SameThreadScheduledExecutorService.java
+++ b/guava-testlib/src/com/google/common/util/concurrent/testing/SameThreadScheduledExecutorService.java
@@ -18,7 +18,6 @@ package com.google.common.util.concurrent.testing;
 
 import static com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -43,7 +42,6 @@ import java.util.concurrent.TimeoutException;
  * @author John Sirois
  * @author Zach van Schouwen
  */
-@GwtIncompatible
 class SameThreadScheduledExecutorService extends AbstractExecutorService
     implements ListeningScheduledExecutorService {
 
diff --git a/guava-testlib/src/com/google/common/util/concurrent/testing/TestingExecutors.java b/guava-testlib/src/com/google/common/util/concurrent/testing/TestingExecutors.java
index 4212430..b8a6dc9 100644
--- a/guava-testlib/src/com/google/common/util/concurrent/testing/TestingExecutors.java
+++ b/guava-testlib/src/com/google/common/util/concurrent/testing/TestingExecutors.java
@@ -16,9 +16,6 @@
 
 package com.google.common.util.concurrent.testing;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.primitives.Longs;
 import com.google.common.util.concurrent.AbstractFuture;
 import com.google.common.util.concurrent.AbstractListeningExecutorService;
@@ -37,8 +34,6 @@ import java.util.concurrent.TimeUnit;
  * @author Chris Nokleberg
  * @since 14.0
  */
-@Beta
-@GwtIncompatible
 public final class TestingExecutors {
   private TestingExecutors() {}
 
diff --git a/guava-testlib/test/com/google/common/collect/testing/HelpersTest.java b/guava-testlib/test/com/google/common/collect/testing/HelpersTest.java
index 41f4bfb..366d4fd 100644
--- a/guava-testlib/test/com/google/common/collect/testing/HelpersTest.java
+++ b/guava-testlib/test/com/google/common/collect/testing/HelpersTest.java
@@ -19,7 +19,6 @@ package com.google.common.collect.testing;
 import static com.google.common.collect.testing.Helpers.NullsBeforeB;
 import static com.google.common.collect.testing.Helpers.testComparator;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -35,7 +34,6 @@ import junit.framework.TestCase;
  *
  * @author Chris Povirk
  */
-@GwtCompatible
 public class HelpersTest extends TestCase {
   public void testNullsBeforeB() {
     testComparator(NullsBeforeB.INSTANCE, "a", "azzzzzz", null, "b", "c");
diff --git a/guava-testlib/test/com/google/common/collect/testing/IteratorTesterTest.java b/guava-testlib/test/com/google/common/collect/testing/IteratorTesterTest.java
index 283f51e..1619ad5 100644
--- a/guava-testlib/test/com/google/common/collect/testing/IteratorTesterTest.java
+++ b/guava-testlib/test/com/google/common/collect/testing/IteratorTesterTest.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.testing.IteratorFeature.MODIFIABLE;
 import static java.util.Collections.emptyList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import java.util.Iterator;
 import java.util.List;
@@ -34,7 +32,6 @@ import junit.framework.TestCase;
  *
  * @author Mick Killianey
  */
-@GwtCompatible
 @SuppressWarnings("serial") // No serialization is used in this test
 public class IteratorTesterTest extends TestCase {
 
diff --git a/guava-testlib/test/com/google/common/collect/testing/MinimalIterableTest.java b/guava-testlib/test/com/google/common/collect/testing/MinimalIterableTest.java
index f6fae31..16feb04 100644
--- a/guava-testlib/test/com/google/common/collect/testing/MinimalIterableTest.java
+++ b/guava-testlib/test/com/google/common/collect/testing/MinimalIterableTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
@@ -27,7 +26,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class MinimalIterableTest extends TestCase {
 
   public void testOf_empty() {
diff --git a/guava-testlib/test/com/google/common/collect/testing/SafeTreeMapTest.java b/guava-testlib/test/com/google/common/collect/testing/SafeTreeMapTest.java
index f03ff0a..f62be76 100644
--- a/guava-testlib/test/com/google/common/collect/testing/SafeTreeMapTest.java
+++ b/guava-testlib/test/com/google/common/collect/testing/SafeTreeMapTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect.testing;
 
 import static java.util.Collections.sort;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSortedMap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.testing.Helpers.NullsBeforeTwo;
@@ -101,7 +99,7 @@ public class SafeTreeMapTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testViewSerialization() {
     Map<String, Integer> map = ImmutableSortedMap.of("one", 1, "two", 2, "three", 3);
     SerializableTester.reserializeAndAssert(map.entrySet());
@@ -111,7 +109,7 @@ public class SafeTreeMapTest extends TestCase {
         Lists.newArrayList(SerializableTester.reserialize(map.values())));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public static class ReserializedMapTests extends SortedMapInterfaceTest<String, Integer> {
     public ReserializedMapTests() {
       super(false, true, true, true, true);
diff --git a/guava-testlib/test/com/google/common/collect/testing/SafeTreeSetTest.java b/guava-testlib/test/com/google/common/collect/testing/SafeTreeSetTest.java
index ea5a784..5512395 100644
--- a/guava-testlib/test/com/google/common/collect/testing/SafeTreeSetTest.java
+++ b/guava-testlib/test/com/google/common/collect/testing/SafeTreeSetTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect.testing;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSortedMap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.Sets;
@@ -83,7 +81,7 @@ public class SafeTreeSetTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testViewSerialization() {
     Map<String, Integer> map = ImmutableSortedMap.of("one", 1, "two", 2, "three", 3);
     SerializableTester.reserializeAndAssert(map.entrySet());
@@ -93,14 +91,14 @@ public class SafeTreeSetTest extends TestCase {
         Lists.newArrayList(SerializableTester.reserialize(map.values())));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testEmpty_serialization() {
     SortedSet<String> set = new SafeTreeSet<>();
     SortedSet<String> copy = SerializableTester.reserializeAndAssert(set);
     assertEquals(set.comparator(), copy.comparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSingle_serialization() {
     SortedSet<String> set = new SafeTreeSet<>();
     set.add("e");
@@ -108,7 +106,7 @@ public class SafeTreeSetTest extends TestCase {
     assertEquals(set.comparator(), copy.comparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSeveral_serialization() {
     SortedSet<String> set = new SafeTreeSet<>();
     set.add("a");
diff --git a/guava-testlib/test/com/google/common/collect/testing/features/AndroidIncompatible.java b/guava-testlib/test/com/google/common/collect/testing/features/AndroidIncompatible.java
index 46c2123..c29bca3 100644
--- a/guava-testlib/test/com/google/common/collect/testing/features/AndroidIncompatible.java
+++ b/guava-testlib/test/com/google/common/collect/testing/features/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-testlib/test/com/google/common/collect/testing/features/FeatureUtilTest.java b/guava-testlib/test/com/google/common/collect/testing/features/FeatureUtilTest.java
index 37af90b..e0beeca 100644
--- a/guava-testlib/test/com/google/common/collect/testing/features/FeatureUtilTest.java
+++ b/guava-testlib/test/com/google/common/collect/testing/features/FeatureUtilTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect.testing.features;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
diff --git a/guava-testlib/test/com/google/common/testing/AbstractPackageSanityTestsTest.java b/guava-testlib/test/com/google/common/testing/AbstractPackageSanityTestsTest.java
index cb6ba6a..38f2698 100644
--- a/guava-testlib/test/com/google/common/testing/AbstractPackageSanityTestsTest.java
+++ b/guava-testlib/test/com/google/common/testing/AbstractPackageSanityTestsTest.java
@@ -19,7 +19,6 @@ package com.google.common.testing;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
 import java.util.Arrays;
 import java.util.List;
 import junit.framework.TestCase;
diff --git a/guava-testlib/test/com/google/common/testing/AndroidIncompatible.java b/guava-testlib/test/com/google/common/testing/AndroidIncompatible.java
index 326d7b8..e354a5e 100644
--- a/guava-testlib/test/com/google/common/testing/AndroidIncompatible.java
+++ b/guava-testlib/test/com/google/common/testing/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-testlib/test/com/google/common/testing/ArbitraryInstancesTest.java b/guava-testlib/test/com/google/common/testing/ArbitraryInstancesTest.java
index dfd26a0..fd170a2 100644
--- a/guava-testlib/test/com/google/common/testing/ArbitraryInstancesTest.java
+++ b/guava-testlib/test/com/google/common/testing/ArbitraryInstancesTest.java
@@ -28,19 +28,6 @@ import com.google.common.base.Stopwatch;
 import com.google.common.base.Ticker;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.ClassToInstanceMap;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableClassToInstanceMap;
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
-import com.google.common.collect.ImmutableSortedMap;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.MapDifference;
 import com.google.common.collect.Multimap;
diff --git a/guava-testlib/test/com/google/common/testing/ClassSanityTesterTest.java b/guava-testlib/test/com/google/common/testing/ClassSanityTesterTest.java
index c5db2d5..d3b7fa5 100644
--- a/guava-testlib/test/com/google/common/testing/ClassSanityTesterTest.java
+++ b/guava-testlib/test/com/google/common/testing/ClassSanityTesterTest.java
@@ -21,7 +21,6 @@ import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Functions;
 import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.ClassSanityTester.FactoryMethodReturnsNullException;
 import com.google.common.testing.ClassSanityTester.ParameterHasNoDistinctValueException;
 import com.google.common.testing.ClassSanityTester.ParameterNotInstantiableException;
@@ -38,7 +37,6 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Unit tests for {@link ClassSanityTester}.
@@ -289,7 +287,7 @@ public class ClassSanityTesterTest extends TestCase {
   }
 
   public static class FactoryThatReturnsNullAndAnnotated {
-    public static @Nullable Object bad() {
+    public static Object bad() {
       return null;
     }
   }
@@ -758,7 +756,7 @@ public class ClassSanityTesterTest extends TestCase {
 
     // keep trying
     @SuppressWarnings("unused")
-    public static @Nullable GoodEquals createMayReturnNull(int a, int b) {
+    public static GoodEquals createMayReturnNull(int a, int b) {
       return null;
     }
 
@@ -1189,7 +1187,7 @@ public class ClassSanityTesterTest extends TestCase {
   static class FactoryMethodReturnsNullAndAnnotated {
     private FactoryMethodReturnsNullAndAnnotated() {}
 
-    public static @Nullable FactoryMethodReturnsNullAndAnnotated returnsNull() {
+    public static FactoryMethodReturnsNullAndAnnotated returnsNull() {
       return null;
     }
   }
diff --git a/guava-testlib/test/com/google/common/testing/EqualsTesterTest.java b/guava-testlib/test/com/google/common/testing/EqualsTesterTest.java
index d615af6..52808db 100644
--- a/guava-testlib/test/com/google/common/testing/EqualsTesterTest.java
+++ b/guava-testlib/test/com/google/common/testing/EqualsTesterTest.java
@@ -16,9 +16,7 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Sets;
 import java.util.Set;
 import junit.framework.AssertionFailedError;
@@ -29,7 +27,6 @@ import junit.framework.TestCase;
  *
  * @author Jim McMaster
  */
-@GwtCompatible
 @SuppressWarnings("MissingTestCall")
 public class EqualsTesterTest extends TestCase {
   private ValidTestObject reference;
diff --git a/guava-testlib/test/com/google/common/testing/EquivalenceTesterTest.java b/guava-testlib/test/com/google/common/testing/EquivalenceTesterTest.java
index d612b2c..7f2d37d 100644
--- a/guava-testlib/test/com/google/common/testing/EquivalenceTesterTest.java
+++ b/guava-testlib/test/com/google/common/testing/EquivalenceTesterTest.java
@@ -19,11 +19,8 @@ package com.google.common.testing;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Equivalence;
 import com.google.common.base.MoreObjects;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableTable;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
@@ -32,7 +29,6 @@ import junit.framework.TestCase;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 public class EquivalenceTesterTest extends TestCase {
   private EquivalenceTester<Object> tester;
   private MockEquivalence equivalenceMock;
diff --git a/guava-testlib/test/com/google/common/testing/FakeTickerTest.java b/guava-testlib/test/com/google/common/testing/FakeTickerTest.java
index 1372b45..458ae2b 100644
--- a/guava-testlib/test/com/google/common/testing/FakeTickerTest.java
+++ b/guava-testlib/test/com/google/common/testing/FakeTickerTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.testing;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.EnumSet;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CountDownLatch;
@@ -32,16 +30,15 @@ import junit.framework.TestCase;
  *
  * @author Jige Yu
  */
-@GwtCompatible(emulated = true)
 public class FakeTickerTest extends TestCase {
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(new FakeTicker());
   }
 
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public void testAdvance() {
     FakeTicker ticker = new FakeTicker();
     assertEquals(0, ticker.read());
@@ -79,7 +76,7 @@ public class FakeTickerTest extends TestCase {
     assertEquals(6000000000L, ticker.read());
   }
 
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public void testAutoIncrementStep_duration() {
     FakeTicker ticker = new FakeTicker().setAutoIncrementStep(java.time.Duration.ofMillis(1));
     assertEquals(0, ticker.read());
@@ -111,7 +108,7 @@ public class FakeTickerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // concurrency
+  // concurrency
 
   public void testConcurrentAdvance() throws Exception {
     final FakeTicker ticker = new FakeTicker();
@@ -133,7 +130,7 @@ public class FakeTickerTest extends TestCase {
     assertEquals(numberOfThreads * 2, ticker.read());
   }
 
-  @GwtIncompatible // concurrency
+  // concurrency
 
   public void testConcurrentAutoIncrementStep() throws Exception {
     int incrementByNanos = 3;
@@ -155,7 +152,7 @@ public class FakeTickerTest extends TestCase {
   }
 
   /** Runs {@code callable} concurrently {@code numberOfThreads} times. */
-  @GwtIncompatible // concurrency
+  // concurrency
   private void runConcurrentTest(int numberOfThreads, final Callable<Void> callable)
       throws Exception {
     ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);
diff --git a/guava-testlib/test/com/google/common/testing/FreshValueGeneratorTest.java b/guava-testlib/test/com/google/common/testing/FreshValueGeneratorTest.java
index baf6536..239c56e 100644
--- a/guava-testlib/test/com/google/common/testing/FreshValueGeneratorTest.java
+++ b/guava-testlib/test/com/google/common/testing/FreshValueGeneratorTest.java
@@ -29,19 +29,6 @@ import com.google.common.collect.HashBasedTable;
 import com.google.common.collect.HashBiMap;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.HashMultiset;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
-import com.google.common.collect.ImmutableSortedMap;
-import com.google.common.collect.ImmutableSortedMultiset;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.LinkedHashMultimap;
 import com.google.common.collect.LinkedHashMultiset;
 import com.google.common.collect.ListMultimap;
diff --git a/guava-testlib/test/com/google/common/testing/GcFinalizationTest.java b/guava-testlib/test/com/google/common/testing/GcFinalizationTest.java
index 645eda0..34b9eb1 100644
--- a/guava-testlib/test/com/google/common/testing/GcFinalizationTest.java
+++ b/guava-testlib/test/com/google/common/testing/GcFinalizationTest.java
@@ -20,8 +20,6 @@ import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.testing.GcFinalization.FinalizationPredicate;
 import com.google.common.util.concurrent.SettableFuture;
-import java.lang.ref.WeakReference;
-import java.util.WeakHashMap;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicBoolean;
 import junit.framework.TestCase;
diff --git a/guava-testlib/test/com/google/common/testing/NullPointerTesterTest.java b/guava-testlib/test/com/google/common/testing/NullPointerTesterTest.java
index a5a20ec..9fe213c 100644
--- a/guava-testlib/test/com/google/common/testing/NullPointerTesterTest.java
+++ b/guava-testlib/test/com/google/common/testing/NullPointerTesterTest.java
@@ -23,20 +23,12 @@ import static com.google.common.truth.Truth.assertThat;
 import com.google.common.base.Converter;
 import com.google.common.base.Function;
 import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Table;
 import com.google.common.reflect.TypeToken;
 import com.google.common.testing.NullPointerTester.Visibility;
-import com.google.common.testing.anotherpackage.SomeClassThatDoesNotUseNullable;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.util.List;
@@ -46,7 +38,6 @@ import java.util.Set;
 import java.util.SortedSet;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Unit test for {@link NullPointerTester}.
@@ -1485,7 +1476,7 @@ public class NullPointerTesterTest extends TestCase {
     fail("Should detect problem in " + FailOnOneOfTwoConstructors.class.getSimpleName());
   }
 
-  public static class NullBounds<T extends @Nullable Object, U extends T, X> {
+  public static class NullBounds<T extends Object, U extends T, X> {
     boolean xWasCalled;
 
     @SuppressWarnings("unused") // Called by reflection
@@ -1507,12 +1498,12 @@ public class NullPointerTesterTest extends TestCase {
     }
 
     @SuppressWarnings("unused") // Called by reflection
-    public <A extends @Nullable Object> void a(A a) {
+    public <A extends Object> void a(A a) {
       fail("Method with parameter <A extends @Nullable Object> should not be called");
     }
 
     @SuppressWarnings("unused") // Called by reflection
-    public <A extends B, B extends @Nullable Object> void b(A a) {
+    public <A extends B, B extends Object> void b(A a) {
       fail(
           "Method with parameter <A extends B> where <B extends @Nullable Object> should not be"
               + " called");
diff --git a/guava-testlib/test/com/google/common/testing/TearDownStackTest.java b/guava-testlib/test/com/google/common/testing/TearDownStackTest.java
index 5a4f9ed..d693ce0 100644
--- a/guava-testlib/test/com/google/common/testing/TearDownStackTest.java
+++ b/guava-testlib/test/com/google/common/testing/TearDownStackTest.java
@@ -18,11 +18,9 @@ package com.google.common.testing;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /** @author Luiz-Otavio "Z" Zorzella */
-@GwtCompatible
 public class TearDownStackTest extends TestCase {
 
   private TearDownStack tearDownStack = new TearDownStack();
diff --git a/guava-testlib/test/com/google/common/util/concurrent/testing/TestingExecutorsTest.java b/guava-testlib/test/com/google/common/util/concurrent/testing/TestingExecutorsTest.java
index 66ad784..563794a 100644
--- a/guava-testlib/test/com/google/common/util/concurrent/testing/TestingExecutorsTest.java
+++ b/guava-testlib/test/com/google/common/util/concurrent/testing/TestingExecutorsTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.util.concurrent.testing;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.ListeningScheduledExecutorService;
 import java.util.List;
 import java.util.concurrent.Callable;
diff --git a/guava-tests/benchmark/com/google/common/collect/ConcurrentHashMultisetBenchmark.java b/guava-tests/benchmark/com/google/common/collect/ConcurrentHashMultisetBenchmark.java
index 322dd54..974307a 100644
--- a/guava-tests/benchmark/com/google/common/collect/ConcurrentHashMultisetBenchmark.java
+++ b/guava-tests/benchmark/com/google/common/collect/ConcurrentHashMultisetBenchmark.java
@@ -22,7 +22,6 @@ import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import com.google.caliper.BeforeExperiment;
 import com.google.caliper.Benchmark;
 import com.google.caliper.Param;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.primitives.Ints;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import java.util.Iterator;
@@ -37,7 +36,6 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Benchmarks for {@link ConcurrentHashMultiset}.
@@ -177,7 +175,6 @@ public class ConcurrentHashMultisetBenchmark {
       return new OldConcurrentHashMultiset<E>(new ConcurrentHashMap<E, Integer>());
     }
 
-    @VisibleForTesting
     OldConcurrentHashMultiset(ConcurrentMap<E, Integer> countMap) {
       checkArgument(countMap.isEmpty());
       this.countMap = countMap;
diff --git a/guava-tests/benchmark/com/google/common/math/QuantilesBenchmark.java b/guava-tests/benchmark/com/google/common/math/QuantilesBenchmark.java
index 6830482..d5cc69d 100644
--- a/guava-tests/benchmark/com/google/common/math/QuantilesBenchmark.java
+++ b/guava-tests/benchmark/com/google/common/math/QuantilesBenchmark.java
@@ -21,7 +21,6 @@ import com.google.caliper.Benchmark;
 import com.google.caliper.Param;
 import com.google.common.collect.ContiguousSet;
 import com.google.common.collect.DiscreteDomain;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Range;
 import java.util.Random;
 
diff --git a/guava-tests/benchmark/com/google/common/util/concurrent/ExecutionListBenchmark.java b/guava-tests/benchmark/com/google/common/util/concurrent/ExecutionListBenchmark.java
index ed27840..1d897bf 100644
--- a/guava-tests/benchmark/com/google/common/util/concurrent/ExecutionListBenchmark.java
+++ b/guava-tests/benchmark/com/google/common/util/concurrent/ExecutionListBenchmark.java
@@ -27,7 +27,6 @@ import com.google.caliper.api.VmOptions;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.AbstractFutureBenchmarks.OldAbstractFuture;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.util.Queue;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.CountDownLatch;
@@ -38,7 +37,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Benchmarks for {@link ExecutionList}. */
 @VmOptions({"-Xms8g", "-Xmx8g"})
@@ -439,10 +437,8 @@ public class ExecutionListBenchmark {
   private static final class NewExecutionListWithoutReverse {
     static final Logger log = Logger.getLogger(NewExecutionListWithoutReverse.class.getName());
 
-    @GuardedBy("this")
     private RunnableExecutorPair runnables;
 
-    @GuardedBy("this")
     private boolean executed;
 
     public void add(Runnable runnable, Executor executor) {
@@ -488,7 +484,7 @@ public class ExecutionListBenchmark {
     private static final class RunnableExecutorPair {
       final Runnable runnable;
       final Executor executor;
-      @Nullable RunnableExecutorPair next;
+      RunnableExecutorPair next;
 
       RunnableExecutorPair(Runnable runnable, Executor executor, RunnableExecutorPair next) {
         this.runnable = runnable;
@@ -503,13 +499,10 @@ public class ExecutionListBenchmark {
   private static final class NewExecutionListQueue {
     static final Logger log = Logger.getLogger(NewExecutionListQueue.class.getName());
 
-    @GuardedBy("this")
     private RunnableExecutorPair head;
 
-    @GuardedBy("this")
     private RunnableExecutorPair tail;
 
-    @GuardedBy("this")
     private boolean executed;
 
     public void add(Runnable runnable, Executor executor) {
@@ -563,7 +556,7 @@ public class ExecutionListBenchmark {
     private static final class RunnableExecutorPair {
       Runnable runnable;
       Executor executor;
-      @Nullable RunnableExecutorPair next;
+      RunnableExecutorPair next;
 
       RunnableExecutorPair(Runnable runnable, Executor executor) {
         this.runnable = runnable;
@@ -669,7 +662,7 @@ public class ExecutionListBenchmark {
       final Runnable runnable;
       final Executor executor;
       // Volatile because this is written on one thread and read on another with no synchronization.
-      @Nullable volatile RunnableExecutorPair next;
+      volatile RunnableExecutorPair next;
 
       RunnableExecutorPair(Runnable runnable, Executor executor) {
         this.runnable = runnable;
diff --git a/guava-tests/benchmark/com/google/common/util/concurrent/FuturesGetCheckedBenchmark.java b/guava-tests/benchmark/com/google/common/util/concurrent/FuturesGetCheckedBenchmark.java
index c25a8ff..698b6ab 100644
--- a/guava-tests/benchmark/com/google/common/util/concurrent/FuturesGetCheckedBenchmark.java
+++ b/guava-tests/benchmark/com/google/common/util/concurrent/FuturesGetCheckedBenchmark.java
@@ -29,7 +29,6 @@ import static com.google.common.util.concurrent.FuturesGetChecked.weakSetValidat
 import com.google.caliper.BeforeExperiment;
 import com.google.caliper.Benchmark;
 import com.google.caliper.Param;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.util.concurrent.FuturesGetChecked.GetCheckedTypeValidator;
 import java.io.IOException;
 import java.net.URISyntaxException;
diff --git a/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedArrayBlockingQueue.java b/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedArrayBlockingQueue.java
index dafb39b..c19d37b 100644
--- a/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedArrayBlockingQueue.java
+++ b/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedArrayBlockingQueue.java
@@ -17,7 +17,6 @@
 package com.google.common.util.concurrent;
 
 import com.google.common.collect.ObjectArrays;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.AbstractQueue;
 import java.util.Collection;
 import java.util.ConcurrentModificationException;
@@ -25,7 +24,6 @@ import java.util.Iterator;
 import java.util.NoSuchElementException;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A bounded {@linkplain BlockingQueue blocking queue} backed by an array. This queue orders
@@ -51,7 +49,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Justin T. Sampson
  * @param <E> the type of elements held in this collection
  */
-@CanIgnoreReturnValue
 public class MonitorBasedArrayBlockingQueue<E> extends AbstractQueue<E>
     implements BlockingQueue<E> {
 
diff --git a/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedPriorityBlockingQueue.java b/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedPriorityBlockingQueue.java
index 16b648b..f8c9075 100644
--- a/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedPriorityBlockingQueue.java
+++ b/guava-tests/benchmark/com/google/common/util/concurrent/MonitorBasedPriorityBlockingQueue.java
@@ -18,7 +18,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.AbstractQueue;
 import java.util.Collection;
 import java.util.Comparator;
@@ -30,7 +29,6 @@ import java.util.Queue;
 import java.util.SortedSet;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An unbounded {@linkplain BlockingQueue blocking queue} that uses the same ordering rules as class
@@ -76,7 +74,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Justin T. Sampson
  * @param <E> the type of elements held in this collection
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
+// TODO(cpovirk): Consider being more strict.
 public class MonitorBasedPriorityBlockingQueue<E> extends AbstractQueue<E>
     implements BlockingQueue<E> {
 
diff --git a/guava-tests/benchmark/com/google/common/util/concurrent/StripedBenchmark.java b/guava-tests/benchmark/com/google/common/util/concurrent/StripedBenchmark.java
index 03c90d3..eec9c9a 100644
--- a/guava-tests/benchmark/com/google/common/util/concurrent/StripedBenchmark.java
+++ b/guava-tests/benchmark/com/google/common/util/concurrent/StripedBenchmark.java
@@ -25,7 +25,6 @@ import com.google.caliper.Param;
 import com.google.caliper.api.Footprint;
 import com.google.caliper.api.VmOptions;
 import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
 import com.google.common.primitives.Ints;
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/guava-tests/test/com/google/common/base/AbstractIteratorTest.java b/guava-tests/test/com/google/common/base/AbstractIteratorTest.java
index da732bf..b519f93 100644
--- a/guava-tests/test/com/google/common/base/AbstractIteratorTest.java
+++ b/guava-tests/test/com/google/common/base/AbstractIteratorTest.java
@@ -16,10 +16,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.GcFinalization;
-import java.lang.ref.WeakReference;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import junit.framework.TestCase;
@@ -29,7 +26,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class AbstractIteratorTest extends TestCase {
 
   public void testDefaultBehaviorOfNextAndHasNext() {
@@ -172,7 +168,7 @@ public class AbstractIteratorTest extends TestCase {
   }
 
 
-  @GwtIncompatible // weak references
+  // weak references
   public void testFreesNextReference() {
     Iterator<Object> itr =
         new AbstractIterator<Object>() {
diff --git a/guava-tests/test/com/google/common/base/AndroidIncompatible.java b/guava-tests/test/com/google/common/base/AndroidIncompatible.java
index 5e190a3..fccbb12 100644
--- a/guava-tests/test/com/google/common/base/AndroidIncompatible.java
+++ b/guava-tests/test/com/google/common/base/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -66,5 +65,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-tests/test/com/google/common/base/AsciiTest.java b/guava-tests/test/com/google/common/base/AsciiTest.java
index d3a1f8f..c6b864b 100644
--- a/guava-tests/test/com/google/common/base/AsciiTest.java
+++ b/guava-tests/test/com/google/common/base/AsciiTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import junit.framework.TestCase;
 
 /**
@@ -25,7 +23,6 @@ import junit.framework.TestCase;
  *
  * @author Craig Berry
  */
-@GwtCompatible
 public class AsciiTest extends TestCase {
 
   /**
@@ -139,7 +136,7 @@ public class AsciiTest extends TestCase {
     assertFalse(Ascii.equalsIgnoreCase("[", "{"));
   }
 
-  @GwtIncompatible // String.toUpperCase() has browser semantics
+  // String.toUpperCase() has browser semantics
   public void testEqualsIgnoreCaseUnicodeEquivalence() {
     // Note that it's possible in future that the JDK's idea to toUpperCase() or equalsIgnoreCase()
     // may change and break assumptions in this test [*]. This is not a bug in the implementation of
diff --git a/guava-tests/test/com/google/common/base/CaseFormatTest.java b/guava-tests/test/com/google/common/base/CaseFormatTest.java
index f08d9f9..5f3a3d4 100644
--- a/guava-tests/test/com/google/common/base/CaseFormatTest.java
+++ b/guava-tests/test/com/google/common/base/CaseFormatTest.java
@@ -22,8 +22,6 @@ import static com.google.common.base.CaseFormat.LOWER_UNDERSCORE;
 import static com.google.common.base.CaseFormat.UPPER_CAMEL;
 import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
 import junit.framework.TestCase;
@@ -33,7 +31,6 @@ import junit.framework.TestCase;
  *
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 public class CaseFormatTest extends TestCase {
 
   public void testIdentity() {
@@ -46,7 +43,7 @@ public class CaseFormatTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullArguments() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(CaseFormat.class);
diff --git a/guava-tests/test/com/google/common/base/CharMatcherTest.java b/guava-tests/test/com/google/common/base/CharMatcherTest.java
index 5412882..e25fe29 100644
--- a/guava-tests/test/com/google/common/base/CharMatcherTest.java
+++ b/guava-tests/test/com/google/common/base/CharMatcherTest.java
@@ -25,8 +25,6 @@ import static com.google.common.base.CharMatcher.isNot;
 import static com.google.common.base.CharMatcher.noneOf;
 import static com.google.common.base.CharMatcher.whitespace;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Sets;
 import com.google.common.testing.NullPointerTester;
 import java.util.Arrays;
@@ -42,10 +40,9 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class CharMatcherTest extends TestCase {
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStaticNullPointers() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(CharMatcher.class);
@@ -90,7 +87,7 @@ public class CharMatcherTest extends TestCase {
   // The next tests require ICU4J and have, at least for now, been sliced out
   // of the open-source view of the tests.
 
-  @GwtIncompatible // Character.isISOControl
+  // Character.isISOControl
   public void testJavaIsoControl() {
     for (int c = 0; c <= Character.MAX_VALUE; c++) {
       assertEquals(
@@ -108,7 +105,7 @@ public class CharMatcherTest extends TestCase {
   // method, but by overall "scenario". Also, the variety of actual tests we
   // do borders on absurd overkill. Better safe than sorry, though?
 
-  @GwtIncompatible // java.util.BitSet
+  // java.util.BitSet
   public void testSetBits() {
     doTestSetBits(CharMatcher.any());
     doTestSetBits(CharMatcher.none());
@@ -128,7 +125,7 @@ public class CharMatcherTest extends TestCase {
     doTestSetBits(inRange('A', 'Z').and(inRange('F', 'K').negate()));
   }
 
-  @GwtIncompatible // java.util.BitSet
+  // java.util.BitSet
   private void doTestSetBits(CharMatcher matcher) {
     BitSet bitset = new BitSet();
     matcher.setBits(bitset);
@@ -151,7 +148,7 @@ public class CharMatcherTest extends TestCase {
     doTestEmpty(forPredicate(Predicates.equalTo('c')));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNull() throws Exception {
     doTestNull(CharMatcher.any());
     doTestNull(CharMatcher.none());
@@ -196,7 +193,7 @@ public class CharMatcherTest extends TestCase {
     assertEquals(0, matcher.countIn(""));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   private static void doTestNull(CharMatcher matcher) throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(matcher);
@@ -664,12 +661,12 @@ public class CharMatcherTest extends TestCase {
     assertSame(CharMatcher.any(), CharMatcher.any().precomputed());
   }
 
-  @GwtIncompatible // java.util.BitSet
+  // java.util.BitSet
   private static BitSet bitSet(String chars) {
     return bitSet(chars.toCharArray());
   }
 
-  @GwtIncompatible // java.util.BitSet
+  // java.util.BitSet
   private static BitSet bitSet(char[] chars) {
     BitSet tmp = new BitSet();
     for (char c : chars) {
@@ -678,7 +675,7 @@ public class CharMatcherTest extends TestCase {
     return tmp;
   }
 
-  @GwtIncompatible // java.util.Random, java.util.BitSet
+  // java.util.Random, java.util.BitSet
   public void testSmallCharMatcher() {
     CharMatcher len1 = SmallCharMatcher.from(bitSet("#"), "#");
     CharMatcher len2 = SmallCharMatcher.from(bitSet("ab"), "ab");
diff --git a/guava-tests/test/com/google/common/base/CharsetsTest.java b/guava-tests/test/com/google/common/base/CharsetsTest.java
index c968c8d..5fc0efb 100644
--- a/guava-tests/test/com/google/common/base/CharsetsTest.java
+++ b/guava-tests/test/com/google/common/base/CharsetsTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.nio.charset.Charset;
 import java.util.Arrays;
 import junit.framework.TestCase;
@@ -27,15 +25,14 @@ import junit.framework.TestCase;
  *
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 public class CharsetsTest extends TestCase {
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testUsAscii() {
     assertEquals(Charset.forName("US-ASCII"), Charsets.US_ASCII);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testIso88591() {
     assertEquals(Charset.forName("ISO-8859-1"), Charsets.ISO_8859_1);
   }
@@ -44,22 +41,22 @@ public class CharsetsTest extends TestCase {
     assertEquals(Charset.forName("UTF-8"), Charsets.UTF_8);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testUtf16be() {
     assertEquals(Charset.forName("UTF-16BE"), Charsets.UTF_16BE);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testUtf16le() {
     assertEquals(Charset.forName("UTF-16LE"), Charsets.UTF_16LE);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testUtf16() {
     assertEquals(Charset.forName("UTF-16"), Charsets.UTF_16);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testWhyUsAsciiIsDangerous() {
     byte[] b1 = "朝日新聞".getBytes(Charsets.US_ASCII);
     byte[] b2 = "聞朝日新".getBytes(Charsets.US_ASCII);
diff --git a/guava-tests/test/com/google/common/base/ConverterTest.java b/guava-tests/test/com/google/common/base/ConverterTest.java
index c787ef0..2000066 100644
--- a/guava-tests/test/com/google/common/base/ConverterTest.java
+++ b/guava-tests/test/com/google/common/base/ConverterTest.java
@@ -18,8 +18,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Functions.toStringFunction;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.primitives.Longs;
 import com.google.common.testing.EqualsTester;
@@ -29,7 +27,6 @@ import java.util.List;
 import junit.framework.TestCase;
 
 /** Unit tests for {@link Converter}. */
-@GwtCompatible
 public class ConverterTest extends TestCase {
 
   private static final Converter<String, Long> STR_TO_LONG =
diff --git a/guava-tests/test/com/google/common/base/EnumsTest.java b/guava-tests/test/com/google/common/base/EnumsTest.java
index d8b13af..495fb67 100644
--- a/guava-tests/test/com/google/common/base/EnumsTest.java
+++ b/guava-tests/test/com/google/common/base/EnumsTest.java
@@ -20,17 +20,12 @@ import static com.google.common.base.StandardSystemProperty.JAVA_CLASS_PATH;
 import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.GcFinalization;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
 import java.io.File;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
-import java.lang.ref.WeakReference;
 import java.lang.reflect.Field;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -44,7 +39,6 @@ import junit.framework.TestCase;
  *
  * @author Steve McKay
  */
-@GwtCompatible(emulated = true)
 public class EnumsTest extends TestCase {
 
   private enum TestEnum {
@@ -80,7 +74,7 @@ public class EnumsTest extends TestCase {
   }
 
 
-  @GwtIncompatible // weak references
+  // weak references
   public void testGetIfPresent_doesNotPreventClassUnloading() throws Exception {
     WeakReference<?> shadowLoaderReference = doTestClassUnloading();
     GcFinalization.awaitClear(shadowLoaderReference);
@@ -91,7 +85,7 @@ public class EnumsTest extends TestCase {
   // new ClassLoader. If Enums.getIfPresent does caching that prevents the shadow TestEnum
   // (and therefore its ClassLoader) from being unloaded, then this WeakReference will never be
   // cleared.
-  @GwtIncompatible // weak references
+  // weak references
   private WeakReference<?> doTestClassUnloading() throws Exception {
     URLClassLoader shadowLoader = new URLClassLoader(getClassPathUrls(), null);
     @SuppressWarnings("unchecked")
@@ -137,7 +131,7 @@ public class EnumsTest extends TestCase {
     assertEquals("POODLE", converter.reverse().convert(TestEnum.POODLE));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     Converter<String, TestEnum> converter = Enums.stringConverter(TestEnum.class);
     NullPointerTester tester = new NullPointerTester();
@@ -150,7 +144,7 @@ public class EnumsTest extends TestCase {
     assertNull(converter.reverse().convert(null));
   }
 
-  @GwtIncompatible // Class.getName()
+  // Class.getName()
   public void testStringConverter_toString() {
     assertEquals(
         "Enums.stringConverter(com.google.common.base.EnumsTest$TestEnum.class)",
@@ -161,7 +155,7 @@ public class EnumsTest extends TestCase {
     SerializableTester.reserializeAndAssert(Enums.stringConverter(TestEnum.class));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Enums.class);
@@ -176,7 +170,7 @@ public class EnumsTest extends TestCase {
     BAR
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testGetField() {
     Field foo = Enums.getField(AnEnum.FOO);
     assertEquals("FOO", foo.getName());
@@ -187,7 +181,7 @@ public class EnumsTest extends TestCase {
     assertFalse(bar.isAnnotationPresent(ExampleAnnotation.class));
   }
 
-  @GwtIncompatible // Class.getClassLoader()
+  // Class.getClassLoader()
   private URL[] getClassPathUrls() {
     ClassLoader classLoader = getClass().getClassLoader();
     return classLoader instanceof URLClassLoader
@@ -200,7 +194,6 @@ public class EnumsTest extends TestCase {
    * System#getProperty system property}.
    */
   // TODO(b/65488446): Make this a public API.
-  @GwtIncompatible
   private static ImmutableList<URL> parseJavaClassPath() {
     ImmutableList.Builder<URL> urls = ImmutableList.builder();
     for (String entry : Splitter.on(PATH_SEPARATOR.value()).split(JAVA_CLASS_PATH.value())) {
diff --git a/guava-tests/test/com/google/common/base/EquivalenceTest.java b/guava-tests/test/com/google/common/base/EquivalenceTest.java
index 07c86ea..67cabf0 100644
--- a/guava-tests/test/com/google/common/base/EquivalenceTest.java
+++ b/guava-tests/test/com/google/common/base/EquivalenceTest.java
@@ -16,10 +16,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Equivalence.Wrapper;
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.EquivalenceTester;
 import com.google.common.testing.NullPointerTester;
@@ -31,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Jige Yu
  */
-@GwtCompatible(emulated = true)
 public class EquivalenceTest extends TestCase {
   @SuppressWarnings("unchecked") // varargs
   public void testPairwiseEquivalent() {
@@ -81,7 +77,7 @@ public class EquivalenceTest extends TestCase {
     assertSame(test, wrapper.get());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     SerializableTester.reserializeAndAssert(LENGTH_EQUIVALENCE.wrap("hello"));
     SerializableTester.reserializeAndAssert(Equivalence.equals());
@@ -157,7 +153,7 @@ public class EquivalenceTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Equivalence.class);
     new NullPointerTester().testAllPublicInstanceMethods(Equivalence.equals());
diff --git a/guava-tests/test/com/google/common/base/FinalizableReferenceQueueClassLoaderUnloadingTest.java b/guava-tests/test/com/google/common/base/FinalizableReferenceQueueClassLoaderUnloadingTest.java
index ae35c16..790b305 100644
--- a/guava-tests/test/com/google/common/base/FinalizableReferenceQueueClassLoaderUnloadingTest.java
+++ b/guava-tests/test/com/google/common/base/FinalizableReferenceQueueClassLoaderUnloadingTest.java
@@ -20,11 +20,9 @@ import static com.google.common.base.StandardSystemProperty.JAVA_CLASS_PATH;
 import static com.google.common.base.StandardSystemProperty.JAVA_SPECIFICATION_VERSION;
 import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.GcFinalization;
 import java.io.Closeable;
 import java.io.File;
-import java.lang.ref.WeakReference;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.net.MalformedURLException;
diff --git a/guava-tests/test/com/google/common/base/FinalizableReferenceQueueTest.java b/guava-tests/test/com/google/common/base/FinalizableReferenceQueueTest.java
index 3b5fd1d..2dc0f66 100644
--- a/guava-tests/test/com/google/common/base/FinalizableReferenceQueueTest.java
+++ b/guava-tests/test/com/google/common/base/FinalizableReferenceQueueTest.java
@@ -19,7 +19,6 @@ package com.google.common.base;
 import com.google.common.base.internal.Finalizer;
 import com.google.common.testing.GcFinalization;
 import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.Arrays;
diff --git a/guava-tests/test/com/google/common/base/FunctionsTest.java b/guava-tests/test/com/google/common/base/FunctionsTest.java
index 1411c19..55f06ce 100644
--- a/guava-tests/test/com/google/common/base/FunctionsTest.java
+++ b/guava-tests/test/com/google/common/base/FunctionsTest.java
@@ -16,9 +16,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import com.google.common.testing.ClassSanityTester;
 import com.google.common.testing.EqualsTester;
@@ -34,7 +31,6 @@ import junit.framework.TestCase;
  * @author Mike Bostock
  * @author Vlad Patryshev
  */
-@GwtCompatible(emulated = true)
 public class FunctionsTest extends TestCase {
 
   public void testIdentity_same() {
@@ -48,7 +44,7 @@ public class FunctionsTest extends TestCase {
     assertNotSame(new Long(135135L), identity.apply(new Long(135135L)));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testIdentitySerializable() {
     checkCanReserializeSingleton(Functions.identity());
   }
@@ -73,12 +69,12 @@ public class FunctionsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testToStringFunctionSerializable() {
     checkCanReserializeSingleton(Functions.toStringFunction());
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Functions.class);
@@ -107,7 +103,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForMapWithoutDefaultSerializable() {
     checkCanReserialize(Functions.forMap(ImmutableMap.of(1, 2)));
   }
@@ -132,7 +128,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForMapWithDefault_includeSerializable() {
     Map<String, Integer> map = Maps.newHashMap();
     map.put("One", 1);
@@ -152,7 +148,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForMapWithDefaultSerializable() {
     checkCanReserialize(Functions.forMap(ImmutableMap.of(1, 2), 3));
   }
@@ -171,7 +167,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForMapWithDefault_null_compareWithSerializable() {
     ImmutableMap<String, Integer> map = ImmutableMap.of("One", 1);
     Function<String, Integer> function = Functions.forMap(map, null);
@@ -235,7 +231,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testComposition_includeReserializabled() {
     Map<String, Integer> mJapaneseToInteger = Maps.newHashMap();
     mJapaneseToInteger.put("Ichi", 1);
@@ -332,7 +328,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForPredicateSerializable() {
     checkCanReserialize(Functions.forPredicate(Predicates.equalTo(5)));
   }
@@ -361,7 +357,7 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testConstantSerializable() {
     checkCanReserialize(Functions.constant(5));
   }
@@ -406,24 +402,24 @@ public class FunctionsTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForSupplierSerializable() {
     checkCanReserialize(Functions.forSupplier(new CountingSupplier()));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Functions.class).testNulls();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // TODO(cpovirk): ClassNotFoundException: com.google.common.base.Function
   // (I suspect that this and the other similar failures happen with ArbitraryInstances proxies.)
   public void testEqualsAndSerializable() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Functions.class).testEqualsAndSerializable();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   private static <Y> void checkCanReserialize(Function<? super Integer, Y> f) {
     Function<? super Integer, Y> g = SerializableTester.reserializeAndAssert(f);
     for (int i = 1; i < 5; i++) {
@@ -443,7 +439,7 @@ public class FunctionsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   private static <Y> void checkCanReserializeSingleton(Function<? super String, Y> f) {
     Function<? super String, Y> g = SerializableTester.reserializeAndAssert(f);
     assertSame(f, g);
diff --git a/guava-tests/test/com/google/common/base/JoinerTest.java b/guava-tests/test/com/google/common/base/JoinerTest.java
index d9ed347..5482def 100644
--- a/guava-tests/test/com/google/common/base/JoinerTest.java
+++ b/guava-tests/test/com/google/common/base/JoinerTest.java
@@ -16,12 +16,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Joiner.MapJoiner;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.testing.NullPointerTester;
@@ -39,7 +34,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class JoinerTest extends TestCase {
   private static final Joiner J = Joiner.on("-");
 
@@ -359,7 +353,7 @@ public class JoinerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // StringBuilder.append in GWT invokes Object.toString(), unlike the JRE version.
+  // StringBuilder.append in GWT invokes Object.toString(), unlike the JRE version.
   public void testDontConvertCharSequenceToString() {
     assertEquals("foo,foo", Joiner.on(",").join(new DontStringMeBro(), new DontStringMeBro()));
     assertEquals(
@@ -367,7 +361,7 @@ public class JoinerTest extends TestCase {
         Joiner.on(",").useForNull("bar").join(new DontStringMeBro(), null, new DontStringMeBro()));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Joiner.class);
diff --git a/guava-tests/test/com/google/common/base/ObjectsTest.java b/guava-tests/test/com/google/common/base/ObjectsTest.java
index 0388140..1e95755 100644
--- a/guava-tests/test/com/google/common/base/ObjectsTest.java
+++ b/guava-tests/test/com/google/common/base/ObjectsTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import junit.framework.TestCase;
 
@@ -26,7 +24,6 @@ import junit.framework.TestCase;
  *
  * @author Laurence Gonsalves
  */
-@GwtCompatible(emulated = true)
 public class ObjectsTest extends TestCase {
 
   public void testEqual() throws Exception {
@@ -58,7 +55,7 @@ public class ObjectsTest extends TestCase {
     assertTrue(Objects.hashCode(1, 2, 3) != Objects.hashCode(2, 3, 1));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Objects.class);
diff --git a/guava-tests/test/com/google/common/base/OptionalTest.java b/guava-tests/test/com/google/common/base/OptionalTest.java
index f8d8333..985f7a7 100644
--- a/guava-tests/test/com/google/common/base/OptionalTest.java
+++ b/guava-tests/test/com/google/common/base/OptionalTest.java
@@ -19,10 +19,7 @@ package com.google.common.base;
 import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import java.util.Collections;
@@ -35,7 +32,6 @@ import junit.framework.TestCase;
  *
  * @author Kurt Alfred Kluever
  */
-@GwtCompatible(emulated = true)
 public final class OptionalTest extends TestCase {
   public void testToJavaUtil_static() {
     assertNull(Optional.toJavaUtil(null));
@@ -315,7 +311,7 @@ public final class OptionalTest extends TestCase {
     Number value = first.or(0.5); // fine
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester npTester = new NullPointerTester();
     npTester.testAllPublicConstructors(Optional.class);
diff --git a/guava-tests/test/com/google/common/base/PreconditionsTest.java b/guava-tests/test/com/google/common/base/PreconditionsTest.java
index 1add44d..763b39a 100644
--- a/guava-tests/test/com/google/common/base/PreconditionsTest.java
+++ b/guava-tests/test/com/google/common/base/PreconditionsTest.java
@@ -18,10 +18,6 @@ package com.google.common.base;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.testing.ArbitraryInstances;
 import java.lang.reflect.InvocationTargetException;
@@ -38,7 +34,6 @@ import junit.framework.TestCase;
  * @author Kevin Bourrillion
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class PreconditionsTest extends TestCase {
   public void testCheckArgument_simple_success() {
     Preconditions.checkArgument(true);
@@ -383,7 +378,6 @@ public class PreconditionsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible("Reflection")
   public void testAllOverloads_checkArgument() throws Exception {
     for (ImmutableList<Class<?>> sig : allSignatures(boolean.class)) {
       Method checkArgumentMethod =
@@ -400,7 +394,6 @@ public class PreconditionsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible("Reflection")
   public void testAllOverloads_checkState() throws Exception {
     for (ImmutableList<Class<?>> sig : allSignatures(boolean.class)) {
       Method checkArgumentMethod =
@@ -417,7 +410,6 @@ public class PreconditionsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible("Reflection")
   public void testAllOverloads_checkNotNull() throws Exception {
     for (ImmutableList<Class<?>> sig : allSignatures(Object.class)) {
       Method checkArgumentMethod =
@@ -460,7 +452,6 @@ public class PreconditionsTest extends TestCase {
    * @param firstParam The first parameter
    * @param sig The method signature
    */
-  @GwtIncompatible("ArbitraryInstances")
   private Object[] getParametersForSignature(Object firstParam, ImmutableList<Class<?>> sig) {
     Object[] params = new Object[sig.size()];
     params[0] = firstParam;
@@ -536,7 +527,7 @@ public class PreconditionsTest extends TestCase {
     Preconditions.checkState(boxedBoolean.booleanValue(), "", s);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     /*
      * Don't bother testing: Preconditions defines a bunch of methods that accept a template (or
diff --git a/guava-tests/test/com/google/common/base/PredicatesTest.java b/guava-tests/test/com/google/common/base/PredicatesTest.java
index 8f8647f..7b04a68 100644
--- a/guava-tests/test/com/google/common/base/PredicatesTest.java
+++ b/guava-tests/test/com/google/common/base/PredicatesTest.java
@@ -19,9 +19,6 @@ package com.google.common.base;
 import static com.google.common.base.CharMatcher.whitespace;
 import static com.google.common.collect.Lists.newArrayList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.ClassSanityTester;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
@@ -42,7 +39,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class PredicatesTest extends TestCase {
   private static final Predicate<Integer> TRUE = Predicates.alwaysTrue();
   private static final Predicate<Integer> FALSE = Predicates.alwaysFalse();
@@ -105,7 +101,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testAlwaysTrue_serialization() {
     checkSerialization(Predicates.alwaysTrue());
   }
@@ -126,7 +122,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testAlwaysFalse_serialization() {
     checkSerialization(Predicates.alwaysFalse());
   }
@@ -175,7 +171,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNot_serialization() {
     checkSerialization(Predicates.not(isOdd()));
   }
@@ -198,7 +194,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testAnd_serializationNoArgs() {
     checkSerialization(Predicates.and());
@@ -221,7 +217,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testAnd_serializationOneArg() {
     checkSerialization(Predicates.and(isOdd()));
@@ -243,7 +239,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testAnd_serializationBinary() {
     checkSerialization(Predicates.and(TRUE, isOdd()));
   }
@@ -268,7 +264,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testAnd_serializationTernary() {
     checkSerialization(Predicates.and(TRUE, isOdd(), FALSE));
@@ -295,7 +291,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testAnd_serializationIterable() {
     checkSerialization(Predicates.and(Arrays.asList(TRUE, FALSE)));
@@ -351,7 +347,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testOr_serializationNoArgs() {
     checkSerialization(Predicates.or());
@@ -374,7 +370,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testOr_serializationOneArg() {
     checkSerialization(Predicates.or(isOdd()));
@@ -400,7 +396,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testOr_serializationBinary() {
     checkSerialization(Predicates.or(isOdd(), TRUE));
   }
@@ -424,7 +420,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testOr_serializationTernary() {
     checkSerialization(Predicates.or(FALSE, isOdd(), TRUE));
@@ -457,7 +453,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked") // varargs
   public void testOr_serializationIterable() {
     Predicate<Integer> pre = Predicates.or(Arrays.asList(TRUE, FALSE));
@@ -517,7 +513,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testIsEqualTo_serialization() {
     checkSerialization(Predicates.equalTo(1));
   }
@@ -536,7 +532,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testIsEqualToNull_serialization() {
     checkSerialization(Predicates.equalTo(null));
   }
@@ -546,7 +542,7 @@ public class PredicatesTest extends TestCase {
    * stripper to remove comments properly. Currently, all tests before the comments are removed as
    * well.
    */
-  @GwtIncompatible // Predicates.instanceOf
+  // Predicates.instanceOf
   public void testIsInstanceOf_apply() {
     Predicate<Object> isInteger = Predicates.instanceOf(Integer.class);
 
@@ -556,7 +552,7 @@ public class PredicatesTest extends TestCase {
     assertFalse(isInteger.apply(null));
   }
 
-  @GwtIncompatible // Predicates.instanceOf
+  // Predicates.instanceOf
   public void testIsInstanceOf_subclass() {
     Predicate<Object> isNumber = Predicates.instanceOf(Number.class);
 
@@ -566,7 +562,7 @@ public class PredicatesTest extends TestCase {
     assertFalse(isNumber.apply(null));
   }
 
-  @GwtIncompatible // Predicates.instanceOf
+  // Predicates.instanceOf
   public void testIsInstanceOf_interface() {
     Predicate<Object> isComparable = Predicates.instanceOf(Comparable.class);
 
@@ -576,7 +572,7 @@ public class PredicatesTest extends TestCase {
     assertFalse(isComparable.apply(null));
   }
 
-  @GwtIncompatible // Predicates.instanceOf
+  // Predicates.instanceOf
   public void testIsInstanceOf_equality() {
     new EqualsTester()
         .addEqualityGroup(
@@ -586,12 +582,12 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // Predicates.instanceOf, SerializableTester
+  // Predicates.instanceOf, SerializableTester
   public void testIsInstanceOf_serialization() {
     checkSerialization(Predicates.instanceOf(Integer.class));
   }
 
-  @GwtIncompatible // Predicates.subtypeOf
+  // Predicates.subtypeOf
   public void testSubtypeOf_apply() {
     Predicate<Class<?>> isInteger = Predicates.subtypeOf(Integer.class);
 
@@ -605,7 +601,7 @@ public class PredicatesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Predicates.subtypeOf
+  // Predicates.subtypeOf
   public void testSubtypeOf_subclass() {
     Predicate<Class<?>> isNumber = Predicates.subtypeOf(Number.class);
 
@@ -613,7 +609,7 @@ public class PredicatesTest extends TestCase {
     assertTrue(isNumber.apply(Float.class));
   }
 
-  @GwtIncompatible // Predicates.subtypeOf
+  // Predicates.subtypeOf
   public void testSubtypeOf_interface() {
     Predicate<Class<?>> isComparable = Predicates.subtypeOf(Comparable.class);
 
@@ -621,7 +617,7 @@ public class PredicatesTest extends TestCase {
     assertTrue(isComparable.apply(Float.class));
   }
 
-  @GwtIncompatible // Predicates.subtypeOf
+  // Predicates.subtypeOf
   public void testSubtypeOf_equality() {
     new EqualsTester()
         .addEqualityGroup(Predicates.subtypeOf(Integer.class))
@@ -630,7 +626,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // Predicates.subtypeOf, SerializableTester
+  // Predicates.subtypeOf, SerializableTester
   public void testSubtypeOf_serialization() {
     Predicate<Class<?>> predicate = Predicates.subtypeOf(Integer.class);
     Predicate<Class<?>> reserialized = SerializableTester.reserializeAndAssert(predicate);
@@ -657,7 +653,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testIsNull_serialization() {
     Predicate<String> pre = Predicates.isNull();
     Predicate<String> post = SerializableTester.reserializeAndAssert(pre);
@@ -678,7 +674,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNotNull_serialization() {
     checkSerialization(Predicates.notNull());
   }
@@ -709,7 +705,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testIn_serialization() {
     checkSerialization(Predicates.in(Arrays.asList(1, 2, 3, null)));
   }
@@ -757,14 +753,14 @@ public class PredicatesTest extends TestCase {
     // Predicate<Integer> p4 = Predicates.<Integer>in(nums);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Predicates.class);
   }
 
   @SuppressWarnings("unchecked") // varargs
-  @GwtIncompatible // SerializbleTester
+  // SerializbleTester
   public void testCascadingSerialization() throws Exception {
     // Eclipse says Predicate<Integer>; javac says Predicate<Object>.
     Predicate<? super Integer> nasty =
@@ -815,7 +811,7 @@ public class PredicatesTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testComposeSerialization() {
     Function<String, String> trim = TrimStringFunction.INSTANCE;
     Predicate<String> equalsFoo = Predicates.equalTo("Foo");
@@ -828,14 +824,14 @@ public class PredicatesTest extends TestCase {
    * works, so there are only trivial tests of that aspect. TODO: Fix comment style once annotation
    * stripper is fixed.
    */
-  @GwtIncompatible // Predicates.containsPattern
+  // Predicates.containsPattern
   public void testContainsPattern_apply() {
     Predicate<CharSequence> isFoobar = Predicates.containsPattern("^Fo.*o.*bar$");
     assertTrue(isFoobar.apply("Foxyzoabcbar"));
     assertFalse(isFoobar.apply("Foobarx"));
   }
 
-  @GwtIncompatible // Predicates.containsPattern
+  // Predicates.containsPattern
   public void testContains_apply() {
     Predicate<CharSequence> isFoobar = Predicates.contains(Pattern.compile("^Fo.*o.*bar$"));
 
@@ -843,7 +839,7 @@ public class PredicatesTest extends TestCase {
     assertFalse(isFoobar.apply("Foobarx"));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testContainsPattern_nulls() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     Predicate<CharSequence> isWooString = Predicates.containsPattern("Woo");
@@ -851,7 +847,7 @@ public class PredicatesTest extends TestCase {
     tester.testAllPublicInstanceMethods(isWooString);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testContains_nulls() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     Predicate<CharSequence> isWooPattern = Predicates.contains(Pattern.compile("Woo"));
@@ -859,14 +855,14 @@ public class PredicatesTest extends TestCase {
     tester.testAllPublicInstanceMethods(isWooPattern);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testContainsPattern_serialization() {
     Predicate<CharSequence> pre = Predicates.containsPattern("foo");
     Predicate<CharSequence> post = SerializableTester.reserializeAndAssert(pre);
     assertEquals(pre.apply("foo"), post.apply("foo"));
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testContains_equals() {
     new EqualsTester()
         .addEqualityGroup(
@@ -897,12 +893,12 @@ public class PredicatesTest extends TestCase {
     assertTrue(Predicates.and(p1, p2).hashCode() != Predicates.or(p1, p2).hashCode());
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Predicates.class).testNulls();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // TODO(cpovirk): ClassNotFoundException: com.google.common.base.Function
   public void testEqualsAndSerializable() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Predicates.class).testEqualsAndSerializable();
@@ -956,7 +952,7 @@ public class PredicatesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   private static void checkSerialization(Predicate<? super Integer> predicate) {
     Predicate<? super Integer> reserialized = SerializableTester.reserializeAndAssert(predicate);
     assertEvalsLike(predicate, reserialized);
diff --git a/guava-tests/test/com/google/common/base/SplitterTest.java b/guava-tests/test/com/google/common/base/SplitterTest.java
index 0c697b8..49340f6 100644
--- a/guava-tests/test/com/google/common/base/SplitterTest.java
+++ b/guava-tests/test/com/google/common/base/SplitterTest.java
@@ -16,13 +16,9 @@
 
 package com.google.common.base;
 
-import static com.google.common.collect.ImmutableList.toImmutableList;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Splitter.MapSplitter;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.testing.NullPointerTester;
 import java.util.Iterator;
 import java.util.List;
@@ -31,7 +27,6 @@ import java.util.regex.Pattern;
 import junit.framework.TestCase;
 
 /** @author Julien Silland */
-@GwtCompatible(emulated = true)
 public class SplitterTest extends TestCase {
 
   private static final Splitter COMMA_SPLITTER = Splitter.on(',');
@@ -294,42 +289,42 @@ public class SplitterTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSimpleSplit() {
     String simple = "a,b,c";
     Iterable<String> letters = Splitter.onPattern(",").split(simple);
     assertThat(letters).containsExactly("a", "b", "c").inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSimpleSplitWithNoDelimiter() {
     String simple = "a,b,c";
     Iterable<String> letters = Splitter.onPattern("foo").split(simple);
     assertThat(letters).containsExactly("a,b,c").inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSplitWithDoubleDelimiter() {
     String doubled = "a,,b,c";
     Iterable<String> letters = Splitter.onPattern(",").split(doubled);
     assertThat(letters).containsExactly("a", "", "b", "c").inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSplitWithDoubleDelimiterAndSpace() {
     String doubled = "a,, b,c";
     Iterable<String> letters = Splitter.onPattern(",").split(doubled);
     assertThat(letters).containsExactly("a", "", " b", "c").inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSplitWithTrailingDelimiter() {
     String trailing = "a,b,c,";
     Iterable<String> letters = Splitter.onPattern(",").split(trailing);
     assertThat(letters).containsExactly("a", "b", "c", "").inOrder();
   }
 
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSplitWithLeadingDelimiter() {
     String leading = ",a,b,c";
     Iterable<String> letters = Splitter.onPattern(",").split(leading);
@@ -338,7 +333,7 @@ public class SplitterTest extends TestCase {
 
   // TODO(kevinb): the name of this method suggests it might not actually be testing what it
   // intends to be testing?
-  @GwtIncompatible // Splitter.onPattern
+  // Splitter.onPattern
   public void testPatternSplitWithMultipleLetters() {
     Iterable<String> testPatterningMotto =
         Splitter.onPattern("-").split("Testing-rocks-Debugging-sucks");
@@ -347,19 +342,19 @@ public class SplitterTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   private static Pattern literalDotPattern() {
     return Pattern.compile("\\.");
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWithDoubleDelimiterOmitEmptyStrings() {
     String doubled = "a..b.c";
     Iterable<String> letters = Splitter.on(literalDotPattern()).omitEmptyStrings().split(doubled);
     assertThat(letters).containsExactly("a", "b", "c").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   @AndroidIncompatible // Bug in older versions of Android we test against, since fixed.
   public void testPatternSplitLookBehind() {
     if (!CommonPattern.isPcreLike()) {
@@ -372,7 +367,7 @@ public class SplitterTest extends TestCase {
     // splits into chunks ending in :
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   @AndroidIncompatible // Bug in older versions of Android we test against, since fixed.
   public void testPatternSplitWordBoundary() {
     String string = "foo<bar>bletch";
@@ -380,7 +375,7 @@ public class SplitterTest extends TestCase {
     assertThat(words).containsExactly("foo", "<", "bar", ">", "bletch").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWordBoundary_singleCharInput() {
     String string = "f";
     Iterable<String> words = Splitter.on(Pattern.compile("\\b")).split(string);
@@ -388,21 +383,21 @@ public class SplitterTest extends TestCase {
   }
 
   @AndroidIncompatible // Apparently Gingerbread's regex API is buggy.
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWordBoundary_singleWordInput() {
     String string = "foo";
     Iterable<String> words = Splitter.on(Pattern.compile("\\b")).split(string);
     assertThat(words).containsExactly("foo").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitEmptyToken() {
     String emptyToken = "a. .c";
     Iterable<String> letters = Splitter.on(literalDotPattern()).trimResults().split(emptyToken);
     assertThat(letters).containsExactly("a", "", "c").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitEmptyTokenOmitEmptyStrings() {
     String emptyToken = "a. .c";
     Iterable<String> letters =
@@ -410,41 +405,41 @@ public class SplitterTest extends TestCase {
     assertThat(letters).containsExactly("a", "c").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitOnOnlyDelimiter() {
     Iterable<String> blankblank = Splitter.on(literalDotPattern()).split(".");
 
     assertThat(blankblank).containsExactly("", "").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitOnOnlyDelimitersOmitEmptyStrings() {
     Iterable<String> empty = Splitter.on(literalDotPattern()).omitEmptyStrings().split("...");
     assertThat(empty).isEmpty();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitMatchingIsGreedy() {
     String longDelimiter = "a, b,   c";
     Iterable<String> letters = Splitter.on(Pattern.compile(",\\s*")).split(longDelimiter);
     assertThat(letters).containsExactly("a", "b", "c").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWithLongLeadingDelimiter() {
     String longDelimiter = ", a, b, c";
     Iterable<String> letters = Splitter.on(Pattern.compile(", ")).split(longDelimiter);
     assertThat(letters).containsExactly("", "a", "b", "c").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWithLongTrailingDelimiter() {
     String longDelimiter = "a, b, c/ ";
     Iterable<String> letters = Splitter.on(Pattern.compile("[,/]\\s")).split(longDelimiter);
     assertThat(letters).containsExactly("a", "b", "c", "").inOrder();
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitInvalidPattern() {
     try {
       Splitter.on(Pattern.compile("a*"));
@@ -453,7 +448,7 @@ public class SplitterTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testPatternSplitWithTrim() {
     String jacksons =
         "arfo(Marlon)aorf, (Michael)orfa, afro(Jackie)orfa, " + "ofar(Jemaine), aff(Tito)";
@@ -474,7 +469,7 @@ public class SplitterTest extends TestCase {
     assertIteratorIsUnmodifiable(Splitter.on(",").split("a,b").iterator());
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   public void testSplitterIterableIsUnmodifiable_pattern() {
     assertIteratorIsUnmodifiable(Splitter.on(Pattern.compile(",")).split("a,b").iterator());
   }
@@ -496,7 +491,7 @@ public class SplitterTest extends TestCase {
     assertSplitterIterableIsLazy(Splitter.on(","));
   }
 
-  @GwtIncompatible // java.util.regex.Pattern
+  // java.util.regex.Pattern
   @AndroidIncompatible // not clear that j.u.r.Matcher promises to handle mutations during use
   public void testSplitterIterableIsLazy_pattern() {
     if (!CommonPattern.isPcreLike()) {
@@ -670,7 +665,7 @@ public class SplitterTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Splitter.class);
diff --git a/guava-tests/test/com/google/common/base/StopwatchJavaTimeTest.java b/guava-tests/test/com/google/common/base/StopwatchJavaTimeTest.java
index 35fd5b1..9992107 100644
--- a/guava-tests/test/com/google/common/base/StopwatchJavaTimeTest.java
+++ b/guava-tests/test/com/google/common/base/StopwatchJavaTimeTest.java
@@ -16,13 +16,11 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.FakeTicker;
 import java.time.Duration;
 import junit.framework.TestCase;
 
 /** Unit test for the {@code java.time} support in {@link Stopwatch}. */
-@GwtIncompatible
 public class StopwatchJavaTimeTest extends TestCase {
   private final FakeTicker ticker = new FakeTicker();
   private final Stopwatch stopwatch = new Stopwatch(ticker);
diff --git a/guava-tests/test/com/google/common/base/StopwatchTest.java b/guava-tests/test/com/google/common/base/StopwatchTest.java
index b85ebb7..2c1b2de 100644
--- a/guava-tests/test/com/google/common/base/StopwatchTest.java
+++ b/guava-tests/test/com/google/common/base/StopwatchTest.java
@@ -20,7 +20,6 @@ import static java.util.concurrent.TimeUnit.MICROSECONDS;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.testing.FakeTicker;
 import junit.framework.TestCase;
 
@@ -29,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class StopwatchTest extends TestCase {
 
   private final FakeTicker ticker = new FakeTicker();
diff --git a/guava-tests/test/com/google/common/base/StringsTest.java b/guava-tests/test/com/google/common/base/StringsTest.java
index ac3ad20..a2a17c5 100644
--- a/guava-tests/test/com/google/common/base/StringsTest.java
+++ b/guava-tests/test/com/google/common/base/StringsTest.java
@@ -18,8 +18,6 @@ package com.google.common.base;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import junit.framework.TestCase;
 
@@ -28,7 +26,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class StringsTest extends TestCase {
   public void testNullToEmpty() {
     assertEquals("", Strings.nullToEmpty(null));
@@ -232,7 +229,7 @@ public class StringsTest extends TestCase {
     assertEquals("(Object[])null", Strings.lenientFormat("%s", (Object[]) null));
   }
 
-  @GwtIncompatible // GWT reflection includes less data
+  // GWT reflection includes less data
   public void testLenientFormat_badArgumentToString() {
     assertThat(Strings.lenientFormat("boiler %s plate", new ThrowsOnToString()))
         .matches(
@@ -252,7 +249,7 @@ public class StringsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Strings.class);
diff --git a/guava-tests/test/com/google/common/base/SuppliersTest.java b/guava-tests/test/com/google/common/base/SuppliersTest.java
index a97fe65..8e23fb6 100644
--- a/guava-tests/test/com/google/common/base/SuppliersTest.java
+++ b/guava-tests/test/com/google/common/base/SuppliersTest.java
@@ -19,8 +19,6 @@ package com.google.common.base;
 import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Lists;
 import com.google.common.testing.ClassSanityTester;
 import com.google.common.testing.EqualsTester;
@@ -39,7 +37,6 @@ import junit.framework.TestCase;
  * @author Laurence Gonsalves
  * @author Harry Heymann
  */
-@GwtCompatible(emulated = true)
 public class SuppliersTest extends TestCase {
 
   static class CountingSupplier implements Supplier<Integer> {
@@ -126,7 +123,7 @@ public class SuppliersTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testMemoizeNonSerializable() throws Exception {
     CountingSupplier countingSupplier = new CountingSupplier();
     Supplier<Integer> memoizedSupplier = Suppliers.memoize(countingSupplier);
@@ -146,7 +143,7 @@ public class SuppliersTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testMemoizeSerializable() throws Exception {
     SerializableCountingSupplier countingSupplier = new SerializableCountingSupplier();
     Supplier<Integer> memoizedSupplier = Suppliers.memoize(countingSupplier);
@@ -213,7 +210,7 @@ public class SuppliersTest extends TestCase {
     assertEquals(Integer.valueOf(1), result.get(1));
   }
 
-  @GwtIncompatible // Thread.sleep
+  // Thread.sleep
   public void testMemoizeWithExpiration() throws InterruptedException {
     CountingSupplier countingSupplier = new CountingSupplier();
 
@@ -223,7 +220,7 @@ public class SuppliersTest extends TestCase {
     checkExpiration(countingSupplier, memoizedSupplier);
   }
 
-  @GwtIncompatible // Thread.sleep, SerializationTester
+  // Thread.sleep, SerializationTester
   public void testMemoizeWithExpirationSerialized() throws InterruptedException {
     SerializableCountingSupplier countingSupplier = new SerializableCountingSupplier();
 
@@ -240,7 +237,7 @@ public class SuppliersTest extends TestCase {
     checkExpiration(countingCopy, copy);
   }
 
-  @GwtIncompatible // Thread.sleep
+  // Thread.sleep
   private void checkExpiration(
       CountingSupplier countingSupplier, Supplier<Integer> memoizedSupplier)
       throws InterruptedException {
@@ -278,7 +275,7 @@ public class SuppliersTest extends TestCase {
     assertNull(nullSupplier.get());
   }
 
-  @GwtIncompatible // Thread
+  // Thread
 
   public void testExpiringMemoizedSupplierThreadSafe() throws Throwable {
     Function<Supplier<Boolean>, Supplier<Boolean>> memoizer =
@@ -291,7 +288,7 @@ public class SuppliersTest extends TestCase {
     testSupplierThreadSafe(memoizer);
   }
 
-  @GwtIncompatible // Thread
+  // Thread
 
   public void testMemoizedSupplierThreadSafe() throws Throwable {
     Function<Supplier<Boolean>, Supplier<Boolean>> memoizer =
@@ -304,7 +301,7 @@ public class SuppliersTest extends TestCase {
     testSupplierThreadSafe(memoizer);
   }
 
-  @GwtIncompatible // Thread
+  // Thread
   public void testSupplierThreadSafe(Function<Supplier<Boolean>, Supplier<Boolean>> memoizer)
       throws Throwable {
     final AtomicInteger count = new AtomicInteger(0);
@@ -380,7 +377,7 @@ public class SuppliersTest extends TestCase {
     assertEquals(1, count.get());
   }
 
-  @GwtIncompatible // Thread
+  // Thread
 
   public void testSynchronizedSupplierThreadSafe() throws InterruptedException {
     final Supplier<Integer> nonThreadSafe =
@@ -427,7 +424,7 @@ public class SuppliersTest extends TestCase {
     assertEquals(14, (int) supplierFunction.apply(supplier));
   }
 
-  @GwtIncompatible // SerializationTester
+  // SerializationTester
   public void testSerialization() {
     assertEquals(Integer.valueOf(5), reserialize(Suppliers.ofInstance(5)).get());
     assertEquals(
@@ -443,12 +440,12 @@ public class SuppliersTest extends TestCase {
         reserialize(Suppliers.synchronizedSupplier(Suppliers.ofInstance(5))).get());
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testSuppliersNullChecks() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Suppliers.class).testNulls();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // TODO(cpovirk): ClassNotFoundException: com.google.common.base.Function
   public void testSuppliersSerializable() throws Exception {
     new ClassSanityTester().forAllPublicStaticMethods(Suppliers.class).testSerializable();
diff --git a/guava-tests/test/com/google/common/base/ThrowablesTest.java b/guava-tests/test/com/google/common/base/ThrowablesTest.java
index e4c64aa..87c636d 100644
--- a/guava-tests/test/com/google/common/base/ThrowablesTest.java
+++ b/guava-tests/test/com/google/common/base/ThrowablesTest.java
@@ -26,8 +26,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 import static java.util.regex.Pattern.quote;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Iterables;
 import com.google.common.primitives.Ints;
 import com.google.common.testing.NullPointerTester;
@@ -39,7 +37,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class ThrowablesTest extends TestCase {
   public void testThrowIfUnchecked_Unchecked() {
     try {
@@ -62,7 +59,7 @@ public class ThrowablesTest extends TestCase {
     throwIfUnchecked(new SomeCheckedException());
   }
 
-  @GwtIncompatible // propagateIfPossible
+  // propagateIfPossible
   public void testPropagateIfPossible_NoneDeclared_NoneThrown() {
     Sample sample =
         new Sample() {
@@ -81,7 +78,7 @@ public class ThrowablesTest extends TestCase {
     sample.noneDeclared();
   }
 
-  @GwtIncompatible // propagateIfPossible
+  // propagateIfPossible
   public void testPropagateIfPossible_NoneDeclared_UncheckedThrown() {
     Sample sample =
         new Sample() {
@@ -104,7 +101,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible
+  // propagateIfPossible
   public void testPropagateIfPossible_NoneDeclared_UndeclaredThrown() {
     Sample sample =
         new Sample() {
@@ -127,7 +124,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class)
+  // propagateIfPossible(Throwable, Class)
   public void testPropagateIfPossible_OneDeclared_NoneThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -148,7 +145,7 @@ public class ThrowablesTest extends TestCase {
     sample.oneDeclared();
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class)
+  // propagateIfPossible(Throwable, Class)
   public void testPropagateIfPossible_OneDeclared_UncheckedThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -171,7 +168,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class)
+  // propagateIfPossible(Throwable, Class)
   public void testPropagateIfPossible_OneDeclared_CheckedThrown() {
     Sample sample =
         new Sample() {
@@ -194,7 +191,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class)
+  // propagateIfPossible(Throwable, Class)
   public void testPropagateIfPossible_OneDeclared_UndeclaredThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -217,7 +214,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class, Class)
+  // propagateIfPossible(Throwable, Class, Class)
   public void testPropagateIfPossible_TwoDeclared_NoneThrown()
       throws SomeCheckedException, SomeOtherCheckedException {
     Sample sample =
@@ -238,7 +235,7 @@ public class ThrowablesTest extends TestCase {
     sample.twoDeclared();
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class, Class)
+  // propagateIfPossible(Throwable, Class, Class)
   public void testPropagateIfPossible_TwoDeclared_UncheckedThrown()
       throws SomeCheckedException, SomeOtherCheckedException {
     Sample sample =
@@ -263,7 +260,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class, Class)
+  // propagateIfPossible(Throwable, Class, Class)
   public void testPropagateIfPossible_TwoDeclared_CheckedThrown() throws SomeOtherCheckedException {
     Sample sample =
         new Sample() {
@@ -287,7 +284,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class, Class)
+  // propagateIfPossible(Throwable, Class, Class)
   public void testPropagateIfPossible_TwoDeclared_OtherCheckedThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -319,22 +316,22 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagateIfPossible
+  // propagateIfPossible
   public void testPropageIfPossible_null() throws SomeCheckedException {
     Throwables.propagateIfPossible(null);
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class)
+  // propagateIfPossible(Throwable, Class)
   public void testPropageIfPossible_OneDeclared_null() throws SomeCheckedException {
     Throwables.propagateIfPossible(null, SomeCheckedException.class);
   }
 
-  @GwtIncompatible // propagateIfPossible(Throwable, Class, Class)
+  // propagateIfPossible(Throwable, Class, Class)
   public void testPropageIfPossible_TwoDeclared_null() throws SomeCheckedException {
     Throwables.propagateIfPossible(null, SomeCheckedException.class, SomeUncheckedException.class);
   }
 
-  @GwtIncompatible // propagate
+  // propagate
   public void testPropagate_NoneDeclared_NoneThrown() {
     Sample sample =
         new Sample() {
@@ -352,7 +349,7 @@ public class ThrowablesTest extends TestCase {
     sample.noneDeclared();
   }
 
-  @GwtIncompatible // propagate
+  // propagate
   public void testPropagate_NoneDeclared_UncheckedThrown() {
     Sample sample =
         new Sample() {
@@ -374,7 +371,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagate
+  // propagate
   public void testPropagate_NoneDeclared_ErrorThrown() {
     Sample sample =
         new Sample() {
@@ -396,7 +393,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // propagate
+  // propagate
   public void testPropagate_NoneDeclared_CheckedThrown() {
     Sample sample =
         new Sample() {
@@ -419,17 +416,17 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testThrowIfInstanceOf_Unchecked() throws SomeCheckedException {
     throwIfInstanceOf(new SomeUncheckedException(), SomeCheckedException.class);
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testThrowIfInstanceOf_CheckedDifferent() throws SomeCheckedException {
     throwIfInstanceOf(new SomeOtherCheckedException(), SomeCheckedException.class);
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testThrowIfInstanceOf_CheckedSame() {
     try {
       throwIfInstanceOf(new SomeCheckedException(), SomeCheckedException.class);
@@ -438,7 +435,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testThrowIfInstanceOf_CheckedSubclass() {
     try {
       throwIfInstanceOf(new SomeCheckedException() {}, SomeCheckedException.class);
@@ -447,7 +444,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testPropagateIfInstanceOf_NoneThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -466,7 +463,7 @@ public class ThrowablesTest extends TestCase {
     sample.oneDeclared();
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testPropagateIfInstanceOf_DeclaredThrown() {
     Sample sample =
         new Sample() {
@@ -489,7 +486,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testPropagateIfInstanceOf_UncheckedThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -512,7 +509,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testPropagateIfInstanceOf_UndeclaredThrown() throws SomeCheckedException {
     Sample sample =
         new Sample() {
@@ -536,7 +533,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testThrowIfInstanceOf_null() throws SomeCheckedException {
     try {
       throwIfInstanceOf(null, SomeCheckedException.class);
@@ -545,7 +542,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public void testPropageIfInstanceOf_null() throws SomeCheckedException {
     Throwables.propagateIfInstanceOf(null, SomeCheckedException.class);
   }
@@ -625,7 +622,7 @@ public class ThrowablesTest extends TestCase {
     throw new SomeUndeclaredCheckedException();
   }
 
-  @GwtIncompatible // getStackTraceAsString(Throwable)
+  // getStackTraceAsString(Throwable)
   public void testGetStackTraceAsString() {
     class StackTraceException extends Exception {
       StackTraceException(String message) {
@@ -679,7 +676,7 @@ public class ThrowablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Throwables.getCauseAs(Throwable, Class)
+  // Throwables.getCauseAs(Throwable, Class)
   public void testGetCauseAs() {
     SomeCheckedException cause = new SomeCheckedException();
     SomeChainingException thrown = new SomeChainingException(cause);
@@ -697,7 +694,7 @@ public class ThrowablesTest extends TestCase {
   }
 
   @AndroidIncompatible // No getJavaLangAccess in Android (at least not in the version we use).
-  @GwtIncompatible // lazyStackTraceIsLazy()
+  // lazyStackTraceIsLazy()
   public void testLazyStackTraceWorksInProd() {
     // TODO(b/64442212): Remove this guard once lazyStackTrace() works in Java 9+.
     Integer javaVersion = Ints.tryParse(JAVA_SPECIFICATION_VERSION.value());
@@ -708,7 +705,7 @@ public class ThrowablesTest extends TestCase {
     assertTrue(lazyStackTraceIsLazy());
   }
 
-  @GwtIncompatible // lazyStackTrace(Throwable)
+  // lazyStackTrace(Throwable)
   public void testLazyStackTrace() {
     Exception e = new Exception();
     StackTraceElement[] originalStackTrace = e.getStackTrace();
@@ -731,7 +728,7 @@ public class ThrowablesTest extends TestCase {
     assertThat(lazyStackTrace(e)).containsExactly((Object[]) originalStackTrace).inOrder();
   }
 
-  @GwtIncompatible // lazyStackTrace
+  // lazyStackTrace
   private void doTestLazyStackTraceFallback() {
     assertFalse(lazyStackTraceIsLazy());
 
@@ -749,7 +746,7 @@ public class ThrowablesTest extends TestCase {
     assertThat(lazyStackTrace(e)).isEmpty();
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     new NullPointerTester().testAllPublicStaticMethods(Throwables.class);
   }
diff --git a/guava-tests/test/com/google/common/base/ToStringHelperTest.java b/guava-tests/test/com/google/common/base/ToStringHelperTest.java
index db15f2e..de74a75 100644
--- a/guava-tests/test/com/google/common/base/ToStringHelperTest.java
+++ b/guava-tests/test/com/google/common/base/ToStringHelperTest.java
@@ -16,9 +16,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMap;
 import java.util.Arrays;
 import java.util.Map;
 import junit.framework.TestCase;
@@ -28,10 +25,9 @@ import junit.framework.TestCase;
  *
  * @author Jason Lee
  */
-@GwtCompatible
 public class ToStringHelperTest extends TestCase {
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testConstructor_instance() {
     String toTest = MoreObjects.toStringHelper(this).toString();
     assertEquals("ToStringHelperTest{}", toTest);
@@ -42,7 +38,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testConstructor_innerClass() {
     String toTest = MoreObjects.toStringHelper(new TestClass()).toString();
     assertEquals("TestClass{}", toTest);
@@ -53,7 +49,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testConstructor_anonymousClass() {
     String toTest = MoreObjects.toStringHelper(new Object() {}).toString();
     assertEquals("{}", toTest);
@@ -64,7 +60,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testConstructor_classObject() {
     String toTest = MoreObjects.toStringHelper(TestClass.class).toString();
     assertEquals("TestClass{}", toTest);
@@ -80,7 +76,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("FooBar{}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringHelper_localInnerClass() {
     // Local inner classes have names ending like "Outer.$1Inner"
     class LocalInnerClass {}
@@ -94,7 +90,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringHelper_localInnerNestedClass() {
     class LocalInnerClass {
       class LocalInnerNestedClass {}
@@ -113,7 +109,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringHelper_moreThanNineAnonymousClasses() {
     // The nth anonymous class has a name ending like "Outer.$n"
     Object unused1 = new Object() {};
@@ -147,20 +143,20 @@ public class ToStringHelperTest extends TestCase {
   }
 
   // all remaining test are on an inner class with various fields
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_oneField() {
     String toTest = MoreObjects.toStringHelper(new TestClass()).add("field1", "Hello").toString();
     assertEquals("TestClass{field1=Hello}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_oneIntegerField() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass()).add("field1", new Integer(42)).toString();
     assertEquals("TestClass{field1=42}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_nullInteger() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass()).add("field1", (Integer) null).toString();
@@ -184,7 +180,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(".*\\{field1\\=null\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_complexFields() {
 
     Map<String, Integer> map =
@@ -230,7 +226,7 @@ public class ToStringHelperTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_addWithNullValue() {
     final String result = MoreObjects.toStringHelper(new TestClass()).add("Hello", null).toString();
 
@@ -242,7 +238,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(result, result.matches(".*\\{Hello\\=null\\}"));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_ToStringTwice() {
     MoreObjects.ToStringHelper helper =
         MoreObjects.toStringHelper(new TestClass())
@@ -261,7 +257,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals(expected2, helper.toString());
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_addValue() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -288,7 +284,7 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(toTest, toTest.matches(expected));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToString_addValueWithNullValue() {
     final String result =
         MoreObjects.toStringHelper(new TestClass())
@@ -313,14 +309,14 @@ public class ToStringHelperTest extends TestCase {
     assertTrue(result, result.matches(expected));
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_oneField() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass()).omitNullValues().add("field1", null).toString();
     assertEquals("TestClass{}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_manyFieldsFirstNull() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -332,7 +328,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("TestClass{field2=Googley, field3=World}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_manyFieldsOmitAfterNull() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -344,7 +340,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("TestClass{field2=Googley, field3=World}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_manyFieldsLastNull() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -356,14 +352,14 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("TestClass{field1=Hello, field2=Googley}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitEmptyValues_oneValue() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass()).omitNullValues().addValue(null).toString();
     assertEquals("TestClass{}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_manyValuesFirstNull() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -375,7 +371,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("TestClass{Googley, World}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_manyValuesLastNull() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
@@ -387,7 +383,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals("TestClass{Hello, Googley}", toTest);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_differentOrder() {
     String expected = "TestClass{field1=Hello, field2=Googley, field3=World}";
     String toTest1 =
@@ -408,7 +404,7 @@ public class ToStringHelperTest extends TestCase {
     assertEquals(expected, toTest2);
   }
 
-  @GwtIncompatible // Class names are obfuscated in GWT
+  // Class names are obfuscated in GWT
   public void testToStringOmitNullValues_canBeCalledManyTimes() {
     String toTest =
         MoreObjects.toStringHelper(new TestClass())
diff --git a/guava-tests/test/com/google/common/base/Utf8Test.java b/guava-tests/test/com/google/common/base/Utf8Test.java
index 049e8d2..110d8d4 100644
--- a/guava-tests/test/com/google/common/base/Utf8Test.java
+++ b/guava-tests/test/com/google/common/base/Utf8Test.java
@@ -24,9 +24,6 @@ import static java.lang.Character.MIN_HIGH_SURROGATE;
 import static java.lang.Character.MIN_LOW_SURROGATE;
 import static java.lang.Character.MIN_SUPPLEMENTARY_CODE_POINT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Random;
@@ -39,7 +36,6 @@ import junit.framework.TestCase;
  * @author Martin Buchholz
  * @author Clément Roux
  */
-@GwtCompatible(emulated = true)
 public class Utf8Test extends TestCase {
 
   private static final ImmutableList<String> ILL_FORMED_STRINGS;
@@ -187,19 +183,19 @@ public class Utf8Test extends TestCase {
           FOUR_BYTE_ROUNDTRIPPABLE_CHARACTERS;
 
   /** Tests that round tripping of all two byte permutations work. */
-  @GwtIncompatible // java.nio.charset.Charset
+  // java.nio.charset.Charset
   public void testIsWellFormed_1Byte() {
     testBytes(1, EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT);
   }
 
   /** Tests that round tripping of all two byte permutations work. */
-  @GwtIncompatible // java.nio.charset.Charset
+  // java.nio.charset.Charset
   public void testIsWellFormed_2Bytes() {
     testBytes(2, EXPECTED_TWO_BYTE_ROUNDTRIPPABLE_COUNT);
   }
 
   /** Tests that round tripping of all three byte permutations work. */
-  @GwtIncompatible // java.nio.charset.Charset
+  // java.nio.charset.Charset
 
   public void testIsWellFormed_3Bytes() {
     testBytes(3, EXPECTED_THREE_BYTE_ROUNDTRIPPABLE_COUNT);
@@ -302,7 +298,7 @@ public class Utf8Test extends TestCase {
    * @param numBytes the number of bytes in the byte array
    * @param expectedCount the expected number of roundtrippable permutations
    */
-  @GwtIncompatible // java.nio.charset.Charset
+  // java.nio.charset.Charset
   private static void testBytes(int numBytes, long expectedCount) {
     testBytes(numBytes, expectedCount, 0, -1);
   }
@@ -317,7 +313,7 @@ public class Utf8Test extends TestCase {
    * @param lim the limit of bytes to process encoded as a long as big-endian, or -1 to mean the max
    *     limit for numBytes
    */
-  @GwtIncompatible // java.nio.charset.Charset
+  // java.nio.charset.Charset
   private static void testBytes(int numBytes, long expectedCount, long start, long lim) {
     byte[] bytes = new byte[numBytes];
     if (lim == -1) {
diff --git a/guava-tests/test/com/google/common/base/VerifyTest.java b/guava-tests/test/com/google/common/base/VerifyTest.java
index 37c6efc..fd2cfda 100644
--- a/guava-tests/test/com/google/common/base/VerifyTest.java
+++ b/guava-tests/test/com/google/common/base/VerifyTest.java
@@ -18,13 +18,10 @@ import static com.google.common.base.Verify.verify;
 import static com.google.common.base.Verify.verifyNotNull;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
 /** Unit test for {@link com.google.common.base.Verify}. */
-@GwtCompatible(emulated = true)
 public class VerifyTest extends TestCase {
   public void testVerify_simple_success() {
     verify(true);
@@ -93,7 +90,7 @@ public class VerifyTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     // Don't bother testing: Verify is like Preconditions. See the discussion on that class.
   }
diff --git a/guava-tests/test/com/google/common/cache/AbstractCacheTest.java b/guava-tests/test/com/google/common/cache/AbstractCacheTest.java
index 13ef33d..5eee405 100644
--- a/guava-tests/test/com/google/common/cache/AbstractCacheTest.java
+++ b/guava-tests/test/com/google/common/cache/AbstractCacheTest.java
@@ -18,8 +18,6 @@ package com.google.common.cache;
 
 import com.google.common.cache.AbstractCache.SimpleStatsCounter;
 import com.google.common.cache.AbstractCache.StatsCounter;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicReference;
diff --git a/guava-tests/test/com/google/common/cache/AndroidIncompatible.java b/guava-tests/test/com/google/common/cache/AndroidIncompatible.java
index 135f524..d7a7fbf 100644
--- a/guava-tests/test/com/google/common/cache/AndroidIncompatible.java
+++ b/guava-tests/test/com/google/common/cache/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-tests/test/com/google/common/cache/CacheBuilderFactory.java b/guava-tests/test/com/google/common/cache/CacheBuilderFactory.java
index 5426ced..ff0674a 100644
--- a/guava-tests/test/com/google/common/cache/CacheBuilderFactory.java
+++ b/guava-tests/test/com/google/common/cache/CacheBuilderFactory.java
@@ -26,7 +26,6 @@ import com.google.common.collect.Sets;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Helper class for creating {@link CacheBuilder} instances with all combinations of several sets of
diff --git a/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java b/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java
index 2ae8144..d7a449f 100644
--- a/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java
+++ b/guava-tests/test/com/google/common/cache/CacheBuilderGwtTest.java
@@ -16,10 +16,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.FakeTicker;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -37,7 +33,6 @@ import junit.framework.TestCase;
  *
  * @author Jon Donovan
  */
-@GwtCompatible
 public class CacheBuilderGwtTest extends TestCase {
 
   private FakeTicker fakeTicker;
diff --git a/guava-tests/test/com/google/common/cache/CacheBuilderTest.java b/guava-tests/test/com/google/common/cache/CacheBuilderTest.java
index 16488f3..090601a 100644
--- a/guava-tests/test/com/google/common/cache/CacheBuilderTest.java
+++ b/guava-tests/test/com/google/common/cache/CacheBuilderTest.java
@@ -27,8 +27,6 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ticker;
 import com.google.common.cache.TestingRemovalListeners.CountingRemovalListener;
 import com.google.common.cache.TestingRemovalListeners.QueuingRemovalListener;
@@ -47,7 +45,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import junit.framework.TestCase;
 
 /** Unit tests for CacheBuilder. */
-@GwtCompatible(emulated = true)
 public class CacheBuilderTest extends TestCase {
 
   public void testNewBuilder() {
@@ -79,7 +76,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // CacheTesting
+  // CacheTesting
   public void testInitialCapacity_small() {
     LoadingCache<?, ?> cache = CacheBuilder.newBuilder().initialCapacity(5).build(identityLoader());
     LocalCache<?, ?> map = CacheTesting.toLocalCache(cache);
@@ -91,7 +88,7 @@ public class CacheBuilderTest extends TestCase {
     assertEquals(2, map.segments[3].table.length());
   }
 
-  @GwtIncompatible // CacheTesting
+  // CacheTesting
   public void testInitialCapacity_smallest() {
     LoadingCache<?, ?> cache = CacheBuilder.newBuilder().initialCapacity(0).build(identityLoader());
     LocalCache<?, ?> map = CacheTesting.toLocalCache(cache);
@@ -129,7 +126,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // CacheTesting
+  // CacheTesting
   public void testConcurrencyLevel_small() {
     LoadingCache<?, ?> cache =
         CacheBuilder.newBuilder().concurrencyLevel(1).build(identityLoader());
@@ -161,7 +158,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // maximumWeight
+  // maximumWeight
   public void testMaximumSize_andWeight() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder().maximumSize(16);
     try {
@@ -171,7 +168,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // digs into internals of the non-GWT implementation
+  // digs into internals of the non-GWT implementation
   public void testMaximumSize_largerThanInt() {
     CacheBuilder<Object, Object> builder =
         CacheBuilder.newBuilder().initialCapacity(512).maximumSize(Long.MAX_VALUE);
@@ -179,7 +176,7 @@ public class CacheBuilderTest extends TestCase {
     assertThat(cache.segments.length * cache.segments[0].table.length()).isEqualTo(512);
   }
 
-  @GwtIncompatible // maximumWeight
+  // maximumWeight
   public void testMaximumWeight_negative() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder();
     try {
@@ -189,7 +186,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // maximumWeight
+  // maximumWeight
   public void testMaximumWeight_setTwice() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder().maximumWeight(16);
     try {
@@ -205,7 +202,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // maximumWeight
+  // maximumWeight
   public void testMaximumWeight_withoutWeigher() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder().maximumWeight(1);
     try {
@@ -215,7 +212,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // weigher
+  // weigher
   public void testWeigher_withoutMaximumWeight() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder().weigher(constantWeigher(42));
     try {
@@ -225,7 +222,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // weigher
+  // weigher
   public void testWeigher_withMaximumSize() {
     try {
       CacheBuilder.newBuilder().weigher(constantWeigher(42)).maximumSize(1);
@@ -239,7 +236,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // weakKeys
+  // weakKeys
   public void testKeyStrengthSetTwice() {
     CacheBuilder<Object, Object> builder1 = CacheBuilder.newBuilder().weakKeys();
     try {
@@ -249,7 +246,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // weakValues
+  // weakValues
   public void testValueStrengthSetTwice() {
     CacheBuilder<Object, Object> builder1 = CacheBuilder.newBuilder().weakValues();
     try {
@@ -276,7 +273,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public void testLargeDurationsAreOk() {
     java.time.Duration threeHundredYears = java.time.Duration.ofDays(365 * 300);
     CacheBuilder<Object, Object> builder =
@@ -295,7 +292,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public void testTimeToLive_negative_duration() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder();
     try {
@@ -322,7 +319,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public void testTimeToLive_setTwice_duration() {
     CacheBuilder<Object, Object> builder =
         CacheBuilder.newBuilder().expireAfterWrite(java.time.Duration.ofSeconds(3600));
@@ -343,7 +340,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public void testTimeToIdle_negative_duration() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder();
     try {
@@ -370,7 +367,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public void testTimeToIdle_setTwice_duration() {
     CacheBuilder<Object, Object> builder =
         CacheBuilder.newBuilder().expireAfterAccess(java.time.Duration.ofSeconds(3600));
@@ -391,7 +388,7 @@ public class CacheBuilderTest extends TestCase {
     // well, it didn't blow up.
   }
 
-  @GwtIncompatible // refreshAfterWrite
+  // refreshAfterWrite
   public void testRefresh_zero() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder();
     try {
@@ -401,7 +398,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public void testRefresh_zero_duration() {
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder();
     try {
@@ -411,7 +408,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // refreshAfterWrite
+  // refreshAfterWrite
   public void testRefresh_setTwice() {
     CacheBuilder<Object, Object> builder =
         CacheBuilder.newBuilder().refreshAfterWrite(3600, SECONDS);
@@ -423,7 +420,7 @@ public class CacheBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public void testRefresh_setTwice_duration() {
     CacheBuilder<Object, Object> builder =
         CacheBuilder.newBuilder().refreshAfterWrite(java.time.Duration.ofSeconds(3600));
@@ -461,7 +458,7 @@ public class CacheBuilderTest extends TestCase {
     assertFalse(CacheBuilder.newBuilder().build().asMap().values() instanceof Set);
   }
 
-  @GwtIncompatible // CacheTesting
+  // CacheTesting
   public void testNullCache() {
     CountingRemovalListener<Object, Object> listener = countingRemovalListener();
     LoadingCache<Object, Object> nullCache =
@@ -474,7 +471,7 @@ public class CacheBuilderTest extends TestCase {
     CacheTesting.checkEmpty(nullCache.asMap());
   }
 
-  @GwtIncompatible // QueuingRemovalListener
+  // QueuingRemovalListener
 
   public void testRemovalNotification_clear() throws InterruptedException {
     // If a clear() happens while a computation is pending, we should not get a removal
@@ -545,7 +542,7 @@ public class CacheBuilderTest extends TestCase {
    * removal listener), or else is not affected by the {@code clear()} (and therefore exists in the
    * cache afterward).
    */
-  @GwtIncompatible // QueuingRemovalListener
+  // QueuingRemovalListener
 
   public void testRemovalNotification_clear_basher() throws InterruptedException {
     // If a clear() happens close to the end of computation, one of two things should happen:
@@ -629,7 +626,7 @@ public class CacheBuilderTest extends TestCase {
    * Calls get() repeatedly from many different threads, and tests that all of the removed entries
    * (removed because of size limits or expiration) trigger appropriate removal notifications.
    */
-  @GwtIncompatible // QueuingRemovalListener
+  // QueuingRemovalListener
 
   public void testRemovalNotification_get_basher() throws InterruptedException {
     int nTasks = 1000;
@@ -709,14 +706,14 @@ public class CacheBuilderTest extends TestCase {
     assertEquals(computeCount.get(), cache.size() + removalListener.size());
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullParameters() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder();
     tester.testAllPublicInstanceMethods(builder);
   }
 
-  @GwtIncompatible // CacheTesting
+  // CacheTesting
   public void testSizingDefaults() {
     LoadingCache<?, ?> cache = CacheBuilder.newBuilder().build(identityLoader());
     LocalCache<?, ?> map = CacheTesting.toLocalCache(cache);
@@ -724,7 +721,7 @@ public class CacheBuilderTest extends TestCase {
     assertEquals(4, map.segments[0].table.length()); // capacity / conc level
   }
 
-  @GwtIncompatible // CountDownLatch
+  // CountDownLatch
   static final class DelayingIdentityLoader<T> extends CacheLoader<T, T> {
     private final AtomicBoolean shouldWait;
     private final CountDownLatch delayLatch;
diff --git a/guava-tests/test/com/google/common/cache/CacheLoaderTest.java b/guava-tests/test/com/google/common/cache/CacheLoaderTest.java
index e078ddd..4c14b92 100644
--- a/guava-tests/test/com/google/common/cache/CacheLoaderTest.java
+++ b/guava-tests/test/com/google/common/cache/CacheLoaderTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Queues;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
diff --git a/guava-tests/test/com/google/common/cache/CacheLoadingTest.java b/guava-tests/test/com/google/common/cache/CacheLoadingTest.java
index f5ea546..fdeee8f 100644
--- a/guava-tests/test/com/google/common/cache/CacheLoadingTest.java
+++ b/guava-tests/test/com/google/common/cache/CacheLoadingTest.java
@@ -29,8 +29,6 @@ import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
 import com.google.common.cache.TestingCacheLoaders.CountingLoader;
 import com.google.common.cache.TestingCacheLoaders.IdentityLoader;
 import com.google.common.cache.TestingRemovalListeners.CountingRemovalListener;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.testing.FakeTicker;
@@ -41,7 +39,6 @@ import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import java.io.IOException;
-import java.lang.ref.WeakReference;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
diff --git a/guava-tests/test/com/google/common/cache/CacheManualTest.java b/guava-tests/test/com/google/common/cache/CacheManualTest.java
index abe0b15..0ee764a 100644
--- a/guava-tests/test/com/google/common/cache/CacheManualTest.java
+++ b/guava-tests/test/com/google/common/cache/CacheManualTest.java
@@ -16,8 +16,6 @@ package com.google.common.cache;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import junit.framework.TestCase;
 
 /** @author Charles Fry */
diff --git a/guava-tests/test/com/google/common/cache/CacheReferencesTest.java b/guava-tests/test/com/google/common/cache/CacheReferencesTest.java
index 1fe2636..da63939 100644
--- a/guava-tests/test/com/google/common/cache/CacheReferencesTest.java
+++ b/guava-tests/test/com/google/common/cache/CacheReferencesTest.java
@@ -21,9 +21,7 @@ import static com.google.common.truth.Truth.assertThat;
 import com.google.common.base.Function;
 import com.google.common.cache.LocalCache.Strength;
 import com.google.common.cache.TestingRemovalListeners.CountingRemovalListener;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
-import java.lang.ref.WeakReference;
 import junit.framework.TestCase;
 
 /**
diff --git a/guava-tests/test/com/google/common/cache/CacheTesting.java b/guava-tests/test/com/google/common/cache/CacheTesting.java
index 42b50b9..3360d65 100644
--- a/guava-tests/test/com/google/common/cache/CacheTesting.java
+++ b/guava-tests/test/com/google/common/cache/CacheTesting.java
@@ -28,9 +28,6 @@ import com.google.common.base.Preconditions;
 import com.google.common.cache.LocalCache.LocalLoadingCache;
 import com.google.common.cache.LocalCache.Segment;
 import com.google.common.cache.LocalCache.ValueReference;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import com.google.common.testing.EqualsTester;
@@ -44,7 +41,6 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReferenceArray;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A collection of utilities for {@link Cache} testing.
diff --git a/guava-tests/test/com/google/common/cache/EmptyCachesTest.java b/guava-tests/test/com/google/common/cache/EmptyCachesTest.java
index a5e3a59..8e2f58b 100644
--- a/guava-tests/test/com/google/common/cache/EmptyCachesTest.java
+++ b/guava-tests/test/com/google/common/cache/EmptyCachesTest.java
@@ -23,7 +23,6 @@ import static java.util.concurrent.TimeUnit.SECONDS;
 import com.google.common.base.Function;
 import com.google.common.cache.CacheBuilderFactory.DurationSpec;
 import com.google.common.cache.LocalCache.Strength;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Maps;
 import com.google.common.testing.EqualsTester;
diff --git a/guava-tests/test/com/google/common/cache/ForwardingCacheTest.java b/guava-tests/test/com/google/common/cache/ForwardingCacheTest.java
index 412ff78..3ca6775 100644
--- a/guava-tests/test/com/google/common/cache/ForwardingCacheTest.java
+++ b/guava-tests/test/com/google/common/cache/ForwardingCacheTest.java
@@ -20,8 +20,6 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import java.util.concurrent.ExecutionException;
 import junit.framework.TestCase;
 
diff --git a/guava-tests/test/com/google/common/cache/ForwardingLoadingCacheTest.java b/guava-tests/test/com/google/common/cache/ForwardingLoadingCacheTest.java
index d78db2d..097107d 100644
--- a/guava-tests/test/com/google/common/cache/ForwardingLoadingCacheTest.java
+++ b/guava-tests/test/com/google/common/cache/ForwardingLoadingCacheTest.java
@@ -20,8 +20,6 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import java.util.concurrent.ExecutionException;
 import junit.framework.TestCase;
 
diff --git a/guava-tests/test/com/google/common/cache/LocalCacheTest.java b/guava-tests/test/com/google/common/cache/LocalCacheTest.java
index ceecb5d..ec0b3b5 100644
--- a/guava-tests/test/com/google/common/cache/LocalCacheTest.java
+++ b/guava-tests/test/com/google/common/cache/LocalCacheTest.java
@@ -44,9 +44,6 @@ import com.google.common.cache.LocalCache.ValueReference;
 import com.google.common.cache.TestingCacheLoaders.CountingLoader;
 import com.google.common.cache.TestingRemovalListeners.CountingRemovalListener;
 import com.google.common.cache.TestingRemovalListeners.QueuingRemovalListener;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.testing.MapTestSuiteBuilder;
diff --git a/guava-tests/test/com/google/common/cache/LocalLoadingCacheTest.java b/guava-tests/test/com/google/common/cache/LocalLoadingCacheTest.java
index 8ba9dbc..435d709 100644
--- a/guava-tests/test/com/google/common/cache/LocalLoadingCacheTest.java
+++ b/guava-tests/test/com/google/common/cache/LocalLoadingCacheTest.java
@@ -23,8 +23,6 @@ import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.cache.LocalCache.LocalLoadingCache;
 import com.google.common.cache.LocalCache.Segment;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.NullPointerTester;
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.util.Map;
diff --git a/guava-tests/test/com/google/common/cache/PopulatedCachesTest.java b/guava-tests/test/com/google/common/cache/PopulatedCachesTest.java
index b02b8ac..5346d10 100644
--- a/guava-tests/test/com/google/common/cache/PopulatedCachesTest.java
+++ b/guava-tests/test/com/google/common/cache/PopulatedCachesTest.java
@@ -24,8 +24,6 @@ import static java.util.concurrent.TimeUnit.SECONDS;
 import com.google.common.base.Function;
 import com.google.common.cache.CacheBuilderFactory.DurationSpec;
 import com.google.common.cache.LocalCache.Strength;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
diff --git a/guava-tests/test/com/google/common/cache/TestingCacheLoaders.java b/guava-tests/test/com/google/common/cache/TestingCacheLoaders.java
index e4a06c9..d40a7ff 100644
--- a/guava-tests/test/com/google/common/cache/TestingCacheLoaders.java
+++ b/guava-tests/test/com/google/common/cache/TestingCacheLoaders.java
@@ -16,21 +16,17 @@ package com.google.common.cache;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Maps;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Utility {@link CacheLoader} implementations intended for use in testing.
  *
  * @author mike nonemacher
  */
-@GwtCompatible(emulated = true)
 class TestingCacheLoaders {
 
   /**
@@ -140,7 +136,7 @@ class TestingCacheLoaders {
       return key;
     }
 
-    @GwtIncompatible // reload
+    // reload
     @Override
     public ListenableFuture<Integer> reload(Integer key, Integer oldValue) {
       countReload.incrementAndGet();
diff --git a/guava-tests/test/com/google/common/cache/TestingRemovalListeners.java b/guava-tests/test/com/google/common/cache/TestingRemovalListeners.java
index 698467f..b8c10af 100644
--- a/guava-tests/test/com/google/common/cache/TestingRemovalListeners.java
+++ b/guava-tests/test/com/google/common/cache/TestingRemovalListeners.java
@@ -14,8 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -24,7 +22,6 @@ import java.util.concurrent.atomic.AtomicInteger;
  *
  * @author mike nonemacher
  */
-@GwtCompatible(emulated = true)
 class TestingRemovalListeners {
 
   /** Returns a new no-op {@code RemovalListener}. */
@@ -33,7 +30,7 @@ class TestingRemovalListeners {
   }
 
   /** Type-inferring factory method for creating a {@link QueuingRemovalListener}. */
-  @GwtIncompatible // ConcurrentLinkedQueue
+  // ConcurrentLinkedQueue
   static <K, V> QueuingRemovalListener<K, V> queuingRemovalListener() {
     return new QueuingRemovalListener<>();
   }
@@ -44,7 +41,7 @@ class TestingRemovalListeners {
   }
 
   /** {@link RemovalListener} that adds all {@link RemovalNotification} objects to a queue. */
-  @GwtIncompatible // ConcurrentLinkedQueue
+  // ConcurrentLinkedQueue
   static class QueuingRemovalListener<K, V> extends ConcurrentLinkedQueue<RemovalNotification<K, V>>
       implements RemovalListener<K, V> {
 
diff --git a/guava-tests/test/com/google/common/collect/AbstractHashFloodingTest.java b/guava-tests/test/com/google/common/collect/AbstractHashFloodingTest.java
index 049da4c..8967c13 100644
--- a/guava-tests/test/com/google/common/collect/AbstractHashFloodingTest.java
+++ b/guava-tests/test/com/google/common/collect/AbstractHashFloodingTest.java
@@ -17,9 +17,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -29,13 +26,11 @@ import java.util.function.BiConsumer;
 import java.util.function.IntToDoubleFunction;
 import java.util.function.Supplier;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Abstract superclass for tests that hash flooding a collection has controlled worst-case
  * performance.
  */
-@GwtCompatible
 public abstract class AbstractHashFloodingTest<T> extends TestCase {
   private final List<Construction<T>> constructions;
   private final IntToDoubleFunction constructionAsymptotics;
@@ -107,7 +102,6 @@ public abstract class AbstractHashFloodingTest<T> extends TestCase {
 
   @FunctionalInterface
   interface Construction<T> {
-    @CanIgnoreReturnValue
     abstract T create(List<?> keys);
 
     static Construction<Map<Object, Object>> mapFromKeys(
@@ -188,7 +182,6 @@ public abstract class AbstractHashFloodingTest<T> extends TestCase {
     return result;
   }
 
-  @GwtIncompatible
   public void testResistsHashFloodingInConstruction() {
     CallsCounter smallCounter = new CallsCounter();
     List<CountsHashCodeAndEquals> haveSameHashesSmall = createAdversarialInput(10, smallCounter);
@@ -221,7 +214,6 @@ public abstract class AbstractHashFloodingTest<T> extends TestCase {
     }
   }
 
-  @GwtIncompatible
   public void testResistsHashFloodingOnQuery() {
     CallsCounter smallCounter = new CallsCounter();
     List<CountsHashCodeAndEquals> haveSameHashesSmall = createAdversarialInput(10, smallCounter);
diff --git a/guava-tests/test/com/google/common/collect/AbstractImmutableSetTest.java b/guava-tests/test/com/google/common/collect/AbstractImmutableSetTest.java
index d7a8d16..353bf8e 100644
--- a/guava-tests/test/com/google/common/collect/AbstractImmutableSetTest.java
+++ b/guava-tests/test/com/google/common/collect/AbstractImmutableSetTest.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.testing.IteratorFeature.UNMODIFIABLE;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.IteratorTester;
 import com.google.common.collect.testing.MinimalCollection;
@@ -40,7 +38,6 @@ import junit.framework.TestCase;
  * @author Kevin Bourrillion
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public abstract class AbstractImmutableSetTest extends TestCase {
 
   protected abstract <E extends Comparable<? super E>> Set<E> of();
@@ -279,7 +276,7 @@ public abstract class AbstractImmutableSetTest extends TestCase {
     assertEquals("[a, b, c, d, e, f, g]", set.toString());
   }
 
-  @GwtIncompatible // slow (~40s)
+  // slow (~40s)
   public void testIterator_oneElement() {
     new IteratorTester<String>(
         5, UNMODIFIABLE, Collections.singleton("a"), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -290,7 +287,7 @@ public abstract class AbstractImmutableSetTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~30s)
+  // slow (~30s)
   public void testIterator_general() {
     new IteratorTester<String>(
         5, UNMODIFIABLE, asList("a", "b", "c"), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -476,7 +473,7 @@ public abstract class AbstractImmutableSetTest extends TestCase {
    */
   // TODO(benyu): turn this into a test once all copyOf(Collection) are
   // thread-safe
-  @GwtIncompatible // GWT is single threaded
+  // GWT is single threaded
   void verifyThreadSafe() {
     List<String> sample = Lists.newArrayList("a", "b", "c");
     for (int delta : new int[] {-1, 0, 1}) {
diff --git a/guava-tests/test/com/google/common/collect/AbstractImmutableTableTest.java b/guava-tests/test/com/google/common/collect/AbstractImmutableTableTest.java
index ffff9f5..cfc5a3e 100644
--- a/guava-tests/test/com/google/common/collect/AbstractImmutableTableTest.java
+++ b/guava-tests/test/com/google/common/collect/AbstractImmutableTableTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -24,7 +23,6 @@ import junit.framework.TestCase;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 public abstract class AbstractImmutableTableTest extends TestCase {
 
   abstract Iterable<ImmutableTable<Character, Integer, String>> getTestInstances();
diff --git a/guava-tests/test/com/google/common/collect/AbstractIteratorTest.java b/guava-tests/test/com/google/common/collect/AbstractIteratorTest.java
index 3592210..1d65ebc 100644
--- a/guava-tests/test/com/google/common/collect/AbstractIteratorTest.java
+++ b/guava-tests/test/com/google/common/collect/AbstractIteratorTest.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.GcFinalization;
-import java.lang.ref.WeakReference;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import junit.framework.TestCase;
@@ -30,7 +27,6 @@ import junit.framework.TestCase;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("serial") // No serialization is used in this test
-@GwtCompatible(emulated = true)
 public class AbstractIteratorTest extends TestCase {
 
   public void testDefaultBehaviorOfNextAndHasNext() {
@@ -138,7 +134,7 @@ public class AbstractIteratorTest extends TestCase {
   }
 
 
-  @GwtIncompatible // weak references
+  // weak references
   public void testFreesNextReference() {
     Iterator<Object> itr =
         new AbstractIterator<Object>() {
diff --git a/guava-tests/test/com/google/common/collect/AbstractMapEntryTest.java b/guava-tests/test/com/google/common/collect/AbstractMapEntryTest.java
index 11c66a7..d01a41a 100644
--- a/guava-tests/test/com/google/common/collect/AbstractMapEntryTest.java
+++ b/guava-tests/test/com/google/common/collect/AbstractMapEntryTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.Map.Entry;
 import junit.framework.TestCase;
@@ -26,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Mike Bostock
  */
-@GwtCompatible
 public class AbstractMapEntryTest extends TestCase {
   private static final String NK = null;
   private static final Integer NV = null;
diff --git a/guava-tests/test/com/google/common/collect/AbstractMultimapAsMapImplementsMapTest.java b/guava-tests/test/com/google/common/collect/AbstractMultimapAsMapImplementsMapTest.java
index 3e41dec..9330ab0 100644
--- a/guava-tests/test/com/google/common/collect/AbstractMultimapAsMapImplementsMapTest.java
+++ b/guava-tests/test/com/google/common/collect/AbstractMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Map;
@@ -27,7 +26,6 @@ import java.util.Map;
  * @author George van den Driessche
  * @author Jared Levy
  */
-@GwtCompatible
 public abstract class AbstractMultimapAsMapImplementsMapTest
     extends MapInterfaceTest<String, Collection<Integer>> {
 
diff --git a/guava-tests/test/com/google/common/collect/AbstractRangeSetTest.java b/guava-tests/test/com/google/common/collect/AbstractRangeSetTest.java
index e53bea1..830462a 100644
--- a/guava-tests/test/com/google/common/collect/AbstractRangeSetTest.java
+++ b/guava-tests/test/com/google/common/collect/AbstractRangeSetTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
@@ -25,7 +24,7 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // TreeRangeSet
+// TreeRangeSet
 public abstract class AbstractRangeSetTest extends TestCase {
   public static void testInvariants(RangeSet<?> rangeSet) {
     testInvariantsInternal(rangeSet);
diff --git a/guava-tests/test/com/google/common/collect/AbstractSequentialIteratorTest.java b/guava-tests/test/com/google/common/collect/AbstractSequentialIteratorTest.java
index f63f01a..cd8288f 100644
--- a/guava-tests/test/com/google/common/collect/AbstractSequentialIteratorTest.java
+++ b/guava-tests/test/com/google/common/collect/AbstractSequentialIteratorTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.collect.testing.IteratorFeature.UNMODIFIABLE;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.IteratorTester;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
@@ -28,9 +26,8 @@ import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
 /** Tests for {@link AbstractSequentialIterator}. */
-@GwtCompatible(emulated = true)
 public class AbstractSequentialIteratorTest extends TestCase {
-  @GwtIncompatible // Too slow
+  // Too slow
   public void testDoublerExhaustive() {
     new IteratorTester<Integer>(
         3, UNMODIFIABLE, ImmutableList.of(1, 2), IteratorTester.KnownOrder.KNOWN_ORDER) {
diff --git a/guava-tests/test/com/google/common/collect/AbstractTableReadTest.java b/guava-tests/test/com/google/common/collect/AbstractTableReadTest.java
index 67d44cb..da0819b 100644
--- a/guava-tests/test/com/google/common/collect/AbstractTableReadTest.java
+++ b/guava-tests/test/com/google/common/collect/AbstractTableReadTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
@@ -30,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public abstract class AbstractTableReadTest extends TestCase {
   protected Table<String, Integer, Character> table;
 
@@ -184,7 +181,7 @@ public abstract class AbstractTableReadTest extends TestCase {
     assertThat(table.columnKeySet()).containsExactly(1, 2, 3);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerInstance() {
     table = create("foo", 1, 'a', "bar", 1, 'b', "foo", 2, 'c', "bar", 3, 'd');
     new NullPointerTester().testAllPublicInstanceMethods(table);
diff --git a/guava-tests/test/com/google/common/collect/AbstractTableTest.java b/guava-tests/test/com/google/common/collect/AbstractTableTest.java
index f634b6a..02ec0a1 100644
--- a/guava-tests/test/com/google/common/collect/AbstractTableTest.java
+++ b/guava-tests/test/com/google/common/collect/AbstractTableTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 
 /**
@@ -27,7 +26,6 @@ import java.util.Map;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible
 public abstract class AbstractTableTest extends AbstractTableReadTest {
 
   protected void populate(Table<String, Integer, Character> table, Object... data) {
diff --git a/guava-tests/test/com/google/common/collect/AndroidIncompatible.java b/guava-tests/test/com/google/common/collect/AndroidIncompatible.java
index 6600c1f..b1dee9d 100644
--- a/guava-tests/test/com/google/common/collect/AndroidIncompatible.java
+++ b/guava-tests/test/com/google/common/collect/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-tests/test/com/google/common/collect/ArrayListMultimapTest.java b/guava-tests/test/com/google/common/collect/ArrayListMultimapTest.java
index 08e5ae8..4974e1f 100644
--- a/guava-tests/test/com/google/common/collect/ArrayListMultimapTest.java
+++ b/guava-tests/test/com/google/common/collect/ArrayListMultimapTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -39,10 +37,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ArrayListMultimapTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
diff --git a/guava-tests/test/com/google/common/collect/ArrayTableTest.java b/guava-tests/test/com/google/common/collect/ArrayTableTest.java
index b7622c2..1c26a18 100644
--- a/guava-tests/test/com/google/common/collect/ArrayTableTest.java
+++ b/guava-tests/test/com/google/common/collect/ArrayTableTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.collect.Table.Cell;
 import com.google.common.testing.EqualsTester;
@@ -34,7 +32,6 @@ import java.util.Map;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ArrayTableTest extends AbstractTableTest {
 
   @Override
@@ -231,7 +228,7 @@ public class ArrayTableTest extends AbstractTableTest {
     }
   }
 
-  @GwtIncompatible // toArray
+  // toArray
   public void testEmptyToArry() {
     ArrayTable<String, String, Character> table =
         ArrayTable.create(Arrays.<String>asList(), Arrays.<String>asList());
@@ -290,7 +287,7 @@ public class ArrayTableTest extends AbstractTableTest {
     SerializableTester.reserializeAndAssert(table);
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNullPointerStatic() {
     new NullPointerTester().testAllPublicStaticMethods(ArrayTable.class);
   }
@@ -452,7 +449,7 @@ public class ArrayTableTest extends AbstractTableTest {
     assertNull(table.erase("bar", null));
   }
 
-  @GwtIncompatible // ArrayTable.toArray(Class)
+  // ArrayTable.toArray(Class)
   public void testToArray() {
     ArrayTable<String, Integer, Character> table =
         create("foo", 1, 'a', "bar", 1, 'b', "foo", 3, 'c');
@@ -519,12 +516,12 @@ public class ArrayTableTest extends AbstractTableTest {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() {
     new NullPointerTester().testAllPublicInstanceMethods(create());
   }
 
-  @GwtIncompatible // serialize
+  // serialize
   public void testSerializable() {
     SerializableTester.reserializeAndAssert(create());
   }
diff --git a/guava-tests/test/com/google/common/collect/CollectSpliteratorsTest.java b/guava-tests/test/com/google/common/collect/CollectSpliteratorsTest.java
index 2b5e6e5..ff62432 100644
--- a/guava-tests/test/com/google/common/collect/CollectSpliteratorsTest.java
+++ b/guava-tests/test/com/google/common/collect/CollectSpliteratorsTest.java
@@ -16,7 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Ascii;
 import com.google.common.collect.testing.SpliteratorTester;
 import java.util.Arrays;
@@ -28,7 +27,6 @@ import java.util.stream.LongStream;
 import junit.framework.TestCase;
 
 /** Tests for {@code CollectSpliterators}. */
-@GwtCompatible
 public class CollectSpliteratorsTest extends TestCase {
   public void testMap() {
     SpliteratorTester.of(
diff --git a/guava-tests/test/com/google/common/collect/Collections2Test.java b/guava-tests/test/com/google/common/collect/Collections2Test.java
index 4b87618..9bddb02 100644
--- a/guava-tests/test/com/google/common/collect/Collections2Test.java
+++ b/guava-tests/test/com/google/common/collect/Collections2Test.java
@@ -23,8 +23,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 import static java.util.Collections.nCopies;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.collect.testing.CollectionTestSuiteBuilder;
@@ -47,9 +45,8 @@ import junit.framework.TestSuite;
  * @author Chris Povirk
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class Collections2Test extends TestCase {
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite(Collections2Test.class.getSimpleName());
     suite.addTest(testsForFilter());
@@ -86,7 +83,7 @@ public class Collections2Test extends TestCase {
         }
       };
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilter() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -109,7 +106,7 @@ public class Collections2Test extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterAll() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -130,7 +127,7 @@ public class Collections2Test extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterLinkedList() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -153,7 +150,7 @@ public class Collections2Test extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterNoNulls() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -176,7 +173,7 @@ public class Collections2Test extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterFiltered() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -208,7 +205,7 @@ public class Collections2Test extends TestCase {
         }
       };
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForTransform() {
     return CollectionTestSuiteBuilder.using(
             new TestStringCollectionGenerator() {
@@ -230,7 +227,7 @@ public class Collections2Test extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Collections2.class);
diff --git a/guava-tests/test/com/google/common/collect/CompactHashSetTest.java b/guava-tests/test/com/google/common/collect/CompactHashSetTest.java
index 6e2817b..c525e4c 100644
--- a/guava-tests/test/com/google/common/collect/CompactHashSetTest.java
+++ b/guava-tests/test/com/google/common/collect/CompactHashSetTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.SetTestSuiteBuilder;
 import com.google.common.collect.testing.TestStringSetGenerator;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -37,7 +36,7 @@ import junit.framework.TestSuite;
  *
  * @author Dimitris Andreou
  */
-@GwtIncompatible // java.util.Arrays#copyOf(Object[], int), java.lang.reflect.Array
+// java.util.Arrays#copyOf(Object[], int), java.lang.reflect.Array
 public class CompactHashSetTest extends TestCase {
   public static Test suite() {
     List<Feature<?>> allFeatures =
diff --git a/guava-tests/test/com/google/common/collect/CompactLinkedHashSetTest.java b/guava-tests/test/com/google/common/collect/CompactLinkedHashSetTest.java
index dba9a73..7847617 100644
--- a/guava-tests/test/com/google/common/collect/CompactLinkedHashSetTest.java
+++ b/guava-tests/test/com/google/common/collect/CompactLinkedHashSetTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.SetTestSuiteBuilder;
 import com.google.common.collect.testing.TestStringSetGenerator;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -37,7 +36,7 @@ import junit.framework.TestSuite;
  *
  * @author Dimitris Andreou
  */
-@GwtIncompatible // java.util.Arrays#copyOf(Object[], int), java.lang.reflect.Array
+// java.util.Arrays#copyOf(Object[], int), java.lang.reflect.Array
 public class CompactLinkedHashSetTest extends TestCase {
   public static Test suite() {
     List<Feature<?>> allFeatures =
diff --git a/guava-tests/test/com/google/common/collect/ComparatorsTest.java b/guava-tests/test/com/google/common/collect/ComparatorsTest.java
index 3f568c1..ab932b6 100644
--- a/guava-tests/test/com/google/common/collect/ComparatorsTest.java
+++ b/guava-tests/test/com/google/common/collect/ComparatorsTest.java
@@ -21,7 +21,6 @@ import static java.util.Arrays.asList;
 import static java.util.Comparator.comparing;
 import static java.util.Comparator.naturalOrder;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.CollectorTester;
 import com.google.common.testing.EqualsTester;
@@ -36,7 +35,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class ComparatorsTest extends TestCase {
   @SuppressWarnings("unchecked") // dang varargs
   public void testLexicographical() {
diff --git a/guava-tests/test/com/google/common/collect/ComparisonChainTest.java b/guava-tests/test/com/google/common/collect/ComparisonChainTest.java
index 9a9f98a..bfde573 100644
--- a/guava-tests/test/com/google/common/collect/ComparisonChainTest.java
+++ b/guava-tests/test/com/google/common/collect/ComparisonChainTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
@@ -25,7 +24,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 public class ComparisonChainTest extends TestCase {
   private static final DontCompareMe DONT_COMPARE_ME = new DontCompareMe();
 
diff --git a/guava-tests/test/com/google/common/collect/ContiguousSetTest.java b/guava-tests/test/com/google/common/collect/ContiguousSetTest.java
index 6b19b1e..86cd879 100644
--- a/guava-tests/test/com/google/common/collect/ContiguousSetTest.java
+++ b/guava-tests/test/com/google/common/collect/ContiguousSetTest.java
@@ -28,8 +28,6 @@ import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.testing.SerializableTester.reserializeAndAssert;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.NavigableSetTestSuiteBuilder;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.SetGenerators.ContiguousSetDescendingGenerator;
@@ -45,7 +43,6 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 /** @author Gregory Kick */
-@GwtCompatible(emulated = true)
 public class ContiguousSetTest extends TestCase {
   private static final DiscreteDomain<Integer> NOT_EQUAL_TO_INTEGERS =
       new DiscreteDomain<Integer>() {
@@ -134,7 +131,7 @@ public class ContiguousSetTest extends TestCase {
         ContiguousSet.create(Range.atMost(Integer.MAX_VALUE), integers()));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     ContiguousSet<Integer> empty = ContiguousSet.create(Range.closedOpen(1, 1), integers());
     assertTrue(empty instanceof EmptyContiguousSet);
@@ -388,7 +385,7 @@ public class ContiguousSetTest extends TestCase {
     assertEquals(ImmutableList.of(1, 2, 3), ImmutableList.copyOf(list.toArray(new Integer[0])));
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static class BuiltTests extends TestCase {
     public static Test suite() {
       TestSuite suite = new TestSuite();
diff --git a/guava-tests/test/com/google/common/collect/CountTest.java b/guava-tests/test/com/google/common/collect/CountTest.java
index 0eff420..a523a56 100644
--- a/guava-tests/test/com/google/common/collect/CountTest.java
+++ b/guava-tests/test/com/google/common/collect/CountTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -22,7 +21,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class CountTest extends TestCase {
   public void testGet() {
     assertEquals(20, new Count(20).get());
diff --git a/guava-tests/test/com/google/common/collect/DiscreteDomainTest.java b/guava-tests/test/com/google/common/collect/DiscreteDomainTest.java
index b9e15fd..6ad4ddd 100644
--- a/guava-tests/test/com/google/common/collect/DiscreteDomainTest.java
+++ b/guava-tests/test/com/google/common/collect/DiscreteDomainTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.testing.SerializableTester.reserializeAndAssert;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.math.BigInteger;
 import junit.framework.TestCase;
 
@@ -27,7 +26,7 @@ import junit.framework.TestCase;
  *
  * @author Chris Povirk
  */
-@GwtIncompatible // SerializableTester
+// SerializableTester
 public class DiscreteDomainTest extends TestCase {
   public void testSerialization() {
     reserializeAndAssert(DiscreteDomain.integers());
diff --git a/guava-tests/test/com/google/common/collect/EmptyImmutableTableTest.java b/guava-tests/test/com/google/common/collect/EmptyImmutableTableTest.java
index 4fb26e6..70a7655 100644
--- a/guava-tests/test/com/google/common/collect/EmptyImmutableTableTest.java
+++ b/guava-tests/test/com/google/common/collect/EmptyImmutableTableTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.EqualsTester;
 
 /**
@@ -25,7 +23,6 @@ import com.google.common.testing.EqualsTester;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 public class EmptyImmutableTableTest extends AbstractImmutableTableTest {
   private static final ImmutableTable<Character, Integer, String> INSTANCE = ImmutableTable.of();
 
@@ -48,7 +45,7 @@ public class EmptyImmutableTableTest extends AbstractImmutableTableTest {
         .testEquals();
   }
 
-  @GwtIncompatible // ArrayTable
+  // ArrayTable
   public void testEqualsObjectNullValues() {
     new EqualsTester()
         .addEqualityGroup(INSTANCE)
diff --git a/guava-tests/test/com/google/common/collect/EnumBiMapTest.java b/guava-tests/test/com/google/common/collect/EnumBiMapTest.java
index 25b057a..10d21d3 100644
--- a/guava-tests/test/com/google/common/collect/EnumBiMapTest.java
+++ b/guava-tests/test/com/google/common/collect/EnumBiMapTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.collect.testing.Helpers.orderEntriesByKey;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -47,7 +45,6 @@ import junit.framework.TestSuite;
  * @author Mike Bostock
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class EnumBiMapTest extends TestCase {
   private enum Currency {
     DOLLAR,
@@ -109,7 +106,7 @@ public class EnumBiMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -285,13 +282,13 @@ public class EnumBiMapTest extends TestCase {
     assertEquals(3, uniqueEntries.size());
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   public void testSerializable() {
     SerializableTester.reserializeAndAssert(
         EnumBiMap.create(ImmutableMap.of(Currency.DOLLAR, Country.CANADA)));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(EnumBiMap.class);
     new NullPointerTester()
diff --git a/guava-tests/test/com/google/common/collect/EnumHashBiMapTest.java b/guava-tests/test/com/google/common/collect/EnumHashBiMapTest.java
index 2a78f55..a55420a 100644
--- a/guava-tests/test/com/google/common/collect/EnumHashBiMapTest.java
+++ b/guava-tests/test/com/google/common/collect/EnumHashBiMapTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -40,7 +38,6 @@ import junit.framework.TestSuite;
  *
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 public class EnumHashBiMapTest extends TestCase {
   private enum Currency {
     DOLLAR,
@@ -102,7 +99,7 @@ public class EnumHashBiMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -216,12 +213,12 @@ public class EnumHashBiMapTest extends TestCase {
     assertEquals(3, uniqueEntries.size());
   }
 
-  @GwtIncompatible // serialize
+  // serialize
   public void testSerializable() {
     SerializableTester.reserializeAndAssert(EnumHashBiMap.create(Currency.class));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(EnumHashBiMap.class);
     new NullPointerTester().testAllPublicInstanceMethods(EnumHashBiMap.create(Currency.class));
diff --git a/guava-tests/test/com/google/common/collect/EnumMultisetTest.java b/guava-tests/test/com/google/common/collect/EnumMultisetTest.java
index 265db21..6642a6e 100644
--- a/guava-tests/test/com/google/common/collect/EnumMultisetTest.java
+++ b/guava-tests/test/com/google/common/collect/EnumMultisetTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.AnEnum;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -41,10 +39,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class EnumMultisetTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -133,7 +130,7 @@ public class EnumMultisetTest extends TestCase {
     assertEquals("[BLUE x 3, RED x 2, YELLOW]", ms.toString());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializable() {
     Multiset<Color> ms = EnumMultiset.create(asList(Color.RED, Color.YELLOW, Color.RED));
     assertEquals(ms, SerializableTester.reserialize(ms));
@@ -159,7 +156,7 @@ public class EnumMultisetTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testEquals() throws Exception {
     new ClassSanityTester()
         .setDistinctValues(Class.class, Color.class, Gender.class)
@@ -168,7 +165,7 @@ public class EnumMultisetTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     new NullPointerTester()
         .setDefault(Class.class, Color.class)
diff --git a/guava-tests/test/com/google/common/collect/EvictingQueueTest.java b/guava-tests/test/com/google/common/collect/EvictingQueueTest.java
index 05fdbd0..3c70178 100644
--- a/guava-tests/test/com/google/common/collect/EvictingQueueTest.java
+++ b/guava-tests/test/com/google/common/collect/EvictingQueueTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
 import java.util.AbstractList;
@@ -30,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Kurt Alfred Kluever
  */
-@GwtCompatible(emulated = true)
 public class EvictingQueueTest extends TestCase {
 
   public void testCreateWithNegativeSize() throws Exception {
@@ -187,7 +184,7 @@ public class EvictingQueueTest extends TestCase {
     assertTrue(queue.isEmpty());
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(EvictingQueue.class);
diff --git a/guava-tests/test/com/google/common/collect/FilteredMultimapTest.java b/guava-tests/test/com/google/common/collect/FilteredMultimapTest.java
index 0e5e265..17325eb 100644
--- a/guava-tests/test/com/google/common/collect/FilteredMultimapTest.java
+++ b/guava-tests/test/com/google/common/collect/FilteredMultimapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Predicate;
 import java.util.Arrays;
 import java.util.Map.Entry;
@@ -27,7 +26,7 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtIncompatible // nottested
+// nottested
 public class FilteredMultimapTest extends TestCase {
 
   private static final Predicate<Entry<String, Integer>> ENTRY_PREDICATE =
diff --git a/guava-tests/test/com/google/common/collect/FluentIterableTest.java b/guava-tests/test/com/google/common/collect/FluentIterableTest.java
index 6a9c2d7..25b87db 100644
--- a/guava-tests/test/com/google/common/collect/FluentIterableTest.java
+++ b/guava-tests/test/com/google/common/collect/FluentIterableTest.java
@@ -21,8 +21,6 @@ import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.base.Joiner;
@@ -44,17 +42,15 @@ import java.util.concurrent.TimeUnit;
 import java.util.stream.Stream;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Unit test for {@link FluentIterable}.
  *
  * @author Marcin Mikosik
  */
-@GwtCompatible(emulated = true)
 public class FluentIterableTest extends TestCase {
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(FluentIterable.class);
@@ -365,7 +361,7 @@ public class FluentIterableTest extends TestCase {
 
   private static class HasBoth extends TypeA implements TypeB {}
 
-  @GwtIncompatible // Iterables.filter(Iterable, Class)
+  // Iterables.filter(Iterable, Class)
   public void testFilterByType() throws Exception {
     HasBoth hasBoth = new HasBoth();
     FluentIterable<TypeA> alist =
diff --git a/guava-tests/test/com/google/common/collect/ForMapMultimapAsMapImplementsMapTest.java b/guava-tests/test/com/google/common/collect/ForMapMultimapAsMapImplementsMapTest.java
index 402410b..918554c 100644
--- a/guava-tests/test/com/google/common/collect/ForMapMultimapAsMapImplementsMapTest.java
+++ b/guava-tests/test/com/google/common/collect/ForMapMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Map;
@@ -27,7 +26,6 @@ import java.util.Map;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class ForMapMultimapAsMapImplementsMapTest extends AbstractMultimapAsMapImplementsMapTest {
 
   public ForMapMultimapAsMapImplementsMapTest() {
diff --git a/guava-tests/test/com/google/common/collect/ForwardingSortedMapImplementsMapTest.java b/guava-tests/test/com/google/common/collect/ForwardingSortedMapImplementsMapTest.java
index b694d5d..404d070 100644
--- a/guava-tests/test/com/google/common/collect/ForwardingSortedMapImplementsMapTest.java
+++ b/guava-tests/test/com/google/common/collect/ForwardingSortedMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import com.google.common.collect.testing.SortedMapInterfaceTest;
 import java.util.SortedMap;
@@ -27,7 +26,6 @@ import java.util.TreeMap;
  *
  * @author George van den Driessche
  */
-@GwtCompatible
 public class ForwardingSortedMapImplementsMapTest extends SortedMapInterfaceTest<String, Integer> {
 
   private static class SimpleForwardingSortedMap<K, V> extends ForwardingSortedMap<K, V> {
diff --git a/guava-tests/test/com/google/common/collect/ForwardingSortedMultisetTest.java b/guava-tests/test/com/google/common/collect/ForwardingSortedMultisetTest.java
index 4f69dea..9f5dd60 100644
--- a/guava-tests/test/com/google/common/collect/ForwardingSortedMultisetTest.java
+++ b/guava-tests/test/com/google/common/collect/ForwardingSortedMultisetTest.java
@@ -30,7 +30,6 @@ import java.util.NavigableSet;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tests for {@link ForwardingSortedMultiset}.
diff --git a/guava-tests/test/com/google/common/collect/GeneralRangeTest.java b/guava-tests/test/com/google/common/collect/GeneralRangeTest.java
index dfa73d6..9defcde 100644
--- a/guava-tests/test/com/google/common/collect/GeneralRangeTest.java
+++ b/guava-tests/test/com/google/common/collect/GeneralRangeTest.java
@@ -17,8 +17,6 @@ package com.google.common.collect;
 import static com.google.common.collect.BoundType.CLOSED;
 import static com.google.common.collect.BoundType.OPEN;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.testing.NullPointerTester;
 import java.util.Arrays;
@@ -30,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class GeneralRangeTest extends TestCase {
   private static final Ordering<Integer> ORDERING = Ordering.natural().nullsFirst();
 
@@ -219,7 +216,7 @@ public class GeneralRangeTest extends TestCase {
         GeneralRange.range(ORDERING, 3, CLOSED, 5, OPEN).reverse());
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     new NullPointerTester().testAllPublicStaticMethods(GeneralRange.class);
   }
diff --git a/guava-tests/test/com/google/common/collect/HashBasedTableTest.java b/guava-tests/test/com/google/common/collect/HashBasedTableTest.java
index 8a608ae..914e0bd 100644
--- a/guava-tests/test/com/google/common/collect/HashBasedTableTest.java
+++ b/guava-tests/test/com/google/common/collect/HashBasedTableTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
 
@@ -28,7 +26,6 @@ import com.google.common.testing.SerializableTester;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class HashBasedTableTest extends AbstractTableTest {
 
   @Override
@@ -91,13 +88,13 @@ public class HashBasedTableTest extends AbstractTableTest {
     assertEquals((Character) 'a', copy.get("foo", 1));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     table = create("foo", 1, 'a', "bar", 1, 'b', "foo", 3, 'c');
     SerializableTester.reserializeAndAssert(table);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerStatic() {
     new NullPointerTester().testAllPublicStaticMethods(HashBasedTable.class);
   }
diff --git a/guava-tests/test/com/google/common/collect/HashBiMapTest.java b/guava-tests/test/com/google/common/collect/HashBiMapTest.java
index 9541434..750df3b 100644
--- a/guava-tests/test/com/google/common/collect/HashBiMapTest.java
+++ b/guava-tests/test/com/google/common/collect/HashBiMapTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -38,7 +36,6 @@ import junit.framework.TestSuite;
  *
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 public class HashBiMapTest extends TestCase {
 
   public static final class HashBiMapGenerator extends TestStringBiMapGenerator {
@@ -52,7 +49,7 @@ public class HashBiMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
diff --git a/guava-tests/test/com/google/common/collect/HashMultimapTest.java b/guava-tests/test/com/google/common/collect/HashMultimapTest.java
index 6cde6c5..88c3402 100644
--- a/guava-tests/test/com/google/common/collect/HashMultimapTest.java
+++ b/guava-tests/test/com/google/common/collect/HashMultimapTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
@@ -33,10 +31,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class HashMultimapTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
diff --git a/guava-tests/test/com/google/common/collect/HashMultisetTest.java b/guava-tests/test/com/google/common/collect/HashMultisetTest.java
index 030c927..c68f0b0 100644
--- a/guava-tests/test/com/google/common/collect/HashMultisetTest.java
+++ b/guava-tests/test/com/google/common/collect/HashMultisetTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.MultisetFeature;
@@ -38,10 +36,9 @@ import junit.framework.TestSuite;
  * @author Kevin Bourrillion
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class HashMultisetTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -90,7 +87,7 @@ public class HashMultisetTest extends TestCase {
     assertEquals(2, multiset.count("foo"));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializationContainingSelf() {
     Multiset<Multiset<?>> multiset = HashMultiset.create();
     multiset.add(multiset, 2);
@@ -99,7 +96,7 @@ public class HashMultisetTest extends TestCase {
     assertSame(copy, copy.iterator().next());
   }
 
-  @GwtIncompatible // Only used by @GwtIncompatible code
+  // Only used by @GwtIncompatible code
   private static class MultisetHolder implements Serializable {
     public Multiset<?> member;
 
@@ -110,7 +107,7 @@ public class HashMultisetTest extends TestCase {
     private static final long serialVersionUID = 1L;
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializationIndirectSelfReference() {
     Multiset<MultisetHolder> multiset = HashMultiset.create();
     MultisetHolder holder = new MultisetHolder(multiset);
diff --git a/guava-tests/test/com/google/common/collect/HashingTest.java b/guava-tests/test/com/google/common/collect/HashingTest.java
index 5dfac47..dd8202a 100644
--- a/guava-tests/test/com/google/common/collect/HashingTest.java
+++ b/guava-tests/test/com/google/common/collect/HashingTest.java
@@ -16,11 +16,9 @@ package com.google.common.collect;
 
 import static com.google.common.collect.Hashing.smear;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /** Tests for {@code Hashing}. */
-@GwtCompatible
 public class HashingTest extends TestCase {
   public void testSmear() {
     assertEquals(1459320713, smear(754102528));
diff --git a/guava-tests/test/com/google/common/collect/ImmutableBiMapTest.java b/guava-tests/test/com/google/common/collect/ImmutableBiMapTest.java
index fa0a7c1..8f9e7fe 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableBiMapTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableBiMapTest.java
@@ -19,24 +19,17 @@ package com.google.common.collect;
 import static com.google.common.collect.testing.Helpers.mapEntry;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableBiMap.Builder;
 import com.google.common.collect.testing.MapInterfaceTest;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
-import com.google.common.collect.testing.google.BiMapGenerators.ImmutableBiMapCopyOfEntriesGenerator;
-import com.google.common.collect.testing.google.BiMapGenerators.ImmutableBiMapCopyOfGenerator;
-import com.google.common.collect.testing.google.BiMapGenerators.ImmutableBiMapGenerator;
 import com.google.common.collect.testing.google.BiMapInverseTester;
 import com.google.common.collect.testing.google.BiMapTestSuiteBuilder;
 import com.google.common.collect.testing.google.TestStringBiMapGenerator;
 import com.google.common.testing.CollectorTester;
 import com.google.common.testing.SerializableTester;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.AbstractMap;
 import java.util.Arrays;
 import java.util.Collections;
@@ -57,12 +50,11 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableBiMapTest extends TestCase {
 
   // TODO: Reduce duplication of ImmutableMapTest code
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
 
@@ -237,7 +229,6 @@ public class ImmutableBiMapTest extends TestCase {
       assertMapEquals(map.inverse(), 1, "one", 2, "two", 3, "three", 4, "four", 5, "five");
     }
 
-    @GwtIncompatible
     public void testBuilderExactlySizedReusesArray() {
       ImmutableBiMap.Builder<Integer, Integer> builder = ImmutableBiMap.builderWithExpectedSize(10);
       Entry<Integer, Integer>[] builderArray = builder.entries;
@@ -752,13 +743,13 @@ public class ImmutableBiMapTest extends TestCase {
       assertSame(bimap, bimap.inverse().inverse());
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testEmptySerialization() {
       ImmutableBiMap<String, Integer> bimap = ImmutableBiMap.of();
       assertSame(bimap, SerializableTester.reserializeAndAssert(bimap));
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testSerialization() {
       ImmutableBiMap<String, Integer> bimap =
           ImmutableBiMap.copyOf(ImmutableMap.of("one", 1, "two", 2));
@@ -768,7 +759,7 @@ public class ImmutableBiMapTest extends TestCase {
       assertSame(copy, copy.inverse().inverse());
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testInverseSerialization() {
       ImmutableBiMap<String, Integer> bimap =
           ImmutableBiMap.copyOf(ImmutableMap.of(1, "one", 2, "two")).inverse();
@@ -869,7 +860,6 @@ public class ImmutableBiMapTest extends TestCase {
         }
       };
 
-      @CanIgnoreReturnValue
       public abstract ImmutableBiMap<Object, Object> create(List<Map.Entry<?, ?>> entries);
     }
   }
diff --git a/guava-tests/test/com/google/common/collect/ImmutableEnumMapTest.java b/guava-tests/test/com/google/common/collect/ImmutableEnumMapTest.java
index d39e8b4..4382e4b 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableEnumMapTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableEnumMapTest.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.ALLOW
 import static com.google.common.collect.testing.features.CollectionFeature.SERIALIZABLE;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
 import com.google.common.collect.testing.AnEnum;
@@ -45,7 +43,6 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class ImmutableEnumMapTest extends TestCase {
   public static class ImmutableEnumMapGenerator extends TestEnumMapGenerator {
     @Override
@@ -58,7 +55,7 @@ public class ImmutableEnumMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
diff --git a/guava-tests/test/com/google/common/collect/ImmutableListMultimapTest.java b/guava-tests/test/com/google/common/collect/ImmutableListMultimapTest.java
index 4e0bdda..011faff 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableListMultimapTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableListMultimapTest.java
@@ -22,10 +22,7 @@ import static com.google.common.collect.testing.features.CollectionFeature.SERIA
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_ANY_NULL_QUERIES;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Equivalence;
-import com.google.common.collect.ImmutableListMultimap.Builder;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.ListMultimapTestSuiteBuilder;
 import com.google.common.collect.testing.google.TestStringListMultimapGenerator;
@@ -49,7 +46,6 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableListMultimapTest extends TestCase {
   public static class ImmutableListMultimapGenerator extends TestStringListMultimapGenerator {
     @Override
@@ -70,7 +66,7 @@ public class ImmutableListMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -584,7 +580,7 @@ public class ImmutableListMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     Multimap<String, Integer> multimap = createMultimap();
     SerializableTester.reserializeAndAssert(multimap);
@@ -597,13 +593,13 @@ public class ImmutableListMultimapTest extends TestCase {
     assertEquals(HashMultiset.create(multimap.values()), HashMultiset.create(valuesCopy));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testEmptySerialization() {
     Multimap<String, Integer> multimap = ImmutableListMultimap.of();
     assertSame(multimap, SerializableTester.reserialize(multimap));
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableListMultimap.class);
diff --git a/guava-tests/test/com/google/common/collect/ImmutableListTest.java b/guava-tests/test/com/google/common/collect/ImmutableListTest.java
index 8f8f117..cfaa638 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableListTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableListTest.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.features.CollectionFeature.SERIA
 import static java.lang.reflect.Proxy.newProxyInstance;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.MinimalCollection;
@@ -33,11 +31,6 @@ import com.google.common.collect.testing.MinimalIterable;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.ListGenerators.BuilderAddAllListGenerator;
 import com.google.common.collect.testing.google.ListGenerators.BuilderReversedListGenerator;
-import com.google.common.collect.testing.google.ListGenerators.ImmutableListHeadSubListGenerator;
-import com.google.common.collect.testing.google.ListGenerators.ImmutableListMiddleSubListGenerator;
-import com.google.common.collect.testing.google.ListGenerators.ImmutableListOfGenerator;
-import com.google.common.collect.testing.google.ListGenerators.ImmutableListTailSubListGenerator;
-import com.google.common.collect.testing.google.ListGenerators.UnhashableElementsImmutableListGenerator;
 import com.google.common.collect.testing.testers.ListHashCodeTester;
 import com.google.common.testing.CollectorTester;
 import com.google.common.testing.NullPointerTester;
@@ -63,10 +56,9 @@ import junit.framework.TestSuite;
  * @author George van den Driessche
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableListTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -467,7 +459,7 @@ public class ImmutableListTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public static class ConcurrentTests extends TestCase {
     enum WrapWithIterable {
       WRAP,
@@ -637,26 +629,26 @@ public class ImmutableListTest extends TestCase {
 
   public static class BasicTests extends TestCase {
 
-    @GwtIncompatible // NullPointerTester
+    // NullPointerTester
     public void testNullPointers() {
       NullPointerTester tester = new NullPointerTester();
       tester.testAllPublicStaticMethods(ImmutableList.class);
       tester.testAllPublicInstanceMethods(ImmutableList.of(1, 2, 3));
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testSerialization_empty() {
       Collection<String> c = ImmutableList.of();
       assertSame(c, SerializableTester.reserialize(c));
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testSerialization_singleton() {
       Collection<String> c = ImmutableList.of("a");
       SerializableTester.reserializeAndAssert(c);
     }
 
-    @GwtIncompatible // SerializableTester
+    // SerializableTester
     public void testSerialization_multiple() {
       Collection<String> c = ImmutableList.of("a", "b", "c");
       SerializableTester.reserializeAndAssert(c);
@@ -676,7 +668,6 @@ public class ImmutableListTest extends TestCase {
       assertEquals(asList("a", "b", "a", "c"), list);
     }
 
-    @GwtIncompatible("Builder impl")
     public void testBuilderForceCopy() {
       ImmutableList.Builder<Integer> builder = ImmutableList.builder();
       Object[] prevArray = null;
@@ -688,7 +679,6 @@ public class ImmutableListTest extends TestCase {
       }
     }
 
-    @GwtIncompatible
     public void testBuilderExactlySizedReusesArray() {
       ImmutableList.Builder<Integer> builder = ImmutableList.builderWithExpectedSize(10);
       Object[] builderArray = builder.contents;
diff --git a/guava-tests/test/com/google/common/collect/ImmutableMapTest.java b/guava-tests/test/com/google/common/collect/ImmutableMapTest.java
index 18a17a0..e30f98d 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableMapTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableMapTest.java
@@ -21,11 +21,8 @@ import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableMap.Builder;
 import com.google.common.collect.testing.AnEnum;
 import com.google.common.collect.testing.CollectionTestSuiteBuilder;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
@@ -39,15 +36,6 @@ import com.google.common.collect.testing.UnhashableObject;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapCopyOfEntriesGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapCopyOfEnumMapGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapCopyOfGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapEntryListGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapKeyListGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapUnhashableValuesGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapValueListGenerator;
-import com.google.common.collect.testing.google.MapGenerators.ImmutableMapValuesAsSingletonSetGenerator;
 import com.google.common.testing.CollectorTester;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
@@ -77,10 +65,9 @@ import junit.framework.TestSuite;
  * @author Kevin Bourrillion
  * @author Jesse Wilson
  */
-@GwtCompatible(emulated = true)
 public class ImmutableMapTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ImmutableMapTest.class);
@@ -266,7 +253,7 @@ public class ImmutableMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public static class ReserializedMapTests extends AbstractMapTests<String, Integer> {
     @Override
     protected Map<String, Integer> makePopulatedMap() {
@@ -312,7 +299,7 @@ public class ImmutableMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // GWT's ImmutableMap emulation is backed by java.util.HashMap.
+  // GWT's ImmutableMap emulation is backed by java.util.HashMap.
   public static class MapTestsWithUnhashableValues
       extends AbstractMapTests<Integer, UnhashableObject> {
     @Override
@@ -337,7 +324,7 @@ public class ImmutableMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // GWT's ImmutableMap emulation is backed by java.util.HashMap.
+  // GWT's ImmutableMap emulation is backed by java.util.HashMap.
   public static class MapTestsWithSingletonUnhashableValue extends MapTestsWithUnhashableValues {
     @Override
     protected Map<Integer, UnhashableObject> makePopulatedMap() {
@@ -369,7 +356,6 @@ public class ImmutableMapTest extends TestCase {
       assertMapEquals(map, "one", 1, "two", 2, "three", 3, "four", 4, "five", 5);
     }
 
-    @GwtIncompatible
     public void testBuilderExactlySizedReusesArray() {
       ImmutableMap.Builder<Integer, Integer> builder = ImmutableMap.builderWithExpectedSize(10);
       Entry<Integer, Integer>[] builderArray = builder.entries;
@@ -883,7 +869,7 @@ public class ImmutableMapTest extends TestCase {
     assertSame(multimap1, multimap2);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableMap.class);
@@ -940,7 +926,7 @@ public class ImmutableMapTest extends TestCase {
     assertTrue(ImmutableMap.copyOf(map) instanceof ImmutableEnumMap);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testViewSerialization() {
     Map<String, Integer> map = ImmutableMap.of("one", 1, "two", 2, "three", 3);
     LenientSerializableTester.reserializeAndAssertLenient(map.entrySet());
@@ -951,7 +937,7 @@ public class ImmutableMapTest extends TestCase {
     assertTrue(reserializedValues instanceof ImmutableCollection);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testKeySetIsSerializable_regularImmutableMap() {
     class NonSerializableClass {}
 
@@ -962,7 +948,7 @@ public class ImmutableMapTest extends TestCase {
     LenientSerializableTester.reserializeAndAssertLenient(set);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testKeySetIsSerializable_jdkBackedImmutableMap() {
     class NonSerializableClass {}
 
@@ -975,7 +961,7 @@ public class ImmutableMapTest extends TestCase {
     LenientSerializableTester.reserializeAndAssertLenient(set);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testValuesCollectionIsSerializable_regularImmutableMap() {
     class NonSerializableClass {}
 
@@ -986,7 +972,7 @@ public class ImmutableMapTest extends TestCase {
     LenientSerializableTester.reserializeAndAssertElementsEqual(collection);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testValuesCollectionIsSerializable_jdkBackedImmutableMap() {
     class NonSerializableClass {}
 
@@ -1000,7 +986,7 @@ public class ImmutableMapTest extends TestCase {
   }
 
   // TODO: Re-enable this test after moving to new serialization format in ImmutableMap.
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked")
   public void ignore_testSerializationNoDuplication_regularImmutableMap() throws Exception {
     // Tests that searializing a map, its keySet, and values only writes the underlying data once.
@@ -1030,7 +1016,7 @@ public class ImmutableMapTest extends TestCase {
   }
 
   // TODO: Re-enable this test after moving to new serialization format in ImmutableMap.
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   @SuppressWarnings("unchecked")
   public void ignore_testSerializationNoDuplication_jdkBackedImmutableMap() throws Exception {
     // Tests that searializing a map, its keySet, and values only writes
@@ -1064,7 +1050,6 @@ public class ImmutableMapTest extends TestCase {
     return objs;
   }
 
-  @GwtIncompatible("assumptions about splitting")
   public void testKeySetSplittable() {
     ImmutableMap<Integer, Integer> map =
         ImmutableMap.<Integer, Integer>builder()
diff --git a/guava-tests/test/com/google/common/collect/ImmutableMultimapAsMapImplementsMapTest.java b/guava-tests/test/com/google/common/collect/ImmutableMultimapAsMapImplementsMapTest.java
index 8c1f020..ba18362 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableMultimapAsMapImplementsMapTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +25,6 @@ import java.util.Map;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class ImmutableMultimapAsMapImplementsMapTest
     extends AbstractMultimapAsMapImplementsMapTest {
 
diff --git a/guava-tests/test/com/google/common/collect/ImmutableMultimapTest.java b/guava-tests/test/com/google/common/collect/ImmutableMultimapTest.java
index ac09593..df71d86 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableMultimapTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableMultimapTest.java
@@ -16,9 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMultimap.Builder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.SampleElements.Unhashables;
 import com.google.common.collect.testing.UnhashableObject;
@@ -33,7 +30,6 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableMultimapTest extends TestCase {
 
   public void testBuilder_withImmutableEntry() {
@@ -127,7 +123,7 @@ public class ImmutableMultimapTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableMultimap.class);
diff --git a/guava-tests/test/com/google/common/collect/ImmutableMultisetTest.java b/guava-tests/test/com/google/common/collect/ImmutableMultisetTest.java
index 3cb6d75..60c82a3 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableMultisetTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableMultisetTest.java
@@ -20,8 +20,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.MinimalCollection;
 import com.google.common.collect.testing.SetTestSuiteBuilder;
@@ -36,7 +34,6 @@ import com.google.common.testing.CollectorTester;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -55,10 +52,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableMultisetTest extends TestCase {
 
-  @GwtIncompatible // suite // TODO(cpovirk): add to collect/gwt/suites
+  // suite // TODO(cpovirk): add to collect/gwt/suites
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ImmutableMultisetTest.class);
@@ -579,33 +575,33 @@ public class ImmutableMultisetTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableMultiset.class);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization_empty() {
     Collection<String> c = ImmutableMultiset.of();
     assertSame(c, SerializableTester.reserialize(c));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization_multiple() {
     Collection<String> c = ImmutableMultiset.of("a", "b", "a");
     Collection<String> copy = SerializableTester.reserializeAndAssert(c);
     assertThat(copy).containsExactly("a", "a", "b").inOrder();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization_elementSet() {
     Multiset<String> c = ImmutableMultiset.of("a", "b", "a");
     Collection<String> copy = LenientSerializableTester.reserializeAndAssertLenient(c.elementSet());
     assertThat(copy).containsExactly("a", "b").inOrder();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization_entrySet() {
     Multiset<String> c = ImmutableMultiset.of("a", "b", "c");
     SerializableTester.reserializeAndAssert(c.entrySet());
@@ -640,7 +636,7 @@ public class ImmutableMultisetTest extends TestCase {
     assertEquals(4, list.lastIndexOf("b"));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization_asList() {
     ImmutableMultiset<String> multiset = ImmutableMultiset.of("a", "a", "b", "b", "b");
     SerializableTester.reserializeAndAssert(multiset.asList());
@@ -715,7 +711,6 @@ public class ImmutableMultisetTest extends TestCase {
         }
       };
 
-      @CanIgnoreReturnValue
       @Override
       public abstract ImmutableMultiset<Object> create(List<?> keys);
     }
diff --git a/guava-tests/test/com/google/common/collect/ImmutableRangeMapTest.java b/guava-tests/test/com/google/common/collect/ImmutableRangeMapTest.java
index e5caa62..6adc767 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableRangeMapTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableRangeMapTest.java
@@ -16,7 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.collect.BoundType.OPEN;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.CollectorTester;
 import com.google.common.testing.SerializableTester;
 import java.util.Map.Entry;
@@ -28,7 +27,7 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // NavigableMap
+// NavigableMap
 public class ImmutableRangeMapTest extends TestCase {
   private static final ImmutableList<Range<Integer>> RANGES;
   private static final int MIN_BOUND = 0;
diff --git a/guava-tests/test/com/google/common/collect/ImmutableRangeSetTest.java b/guava-tests/test/com/google/common/collect/ImmutableRangeSetTest.java
index 1e365e2..c1c2c1a 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableRangeSetTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableRangeSetTest.java
@@ -16,7 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.NavigableSetTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestSetGenerator;
@@ -35,7 +34,7 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // ImmutableRangeSet
+// ImmutableRangeSet
 public class ImmutableRangeSetTest extends AbstractRangeSetTest {
 
   static final class ImmutableRangeSetIntegerAsSetGenerator implements TestSetGenerator<Integer> {
diff --git a/guava-tests/test/com/google/common/collect/ImmutableSetMultimapAsMapImplementsMapTest.java b/guava-tests/test/com/google/common/collect/ImmutableSetMultimapAsMapImplementsMapTest.java
index c503a17..4738bb3 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableSetMultimapAsMapImplementsMapTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableSetMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +25,6 @@ import java.util.Map;
  *
  * @author Mike Ward
  */
-@GwtCompatible
 public class ImmutableSetMultimapAsMapImplementsMapTest
     extends AbstractMultimapAsMapImplementsMapTest {
 
diff --git a/guava-tests/test/com/google/common/collect/ImmutableSetMultimapTest.java b/guava-tests/test/com/google/common/collect/ImmutableSetMultimapTest.java
index 842ba92..18ae2dc 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableSetMultimapTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableSetMultimapTest.java
@@ -22,10 +22,7 @@ import static com.google.common.collect.testing.features.CollectionFeature.SERIA
 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_ANY_NULL_QUERIES;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Equivalence;
-import com.google.common.collect.ImmutableSetMultimap.Builder;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.SetMultimapTestSuiteBuilder;
 import com.google.common.collect.testing.google.TestStringSetMultimapGenerator;
@@ -49,7 +46,6 @@ import junit.framework.TestSuite;
  *
  * @author Mike Ward
  */
-@GwtCompatible(emulated = true)
 public class ImmutableSetMultimapTest extends TestCase {
   private static final class ImmutableSetMultimapGenerator extends TestStringSetMultimapGenerator {
     @Override
@@ -70,7 +66,7 @@ public class ImmutableSetMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ImmutableSetMultimapTest.class);
@@ -580,7 +576,7 @@ public class ImmutableSetMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     Multimap<String, Integer> multimap = createMultimap();
     SerializableTester.reserializeAndAssert(multimap);
@@ -593,13 +589,13 @@ public class ImmutableSetMultimapTest extends TestCase {
     assertEquals(HashMultiset.create(multimap.values()), HashMultiset.create(valuesCopy));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testEmptySerialization() {
     Multimap<String, Integer> multimap = ImmutableSetMultimap.of();
     assertSame(multimap, SerializableTester.reserialize(multimap));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSortedSerialization() {
     Multimap<String, Integer> multimap =
         new ImmutableSetMultimap.Builder<String, Integer>()
@@ -626,7 +622,7 @@ public class ImmutableSetMultimapTest extends TestCase {
         .build();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testNulls() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableSetMultimap.class);
diff --git a/guava-tests/test/com/google/common/collect/ImmutableSetTest.java b/guava-tests/test/com/google/common/collect/ImmutableSetTest.java
index 1828517..59ab1bd 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableSetTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableSetTest.java
@@ -18,23 +18,12 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Equivalence;
-import com.google.common.collect.ImmutableSet.Builder;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SetTestSuiteBuilder;
 import com.google.common.collect.testing.TestStringSetGenerator;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
-import com.google.common.collect.testing.google.SetGenerators.DegeneratedImmutableSetGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetAsListGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetCopyOfGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetSizedBuilderGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetTooBigBuilderGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetTooSmallBuilderGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetUnsizedBuilderGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSetWithBadHashesGenerator;
 import com.google.common.testing.CollectorTester;
 import com.google.common.testing.EqualsTester;
 import java.util.Arrays;
@@ -55,10 +44,9 @@ import junit.framework.TestSuite;
  * @author Jared Levy
  * @author Nick Kralevich
  */
-@GwtCompatible(emulated = true)
 public class ImmutableSetTest extends AbstractImmutableSetTest {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
 
@@ -250,7 +238,7 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
     assertEquals(Collections.singleton(array), set);
   }
 
-  @GwtIncompatible // ImmutableSet.chooseTableSize
+  // ImmutableSet.chooseTableSize
   public void testChooseTableSize() {
     assertEquals(8, ImmutableSet.chooseTableSize(3));
     assertEquals(8, ImmutableSet.chooseTableSize(4));
@@ -270,7 +258,7 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
     }
   }
 
-  @GwtIncompatible // RegularImmutableSet.table not in emulation
+  // RegularImmutableSet.table not in emulation
   public void testResizeTable() {
     verifyTableSize(100, 2, 8);
     verifyTableSize(100, 5, 8);
@@ -280,7 +268,7 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
     verifyTableSize(17, 15, 32);
   }
 
-  @GwtIncompatible // RegularImmutableSet.table not in emulation
+  // RegularImmutableSet.table not in emulation
   private void verifyTableSize(int inputSize, int setSize, int tableSize) {
     Builder<Integer> builder = ImmutableSet.builder();
     for (int i = 0; i < inputSize; i++) {
@@ -355,7 +343,7 @@ public class ImmutableSetTest extends AbstractImmutableSetTest {
         .expectCollects(ImmutableSet.of(a, b1, c), a, b1, c, b2);
   }
 
-  @GwtIncompatible // GWT is single threaded
+  // GWT is single threaded
   public void testCopyOf_threadSafe() {
     verifyThreadSafe();
   }
diff --git a/guava-tests/test/com/google/common/collect/ImmutableSortedMapTest.java b/guava-tests/test/com/google/common/collect/ImmutableSortedMapTest.java
index 2136f2a..01e161b 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableSortedMapTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableSortedMapTest.java
@@ -19,11 +19,8 @@ package com.google.common.collect;
 import static com.google.common.collect.testing.Helpers.mapEntry;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableSortedMap.Builder;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.MapTestSuiteBuilder;
 import com.google.common.collect.testing.NavigableMapTestSuiteBuilder;
@@ -31,11 +28,6 @@ import com.google.common.collect.testing.SortedMapInterfaceTest;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
-import com.google.common.collect.testing.google.SortedMapGenerators.ImmutableSortedMapCopyOfEntriesGenerator;
-import com.google.common.collect.testing.google.SortedMapGenerators.ImmutableSortedMapEntryListGenerator;
-import com.google.common.collect.testing.google.SortedMapGenerators.ImmutableSortedMapGenerator;
-import com.google.common.collect.testing.google.SortedMapGenerators.ImmutableSortedMapKeyListGenerator;
-import com.google.common.collect.testing.google.SortedMapGenerators.ImmutableSortedMapValueListGenerator;
 import com.google.common.testing.CollectorTester;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -61,11 +53,10 @@ import junit.framework.TestSuite;
  * @author Jesse Wilson
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableSortedMapTest extends TestCase {
   // TODO: Avoid duplicating code in ImmutableMapTest
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ImmutableSortedMapTest.class);
@@ -192,7 +183,7 @@ public class ImmutableSortedMapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public static class ReserializedMapTests extends AbstractMapTests<String, Integer> {
     @Override
     protected SortedMap<String, Integer> makePopulatedMap() {
@@ -859,7 +850,7 @@ public class ImmutableSortedMapTest extends TestCase {
     assertNull(map.get(null));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ImmutableSortedMap.class);
@@ -943,7 +934,7 @@ public class ImmutableSortedMapTest extends TestCase {
     assertEquals(intMap.hashCode(), map.hashCode());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testViewSerialization() {
     Map<String, Integer> map = ImmutableSortedMap.of("one", 1, "two", 2, "three", 3);
     SerializableTester.reserializeAndAssert(map.entrySet());
diff --git a/guava-tests/test/com/google/common/collect/ImmutableSortedSetTest.java b/guava-tests/test/com/google/common/collect/ImmutableSortedSetTest.java
index b4cd891..e6e4bef 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableSortedSetTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableSortedSetTest.java
@@ -19,22 +19,11 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Equivalence;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.NavigableSetTestSuiteBuilder;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetAsListGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetCopyOfGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetDescendingAsListGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetDescendingGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetExplicitComparator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetExplicitSuperclassComparatorGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetReversedOrderGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetSubsetAsListGenerator;
-import com.google.common.collect.testing.google.SetGenerators.ImmutableSortedSetUnhashableGenerator;
 import com.google.common.collect.testing.testers.SetHashCodeTester;
 import com.google.common.testing.CollectorTester;
 import com.google.common.testing.NullPointerTester;
@@ -58,10 +47,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
 
@@ -233,7 +221,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     return ImmutableSortedSet.copyOf(elements);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     new NullPointerTester().testAllPublicStaticMethods(ImmutableSortedSet.class);
   }
@@ -276,7 +264,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testEmpty_serialization() {
     SortedSet<String> set = of();
     SortedSet<String> copy = SerializableTester.reserialize(set);
@@ -324,7 +312,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertEquals("e", set.last());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSingle_serialization() {
     SortedSet<String> set = of("e");
     SortedSet<String> copy = SerializableTester.reserializeAndAssert(set);
@@ -423,7 +411,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testOf_subSetSerialization() {
     SortedSet<String> set = of("e", "f", "b", "d", "c");
     SerializableTester.reserializeAndAssert(set.subSet("c", "e"));
@@ -439,7 +427,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertEquals("f", set.last());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testOf_serialization() {
     SortedSet<String> set = of("e", "f", "b", "d", "c");
     SortedSet<String> copy = SerializableTester.reserializeAndAssert(set);
@@ -560,7 +548,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertEquals("jumped", set.last());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testExplicitEmpty_serialization() {
     SortedSet<String> set = ImmutableSortedSet.orderedBy(STRING_LENGTH).build();
     SortedSet<String> copy = SerializableTester.reserializeAndAssert(set);
@@ -569,7 +557,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertSame(set.comparator(), copy.comparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testExplicit_serialization() {
     SortedSet<String> set =
         ImmutableSortedSet.orderedBy(STRING_LENGTH)
@@ -864,7 +852,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertFalse(set.containsAll(Sets.newTreeSet(asList("f", "d", "a"))));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testDifferentComparator_serialization() {
     // don't use Collections.reverseOrder(); it didn't reserialize to the same instance in JDK5
     Comparator<Comparable<?>> comparator = Ordering.natural().reverse();
@@ -981,7 +969,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertSame(list, ImmutableList.copyOf(set));
   }
 
-  @GwtIncompatible // SerializableTester, ImmutableSortedAsList
+  // SerializableTester, ImmutableSortedAsList
   public void testAsListReturnTypeAndSerialization() {
     ImmutableSet<String> set = ImmutableSortedSet.of("a", "e", "i", "o", "u");
     ImmutableList<String> list = set.asList();
@@ -997,7 +985,7 @@ public class ImmutableSortedSetTest extends AbstractImmutableSetTest {
     assertEquals(list, ImmutableList.copyOf(set));
   }
 
-  @GwtIncompatible // SerializableTester, ImmutableSortedAsList
+  // SerializableTester, ImmutableSortedAsList
   public void testSubsetAsListReturnTypeAndSerialization() {
     ImmutableSet<String> set = ImmutableSortedSet.of("a", "e", "i", "o", "u").subSet("c", "r");
     ImmutableList<String> list = set.asList();
diff --git a/guava-tests/test/com/google/common/collect/ImmutableTableTest.java b/guava-tests/test/com/google/common/collect/ImmutableTableTest.java
index d48938c..3361898 100644
--- a/guava-tests/test/com/google/common/collect/ImmutableTableTest.java
+++ b/guava-tests/test/com/google/common/collect/ImmutableTableTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Table.Cell;
 import com.google.common.testing.CollectorTester;
 import com.google.common.testing.SerializableTester;
@@ -30,7 +28,6 @@ import java.util.stream.Collector;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 public class ImmutableTableTest extends AbstractTableReadTest {
   @Override
   protected Table<String, Integer, Character> create(Object... data) {
@@ -474,7 +471,7 @@ public class ImmutableTableTest extends AbstractTableReadTest {
     assertThat(copy.columnKeySet()).containsExactlyElementsIn(original.columnKeySet()).inOrder();
   }
 
-  @GwtIncompatible // Mind-bogglingly slow in GWT
+  // Mind-bogglingly slow in GWT
   @AndroidIncompatible // slow
   public void testOverflowCondition() {
     // See https://code.google.com/p/guava-libraries/issues/detail?id=1322 for details.
diff --git a/guava-tests/test/com/google/common/collect/InternersTest.java b/guava-tests/test/com/google/common/collect/InternersTest.java
index cfa14b8..4d1d88a 100644
--- a/guava-tests/test/com/google/common/collect/InternersTest.java
+++ b/guava-tests/test/com/google/common/collect/InternersTest.java
@@ -21,7 +21,6 @@ import com.google.common.collect.Interners.InternerImpl;
 import com.google.common.collect.MapMakerInternalMap.Strength;
 import com.google.common.testing.GcFinalization;
 import com.google.common.testing.NullPointerTester;
-import java.lang.ref.WeakReference;
 import junit.framework.TestCase;
 
 /**
diff --git a/guava-tests/test/com/google/common/collect/IterablesTest.java b/guava-tests/test/com/google/common/collect/IterablesTest.java
index 036cdaf..47fa60a 100644
--- a/guava-tests/test/com/google/common/collect/IterablesTest.java
+++ b/guava-tests/test/com/google/common/collect/IterablesTest.java
@@ -25,8 +25,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 import static java.util.Collections.emptyList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
@@ -54,7 +52,6 @@ import junit.framework.TestCase;
  * @author Kevin Bourrillion
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class IterablesTest extends TestCase {
 
   public void testSize0() {
@@ -188,21 +185,21 @@ public class IterablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Iterables.toArray(Iterable, Class)
+  // Iterables.toArray(Iterable, Class)
   public void testToArrayEmpty() {
     Iterable<String> iterable = Collections.emptyList();
     String[] array = Iterables.toArray(iterable, String.class);
     assertTrue(Arrays.equals(new String[0], array));
   }
 
-  @GwtIncompatible // Iterables.toArray(Iterable, Class)
+  // Iterables.toArray(Iterable, Class)
   public void testToArraySingleton() {
     Iterable<String> iterable = Collections.singletonList("a");
     String[] array = Iterables.toArray(iterable, String.class);
     assertTrue(Arrays.equals(new String[] {"a"}, array));
   }
 
-  @GwtIncompatible // Iterables.toArray(Iterable, Class)
+  // Iterables.toArray(Iterable, Class)
   public void testToArray() {
     String[] sourceArray = new String[] {"a", "b", "c"};
     Iterable<String> iterable = asList(sourceArray);
@@ -270,7 +267,7 @@ public class IterablesTest extends TestCase {
 
   private static class HasBoth extends TypeA implements TypeB {}
 
-  @GwtIncompatible // Iterables.filter(Iterable, Class)
+  // Iterables.filter(Iterable, Class)
   public void testFilterByType_iterator() throws Exception {
     HasBoth hasBoth = new HasBoth();
     Iterable<TypeA> alist = Lists.newArrayList(new TypeA(), new TypeA(), hasBoth, new TypeA());
@@ -278,7 +275,7 @@ public class IterablesTest extends TestCase {
     assertThat(blist).containsExactly(hasBoth).inOrder();
   }
 
-  @GwtIncompatible // Iterables.filter(Iterable, Class)
+  // Iterables.filter(Iterable, Class)
   public void testFilterByType_forEach() throws Exception {
     HasBoth hasBoth1 = new HasBoth();
     HasBoth hasBoth2 = new HasBoth();
@@ -481,7 +478,7 @@ public class IterablesTest extends TestCase {
     assertEquals(ImmutableList.of(3, 4), first);
   }
 
-  @GwtIncompatible // ?
+  // ?
   // TODO: Figure out why this is failing in GWT.
   public void testPartitionRandomAccessInput() {
     Iterable<Integer> source = asList(1, 2, 3);
@@ -491,7 +488,7 @@ public class IterablesTest extends TestCase {
     assertTrue(iterator.next() instanceof RandomAccess);
   }
 
-  @GwtIncompatible // ?
+  // ?
   // TODO: Figure out why this is failing in GWT.
   public void testPartitionNonRandomAccessInput() {
     Iterable<Integer> source = Lists.newLinkedList(asList(1, 2, 3));
@@ -542,7 +539,7 @@ public class IterablesTest extends TestCase {
     for (@SuppressWarnings("unused") Object obj : iterable) {}
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Iterables.class);
@@ -679,7 +676,7 @@ public class IterablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // slow (~35s)
+  // slow (~35s)
   public void testSkip_iterator() {
     new IteratorTester<Integer>(
         5, MODIFIABLE, newArrayList(2, 3), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -690,7 +687,7 @@ public class IterablesTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~35s)
+  // slow (~35s)
   public void testSkip_iteratorList() {
     new IteratorTester<Integer>(
         5, MODIFIABLE, newArrayList(2, 3), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -1241,7 +1238,7 @@ public class IterablesTest extends TestCase {
     assertFalse(consumingIterator.hasNext());
   }
 
-  @GwtIncompatible // ?
+  // ?
   // TODO: Figure out why this is failing in GWT.
   public void testConsumingIterable_duelingIterators() {
     // Test data
@@ -1432,7 +1429,7 @@ public class IterablesTest extends TestCase {
     verifyMergeSorted(iterables, allIntegers);
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testIterables_nullCheck() throws Exception {
     new ClassSanityTester()
         .forAllPublicStaticMethods(Iterables.class)
diff --git a/guava-tests/test/com/google/common/collect/IteratorsTest.java b/guava-tests/test/com/google/common/collect/IteratorsTest.java
index 15f7ccc..6c7e130 100644
--- a/guava-tests/test/com/google/common/collect/IteratorsTest.java
+++ b/guava-tests/test/com/google/common/collect/IteratorsTest.java
@@ -27,8 +27,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 import static java.util.Collections.singleton;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
@@ -63,10 +61,9 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class IteratorsTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite(IteratorsTest.class.getSimpleName());
     suite.addTest(testsForRemoveAllAndRetainAll());
@@ -247,21 +244,21 @@ public class IteratorsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Iterators.toArray(Iterator, Class)
+  // Iterators.toArray(Iterator, Class)
   public void testToArrayEmpty() {
     Iterator<String> iterator = Collections.<String>emptyList().iterator();
     String[] array = Iterators.toArray(iterator, String.class);
     assertTrue(Arrays.equals(new String[0], array));
   }
 
-  @GwtIncompatible // Iterators.toArray(Iterator, Class)
+  // Iterators.toArray(Iterator, Class)
   public void testToArraySingleton() {
     Iterator<String> iterator = Collections.singletonList("a").iterator();
     String[] array = Iterators.toArray(iterator, String.class);
     assertTrue(Arrays.equals(new String[] {"a"}, array));
   }
 
-  @GwtIncompatible // Iterators.toArray(Iterator, Class)
+  // Iterators.toArray(Iterator, Class)
   public void testToArray() {
     String[] sourceArray = new String[] {"a", "b", "c"};
     Iterator<String> iterator = asList(sourceArray).iterator();
@@ -310,7 +307,7 @@ public class IteratorsTest extends TestCase {
     assertEquals(expected, actual);
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testFilterUsingIteratorTester() {
     final List<Integer> list = asList(1, 2, 3, 4, 5);
     final Predicate<Integer> isEven =
@@ -696,7 +693,7 @@ public class IteratorsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testCycleUsingIteratorTester() {
     new IteratorTester<Integer>(
         5,
@@ -710,7 +707,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~5s)
+  // slow (~5s)
   public void testConcatNoIteratorsYieldsEmpty() {
     new EmptyIteratorTester() {
       @SuppressWarnings("unchecked")
@@ -721,7 +718,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~5s)
+  // slow (~5s)
   public void testConcatOneEmptyIteratorYieldsEmpty() {
     new EmptyIteratorTester() {
       @SuppressWarnings("unchecked")
@@ -732,7 +729,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~5s)
+  // slow (~5s)
   public void testConcatMultipleEmptyIteratorsYieldsEmpty() {
     new EmptyIteratorTester() {
       @Override
@@ -742,7 +739,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~3s)
+  // slow (~3s)
   public void testConcatSingletonYieldsSingleton() {
     new SingletonIteratorTester() {
       @SuppressWarnings("unchecked")
@@ -753,7 +750,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // slow (~5s)
+  // slow (~5s)
   public void testConcatEmptyAndSingletonAndEmptyYieldsSingleton() {
     new SingletonIteratorTester() {
       @Override
@@ -763,7 +760,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // fairly slow (~40s)
+  // fairly slow (~40s)
   public void testConcatSingletonAndSingletonYieldsDoubleton() {
     new DoubletonIteratorTester() {
       @Override
@@ -773,7 +770,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // fairly slow (~40s)
+  // fairly slow (~40s)
   public void testConcatSingletonAndSingletonWithEmptiesYieldsDoubleton() {
     new DoubletonIteratorTester() {
       @Override
@@ -783,7 +780,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // fairly slow (~50s)
+  // fairly slow (~50s)
   public void testConcatUnmodifiable() {
     new IteratorTester<Integer>(
         5, UNMODIFIABLE, asList(1, 2), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -889,27 +886,27 @@ public class IteratorsTest extends TestCase {
     assertFalse(changed);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Iterators.class);
   }
 
-  @GwtIncompatible // Only used by @GwtIncompatible code
+  // Only used by @GwtIncompatible code
   private abstract static class EmptyIteratorTester extends IteratorTester<Integer> {
     protected EmptyIteratorTester() {
       super(3, MODIFIABLE, Collections.<Integer>emptySet(), IteratorTester.KnownOrder.KNOWN_ORDER);
     }
   }
 
-  @GwtIncompatible // Only used by @GwtIncompatible code
+  // Only used by @GwtIncompatible code
   private abstract static class SingletonIteratorTester extends IteratorTester<Integer> {
     protected SingletonIteratorTester() {
       super(3, MODIFIABLE, singleton(1), IteratorTester.KnownOrder.KNOWN_ORDER);
     }
   }
 
-  @GwtIncompatible // Only used by @GwtIncompatible code
+  // Only used by @GwtIncompatible code
   private abstract static class DoubletonIteratorTester extends IteratorTester<Integer> {
     protected DoubletonIteratorTester() {
       super(5, MODIFIABLE, newArrayList(1, 2), IteratorTester.KnownOrder.KNOWN_ORDER);
@@ -1001,7 +998,7 @@ public class IteratorsTest extends TestCase {
     assertFalse(partitions.hasNext());
   }
 
-  @GwtIncompatible // fairly slow (~50s)
+  // fairly slow (~50s)
   public void testPartition_general() {
     new IteratorTester<List<Integer>>(
         5,
@@ -1030,7 +1027,7 @@ public class IteratorsTest extends TestCase {
     assertEquals(ImmutableList.of(3), first);
   }
 
-  @GwtIncompatible // ?
+  // ?
   // TODO: Figure out why this is failing in GWT.
   public void testPartitionRandomAccess() {
     Iterator<Integer> source = asList(1, 2, 3).iterator();
@@ -1072,7 +1069,7 @@ public class IteratorsTest extends TestCase {
     assertFalse(partitions.hasNext());
   }
 
-  @GwtIncompatible // fairly slow (~50s)
+  // fairly slow (~50s)
   public void testPaddedPartition_general() {
     new IteratorTester<List<Integer>>(
         5,
@@ -1171,7 +1168,7 @@ public class IteratorsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testForArrayUsingTester() {
     new IteratorTester<Integer>(
         6, UNMODIFIABLE, asList(1, 2, 3), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -1182,7 +1179,7 @@ public class IteratorsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testForArrayWithOffsetUsingTester() {
     new IteratorTester<Integer>(
         6, UNMODIFIABLE, asList(1, 2, 3), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -1333,7 +1330,7 @@ public class IteratorsTest extends TestCase {
     assertEquals("pants", list.get(0));
   }
 
-  @GwtIncompatible // fairly slow (~30s)
+  // fairly slow (~30s)
   public void testLimitUsingIteratorTester() {
     final List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5);
     new IteratorTester<Integer>(
@@ -1535,7 +1532,7 @@ public class IteratorsTest extends TestCase {
     assertEquals(3, Iterators.frequency(list.iterator(), null));
   }
 
-  @GwtIncompatible // slow (~4s)
+  // slow (~4s)
   public void testSingletonIterator() {
     new IteratorTester<Integer>(
         3, UNMODIFIABLE, singleton(1), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -1586,7 +1583,7 @@ public class IteratorsTest extends TestCase {
     assertEquals(newArrayList("b", "d"), list);
   }
 
-  @GwtIncompatible // ListTestSuiteBuilder
+  // ListTestSuiteBuilder
   private static Test testsForRemoveAllAndRetainAll() {
     return ListTestSuiteBuilder.using(
             new TestStringListGenerator() {
@@ -1640,7 +1637,7 @@ public class IteratorsTest extends TestCase {
     assertFalse(consumingIterator.hasNext());
   }
 
-  @GwtIncompatible // ?
+  // ?
   // TODO: Figure out why this is failing in GWT.
   public void testConsumingIterator_duelingIterators() {
     // Test data
diff --git a/guava-tests/test/com/google/common/collect/LegacyComparable.java b/guava-tests/test/com/google/common/collect/LegacyComparable.java
index 8b0c962..534d4f7 100644
--- a/guava-tests/test/com/google/common/collect/LegacyComparable.java
+++ b/guava-tests/test/com/google/common/collect/LegacyComparable.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Arrays;
 
@@ -28,7 +27,6 @@ import java.util.Arrays;
  * @author Kevin Bourrillion
  */
 @SuppressWarnings("ComparableType")
-@GwtCompatible
 class LegacyComparable implements Comparable, Serializable {
   static final LegacyComparable X = new LegacyComparable("x");
   static final LegacyComparable Y = new LegacyComparable("y");
diff --git a/guava-tests/test/com/google/common/collect/LenientSerializableTester.java b/guava-tests/test/com/google/common/collect/LenientSerializableTester.java
index ce3ec9d..168df4d 100644
--- a/guava-tests/test/com/google/common/collect/LenientSerializableTester.java
+++ b/guava-tests/test/com/google/common/collect/LenientSerializableTester.java
@@ -20,10 +20,7 @@ import static com.google.common.testing.SerializableTester.reserialize;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertTrue;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.SerializableTester;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Set;
 
@@ -37,14 +34,12 @@ import java.util.Set;
  * The whole thing is really @GwtIncompatible, but GwtJUnitConvertedTestModule doesn't have a
  * parameter for non-GWT, non-test files, and it didn't seem worth adding one for this unusual case.
  */
-@GwtCompatible(emulated = true)
 final class LenientSerializableTester {
   /*
    * TODO(cpovirk): move this to c.g.c.testing if we allow for c.g.c.annotations dependencies so
    * that it can be GWTified?
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   static <E> Set<E> reserializeAndAssertLenient(Set<E> original) {
     Set<E> copy = reserialize(original);
     assertEquals(original, copy);
@@ -52,8 +47,7 @@ final class LenientSerializableTester {
     return copy;
   }
 
-  @CanIgnoreReturnValue
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   static <E> Multiset<E> reserializeAndAssertLenient(Multiset<E> original) {
     Multiset<E> copy = reserialize(original);
     assertEquals(original, copy);
@@ -61,8 +55,7 @@ final class LenientSerializableTester {
     return copy;
   }
 
-  @CanIgnoreReturnValue
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   static <E> Collection<E> reserializeAndAssertElementsEqual(Collection<E> original) {
     Collection<E> copy = reserialize(original);
     assertTrue(Iterables.elementsEqual(original, copy));
diff --git a/guava-tests/test/com/google/common/collect/LinkedHashMultimapTest.java b/guava-tests/test/com/google/common/collect/LinkedHashMultimapTest.java
index 678fc2a..0561d14 100644
--- a/guava-tests/test/com/google/common/collect/LinkedHashMultimapTest.java
+++ b/guava-tests/test/com/google/common/collect/LinkedHashMultimapTest.java
@@ -24,8 +24,6 @@ import static com.google.common.collect.testing.IteratorFeature.MODIFIABLE;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.IteratorTester;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -50,10 +48,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class LinkedHashMultimapTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -136,14 +133,14 @@ public class LinkedHashMultimapTest extends TestCase {
     assertOrderingReadOnly(Multimaps.synchronizedMultimap(multimap));
   }
 
-  @GwtIncompatible // SeriazableTester
+  // SeriazableTester
   public void testSerializationOrdering() {
     Multimap<String, Integer> multimap = initializeMultimap5();
     Multimap<String, Integer> copy = SerializableTester.reserializeAndAssert(multimap);
     assertOrderingReadOnly(copy);
   }
 
-  @GwtIncompatible // SeriazableTester
+  // SeriazableTester
   public void testSerializationOrderingKeysAndEntries() {
     Multimap<String, Integer> multimap = LinkedHashMultimap.create();
     multimap.put("a", 1);
@@ -276,7 +273,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testGetIteration() {
     new IteratorTester<Integer>(
         6,
@@ -301,7 +298,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testEntriesIteration() {
     @SuppressWarnings("unchecked")
     Set<Entry<String, Integer>> set =
@@ -333,7 +330,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testKeysIteration() {
     new IteratorTester<String>(
         6,
@@ -358,7 +355,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testValuesIteration() {
     new IteratorTester<Integer>(
         6, MODIFIABLE, newArrayList(2, 3, 4, 5, 6), IteratorTester.KnownOrder.KNOWN_ORDER) {
@@ -380,7 +377,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testKeySetIteration() {
     new IteratorTester<String>(
         6,
@@ -409,7 +406,7 @@ public class LinkedHashMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testAsSetIteration() {
     @SuppressWarnings("unchecked")
     Set<Entry<String, Collection<Integer>>> set =
diff --git a/guava-tests/test/com/google/common/collect/LinkedHashMultisetTest.java b/guava-tests/test/com/google/common/collect/LinkedHashMultisetTest.java
index da7e868..2ffc94b 100644
--- a/guava-tests/test/com/google/common/collect/LinkedHashMultisetTest.java
+++ b/guava-tests/test/com/google/common/collect/LinkedHashMultisetTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.google.MultisetFeature;
@@ -37,10 +35,9 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class LinkedHashMultisetTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
diff --git a/guava-tests/test/com/google/common/collect/LinkedListMultimapTest.java b/guava-tests/test/com/google/common/collect/LinkedListMultimapTest.java
index d57d5c0..64862b5 100644
--- a/guava-tests/test/com/google/common/collect/LinkedListMultimapTest.java
+++ b/guava-tests/test/com/google/common/collect/LinkedListMultimapTest.java
@@ -25,8 +25,6 @@ import static com.google.common.collect.testing.IteratorFeature.SUPPORTS_SET;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.IteratorTester;
 import com.google.common.collect.testing.ListIteratorTester;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -53,10 +51,9 @@ import junit.framework.TestSuite;
  *
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 public class LinkedListMultimapTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -332,7 +329,7 @@ public class LinkedListMultimapTest extends TestCase {
   }
 
   @SuppressWarnings("unchecked")
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testEntriesIteration() {
     List<Entry<String, Integer>> addItems =
         ImmutableList.of(
@@ -369,7 +366,7 @@ public class LinkedListMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testKeysIteration() {
     new IteratorTester<String>(
         6,
@@ -394,7 +391,7 @@ public class LinkedListMultimapTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testValuesIteration() {
     List<Integer> addItems = ImmutableList.of(99, 88, 77);
 
@@ -425,7 +422,7 @@ public class LinkedListMultimapTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testKeySetIteration() {
     new IteratorTester<String>(
         6,
@@ -455,7 +452,7 @@ public class LinkedListMultimapTest extends TestCase {
   }
 
   @SuppressWarnings("unchecked")
-  @GwtIncompatible // unreasonably slow
+  // unreasonably slow
   public void testAsSetIteration() {
     Set<Entry<String, Collection<Integer>>> set =
         Sets.newLinkedHashSet(
diff --git a/guava-tests/test/com/google/common/collect/ListsImplTest.java b/guava-tests/test/com/google/common/collect/ListsImplTest.java
index 1569ba5..dc0ff8d 100644
--- a/guava-tests/test/com/google/common/collect/ListsImplTest.java
+++ b/guava-tests/test/com/google/common/collect/ListsImplTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -34,7 +32,6 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 /** Tests the package level *impl methods directly using various types of lists. */
-@GwtCompatible(emulated = true)
 public class ListsImplTest extends TestCase {
 
   /** Describes how a list is modifiable */
@@ -70,7 +67,7 @@ public class ListsImplTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(createExampleSuite(new ArrayListExample("ArrayList")));
@@ -82,7 +79,7 @@ public class ListsImplTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // suite sub call
+  // suite sub call
   private static TestSuite createExampleSuite(ListExample example) {
     TestSuite resultSuite = new TestSuite(ListsImplTest.class);
     for (Enumeration<Test> testEnum = resultSuite.tests(); testEnum.hasMoreElements(); ) {
@@ -261,7 +258,7 @@ public class ListsImplTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Iterables.toArray
+  // Iterables.toArray
   private static final class ArraysAsListExample extends ListExample {
 
     protected ArraysAsListExample(String name) {
@@ -288,7 +285,7 @@ public class ListsImplTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // CopyOnWriteArrayList
+  // CopyOnWriteArrayList
   private static final class CopyOnWriteListExample extends ListExample {
 
     protected CopyOnWriteListExample(String name) {
diff --git a/guava-tests/test/com/google/common/collect/ListsTest.java b/guava-tests/test/com/google/common/collect/ListsTest.java
index ef90e54..b0f025e 100644
--- a/guava-tests/test/com/google/common/collect/ListsTest.java
+++ b/guava-tests/test/com/google/common/collect/ListsTest.java
@@ -22,8 +22,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 import static java.util.Collections.singletonList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.collect.testing.IteratorTester;
@@ -58,7 +56,6 @@ import junit.framework.TestSuite;
  * @author Mike Bostock
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class ListsTest extends TestCase {
 
   private static final Collection<Integer> SOME_COLLECTION = asList(0, 1, 1);
@@ -98,7 +95,7 @@ public class ListsTest extends TestCase {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ListsTest.class);
@@ -393,19 +390,19 @@ public class ListsTest extends TestCase {
     assertEquals(SOME_COLLECTION, list);
   }
 
-  @GwtIncompatible // CopyOnWriteArrayList
+  // CopyOnWriteArrayList
   public void testNewCOWALEmpty() {
     CopyOnWriteArrayList<Integer> list = Lists.newCopyOnWriteArrayList();
     assertEquals(Collections.emptyList(), list);
   }
 
-  @GwtIncompatible // CopyOnWriteArrayList
+  // CopyOnWriteArrayList
   public void testNewCOWALFromIterable() {
     CopyOnWriteArrayList<Integer> list = Lists.newCopyOnWriteArrayList(SOME_ITERABLE);
     assertEquals(SOME_COLLECTION, list);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Lists.class);
@@ -441,7 +438,7 @@ public class ListsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testAsList1() {
     List<String> list = Lists.asList("foo", new String[] {"bar", "baz"});
     checkFooBarBazList(list);
@@ -499,7 +496,7 @@ public class ListsTest extends TestCase {
     }.test();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testAsList2Small() {
     List<String> list = Lists.asList("foo", "bar", new String[0]);
     assertThat(list).containsExactly("foo", "bar").inOrder();
@@ -935,7 +932,7 @@ public class ListsTest extends TestCase {
     assertEquals(asList(3), partitions.get(1));
   }
 
-  @GwtIncompatible // ArrayList.subList doesn't implement RandomAccess in GWT.
+  // ArrayList.subList doesn't implement RandomAccess in GWT.
   public void testPartitionRandomAccessTrue() {
     List<Integer> source = asList(1, 2, 3);
     List<List<Integer>> partitions = Lists.partition(source, 2);
@@ -993,7 +990,7 @@ public class ListsTest extends TestCase {
     assertEquals(1, Lists.partition(list, Integer.MAX_VALUE - 1).size());
   }
 
-  @GwtIncompatible // cannot do such a big explicit copy
+  // cannot do such a big explicit copy
   public void testPartitionSize_2() {
     assertEquals(2, Lists.partition(Collections.nCopies(0x40000001, 1), 0x40000000).size());
   }
diff --git a/guava-tests/test/com/google/common/collect/MapMakerInternalMapTest.java b/guava-tests/test/com/google/common/collect/MapMakerInternalMapTest.java
index 47fc74c..1003dca 100644
--- a/guava-tests/test/com/google/common/collect/MapMakerInternalMapTest.java
+++ b/guava-tests/test/com/google/common/collect/MapMakerInternalMapTest.java
@@ -23,8 +23,6 @@ import com.google.common.base.Equivalence;
 import com.google.common.collect.MapMakerInternalMap.InternalEntry;
 import com.google.common.collect.MapMakerInternalMap.Segment;
 import com.google.common.collect.MapMakerInternalMap.Strength;
-import com.google.common.collect.MapMakerInternalMap.WeakValueEntry;
-import com.google.common.collect.MapMakerInternalMap.WeakValueReference;
 import com.google.common.testing.NullPointerTester;
 import java.lang.ref.Reference;
 import java.util.concurrent.atomic.AtomicReferenceArray;
diff --git a/guava-tests/test/com/google/common/collect/MapMakerTest.java b/guava-tests/test/com/google/common/collect/MapMakerTest.java
index 4b54f0d..44c699f 100644
--- a/guava-tests/test/com/google/common/collect/MapMakerTest.java
+++ b/guava-tests/test/com/google/common/collect/MapMakerTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.util.concurrent.Uninterruptibles.awaitUninterruptibly;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.testing.NullPointerTester;
 import java.util.Map;
@@ -28,16 +26,15 @@ import java.util.concurrent.CountDownLatch;
 import junit.framework.TestCase;
 
 /** @author Charles Fry */
-@GwtCompatible(emulated = true)
 public class MapMakerTest extends TestCase {
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullParameters() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(new MapMaker());
   }
 
-  @GwtIncompatible // threads
+  // threads
   static final class DelayingIdentityLoader<T> implements Function<T, T> {
     private final CountDownLatch delayLatch;
 
diff --git a/guava-tests/test/com/google/common/collect/MapsCollectionTest.java b/guava-tests/test/com/google/common/collect/MapsCollectionTest.java
index 1e60064..b46624a 100644
--- a/guava-tests/test/com/google/common/collect/MapsCollectionTest.java
+++ b/guava-tests/test/com/google/common/collect/MapsCollectionTest.java
@@ -52,7 +52,6 @@ import java.util.SortedSet;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Test suites for wrappers in {@code Maps}.
diff --git a/guava-tests/test/com/google/common/collect/MapsSortedTransformValuesTest.java b/guava-tests/test/com/google/common/collect/MapsSortedTransformValuesTest.java
index 98bbde5..7db6930 100644
--- a/guava-tests/test/com/google/common/collect/MapsSortedTransformValuesTest.java
+++ b/guava-tests/test/com/google/common/collect/MapsSortedTransformValuesTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import java.util.SortedMap;
@@ -26,7 +25,6 @@ import java.util.SortedMap;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class MapsSortedTransformValuesTest extends MapsTransformValuesTest {
 
   @Override
diff --git a/guava-tests/test/com/google/common/collect/MapsTest.java b/guava-tests/test/com/google/common/collect/MapsTest.java
index 76394c8..ca8d04f 100644
--- a/guava-tests/test/com/google/common/collect/MapsTest.java
+++ b/guava-tests/test/com/google/common/collect/MapsTest.java
@@ -24,8 +24,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
@@ -71,7 +69,6 @@ import junit.framework.TestCase;
  * @author Mike Bostock
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class MapsTest extends TestCase {
 
   private static final Comparator<Integer> SOME_COMPARATOR = Collections.reverseOrder();
@@ -117,7 +114,7 @@ public class MapsTest extends TestCase {
    *
    * <p>This test may fail miserably on non-OpenJDK environments...
    */
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // relies on assumptions about OpenJDK
   public void testNewHashMapWithExpectedSize_wontGrow() throws Exception {
     // before jdk7u40: creates one-bucket table
@@ -131,7 +128,7 @@ public class MapsTest extends TestCase {
   }
 
   /** Same test as above but for newLinkedHashMapWithExpectedSize */
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // relies on assumptions about OpenJDK
   public void testNewLinkedHashMapWithExpectedSize_wontGrow() throws Exception {
     assertTrue(bucketsOf(Maps.newLinkedHashMapWithExpectedSize(0)) <= 1);
@@ -144,7 +141,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static void assertWontGrow(
       int size, HashMap<Object, Object> map1, HashMap<Object, Object> map2) throws Exception {
     // Only start measuring table size after the first element inserted, to
@@ -170,7 +167,7 @@ public class MapsTest extends TestCase {
         .isEqualTo(initialBuckets);
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static int bucketsOf(HashMap<?, ?> hashMap) throws Exception {
     Field tableField = HashMap.class.getDeclaredField("table");
     tableField.setAccessible(true);
@@ -366,7 +363,7 @@ public class MapsTest extends TestCase {
     assertEquals(hashmap.toString(), Maps.toStringImpl(hashmap));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     new NullPointerTester().testAllPublicStaticMethods(Maps.class);
   }
@@ -773,7 +770,7 @@ public class MapsTest extends TestCase {
     assertNull(map.get("five"));
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testAsMapNavigable() {
     NavigableSet<String> strings = Sets.newTreeSet(asList("one", "two", "three"));
     NavigableMap<String, Integer> map = Maps.asMap(strings, LENGTH_FUNCTION);
@@ -820,7 +817,7 @@ public class MapsTest extends TestCase {
     assertEquals(1, map.size());
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testAsMapNavigableReadsThrough() {
     NavigableSet<String> strings = Sets.newTreeSet();
     Collections.addAll(strings, "one", "two", "three");
@@ -854,7 +851,7 @@ public class MapsTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testAsMapNavigableWritesThrough() {
     NavigableSet<String> strings = Sets.newTreeSet();
     Collections.addAll(strings, "one", "two", "three");
@@ -866,7 +863,7 @@ public class MapsTest extends TestCase {
     assertThat(strings).contains("one");
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testAsMapNavigableSubViewKeySetsDoNotSupportAdd() {
     NavigableMap<String, Integer> map = Maps.asMap(Sets.<String>newTreeSet(), LENGTH_FUNCTION);
     try {
@@ -896,7 +893,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testAsMapNavigableEmpty() {
     NavigableSet<String> strings = ImmutableSortedSet.of();
     NavigableMap<String, Integer> map = Maps.asMap(strings, LENGTH_FUNCTION);
@@ -1014,7 +1011,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Maps.fromProperties
+  // Maps.fromProperties
   @SuppressWarnings("deprecation") // StringBufferInputStream
   public void testFromProperties() throws IOException {
     Properties testProp = new Properties();
@@ -1063,7 +1060,7 @@ public class MapsTest extends TestCase {
     assertNotSame(System.getProperty("java.version"), result.get("java.version"));
   }
 
-  @GwtIncompatible // Maps.fromProperties
+  // Maps.fromProperties
   @SuppressWarnings("serial") // never serialized
   public void testFromPropertiesNullKey() {
     Properties properties =
@@ -1083,7 +1080,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Maps.fromProperties
+  // Maps.fromProperties
   @SuppressWarnings("serial") // never serialized
   public void testFromPropertiesNonStringKeys() {
     Properties properties =
@@ -1679,7 +1676,7 @@ public class MapsTest extends TestCase {
     assertEquals(ImmutableSortedMap.of("a", 2.0, "b", 3.0), transformed);
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testNavigableMapTransformValues() {
     NavigableMap<String, Integer> map = ImmutableSortedMap.of("a", 4, "b", 9);
     NavigableMap<String, Double> transformed = transformValues(map, SQRT_FUNCTION);
@@ -1705,7 +1702,7 @@ public class MapsTest extends TestCase {
     assertEquals(ImmutableSortedMap.of("a", "a4", "b", "b9"), transformed);
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testNavigableMapTransformEntries() {
     NavigableMap<String, String> map = ImmutableSortedMap.of("a", "4", "b", "9");
     EntryTransformer<String, String, String> concat =
@@ -1720,7 +1717,7 @@ public class MapsTest extends TestCase {
     assertEquals(ImmutableSortedMap.of("a", "a4", "b", "b9"), transformed);
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testUnmodifiableNavigableMap() {
     TreeMap<Integer, String> mod = Maps.newTreeMap();
     mod.put(1, "one");
@@ -1830,7 +1827,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   void ensureNotDirectlyModifiable(NavigableMap<Integer, String> unmod) {
     try {
       unmod.put(4, "four");
@@ -1859,7 +1856,7 @@ public class MapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testSubMap_boundedRange() {
     ImmutableSortedMap<Integer, Integer> map = ImmutableSortedMap.of(2, 0, 4, 0, 6, 0, 8, 0, 10, 0);
     ImmutableSortedMap<Integer, Integer> empty = ImmutableSortedMap.of();
@@ -1889,7 +1886,7 @@ public class MapsTest extends TestCase {
     assertEquals(empty, Maps.subMap(map, Range.closedOpen(20, 30)));
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testSubMap_halfBoundedRange() {
     ImmutableSortedMap<Integer, Integer> map = ImmutableSortedMap.of(2, 0, 4, 0, 6, 0, 8, 0, 10, 0);
     ImmutableSortedMap<Integer, Integer> empty = ImmutableSortedMap.of();
@@ -1916,14 +1913,14 @@ public class MapsTest extends TestCase {
     assertEquals(map, Maps.subMap(map, Range.atMost(20)));
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testSubMap_unboundedRange() {
     ImmutableSortedMap<Integer, Integer> map = ImmutableSortedMap.of(2, 0, 4, 0, 6, 0, 8, 0, 10, 0);
 
     assertEquals(map, Maps.subMap(map, Range.<Integer>all()));
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public void testSubMap_unnaturalOrdering() {
     ImmutableSortedMap<Integer, Integer> map =
         ImmutableSortedMap.<Integer, Integer>reverseOrder()
diff --git a/guava-tests/test/com/google/common/collect/MapsTransformValuesTest.java b/guava-tests/test/com/google/common/collect/MapsTransformValuesTest.java
index c20e166..86116c2 100644
--- a/guava-tests/test/com/google/common/collect/MapsTransformValuesTest.java
+++ b/guava-tests/test/com/google/common/collect/MapsTransformValuesTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.collect.testing.MapInterfaceTest;
@@ -25,14 +24,12 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tests for {@link Maps#transformValues}.
  *
  * @author Isaac Shum
  */
-@GwtCompatible
 public class MapsTransformValuesTest extends MapInterfaceTest<String, String> {
 
   /**
diff --git a/guava-tests/test/com/google/common/collect/MapsTransformValuesUnmodifiableIteratorTest.java b/guava-tests/test/com/google/common/collect/MapsTransformValuesUnmodifiableIteratorTest.java
index 271b3b3..19441d4 100644
--- a/guava-tests/test/com/google/common/collect/MapsTransformValuesUnmodifiableIteratorTest.java
+++ b/guava-tests/test/com/google/common/collect/MapsTransformValuesUnmodifiableIteratorTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.collect.testing.MapInterfaceTest;
@@ -25,7 +24,6 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tests for {@link Maps#transformValues} when the backing map's views have iterators that don't
@@ -33,7 +31,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class MapsTransformValuesUnmodifiableIteratorTest extends MapInterfaceTest<String, String> {
   // TODO(jlevy): Move shared code of this class and MapsTransformValuesTest
   // to a superclass.
diff --git a/guava-tests/test/com/google/common/collect/MinMaxPriorityQueueTest.java b/guava-tests/test/com/google/common/collect/MinMaxPriorityQueueTest.java
index 5471e36..587fd8d 100644
--- a/guava-tests/test/com/google/common/collect/MinMaxPriorityQueueTest.java
+++ b/guava-tests/test/com/google/common/collect/MinMaxPriorityQueueTest.java
@@ -21,8 +21,6 @@ import static com.google.common.collect.Platform.reduceExponentIfGwt;
 import static com.google.common.collect.Platform.reduceIterationsIfGwt;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.IteratorFeature;
 import com.google.common.collect.testing.IteratorTester;
 import com.google.common.collect.testing.QueueTestSuiteBuilder;
@@ -54,11 +52,10 @@ import junit.framework.TestSuite;
  * @author Alexei Stolboushkin
  * @author Sverre Sundsdal
  */
-@GwtCompatible(emulated = true)
 public class MinMaxPriorityQueueTest extends TestCase {
   private static final Ordering<Integer> SOME_COMPARATOR = Ordering.natural().reverse();
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(MinMaxPriorityQueueTest.class);
@@ -886,7 +883,7 @@ public class MinMaxPriorityQueueTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicConstructors(MinMaxPriorityQueue.class);
diff --git a/guava-tests/test/com/google/common/collect/MoreCollectorsTest.java b/guava-tests/test/com/google/common/collect/MoreCollectorsTest.java
index 65a8971..2353d03 100644
--- a/guava-tests/test/com/google/common/collect/MoreCollectorsTest.java
+++ b/guava-tests/test/com/google/common/collect/MoreCollectorsTest.java
@@ -19,7 +19,6 @@ package com.google.common.collect;
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth8.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.NoSuchElementException;
 import java.util.stream.Stream;
 import junit.framework.TestCase;
@@ -29,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class MoreCollectorsTest extends TestCase {
   public void testToOptionalEmpty() {
     assertThat(Stream.empty().collect(MoreCollectors.toOptional())).isEmpty();
diff --git a/guava-tests/test/com/google/common/collect/MultimapBuilderTest.java b/guava-tests/test/com/google/common/collect/MultimapBuilderTest.java
index 5528aba..e7c72c6 100644
--- a/guava-tests/test/com/google/common/collect/MultimapBuilderTest.java
+++ b/guava-tests/test/com/google/common/collect/MultimapBuilderTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.MultimapBuilder.MultimapBuilderWithKeys;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -33,10 +31,9 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class MultimapBuilderTest extends TestCase {
 
-  @GwtIncompatible // doesn't build without explicit type parameters on build() methods
+  // doesn't build without explicit type parameters on build() methods
   public void testGenerics() {
     ListMultimap<String, Integer> a = MultimapBuilder.hashKeys().arrayListValues().build();
     SortedSetMultimap<String, Integer> b = MultimapBuilder.linkedHashKeys().treeSetValues().build();
@@ -55,7 +52,7 @@ public class MultimapBuilderTest extends TestCase {
             .<String, Integer>build();
   }
 
-  @GwtIncompatible // doesn't build without explicit type parameters on build() methods
+  // doesn't build without explicit type parameters on build() methods
   public void testTreeKeys() {
     ListMultimap<String, Integer> multimap = MultimapBuilder.treeKeys().arrayListValues().build();
     assertTrue(multimap.keySet() instanceof SortedSet);
@@ -69,7 +66,7 @@ public class MultimapBuilderTest extends TestCase {
     assertTrue(multimap.asMap() instanceof SortedMap);
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   public void testSerialization() throws Exception {
     for (MultimapBuilderWithKeys<?> builderWithKeys :
         ImmutableList.of(
@@ -93,14 +90,14 @@ public class MultimapBuilderTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static void reserializeAndAssert(Object object) throws Exception {
     Object copy = reserialize(object);
     assertEquals(object, copy);
     assertEquals(object.getClass(), copy.getClass());
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static Object reserialize(Object object) throws Exception {
     ByteArrayOutputStream bytes = new ByteArrayOutputStream();
     new ObjectOutputStream(bytes).writeObject(object);
diff --git a/guava-tests/test/com/google/common/collect/MultimapsCollectionTest.java b/guava-tests/test/com/google/common/collect/MultimapsCollectionTest.java
index 34b1ee0..0f9d1e2 100644
--- a/guava-tests/test/com/google/common/collect/MultimapsCollectionTest.java
+++ b/guava-tests/test/com/google/common/collect/MultimapsCollectionTest.java
@@ -28,7 +28,6 @@ import static com.google.common.collect.testing.google.MultisetIteratorTester.ge
 import static com.google.common.collect.testing.google.MultisetRemoveTester.getRemoveDuplicateInitializingMethods;
 import static java.lang.reflect.Proxy.newProxyInstance;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
@@ -71,7 +70,7 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtIncompatible // suite // TODO(cpovirk): set up collect/gwt/suites version
+// suite // TODO(cpovirk): set up collect/gwt/suites version
 public class MultimapsCollectionTest extends TestCase {
 
   private static final Feature<?>[] FOR_MAP_FEATURES_ONE = {
diff --git a/guava-tests/test/com/google/common/collect/MultimapsFilterEntriesAsMapTest.java b/guava-tests/test/com/google/common/collect/MultimapsFilterEntriesAsMapTest.java
index 314a127..eafbe5f 100644
--- a/guava-tests/test/com/google/common/collect/MultimapsFilterEntriesAsMapTest.java
+++ b/guava-tests/test/com/google/common/collect/MultimapsFilterEntriesAsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Predicate;
 import java.util.Collection;
 import java.util.Map;
@@ -27,7 +26,6 @@ import java.util.Map.Entry;
  *
  * @author Jared Levy
  */
-@GwtIncompatible(value = "untested")
 public class MultimapsFilterEntriesAsMapTest extends AbstractMultimapAsMapImplementsMapTest {
   private static final Predicate<Entry<String, Integer>> PREDICATE =
       new Predicate<Entry<String, Integer>>() {
diff --git a/guava-tests/test/com/google/common/collect/MultimapsTest.java b/guava-tests/test/com/google/common/collect/MultimapsTest.java
index 6fa9c3c..8e49923 100644
--- a/guava-tests/test/com/google/common/collect/MultimapsTest.java
+++ b/guava-tests/test/com/google/common/collect/MultimapsTest.java
@@ -25,8 +25,6 @@ import static com.google.common.collect.testing.IteratorFeature.MODIFIABLE;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
@@ -62,14 +60,12 @@ import java.util.function.BiPredicate;
 import java.util.stream.Collector;
 import java.util.stream.Stream;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Unit test for {@code Multimaps}.
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class MultimapsTest extends TestCase {
 
   private static final Comparator<Integer> INT_COMPARATOR =
@@ -163,12 +159,12 @@ public class MultimapsTest extends TestCase {
     assertSame(immutable, Multimaps.unmodifiableMultimap((Multimap<String, Integer>) immutable));
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableArrayListMultimap() {
     checkUnmodifiableMultimap(ArrayListMultimap.<String, Integer>create(), true);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableArrayListMultimap() {
     Multimap<String, Integer> unmodifiable =
         prepareUnmodifiableTests(ArrayListMultimap.<String, Integer>create(), true, null, null);
@@ -193,37 +189,37 @@ public class MultimapsTest extends TestCase {
     assertFalse(multimap.get("bar") instanceof RandomAccess);
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableHashMultimap() {
     checkUnmodifiableMultimap(HashMultimap.<String, Integer>create(), false);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableHashMultimap() {
     Multimap<String, Integer> unmodifiable =
         prepareUnmodifiableTests(HashMultimap.<String, Integer>create(), false, null, null);
     SerializableTester.reserializeAndAssert(unmodifiable);
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableTreeMultimap() {
     checkUnmodifiableMultimap(TreeMultimap.<String, Integer>create(), false, "null", 42);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableTreeMultimap() {
     Multimap<String, Integer> unmodifiable =
         prepareUnmodifiableTests(TreeMultimap.<String, Integer>create(), false, "null", 42);
     SerializableTester.reserializeAndAssert(unmodifiable);
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableSynchronizedArrayListMultimap() {
     checkUnmodifiableMultimap(
         Multimaps.synchronizedListMultimap(ArrayListMultimap.<String, Integer>create()), true);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableSynchronizedArrayListMultimap() {
     Multimap<String, Integer> unmodifiable =
         prepareUnmodifiableTests(
@@ -234,13 +230,13 @@ public class MultimapsTest extends TestCase {
     SerializableTester.reserializeAndAssert(unmodifiable);
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableSynchronizedHashMultimap() {
     checkUnmodifiableMultimap(
         Multimaps.synchronizedSetMultimap(HashMultimap.<String, Integer>create()), false);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableSynchronizedHashMultimap() {
     Multimap<String, Integer> unmodifiable =
         prepareUnmodifiableTests(
@@ -251,7 +247,7 @@ public class MultimapsTest extends TestCase {
     SerializableTester.reserializeAndAssert(unmodifiable);
   }
 
-  @GwtIncompatible // slow (~10s)
+  // slow (~10s)
   public void testUnmodifiableSynchronizedTreeMultimap() {
     TreeMultimap<String, Integer> delegate =
         TreeMultimap.create(Ordering.<String>natural(), INT_COMPARATOR);
@@ -260,7 +256,7 @@ public class MultimapsTest extends TestCase {
     assertSame(INT_COMPARATOR, multimap.valueComparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerializingUnmodifiableSynchronizedTreeMultimap() {
     TreeMultimap<String, Integer> delegate =
         TreeMultimap.create(Ordering.<String>natural(), INT_COMPARATOR);
@@ -505,7 +501,7 @@ public class MultimapsTest extends TestCase {
     assertEquals(multimapView, ArrayListMultimap.create());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testForMapSerialization() {
     Map<String, Integer> map = Maps.newHashMap();
     map.put("foo", 1);
@@ -687,7 +683,7 @@ public class MultimapsTest extends TestCase {
     assertTrue(multimap.get(Color.BLUE) instanceof List);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNewMultimapSerialization() {
     CountingSupplier<Queue<Integer>> factory = new QueueSupplier();
     Map<Color, Collection<Integer>> map = Maps.newEnumMap(Color.class);
@@ -722,7 +718,7 @@ public class MultimapsTest extends TestCase {
     assertTrue(multimap.asMap() instanceof SortedMap);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNewListMultimapSerialization() {
     CountingSupplier<LinkedList<Integer>> factory = new ListSupplier();
     Map<Color, Collection<Integer>> map = Maps.newTreeMap();
@@ -753,7 +749,7 @@ public class MultimapsTest extends TestCase {
     assertEquals(Sets.newHashSet(4, 3, 1), multimap.get(Color.BLUE));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNewSetMultimapSerialization() {
     CountingSupplier<Set<Integer>> factory = new SetSupplier();
     Map<Color, Collection<Integer>> map = Maps.newHashMap();
@@ -786,7 +782,7 @@ public class MultimapsTest extends TestCase {
     assertEquals(INT_COMPARATOR, multimap.valueComparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNewSortedSetMultimapSerialization() {
     CountingSupplier<TreeSet<Integer>> factory = new SortedSetSupplier();
     Map<Color, Collection<Integer>> map = Maps.newEnumMap(Color.class);
@@ -869,7 +865,6 @@ public class MultimapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible(value = "untested")
   public void testTransformValues() {
     SetMultimap<String, Integer> multimap =
         ImmutableSetMultimap.of("a", 2, "b", -3, "b", 3, "a", 4, "c", 6);
@@ -891,7 +886,6 @@ public class MultimapsTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible(value = "untested")
   public void testTransformValuesIsView() {
     Multimap<String, String> multimap = LinkedListMultimap.create();
     multimap.put("a", "a");
@@ -910,7 +904,6 @@ public class MultimapsTest extends TestCase {
     assertThat(transformed.entries()).containsExactly(immutableEntry("a", 3));
   }
 
-  @GwtIncompatible(value = "untested")
   public void testTransformListValues() {
     ListMultimap<String, Integer> multimap =
         ImmutableListMultimap.of("a", 2, "b", -3, "b", 3, "a", 4, "c", 6);
@@ -932,7 +925,6 @@ public class MultimapsTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible(value = "untested")
   public void testTransformEntries() {
     SetMultimap<String, Integer> multimap = ImmutableSetMultimap.of("a", 1, "a", 4, "b", -6);
     EntryTransformer<String, Integer, String> transformer =
@@ -949,7 +941,6 @@ public class MultimapsTest extends TestCase {
         .inOrder();
   }
 
-  @GwtIncompatible(value = "untested")
   public void testTransformListEntries() {
     ListMultimap<String, Integer> multimap =
         ImmutableListMultimap.of("a", 1, "a", 4, "b", 6, "a", 4);
@@ -1055,7 +1046,7 @@ public class MultimapsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     new NullPointerTester().testAllPublicStaticMethods(Multimaps.class);
   }
diff --git a/guava-tests/test/com/google/common/collect/MultimapsTransformValuesAsMapTest.java b/guava-tests/test/com/google/common/collect/MultimapsTransformValuesAsMapTest.java
index 491a632..4cf7a53 100644
--- a/guava-tests/test/com/google/common/collect/MultimapsTransformValuesAsMapTest.java
+++ b/guava-tests/test/com/google/common/collect/MultimapsTransformValuesAsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Functions;
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +25,6 @@ import java.util.Map;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class MultimapsTransformValuesAsMapTest extends AbstractMultimapAsMapImplementsMapTest {
 
   public MultimapsTransformValuesAsMapTest() {
diff --git a/guava-tests/test/com/google/common/collect/MultisetsCollectionTest.java b/guava-tests/test/com/google/common/collect/MultisetsCollectionTest.java
index f143ebd..2e960c5 100644
--- a/guava-tests/test/com/google/common/collect/MultisetsCollectionTest.java
+++ b/guava-tests/test/com/google/common/collect/MultisetsCollectionTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
@@ -39,7 +38,7 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtIncompatible // suite // TODO(cpovirk): set up collect/gwt/suites version
+// suite // TODO(cpovirk): set up collect/gwt/suites version
 public class MultisetsCollectionTest extends TestCase {
   public static Test suite() {
     TestSuite suite = new TestSuite();
diff --git a/guava-tests/test/com/google/common/collect/MultisetsImmutableEntryTest.java b/guava-tests/test/com/google/common/collect/MultisetsImmutableEntryTest.java
index bef27b9..4e693fc 100644
--- a/guava-tests/test/com/google/common/collect/MultisetsImmutableEntryTest.java
+++ b/guava-tests/test/com/google/common/collect/MultisetsImmutableEntryTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multiset.Entry;
 import java.util.Collections;
 import junit.framework.TestCase;
@@ -26,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Mike Bostock
  */
-@GwtCompatible
 public class MultisetsImmutableEntryTest extends TestCase {
   private static final String NE = null;
 
diff --git a/guava-tests/test/com/google/common/collect/MultisetsTest.java b/guava-tests/test/com/google/common/collect/MultisetsTest.java
index 6ba5182..f79aebc 100644
--- a/guava-tests/test/com/google/common/collect/MultisetsTest.java
+++ b/guava-tests/test/com/google/common/collect/MultisetsTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedComparable;
 import com.google.common.testing.CollectorTester;
 import com.google.common.testing.NullPointerTester;
@@ -36,7 +34,6 @@ import junit.framework.TestCase;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class MultisetsTest extends TestCase {
 
   /* See MultisetsImmutableEntryTest for immutableEntry() tests. */
@@ -293,7 +290,7 @@ public class MultisetsTest extends TestCase {
             Multisets.immutableEntry("c", 3));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     new NullPointerTester().testAllPublicStaticMethods(Multisets.class);
   }
diff --git a/guava-tests/test/com/google/common/collect/MutableClassToInstanceMapTest.java b/guava-tests/test/com/google/common/collect/MutableClassToInstanceMapTest.java
index 156b62d..f4d5414 100644
--- a/guava-tests/test/com/google/common/collect/MutableClassToInstanceMapTest.java
+++ b/guava-tests/test/com/google/common/collect/MutableClassToInstanceMapTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.collect.ImmutableClassToInstanceMapTest.Impl;
-import com.google.common.collect.ImmutableClassToInstanceMapTest.TestClassToInstanceMapGenerator;
 import com.google.common.collect.testing.MapTestSuiteBuilder;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
diff --git a/guava-tests/test/com/google/common/collect/NewCustomTableTest.java b/guava-tests/test/com/google/common/collect/NewCustomTableTest.java
index 6ad3aa2..d86ff3e 100644
--- a/guava-tests/test/com/google/common/collect/NewCustomTableTest.java
+++ b/guava-tests/test/com/google/common/collect/NewCustomTableTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Supplier;
 import java.util.Map;
 import java.util.TreeMap;
@@ -28,7 +27,6 @@ import java.util.TreeMap;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class NewCustomTableTest extends AbstractTableTest {
 
   @Override
diff --git a/guava-tests/test/com/google/common/collect/ObjectArraysTest.java b/guava-tests/test/com/google/common/collect/ObjectArraysTest.java
index 32d043f..66dac62 100644
--- a/guava-tests/test/com/google/common/collect/ObjectArraysTest.java
+++ b/guava-tests/test/com/google/common/collect/ObjectArraysTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import java.io.Serializable;
 import java.util.Arrays;
@@ -31,23 +29,22 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class ObjectArraysTest extends TestCase {
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(ObjectArrays.class);
   }
 
-  @GwtIncompatible // ObjectArrays.newArray(Class, int)
+  // ObjectArrays.newArray(Class, int)
   public void testNewArray_fromClass_Empty() {
     String[] empty = ObjectArrays.newArray(String.class, 0);
     assertEquals(String[].class, empty.getClass());
     assertThat(empty).isEmpty();
   }
 
-  @GwtIncompatible // ObjectArrays.newArray(Class, int)
+  // ObjectArrays.newArray(Class, int)
   public void testNewArray_fromClass_Nonempty() {
     String[] array = ObjectArrays.newArray(String.class, 2);
     assertEquals(String[].class, array.getClass());
@@ -55,7 +52,7 @@ public class ObjectArraysTest extends TestCase {
     assertNull(array[0]);
   }
 
-  @GwtIncompatible // ObjectArrays.newArray(Class, int)
+  // ObjectArrays.newArray(Class, int)
   public void testNewArray_fromClass_OfArray() {
     String[][] array = ObjectArrays.newArray(String[].class, 1);
     assertEquals(String[][].class, array.getClass());
@@ -83,28 +80,28 @@ public class ObjectArraysTest extends TestCase {
     assertNull(array[0]);
   }
 
-  @GwtIncompatible // ObjectArrays.concat(Object[], Object[], Class)
+  // ObjectArrays.concat(Object[], Object[], Class)
   public void testConcatEmptyEmpty() {
     String[] result = ObjectArrays.concat(new String[0], new String[0], String.class);
     assertEquals(String[].class, result.getClass());
     assertThat(result).isEmpty();
   }
 
-  @GwtIncompatible // ObjectArrays.concat(Object[], Object[], Class)
+  // ObjectArrays.concat(Object[], Object[], Class)
   public void testConcatEmptyNonempty() {
     String[] result = ObjectArrays.concat(new String[0], new String[] {"a", "b"}, String.class);
     assertEquals(String[].class, result.getClass());
     assertThat(result).asList().containsExactly("a", "b").inOrder();
   }
 
-  @GwtIncompatible // ObjectArrays.concat(Object[], Object[], Class)
+  // ObjectArrays.concat(Object[], Object[], Class)
   public void testConcatNonemptyEmpty() {
     String[] result = ObjectArrays.concat(new String[] {"a", "b"}, new String[0], String.class);
     assertEquals(String[].class, result.getClass());
     assertThat(result).asList().containsExactly("a", "b").inOrder();
   }
 
-  @GwtIncompatible // ObjectArrays.concat(Object[], Object[], Class)
+  // ObjectArrays.concat(Object[], Object[], Class)
   public void testConcatBasic() {
     String[] result =
         ObjectArrays.concat(new String[] {"a", "b"}, new String[] {"c", "d"}, String.class);
@@ -112,7 +109,7 @@ public class ObjectArraysTest extends TestCase {
     assertThat(result).asList().containsExactly("a", "b", "c", "d").inOrder();
   }
 
-  @GwtIncompatible // ObjectArrays.concat(Object[], Object[], Class)
+  // ObjectArrays.concat(Object[], Object[], Class)
   public void testConcatWithMoreGeneralType() {
     Serializable[] result = ObjectArrays.concat(new String[0], new String[0], Serializable.class);
     assertEquals(Serializable[].class, result.getClass());
diff --git a/guava-tests/test/com/google/common/collect/OrderingTest.java b/guava-tests/test/com/google/common/collect/OrderingTest.java
index 36b63d8..0aae0e9 100644
--- a/guava-tests/test/com/google/common/collect/OrderingTest.java
+++ b/guava-tests/test/com/google/common/collect/OrderingTest.java
@@ -23,8 +23,6 @@ import static com.google.common.testing.SerializableTester.reserializeAndAssert;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.collect.Ordering.ArbitraryOrdering;
@@ -41,14 +39,12 @@ import java.util.List;
 import java.util.Random;
 import java.util.RandomAccess;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Unit tests for {@code Ordering}.
  *
  * @author Jesse Wilson
  */
-@GwtCompatible(emulated = true)
 public class OrderingTest extends TestCase {
   // TODO(cpovirk): some of these are inexplicably slow (20-30s) under GWT
 
@@ -680,7 +676,7 @@ public class OrderingTest extends TestCase {
     assertEquals(ImmutableList.of(-1, 3, foo, bar), result);
   }
 
-  @GwtIncompatible // slow
+  // slow
   public void testLeastOf_reconcileAgainstSortAndSublist() {
     runLeastOfComparison(1000, 300, 20);
   }
@@ -853,22 +849,22 @@ public class OrderingTest extends TestCase {
     testExhaustively(Ordering.<String>natural(), "a", "b", "d");
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testCombinationsExhaustively_startingFromExplicit() {
     testExhaustively(Ordering.explicit("a", "b", "c", "d"), "a", "b", "d");
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testCombinationsExhaustively_startingFromUsingToString() {
     testExhaustively(Ordering.usingToString(), 1, 12, 2);
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testCombinationsExhaustively_startingFromFromComparator() {
     testExhaustively(Ordering.from(String.CASE_INSENSITIVE_ORDER), "A", "b", "C", "d");
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testCombinationsExhaustively_startingFromArbitrary() {
     Ordering<Object> arbitrary = Ordering.arbitrary();
     Object[] array = {1, "foo", new Object()};
@@ -1126,7 +1122,7 @@ public class OrderingTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicStaticMethods(Ordering.class);
diff --git a/guava-tests/test/com/google/common/collect/PeekingIteratorTest.java b/guava-tests/test/com/google/common/collect/PeekingIteratorTest.java
index 0f79985..21657d0 100644
--- a/guava-tests/test/com/google/common/collect/PeekingIteratorTest.java
+++ b/guava-tests/test/com/google/common/collect/PeekingIteratorTest.java
@@ -21,8 +21,6 @@ import static com.google.common.collect.testing.IteratorFeature.MODIFIABLE;
 import static com.google.common.collect.testing.IteratorFeature.UNMODIFIABLE;
 import static java.util.Collections.emptyList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.IteratorTester;
 import java.util.Collection;
 import java.util.Collections;
@@ -37,7 +35,6 @@ import junit.framework.TestCase;
  * @author Mick Killianey
  */
 @SuppressWarnings("serial") // No serialization is used in this test
-@GwtCompatible(emulated = true)
 public class PeekingIteratorTest extends TestCase {
 
   /**
@@ -97,12 +94,12 @@ public class PeekingIteratorTest extends TestCase {
   }
 
   // TODO(cpovirk): instead of skipping, use a smaller number of steps
-  @GwtIncompatible // works but takes 5 minutes to run
+  // works but takes 5 minutes to run
   public void testPeekingIteratorBehavesLikeIteratorOnThreeElementIterable() {
     actsLikeIteratorHelper(Lists.newArrayList("A", "B", "C"));
   }
 
-  @GwtIncompatible // works but takes 5 minutes to run
+  // works but takes 5 minutes to run
   public void testPeekingIteratorAcceptsNullElements() {
     actsLikeIteratorHelper(Lists.newArrayList(null, "A", null));
   }
diff --git a/guava-tests/test/com/google/common/collect/RangeTest.java b/guava-tests/test/com/google/common/collect/RangeTest.java
index 9a2cd74..f47e818 100644
--- a/guava-tests/test/com/google/common/collect/RangeTest.java
+++ b/guava-tests/test/com/google/common/collect/RangeTest.java
@@ -22,8 +22,6 @@ import static com.google.common.collect.DiscreteDomain.integers;
 import static com.google.common.testing.SerializableTester.reserializeAndAssert;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Predicate;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.EqualsTester;
@@ -38,7 +36,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class RangeTest extends TestCase {
   public void testOpen() {
     Range<Integer> range = Range.open(4, 8);
@@ -599,7 +596,7 @@ public class RangeTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // TODO(b/148207871): Restore once Eclipse compiler no longer flakes for this.
+  // TODO(b/148207871): Restore once Eclipse compiler no longer flakes for this.
   public void testLegacyComparable() {
     Range<LegacyComparable> range = Range.closed(LegacyComparable.X, LegacyComparable.Y);
   }
diff --git a/guava-tests/test/com/google/common/collect/RegularImmutableAsListTest.java b/guava-tests/test/com/google/common/collect/RegularImmutableAsListTest.java
index b6c2358..5027694 100644
--- a/guava-tests/test/com/google/common/collect/RegularImmutableAsListTest.java
+++ b/guava-tests/test/com/google/common/collect/RegularImmutableAsListTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -22,7 +21,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class RegularImmutableAsListTest extends TestCase {
   /**
    * RegularImmutableAsList should assume its input is null-free without checking, because it only
diff --git a/guava-tests/test/com/google/common/collect/RegularImmutableTableTest.java b/guava-tests/test/com/google/common/collect/RegularImmutableTableTest.java
index 82d7b39..4dd5f15 100644
--- a/guava-tests/test/com/google/common/collect/RegularImmutableTableTest.java
+++ b/guava-tests/test/com/google/common/collect/RegularImmutableTableTest.java
@@ -18,11 +18,9 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Table.Cell;
 
 /** @author Gregory Kick */
-@GwtCompatible
 public class RegularImmutableTableTest extends AbstractImmutableTableTest {
   private static final ImmutableSet<Cell<Character, Integer, String>> CELLS =
       ImmutableSet.of(
diff --git a/guava-tests/test/com/google/common/collect/SetOperationsTest.java b/guava-tests/test/com/google/common/collect/SetOperationsTest.java
index 7a1ec3a..0ab4b68 100644
--- a/guava-tests/test/com/google/common/collect/SetOperationsTest.java
+++ b/guava-tests/test/com/google/common/collect/SetOperationsTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.SetTestSuiteBuilder;
 import com.google.common.collect.testing.TestStringSetGenerator;
 import com.google.common.collect.testing.features.CollectionFeature;
@@ -36,9 +34,8 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class SetOperationsTest extends TestCase {
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
 
diff --git a/guava-tests/test/com/google/common/collect/SetsTest.java b/guava-tests/test/com/google/common/collect/SetsTest.java
index 86cb6c8..015d0ef 100644
--- a/guava-tests/test/com/google/common/collect/SetsTest.java
+++ b/guava-tests/test/com/google/common/collect/SetsTest.java
@@ -30,8 +30,6 @@ import static java.io.ObjectStreamConstants.baseWireHandle;
 import static java.util.Collections.emptySet;
 import static java.util.Collections.singleton;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Predicate;
 import com.google.common.collect.testing.AnEnum;
 import com.google.common.collect.testing.IteratorTester;
@@ -77,7 +75,6 @@ import java.util.stream.Stream;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Unit test for {@code Sets}.
@@ -85,7 +82,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class SetsTest extends TestCase {
 
   private static final IteratorTester.KnownOrder KNOWN_ORDER =
@@ -107,7 +103,7 @@ public class SetsTest extends TestCase {
 
   private static final Comparator<Integer> SOME_COMPARATOR = Collections.reverseOrder();
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(SetsTest.class);
@@ -219,7 +215,7 @@ public class SetsTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilter() {
     return SetTestSuiteBuilder.using(
             new TestStringSetGenerator() {
@@ -242,7 +238,7 @@ public class SetsTest extends TestCase {
         .createTestSuite();
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterNoNulls() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -293,7 +289,7 @@ public class SetsTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // suite
+  // suite
   private static Test testsForFilterFiltered() {
     return SetTestSuiteBuilder.using(
             new TestStringSetGenerator() {
@@ -353,7 +349,7 @@ public class SetsTest extends TestCase {
     assertThat(units).isEmpty();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testImmutableEnumSet_serialized() {
     Set<SomeEnum> units = Sets.immutableEnumSet(SomeEnum.D, SomeEnum.B);
 
@@ -374,7 +370,7 @@ public class SetsTest extends TestCase {
     assertThat(two).containsExactly(SomeEnum.B, SomeEnum.D).inOrder();
   }
 
-  @GwtIncompatible // java serialization not supported in GWT.
+  // java serialization not supported in GWT.
   public void testImmutableEnumSet_deserializationMakesDefensiveCopy() throws Exception {
     ImmutableSet<SomeEnum> original = Sets.immutableEnumSet(SomeEnum.A, SomeEnum.B);
     int handleOffset = 6;
@@ -389,7 +385,7 @@ public class SetsTest extends TestCase {
     assertTrue(deserialized.contains(SomeEnum.A));
   }
 
-  @GwtIncompatible // java serialization not supported in GWT.
+  // java serialization not supported in GWT.
   private static byte[] serializeWithBackReference(Object original, int handleOffset)
       throws IOException {
     ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -411,7 +407,7 @@ public class SetsTest extends TestCase {
     return out;
   }
 
-  @GwtIncompatible // java.nio.ByteBuffer
+  // java.nio.ByteBuffer
   private static byte[] toByteArray(int h) {
     return ByteBuffer.allocate(4).putInt(h).array();
   }
@@ -577,13 +573,13 @@ public class SetsTest extends TestCase {
     assertEquals(2, set.size());
   }
 
-  @GwtIncompatible // CopyOnWriteArraySet
+  // CopyOnWriteArraySet
   public void testNewCOWASEmpty() {
     CopyOnWriteArraySet<Integer> set = Sets.newCopyOnWriteArraySet();
     verifySetContents(set, EMPTY_COLLECTION);
   }
 
-  @GwtIncompatible // CopyOnWriteArraySet
+  // CopyOnWriteArraySet
   public void testNewCOWASFromIterable() {
     CopyOnWriteArraySet<Integer> set = Sets.newCopyOnWriteArraySet(SOME_ITERABLE);
     verifySetContents(set, SOME_COLLECTION);
@@ -640,7 +636,7 @@ public class SetsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointerExceptions() {
     new NullPointerTester()
         .setDefault(Enum.class, SomeEnum.A)
@@ -654,7 +650,7 @@ public class SetsTest extends TestCase {
     verifySetContents(set, SOME_COLLECTION);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testNewSetFromMapSerialization() {
     Set<Integer> set = Sets.newSetFromMap(new LinkedHashMap<Integer, Boolean>());
     set.addAll(SOME_COLLECTION);
@@ -870,7 +866,7 @@ public class SetsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // too slow for GWT
+  // too slow for GWT
   public void testPowerSetIteration_iteratorTester() {
     ImmutableSet<Integer> elements = ImmutableSet.of(1, 2);
 
@@ -1151,7 +1147,7 @@ public class SetsTest extends TestCase {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public void testUnmodifiableNavigableSet() {
     TreeSet<Integer> mod = Sets.newTreeSet();
     mod.add(1);
@@ -1218,7 +1214,7 @@ public class SetsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   void ensureNotDirectlyModifiable(NavigableSet<Integer> unmod) {
     try {
       unmod.add(4);
@@ -1261,7 +1257,7 @@ public class SetsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public void testSubSet_boundedRange() {
     ImmutableSortedSet<Integer> set = ImmutableSortedSet.of(2, 4, 6, 8, 10);
     ImmutableSortedSet<Integer> empty = ImmutableSortedSet.of();
@@ -1291,7 +1287,7 @@ public class SetsTest extends TestCase {
     assertEquals(empty, Sets.subSet(set, Range.closedOpen(20, 30)));
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public void testSubSet_halfBoundedRange() {
     ImmutableSortedSet<Integer> set = ImmutableSortedSet.of(2, 4, 6, 8, 10);
     ImmutableSortedSet<Integer> empty = ImmutableSortedSet.of();
@@ -1317,14 +1313,14 @@ public class SetsTest extends TestCase {
     assertEquals(set, Sets.subSet(set, Range.atMost(20)));
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public void testSubSet_unboundedRange() {
     ImmutableSortedSet<Integer> set = ImmutableSortedSet.of(2, 4, 6, 8, 10);
 
     assertEquals(set, Sets.subSet(set, Range.<Integer>all()));
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public void testSubSet_unnaturalOrdering() {
     ImmutableSortedSet<Integer> set =
         ImmutableSortedSet.<Integer>reverseOrder().add(2, 4, 6, 8, 10).build();
diff --git a/guava-tests/test/com/google/common/collect/SimpleAbstractMultisetTest.java b/guava-tests/test/com/google/common/collect/SimpleAbstractMultisetTest.java
index 04f4fe6..44303c4 100644
--- a/guava-tests/test/com/google/common/collect/SimpleAbstractMultisetTest.java
+++ b/guava-tests/test/com/google/common/collect/SimpleAbstractMultisetTest.java
@@ -16,8 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
@@ -31,7 +29,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Unit test for {@link AbstractMultiset}.
@@ -40,9 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  */
 @SuppressWarnings("serial") // No serialization is used in this test
-@GwtCompatible(emulated = true)
 public class SimpleAbstractMultisetTest extends TestCase {
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(SimpleAbstractMultisetTest.class);
diff --git a/guava-tests/test/com/google/common/collect/SingletonImmutableTableTest.java b/guava-tests/test/com/google/common/collect/SingletonImmutableTableTest.java
index 16c5ecb..7c432e6 100644
--- a/guava-tests/test/com/google/common/collect/SingletonImmutableTableTest.java
+++ b/guava-tests/test/com/google/common/collect/SingletonImmutableTableTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.testing.EqualsTester;
 
@@ -28,7 +26,6 @@ import com.google.common.testing.EqualsTester;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 public class SingletonImmutableTableTest extends AbstractImmutableTableTest {
   private final ImmutableTable<Character, Integer, String> testTable =
       new SingletonImmutableTable<>('a', 1, "blah");
@@ -75,7 +72,7 @@ public class SingletonImmutableTableTest extends AbstractImmutableTableTest {
         .testEquals();
   }
 
-  @GwtIncompatible // ArrayTable
+  // ArrayTable
   public void testEqualsObjectNullValues() {
     new EqualsTester()
         .addEqualityGroup(testTable)
diff --git a/guava-tests/test/com/google/common/collect/SortedIterablesTest.java b/guava-tests/test/com/google/common/collect/SortedIterablesTest.java
index 543199d..0ff5213 100644
--- a/guava-tests/test/com/google/common/collect/SortedIterablesTest.java
+++ b/guava-tests/test/com/google/common/collect/SortedIterablesTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.SortedSet;
 import junit.framework.TestCase;
 
@@ -23,7 +22,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class SortedIterablesTest extends TestCase {
   public void testSameComparator() {
     assertTrue(SortedIterables.hasSameComparator(Ordering.natural(), Sets.newTreeSet()));
diff --git a/guava-tests/test/com/google/common/collect/SortedListsTest.java b/guava-tests/test/com/google/common/collect/SortedListsTest.java
index a6cddcb..066b02a 100644
--- a/guava-tests/test/com/google/common/collect/SortedListsTest.java
+++ b/guava-tests/test/com/google/common/collect/SortedListsTest.java
@@ -14,8 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.SortedLists.KeyAbsentBehavior;
 import com.google.common.collect.SortedLists.KeyPresentBehavior;
 import com.google.common.testing.NullPointerTester;
@@ -27,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class SortedListsTest extends TestCase {
   private static final ImmutableList<Integer> LIST_WITH_DUPS =
       ImmutableList.of(1, 1, 2, 4, 4, 4, 8);
@@ -124,7 +121,7 @@ public class SortedListsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(SortedLists.class);
   }
diff --git a/guava-tests/test/com/google/common/collect/StreamsTest.java b/guava-tests/test/com/google/common/collect/StreamsTest.java
index 9d3dab6..d363a1a 100644
--- a/guava-tests/test/com/google/common/collect/StreamsTest.java
+++ b/guava-tests/test/com/google/common/collect/StreamsTest.java
@@ -16,8 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.collect.Streams.stream;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.SpliteratorTester;
 import com.google.common.primitives.Doubles;
 import com.google.common.truth.IterableSubject;
@@ -39,7 +37,6 @@ import java.util.stream.Stream;
 import junit.framework.TestCase;
 
 /** Unit test for {@link Streams}. */
-@GwtCompatible(emulated = true)
 public class StreamsTest extends TestCase {
   /*
    * Full and proper black-box testing of a Stream-returning method is extremely involved, and is
@@ -294,7 +291,7 @@ public class StreamsTest extends TestCase {
     Truth.assertThat(longStreamCloseCount.get()).isEqualTo(1);
   }
 
-  @GwtIncompatible // TODO(b/38490623): reenable after GWT double-to-string conversion is fixed
+  // TODO(b/38490623): reenable after GWT double-to-string conversion is fixed
   public void testMapWithIndex_doubleStream() {
     SpliteratorTester.of(
             () ->
diff --git a/guava-tests/test/com/google/common/collect/SubMapMultimapAsMapImplementsMapTest.java b/guava-tests/test/com/google/common/collect/SubMapMultimapAsMapImplementsMapTest.java
index 1cb7abc..25f9114 100644
--- a/guava-tests/test/com/google/common/collect/SubMapMultimapAsMapImplementsMapTest.java
+++ b/guava-tests/test/com/google/common/collect/SubMapMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Collections;
@@ -27,7 +26,6 @@ import java.util.Map;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class SubMapMultimapAsMapImplementsMapTest extends AbstractMultimapAsMapImplementsMapTest {
 
   public SubMapMultimapAsMapImplementsMapTest() {
diff --git a/guava-tests/test/com/google/common/collect/SynchronizedMultimapTest.java b/guava-tests/test/com/google/common/collect/SynchronizedMultimapTest.java
index 6475dad..1a07357 100644
--- a/guava-tests/test/com/google/common/collect/SynchronizedMultimapTest.java
+++ b/guava-tests/test/com/google/common/collect/SynchronizedMultimapTest.java
@@ -33,7 +33,6 @@ import java.util.Set;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tests for {@code Synchronized#multimap}.
diff --git a/guava-tests/test/com/google/common/collect/SynchronizedSetTest.java b/guava-tests/test/com/google/common/collect/SynchronizedSetTest.java
index 313a94f..b8bf37e 100644
--- a/guava-tests/test/com/google/common/collect/SynchronizedSetTest.java
+++ b/guava-tests/test/com/google/common/collect/SynchronizedSetTest.java
@@ -27,7 +27,6 @@ import java.util.HashSet;
 import java.util.Set;
 import junit.framework.Test;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tests for {@code Synchronized#set}.
diff --git a/guava-tests/test/com/google/common/collect/SynchronizedTableTest.java b/guava-tests/test/com/google/common/collect/SynchronizedTableTest.java
index 934ad7a..c62d292 100644
--- a/guava-tests/test/com/google/common/collect/SynchronizedTableTest.java
+++ b/guava-tests/test/com/google/common/collect/SynchronizedTableTest.java
@@ -20,7 +20,6 @@ import java.io.Serializable;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 public class SynchronizedTableTest extends AbstractTableTest {
   private static final class TestTable<R, C, V> implements Table<R, C, V>, Serializable {
diff --git a/guava-tests/test/com/google/common/collect/TableCollectionTest.java b/guava-tests/test/com/google/common/collect/TableCollectionTest.java
index 7c94444..5bca5d6 100644
--- a/guava-tests/test/com/google/common/collect/TableCollectionTest.java
+++ b/guava-tests/test/com/google/common/collect/TableCollectionTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
 import com.google.common.collect.Table.Cell;
@@ -53,7 +51,6 @@ import junit.framework.TestSuite;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class TableCollectionTest extends TestCase {
 
   private static final Feature<?>[] COLLECTION_FEATURES = {
@@ -75,7 +72,7 @@ public class TableCollectionTest extends TestCase {
     CollectionFeature.ALLOWS_NULL_QUERIES
   };
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(ArrayRowTests.class);
@@ -798,7 +795,7 @@ public class TableCollectionTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO(hhchan): ArrayTable
+  // TODO(hhchan): ArrayTable
   public static class ArrayRowTests extends RowTests {
     public ArrayRowTests() {
       super(true, true, false, false, false);
@@ -957,7 +954,7 @@ public class TableCollectionTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO(hhchan): ArrayTable
+  // TODO(hhchan): ArrayTable
   public static class ArrayColumnTests extends ColumnTests {
     public ArrayColumnTests() {
       super(true, true, false, false, false);
@@ -1166,7 +1163,7 @@ public class TableCollectionTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO(hhchan): ArrayTable
+  // TODO(hhchan): ArrayTable
   public static class ArrayRowMapTests extends RowMapTests {
     public ArrayRowMapTests() {
       super(true, false, false, false);
@@ -1393,7 +1390,7 @@ public class TableCollectionTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO(hhchan): ArrayTable
+  // TODO(hhchan): ArrayTable
   public static class ArrayColumnMapTests extends ColumnMapTests {
     public ArrayColumnMapTests() {
       super(true, false, false, false);
diff --git a/guava-tests/test/com/google/common/collect/TableCollectorsTest.java b/guava-tests/test/com/google/common/collect/TableCollectorsTest.java
index 98b7074..dbad64c 100644
--- a/guava-tests/test/com/google/common/collect/TableCollectorsTest.java
+++ b/guava-tests/test/com/google/common/collect/TableCollectorsTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.collect.Tables.immutableCell;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
 import com.google.common.base.MoreObjects;
@@ -30,7 +29,6 @@ import java.util.stream.Stream;
 import junit.framework.TestCase;
 
 /** Unit tests for {@link TableCollectors}. */
-@GwtCompatible(emulated = true)
 public class TableCollectorsTest {
 
   public static final class ToImmutableTableTest extends TestCase {
diff --git a/guava-tests/test/com/google/common/collect/TablesTest.java b/guava-tests/test/com/google/common/collect/TablesTest.java
index dd56614..9b9336a 100644
--- a/guava-tests/test/com/google/common/collect/TablesTest.java
+++ b/guava-tests/test/com/google/common/collect/TablesTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Table.Cell;
 import com.google.common.testing.CollectorTester;
 import com.google.common.testing.EqualsTester;
@@ -30,7 +28,6 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class TablesTest extends TestCase {
 
   // The bulk of the toTable tests can be found in TableCollectorsTest.
@@ -61,7 +58,7 @@ public class TablesTest extends TestCase {
             expected, Tables.immutableCell("one", "uno", 1), Tables.immutableCell("one", "uno", 2));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testImmutableEntrySerialization() {
     Cell<String, Integer, Character> entry = Tables.immutableCell("foo", 1, 'a');
     SerializableTester.reserializeAndAssert(entry);
diff --git a/guava-tests/test/com/google/common/collect/TablesTransformValuesTest.java b/guava-tests/test/com/google/common/collect/TablesTransformValuesTest.java
index 6730b3f..f610665 100644
--- a/guava-tests/test/com/google/common/collect/TablesTransformValuesTest.java
+++ b/guava-tests/test/com/google/common/collect/TablesTransformValuesTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 
 /**
@@ -27,7 +25,6 @@ import com.google.common.base.Function;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class TablesTransformValuesTest extends AbstractTableTest {
 
   private static final Function<String, Character> FIRST_CHARACTER =
@@ -50,7 +47,7 @@ public class TablesTransformValuesTest extends AbstractTableTest {
   }
 
   // Null support depends on the underlying table and function.
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   @Override
   public void testNullPointerInstance() {}
 
diff --git a/guava-tests/test/com/google/common/collect/TopKSelectorTest.java b/guava-tests/test/com/google/common/collect/TopKSelectorTest.java
index 2cebdc3..2669179 100644
--- a/guava-tests/test/com/google/common/collect/TopKSelectorTest.java
+++ b/guava-tests/test/com/google/common/collect/TopKSelectorTest.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.math.IntMath;
 import com.google.common.primitives.Ints;
 import java.math.RoundingMode;
@@ -32,7 +31,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class TopKSelectorTest extends TestCase {
 
   public void testNegativeK() {
diff --git a/guava-tests/test/com/google/common/collect/TransposedTableTest.java b/guava-tests/test/com/google/common/collect/TransposedTableTest.java
index 7233cf1..50c3d52 100644
--- a/guava-tests/test/com/google/common/collect/TransposedTableTest.java
+++ b/guava-tests/test/com/google/common/collect/TransposedTableTest.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Test cases for {@link Tables#transpose}.
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class TransposedTableTest extends AbstractTableTest {
 
   @Override
diff --git a/guava-tests/test/com/google/common/collect/TreeBasedTableTest.java b/guava-tests/test/com/google/common/collect/TreeBasedTableTest.java
index 084e649..d228872 100644
--- a/guava-tests/test/com/google/common/collect/TreeBasedTableTest.java
+++ b/guava-tests/test/com/google/common/collect/TreeBasedTableTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.SortedMapInterfaceTest;
 import com.google.common.collect.testing.SortedMapTestSuiteBuilder;
 import com.google.common.collect.testing.TestStringSortedMapGenerator;
@@ -42,9 +40,8 @@ import junit.framework.TestSuite;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class TreeBasedTableTest extends AbstractTableTest {
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTestSuite(TreeBasedTableTest.class);
@@ -173,7 +170,7 @@ public class TreeBasedTableTest extends AbstractTableTest {
     assertEquals(original, table);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     table = create("foo", 1, 'a', "bar", 1, 'b', "foo", 3, 'c');
     SerializableTester.reserializeAndAssert(table);
diff --git a/guava-tests/test/com/google/common/collect/TreeMultimapExplicitTest.java b/guava-tests/test/com/google/common/collect/TreeMultimapExplicitTest.java
index 92a3d83..0d1f01e 100644
--- a/guava-tests/test/com/google/common/collect/TreeMultimapExplicitTest.java
+++ b/guava-tests/test/com/google/common/collect/TreeMultimapExplicitTest.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.SerializableTester;
 import java.util.Arrays;
 import java.util.Collection;
@@ -34,7 +32,6 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class TreeMultimapExplicitTest extends TestCase {
 
   /**
@@ -196,7 +193,7 @@ public class TreeMultimapExplicitTest extends TestCase {
     assertEquals(Sets.newHashSet("tree"), keySet.subSet("ask", "yahoo"));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testExplicitComparatorSerialization() {
     TreeMultimap<String, Integer> multimap = createPopulate();
     TreeMultimap<String, Integer> copy = SerializableTester.reserializeAndAssert(multimap);
diff --git a/guava-tests/test/com/google/common/collect/TreeMultimapNaturalTest.java b/guava-tests/test/com/google/common/collect/TreeMultimapNaturalTest.java
index addcfb7..bd70e69 100644
--- a/guava-tests/test/com/google/common/collect/TreeMultimapNaturalTest.java
+++ b/guava-tests/test/com/google/common/collect/TreeMultimapNaturalTest.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.DerivedComparable;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.collect.testing.NavigableMapTestSuiteBuilder;
@@ -56,10 +54,9 @@ import junit.framework.TestSuite;
  *
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 public class TreeMultimapNaturalTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     // TODO(lowasser): should we force TreeMultimap to be more thorough about checking nulls?
@@ -407,7 +404,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     assertEquals(Ordering.natural(), multimap.valueComparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testExplicitComparatorSerialization() {
     TreeMultimap<String, Integer> multimap = createPopulate();
     TreeMultimap<String, Integer> copy = SerializableTester.reserializeAndAssert(multimap);
@@ -417,7 +414,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     assertEquals(multimap.valueComparator(), copy.valueComparator());
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testTreeMultimapDerived() {
     TreeMultimap<DerivedComparable, DerivedComparable> multimap = TreeMultimap.create();
     assertEquals(ImmutableMultimap.of(), multimap);
@@ -443,7 +440,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     SerializableTester.reserializeAndAssert(multimap);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testTreeMultimapNonGeneric() {
     TreeMultimap<LegacyComparable, LegacyComparable> multimap = TreeMultimap.create();
     assertEquals(ImmutableMultimap.of(), multimap);
@@ -500,7 +497,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     assertEquals(4, multimap.keys().size());
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testKeySetBridgeMethods() {
     for (Method m : TreeMultimap.class.getMethods()) {
       if (m.getName().equals("keySet") && m.getReturnType().equals(SortedSet.class)) {
@@ -510,7 +507,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     fail("No bridge method found");
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testAsMapBridgeMethods() {
     for (Method m : TreeMultimap.class.getMethods()) {
       if (m.getName().equals("asMap") && m.getReturnType().equals(SortedMap.class)) {
@@ -519,7 +516,7 @@ public class TreeMultimapNaturalTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testGetBridgeMethods() {
     for (Method m : TreeMultimap.class.getMethods()) {
       if (m.getName().equals("get") && m.getReturnType().equals(SortedSet.class)) {
diff --git a/guava-tests/test/com/google/common/collect/TreeMultisetTest.java b/guava-tests/test/com/google/common/collect/TreeMultisetTest.java
index 12da1f1..6859568 100644
--- a/guava-tests/test/com/google/common/collect/TreeMultisetTest.java
+++ b/guava-tests/test/com/google/common/collect/TreeMultisetTest.java
@@ -20,8 +20,6 @@ import static com.google.common.collect.BoundType.CLOSED;
 import static com.google.common.truth.Truth.assertThat;
 import static java.util.Collections.sort;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers.NullsBeforeB;
 import com.google.common.collect.testing.NavigableSetTestSuiteBuilder;
 import com.google.common.collect.testing.TestStringSetGenerator;
@@ -46,10 +44,9 @@ import junit.framework.TestSuite;
  *
  * @author Neal Kanodia
  */
-@GwtCompatible(emulated = true)
 public class TreeMultisetTest extends TestCase {
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     TestSuite suite = new TestSuite();
     suite.addTest(
@@ -355,7 +352,7 @@ public class TreeMultisetTest extends TestCase {
     assertEquals(Integer.MAX_VALUE, ms.tailMultiset("a", CLOSED).size());
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   @AndroidIncompatible // Reflection bug, or actual binary compatibility problem?
   public void testElementSetBridgeMethods() {
     for (Method m : TreeMultiset.class.getMethods()) {
diff --git a/guava-tests/test/com/google/common/collect/TreeRangeMapTest.java b/guava-tests/test/com/google/common/collect/TreeRangeMapTest.java
index 9e57bba..fdc48e2 100644
--- a/guava-tests/test/com/google/common/collect/TreeRangeMapTest.java
+++ b/guava-tests/test/com/google/common/collect/TreeRangeMapTest.java
@@ -17,7 +17,6 @@ package com.google.common.collect;
 import static com.google.common.collect.BoundType.OPEN;
 import static com.google.common.collect.testing.Helpers.mapEntry;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.MapTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestMapGenerator;
@@ -38,7 +37,7 @@ import junit.framework.TestSuite;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // NavigableMap
+// NavigableMap
 public class TreeRangeMapTest extends TestCase {
   public static Test suite() {
     TestSuite suite = new TestSuite();
diff --git a/guava-tests/test/com/google/common/collect/TreeRangeSetTest.java b/guava-tests/test/com/google/common/collect/TreeRangeSetTest.java
index b33ab2d..d77aa57 100644
--- a/guava-tests/test/com/google/common/collect/TreeRangeSetTest.java
+++ b/guava-tests/test/com/google/common/collect/TreeRangeSetTest.java
@@ -18,7 +18,6 @@ import static com.google.common.collect.BoundType.OPEN;
 import static com.google.common.collect.Range.range;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.SerializableTester;
 import java.util.Arrays;
 import java.util.List;
@@ -30,7 +29,7 @@ import java.util.NavigableMap;
  * @author Louis Wasserman
  * @author Chris Povirk
  */
-@GwtIncompatible // TreeRangeSet
+// TreeRangeSet
 public class TreeRangeSetTest extends AbstractRangeSetTest {
   // TODO(cpovirk): test all of these with the ranges added in the reverse order
 
@@ -680,7 +679,7 @@ public class TreeRangeSetTest extends AbstractRangeSetTest {
         .inOrder();
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     RangeSet<Integer> rangeSet = TreeRangeSet.create();
     rangeSet.add(Range.closed(3, 10));
diff --git a/guava-tests/test/com/google/common/collect/TreeTraverserTest.java b/guava-tests/test/com/google/common/collect/TreeTraverserTest.java
index 690838c..df786ce 100644
--- a/guava-tests/test/com/google/common/collect/TreeTraverserTest.java
+++ b/guava-tests/test/com/google/common/collect/TreeTraverserTest.java
@@ -16,8 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.testing.NullPointerTester;
 import java.util.Arrays;
@@ -29,7 +27,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class TreeTraverserTest extends TestCase {
   private static class Node {
     final char value;
@@ -110,7 +107,7 @@ public class TreeTraverserTest extends TestCase {
     assertThat(iterationOrder(ADAPTER_USING_USING.preOrderTraversal(h))).isEqualTo("hdabcegf");
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(ADAPTER);
diff --git a/guava-tests/test/com/google/common/collect/UnmodifiableIteratorTest.java b/guava-tests/test/com/google/common/collect/UnmodifiableIteratorTest.java
index 77ecbf7..d27ffad 100644
--- a/guava-tests/test/com/google/common/collect/UnmodifiableIteratorTest.java
+++ b/guava-tests/test/com/google/common/collect/UnmodifiableIteratorTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import junit.framework.TestCase;
@@ -26,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class UnmodifiableIteratorTest extends TestCase {
 
   public void testRemove() {
diff --git a/guava-tests/test/com/google/common/collect/UnmodifiableListIteratorTest.java b/guava-tests/test/com/google/common/collect/UnmodifiableListIteratorTest.java
index c9d3068..7a3c701 100644
--- a/guava-tests/test/com/google/common/collect/UnmodifiableListIteratorTest.java
+++ b/guava-tests/test/com/google/common/collect/UnmodifiableListIteratorTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 import java.util.ListIterator;
 import java.util.NoSuchElementException;
@@ -27,7 +26,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class UnmodifiableListIteratorTest extends TestCase {
   public void testRemove() {
     Iterator<String> iterator = create();
diff --git a/guava-tests/test/com/google/common/collect/UnmodifiableMultimapAsMapImplementsMapTest.java b/guava-tests/test/com/google/common/collect/UnmodifiableMultimapAsMapImplementsMapTest.java
index d03d7e3..d2a67f5 100644
--- a/guava-tests/test/com/google/common/collect/UnmodifiableMultimapAsMapImplementsMapTest.java
+++ b/guava-tests/test/com/google/common/collect/UnmodifiableMultimapAsMapImplementsMapTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.testing.MapInterfaceTest;
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +25,6 @@ import java.util.Map;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 public class UnmodifiableMultimapAsMapImplementsMapTest
     extends AbstractMultimapAsMapImplementsMapTest {
 
diff --git a/guava-tests/test/com/google/common/escape/ArrayBasedCharEscaperTest.java b/guava-tests/test/com/google/common/escape/ArrayBasedCharEscaperTest.java
index f0983ef..3b6d138 100644
--- a/guava-tests/test/com/google/common/escape/ArrayBasedCharEscaperTest.java
+++ b/guava-tests/test/com/google/common/escape/ArrayBasedCharEscaperTest.java
@@ -16,14 +16,11 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.escape.testing.EscaperAsserts;
 import java.io.IOException;
 import junit.framework.TestCase;
 
 /** @author David Beaumont */
-@GwtCompatible
 public class ArrayBasedCharEscaperTest extends TestCase {
   private static final ImmutableMap<Character, String> NO_REPLACEMENTS = ImmutableMap.of();
   private static final ImmutableMap<Character, String> SIMPLE_REPLACEMENTS =
diff --git a/guava-tests/test/com/google/common/escape/ArrayBasedEscaperMapTest.java b/guava-tests/test/com/google/common/escape/ArrayBasedEscaperMapTest.java
index 6d9c1d8..10c7363 100644
--- a/guava-tests/test/com/google/common/escape/ArrayBasedEscaperMapTest.java
+++ b/guava-tests/test/com/google/common/escape/ArrayBasedEscaperMapTest.java
@@ -16,13 +16,10 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import java.util.Map;
 import junit.framework.TestCase;
 
 /** @author David Beaumont */
-@GwtCompatible
 public class ArrayBasedEscaperMapTest extends TestCase {
   public void testNullMap() {
     try {
diff --git a/guava-tests/test/com/google/common/escape/ArrayBasedUnicodeEscaperTest.java b/guava-tests/test/com/google/common/escape/ArrayBasedUnicodeEscaperTest.java
index 3243240..405cf9d 100644
--- a/guava-tests/test/com/google/common/escape/ArrayBasedUnicodeEscaperTest.java
+++ b/guava-tests/test/com/google/common/escape/ArrayBasedUnicodeEscaperTest.java
@@ -16,14 +16,11 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.escape.testing.EscaperAsserts;
 import java.io.IOException;
 import junit.framework.TestCase;
 
 /** @author David Beaumont */
-@GwtCompatible
 public class ArrayBasedUnicodeEscaperTest extends TestCase {
   private static final ImmutableMap<Character, String> NO_REPLACEMENTS = ImmutableMap.of();
   private static final ImmutableMap<Character, String> SIMPLE_REPLACEMENTS =
diff --git a/guava-tests/test/com/google/common/escape/EscapersTest.java b/guava-tests/test/com/google/common/escape/EscapersTest.java
index 245560a..8737347 100644
--- a/guava-tests/test/com/google/common/escape/EscapersTest.java
+++ b/guava-tests/test/com/google/common/escape/EscapersTest.java
@@ -16,14 +16,11 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.escape.testing.EscaperAsserts;
 import java.io.IOException;
 import junit.framework.TestCase;
 
 /** @author David Beaumont */
-@GwtCompatible
 public class EscapersTest extends TestCase {
   public void testNullEscaper() throws IOException {
     Escaper escaper = Escapers.nullEscaper();
diff --git a/guava-tests/test/com/google/common/escape/UnicodeEscaperTest.java b/guava-tests/test/com/google/common/escape/UnicodeEscaperTest.java
index 96cfa10..68fab0e 100644
--- a/guava-tests/test/com/google/common/escape/UnicodeEscaperTest.java
+++ b/guava-tests/test/com/google/common/escape/UnicodeEscaperTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -24,7 +23,6 @@ import junit.framework.TestCase;
  *
  * @author David Beaumont
  */
-@GwtCompatible
 public class UnicodeEscaperTest extends TestCase {
 
   private static final String SMALLEST_SURROGATE =
diff --git a/guava-tests/test/com/google/common/eventbus/DispatcherTest.java b/guava-tests/test/com/google/common/eventbus/DispatcherTest.java
index b63a995..8154df9 100644
--- a/guava-tests/test/com/google/common/eventbus/DispatcherTest.java
+++ b/guava-tests/test/com/google/common/eventbus/DispatcherTest.java
@@ -18,7 +18,6 @@ package com.google.common.eventbus;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Queues;
 import com.google.common.util.concurrent.Uninterruptibles;
 import java.util.concurrent.ConcurrentLinkedQueue;
diff --git a/guava-tests/test/com/google/common/eventbus/EventBusTest.java b/guava-tests/test/com/google/common/eventbus/EventBusTest.java
index 249d3b0..8c933aa 100644
--- a/guava-tests/test/com/google/common/eventbus/EventBusTest.java
+++ b/guava-tests/test/com/google/common/eventbus/EventBusTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.eventbus;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
diff --git a/guava-tests/test/com/google/common/eventbus/PackageSanityTests.java b/guava-tests/test/com/google/common/eventbus/PackageSanityTests.java
index 539e136..350418d 100644
--- a/guava-tests/test/com/google/common/eventbus/PackageSanityTests.java
+++ b/guava-tests/test/com/google/common/eventbus/PackageSanityTests.java
@@ -18,7 +18,6 @@ package com.google.common.eventbus;
 
 import com.google.common.testing.AbstractPackageSanityTests;
 import java.lang.reflect.Method;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic sanity tests for the entire package.
diff --git a/guava-tests/test/com/google/common/eventbus/StringCatcher.java b/guava-tests/test/com/google/common/eventbus/StringCatcher.java
index 0fb9cec..059de11 100644
--- a/guava-tests/test/com/google/common/eventbus/StringCatcher.java
+++ b/guava-tests/test/com/google/common/eventbus/StringCatcher.java
@@ -19,7 +19,6 @@ package com.google.common.eventbus;
 import com.google.common.collect.Lists;
 import java.util.List;
 import junit.framework.Assert;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A simple EventSubscriber mock that records Strings.
diff --git a/guava-tests/test/com/google/common/eventbus/SubscriberRegistryTest.java b/guava-tests/test/com/google/common/eventbus/SubscriberRegistryTest.java
index c9e5c9a..16fd0f1 100644
--- a/guava-tests/test/com/google/common/eventbus/SubscriberRegistryTest.java
+++ b/guava-tests/test/com/google/common/eventbus/SubscriberRegistryTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.eventbus;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import java.util.Iterator;
 import junit.framework.TestCase;
diff --git a/guava-tests/test/com/google/common/graph/AbstractGraphTest.java b/guava-tests/test/com/google/common/graph/AbstractGraphTest.java
index 3a489a1..8585ad4 100644
--- a/guava-tests/test/com/google/common/graph/AbstractGraphTest.java
+++ b/guava-tests/test/com/google/common/graph/AbstractGraphTest.java
@@ -24,7 +24,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.TruthJUnit.assume;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableSet;
 import java.util.HashSet;
 import java.util.Set;
 import org.junit.After;
diff --git a/guava-tests/test/com/google/common/graph/AbstractNetworkTest.java b/guava-tests/test/com/google/common/graph/AbstractNetworkTest.java
index e5e8e7f..b046d71 100644
--- a/guava-tests/test/com/google/common/graph/AbstractNetworkTest.java
+++ b/guava-tests/test/com/google/common/graph/AbstractNetworkTest.java
@@ -28,8 +28,6 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import java.util.Set;
 import java.util.concurrent.Callable;
diff --git a/guava-tests/test/com/google/common/graph/AbstractStandardDirectedNetworkTest.java b/guava-tests/test/com/google/common/graph/AbstractStandardDirectedNetworkTest.java
index 39d82ee..b0b2110 100644
--- a/guava-tests/test/com/google/common/graph/AbstractStandardDirectedNetworkTest.java
+++ b/guava-tests/test/com/google/common/graph/AbstractStandardDirectedNetworkTest.java
@@ -23,7 +23,6 @@ import static com.google.common.truth.TruthJUnit.assume;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableSet;
 import java.util.Collections;
 import java.util.Optional;
 import java.util.Set;
diff --git a/guava-tests/test/com/google/common/graph/AbstractStandardUndirectedNetworkTest.java b/guava-tests/test/com/google/common/graph/AbstractStandardUndirectedNetworkTest.java
index 7939ad8..80d58a1 100644
--- a/guava-tests/test/com/google/common/graph/AbstractStandardUndirectedNetworkTest.java
+++ b/guava-tests/test/com/google/common/graph/AbstractStandardUndirectedNetworkTest.java
@@ -22,7 +22,6 @@ import static com.google.common.truth.TruthJUnit.assume;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
 import java.util.Set;
 import org.junit.After;
diff --git a/guava-tests/test/com/google/common/graph/AndroidIncompatible.java b/guava-tests/test/com/google/common/graph/AndroidIncompatible.java
index 239cafc..66c7bd3 100644
--- a/guava-tests/test/com/google/common/graph/AndroidIncompatible.java
+++ b/guava-tests/test/com/google/common/graph/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-tests/test/com/google/common/graph/EndpointPairTest.java b/guava-tests/test/com/google/common/graph/EndpointPairTest.java
index 099be1d..a49897d 100644
--- a/guava-tests/test/com/google/common/graph/EndpointPairTest.java
+++ b/guava-tests/test/com/google/common/graph/EndpointPairTest.java
@@ -19,8 +19,6 @@ package com.google.common.graph;
 import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
 import java.util.Collection;
 import java.util.Set;
diff --git a/guava-tests/test/com/google/common/graph/GraphPropertiesTest.java b/guava-tests/test/com/google/common/graph/GraphPropertiesTest.java
index d81edaf..f0e467d 100644
--- a/guava-tests/test/com/google/common/graph/GraphPropertiesTest.java
+++ b/guava-tests/test/com/google/common/graph/GraphPropertiesTest.java
@@ -19,7 +19,6 @@ package com.google.common.graph;
 import static com.google.common.graph.Graphs.hasCycle;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/guava-tests/test/com/google/common/graph/GraphsTest.java b/guava-tests/test/com/google/common/graph/GraphsTest.java
index 305df17..b6b94bf 100644
--- a/guava-tests/test/com/google/common/graph/GraphsTest.java
+++ b/guava-tests/test/com/google/common/graph/GraphsTest.java
@@ -24,7 +24,6 @@ import static com.google.common.graph.Graphs.transpose;
 import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableSet;
 import java.util.Set;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/guava-tests/test/com/google/common/graph/TestUtil.java b/guava-tests/test/com/google/common/graph/TestUtil.java
index 68a2503..f843a4a 100644
--- a/guava-tests/test/com/google/common/graph/TestUtil.java
+++ b/guava-tests/test/com/google/common/graph/TestUtil.java
@@ -18,9 +18,7 @@ package com.google.common.graph;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Set;
 
 /** Utility methods used in various common.graph tests. */
@@ -78,7 +76,6 @@ final class TestUtil {
    * In some cases our graph implementations return custom sets that define their own size() and
    * contains(). Verify that these sets are consistent with the elements of their iterator.
    */
-  @CanIgnoreReturnValue
   static <T> Set<T> sanityCheckSet(Set<T> set) {
     assertThat(set).hasSize(Iterators.size(set.iterator()));
     for (Object element : set) {
diff --git a/guava-tests/test/com/google/common/graph/TraverserTest.java b/guava-tests/test/com/google/common/graph/TraverserTest.java
index d4c8cf7..cd3c605 100644
--- a/guava-tests/test/com/google/common/graph/TraverserTest.java
+++ b/guava-tests/test/com/google/common/graph/TraverserTest.java
@@ -24,8 +24,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.fail;
 
 import com.google.common.collect.HashMultiset;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMultimap;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Multiset;
 import com.google.common.collect.Ordering;
diff --git a/guava-tests/test/com/google/common/graph/ValueGraphTest.java b/guava-tests/test/com/google/common/graph/ValueGraphTest.java
index 31d41aa..a9e6e4d 100644
--- a/guava-tests/test/com/google/common/graph/ValueGraphTest.java
+++ b/guava-tests/test/com/google/common/graph/ValueGraphTest.java
@@ -23,7 +23,6 @@ import static com.google.common.truth.Truth8.assertThat;
 import static java.util.concurrent.Executors.newFixedThreadPool;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.ImmutableList;
 import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.Callable;
diff --git a/guava-tests/test/com/google/common/hash/AbstractByteHasherTest.java b/guava-tests/test/com/google/common/hash/AbstractByteHasherTest.java
index e5c359a..7ceb25e 100644
--- a/guava-tests/test/com/google/common/hash/AbstractByteHasherTest.java
+++ b/guava-tests/test/com/google/common/hash/AbstractByteHasherTest.java
@@ -17,7 +17,6 @@ package com.google.common.hash;
 import static com.google.common.base.Charsets.UTF_16LE;
 import static org.junit.Assert.assertArrayEquals;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.ByteArrayOutputStream;
 import java.util.Random;
 import junit.framework.TestCase;
@@ -110,7 +109,6 @@ public class AbstractByteHasherTest extends TestCase {
     }
   }
 
-  @CanIgnoreReturnValue
   private class TestHasher extends AbstractByteHasher {
 
     private final ByteArrayOutputStream out = new ByteArrayOutputStream();
diff --git a/guava-tests/test/com/google/common/hash/AbstractNonStreamingHashFunctionTest.java b/guava-tests/test/com/google/common/hash/AbstractNonStreamingHashFunctionTest.java
index 7541471..39494a9 100644
--- a/guava-tests/test/com/google/common/hash/AbstractNonStreamingHashFunctionTest.java
+++ b/guava-tests/test/com/google/common/hash/AbstractNonStreamingHashFunctionTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.hash;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.hash.HashTestUtils.RandomHasherAction;
 import java.io.ByteArrayOutputStream;
 import java.nio.ByteBuffer;
diff --git a/guava-tests/test/com/google/common/hash/AndroidIncompatible.java b/guava-tests/test/com/google/common/hash/AndroidIncompatible.java
index f807acb..1dd77c4 100644
--- a/guava-tests/test/com/google/common/hash/AndroidIncompatible.java
+++ b/guava-tests/test/com/google/common/hash/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-tests/test/com/google/common/hash/BloomFilterTest.java b/guava-tests/test/com/google/common/hash/BloomFilterTest.java
index 411e097..713c01c 100644
--- a/guava-tests/test/com/google/common/hash/BloomFilterTest.java
+++ b/guava-tests/test/com/google/common/hash/BloomFilterTest.java
@@ -20,7 +20,6 @@ import static com.google.common.base.Charsets.UTF_8;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Stopwatch;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.hash.BloomFilterStrategies.LockFreeBitArray;
 import com.google.common.math.LongMath;
 import com.google.common.primitives.Ints;
@@ -38,7 +37,6 @@ import java.util.Random;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Stream;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tests for SimpleGenericBloomFilter and derived BloomFilter views.
diff --git a/guava-tests/test/com/google/common/hash/HashCodeTest.java b/guava-tests/test/com/google/common/hash/HashCodeTest.java
index 4cccefe..4f06337 100644
--- a/guava-tests/test/com/google/common/hash/HashCodeTest.java
+++ b/guava-tests/test/com/google/common/hash/HashCodeTest.java
@@ -19,7 +19,6 @@ package com.google.common.hash;
 import static com.google.common.io.BaseEncoding.base16;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableList;
 import com.google.common.io.BaseEncoding;
 import com.google.common.testing.ClassSanityTester;
 import java.util.Arrays;
diff --git a/guava-tests/test/com/google/common/hash/HashTestUtils.java b/guava-tests/test/com/google/common/hash/HashTestUtils.java
index 9e9944b..ab3fa25 100644
--- a/guava-tests/test/com/google/common/hash/HashTestUtils.java
+++ b/guava-tests/test/com/google/common/hash/HashTestUtils.java
@@ -20,7 +20,6 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import com.google.common.primitives.Ints;
 import com.google.common.testing.EqualsTester;
diff --git a/guava-tests/test/com/google/common/hash/HashingTest.java b/guava-tests/test/com/google/common/hash/HashingTest.java
index bc3db34..05900fa 100644
--- a/guava-tests/test/com/google/common/hash/HashingTest.java
+++ b/guava-tests/test/com/google/common/hash/HashingTest.java
@@ -19,8 +19,6 @@ package com.google.common.hash;
 import static com.google.common.base.Charsets.UTF_8;
 import static java.util.Arrays.asList;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Table.Cell;
 import com.google.common.primitives.Ints;
diff --git a/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java b/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java
index 4dbb424..4fc9aeb 100644
--- a/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java
+++ b/guava-tests/test/com/google/common/hash/MacHashFunctionTest.java
@@ -19,8 +19,6 @@ package com.google.common.hash;
 import static com.google.common.base.Charsets.UTF_8;
 import static com.google.common.io.BaseEncoding.base16;
 
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableTable;
 import com.google.common.collect.Table;
 import com.google.common.testing.NullPointerTester;
 import java.security.Key;
diff --git a/guava-tests/test/com/google/common/hash/MessageDigestHashFunctionTest.java b/guava-tests/test/com/google/common/hash/MessageDigestHashFunctionTest.java
index 535d455..8d2181b 100644
--- a/guava-tests/test/com/google/common/hash/MessageDigestHashFunctionTest.java
+++ b/guava-tests/test/com/google/common/hash/MessageDigestHashFunctionTest.java
@@ -17,8 +17,6 @@
 package com.google.common.hash;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Arrays;
diff --git a/guava-tests/test/com/google/common/hash/SipHashFunctionTest.java b/guava-tests/test/com/google/common/hash/SipHashFunctionTest.java
index ded4447..8fc7a7b 100644
--- a/guava-tests/test/com/google/common/hash/SipHashFunctionTest.java
+++ b/guava-tests/test/com/google/common/hash/SipHashFunctionTest.java
@@ -16,7 +16,6 @@ package com.google.common.hash;
 
 import static com.google.common.base.Charsets.UTF_8;
 
-import com.google.common.collect.ImmutableSet;
 import junit.framework.TestCase;
 
 /**
diff --git a/guava-tests/test/com/google/common/html/HtmlEscapersTest.java b/guava-tests/test/com/google/common/html/HtmlEscapersTest.java
index 776aa4c..9c067f0 100644
--- a/guava-tests/test/com/google/common/html/HtmlEscapersTest.java
+++ b/guava-tests/test/com/google/common/html/HtmlEscapersTest.java
@@ -16,7 +16,6 @@ package com.google.common.html;
 
 import static com.google.common.html.HtmlEscapers.htmlEscaper;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -24,7 +23,6 @@ import junit.framework.TestCase;
  *
  * @author David Beaumont
  */
-@GwtCompatible
 public class HtmlEscapersTest extends TestCase {
 
   public void testHtmlEscaper() throws Exception {
diff --git a/guava-tests/test/com/google/common/io/AndroidIncompatible.java b/guava-tests/test/com/google/common/io/AndroidIncompatible.java
index b0d80ae..d5270f9 100644
--- a/guava-tests/test/com/google/common/io/AndroidIncompatible.java
+++ b/guava-tests/test/com/google/common/io/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-tests/test/com/google/common/io/BaseEncodingTest.java b/guava-tests/test/com/google/common/io/BaseEncodingTest.java
index 06659ab..c8df602 100644
--- a/guava-tests/test/com/google/common/io/BaseEncodingTest.java
+++ b/guava-tests/test/com/google/common/io/BaseEncodingTest.java
@@ -22,12 +22,9 @@ import static com.google.common.io.BaseEncoding.base64;
 import static com.google.common.io.BaseEncoding.base64Url;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Joiner;
 import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableList;
 import com.google.common.io.BaseEncoding.DecodingException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -36,14 +33,12 @@ import java.io.Reader;
 import java.io.StringReader;
 import java.io.StringWriter;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tests for {@code BaseEncoding}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class BaseEncodingTest extends TestCase {
 
   public void testSeparatorsExplicitly() {
@@ -86,7 +81,7 @@ public class BaseEncodingTest extends TestCase {
     testEncodingWithSeparators(base64(), "foobar", "Zm9vYmFy");
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   public void testBase64Streaming() throws IOException {
     // The following test vectors are specified in RFC 4648 itself
     testStreamingEncodingWithSeparators(base64(), "", "");
@@ -149,7 +144,7 @@ public class BaseEncodingTest extends TestCase {
     testEncodingWithSeparators(enc, "foobar", "Zm9vYmFy");
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   public void testBase64StreamingAlternatePadding() throws IOException {
     BaseEncoding enc = base64().withPadChar('~');
     testStreamingEncodingWithSeparators(enc, "", "");
@@ -172,7 +167,7 @@ public class BaseEncodingTest extends TestCase {
     testEncodingWithSeparators(enc, "foobar", "Zm9vYmFy");
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   public void testBase64StreamingOmitPadding() throws IOException {
     BaseEncoding enc = base64().omitPadding();
     testStreamingEncodingWithSeparators(enc, "", "");
@@ -213,7 +208,7 @@ public class BaseEncodingTest extends TestCase {
     testEncodingWithCasing(base32(), "foobar", "MZXW6YTBOI======");
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   public void testBase32Streaming() throws IOException {
     // The following test vectors are specified in RFC 4648 itself
     testStreamingEncodingWithCasing(base32(), "", "");
@@ -284,7 +279,7 @@ public class BaseEncodingTest extends TestCase {
     testEncodingWithCasing(base32Hex(), "foobar", "CPNMUOJ1E8======");
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   public void testBase32HexStreaming() throws IOException {
     // The following test vectors are specified in RFC 4648 itself
     testStreamingEncodingWithCasing(base32Hex(), "", "");
@@ -415,7 +410,7 @@ public class BaseEncodingTest extends TestCase {
   }
 
   enum AssertFailsToDecodeStrategy {
-    @GwtIncompatible // decodingStream(Reader)
+    // decodingStream(Reader)
     DECODING_STREAM {
       @Override
       void assertFailsToDecode(
@@ -477,7 +472,7 @@ public class BaseEncodingTest extends TestCase {
         BaseEncoding encoding, String cannotDecode, @Nullable String expectedMessage);
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   private static void testStreamingEncodingWithCasing(
       BaseEncoding encoding, String decoded, String encoded) throws IOException {
     testStreamingEncodingWithSeparators(encoding, decoded, encoded);
@@ -485,7 +480,7 @@ public class BaseEncodingTest extends TestCase {
     testStreamingEncodingWithSeparators(encoding.lowerCase(), decoded, Ascii.toLowerCase(encoded));
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   private static void testStreamingEncodingWithSeparators(
       BaseEncoding encoding, String decoded, String encoded) throws IOException {
     testStreamingEncoding(encoding, decoded, encoded);
@@ -501,14 +496,14 @@ public class BaseEncodingTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Reader/Writer
+  // Reader/Writer
   private static void testStreamingEncoding(BaseEncoding encoding, String decoded, String encoded)
       throws IOException {
     testStreamingEncodes(encoding, decoded, encoded);
     testStreamingDecodes(encoding, encoded, decoded);
   }
 
-  @GwtIncompatible // Writer
+  // Writer
   private static void testStreamingEncodes(BaseEncoding encoding, String decoded, String encoded)
       throws IOException {
     StringWriter writer = new StringWriter();
@@ -518,7 +513,7 @@ public class BaseEncodingTest extends TestCase {
     assertThat(writer.toString()).isEqualTo(encoded);
   }
 
-  @GwtIncompatible // Reader
+  // Reader
   private static void testStreamingDecodes(BaseEncoding encoding, String encoded, String decoded)
       throws IOException {
     byte[] bytes = decoded.getBytes(UTF_8);
diff --git a/guava-tests/test/com/google/common/io/ByteSinkTester.java b/guava-tests/test/com/google/common/io/ByteSinkTester.java
index a8ed36f..0c7b8c6 100644
--- a/guava-tests/test/com/google/common/io/ByteSinkTester.java
+++ b/guava-tests/test/com/google/common/io/ByteSinkTester.java
@@ -21,7 +21,6 @@ import static com.google.common.io.SourceSinkFactory.CharSinkFactory;
 import static org.junit.Assert.assertArrayEquals;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableList;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/guava-tests/test/com/google/common/io/ByteSourceTest.java b/guava-tests/test/com/google/common/io/ByteSourceTest.java
index 3cf6cca..db80966 100644
--- a/guava-tests/test/com/google/common/io/ByteSourceTest.java
+++ b/guava-tests/test/com/google/common/io/ByteSourceTest.java
@@ -26,8 +26,6 @@ import static com.google.common.io.TestOption.WRITE_THROWS;
 import static org.junit.Assert.assertArrayEquals;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.hash.Hashing;
 import com.google.common.io.Closer.LoggingSuppressor;
diff --git a/guava-tests/test/com/google/common/io/ByteSourceTester.java b/guava-tests/test/com/google/common/io/ByteSourceTester.java
index 7585412..207419b 100644
--- a/guava-tests/test/com/google/common/io/ByteSourceTester.java
+++ b/guava-tests/test/com/google/common/io/ByteSourceTester.java
@@ -22,7 +22,6 @@ import static org.junit.Assert.assertArrayEquals;
 
 import com.google.common.base.Charsets;
 import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
 import com.google.common.hash.HashCode;
 import com.google.common.hash.Hashing;
 import java.io.ByteArrayInputStream;
diff --git a/guava-tests/test/com/google/common/io/CharSinkTest.java b/guava-tests/test/com/google/common/io/CharSinkTest.java
index e51b43c..42f6e6f 100644
--- a/guava-tests/test/com/google/common/io/CharSinkTest.java
+++ b/guava-tests/test/com/google/common/io/CharSinkTest.java
@@ -21,7 +21,6 @@ import static com.google.common.io.TestOption.OPEN_THROWS;
 import static com.google.common.io.TestOption.READ_THROWS;
 import static com.google.common.io.TestOption.WRITE_THROWS;
 
-import com.google.common.collect.ImmutableList;
 import java.io.IOException;
 import java.io.StringReader;
 import java.io.Writer;
diff --git a/guava-tests/test/com/google/common/io/CharSinkTester.java b/guava-tests/test/com/google/common/io/CharSinkTester.java
index d3e7a90..62b6b3e 100644
--- a/guava-tests/test/com/google/common/io/CharSinkTester.java
+++ b/guava-tests/test/com/google/common/io/CharSinkTester.java
@@ -17,7 +17,6 @@
 package com.google.common.io;
 
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
 import com.google.common.io.SourceSinkFactory.CharSinkFactory;
 import java.io.IOException;
 import java.io.Writer;
diff --git a/guava-tests/test/com/google/common/io/CharSourceTest.java b/guava-tests/test/com/google/common/io/CharSourceTest.java
index 787d744..22df27c 100644
--- a/guava-tests/test/com/google/common/io/CharSourceTest.java
+++ b/guava-tests/test/com/google/common/io/CharSourceTest.java
@@ -16,14 +16,11 @@
 
 package com.google.common.io;
 
-import static com.google.common.collect.ImmutableList.toImmutableList;
 import static com.google.common.io.TestOption.CLOSE_THROWS;
 import static com.google.common.io.TestOption.OPEN_THROWS;
 import static com.google.common.io.TestOption.READ_THROWS;
 import static com.google.common.io.TestOption.WRITE_THROWS;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.io.Closer.LoggingSuppressor;
diff --git a/guava-tests/test/com/google/common/io/CharSourceTester.java b/guava-tests/test/com/google/common/io/CharSourceTester.java
index 2a10de0..6e89385 100644
--- a/guava-tests/test/com/google/common/io/CharSourceTester.java
+++ b/guava-tests/test/com/google/common/io/CharSourceTester.java
@@ -16,11 +16,9 @@
 
 package com.google.common.io;
 
-import static com.google.common.collect.ImmutableList.toImmutableList;
 
 import com.google.common.base.Charsets;
 import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.io.SourceSinkFactory.ByteSourceFactory;
 import com.google.common.io.SourceSinkFactory.CharSourceFactory;
diff --git a/guava-tests/test/com/google/common/io/CharStreamsTest.java b/guava-tests/test/com/google/common/io/CharStreamsTest.java
index 9b2c24e..44979c5 100644
--- a/guava-tests/test/com/google/common/io/CharStreamsTest.java
+++ b/guava-tests/test/com/google/common/io/CharStreamsTest.java
@@ -17,7 +17,6 @@
 package com.google.common.io;
 
 import com.google.common.base.Strings;
-import com.google.common.collect.ImmutableList;
 import java.io.EOFException;
 import java.io.FilterReader;
 import java.io.IOException;
diff --git a/guava-tests/test/com/google/common/io/CloserTest.java b/guava-tests/test/com/google/common/io/CloserTest.java
index 3876174..75da875 100644
--- a/guava-tests/test/com/google/common/io/CloserTest.java
+++ b/guava-tests/test/com/google/common/io/CloserTest.java
@@ -21,8 +21,6 @@ import static com.google.common.truth.Truth.assertThat;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.io.Closer.LoggingSuppressor;
 import com.google.common.testing.TestLogHandler;
@@ -32,7 +30,6 @@ import java.lang.reflect.Method;
 import java.util.List;
 import java.util.logging.LogRecord;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tests for {@link Closer}.
diff --git a/guava-tests/test/com/google/common/io/FilesFileTraverserTest.java b/guava-tests/test/com/google/common/io/FilesFileTraverserTest.java
index c132406..39cf41c 100644
--- a/guava-tests/test/com/google/common/io/FilesFileTraverserTest.java
+++ b/guava-tests/test/com/google/common/io/FilesFileTraverserTest.java
@@ -19,7 +19,6 @@ package com.google.common.io;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.collect.Iterables;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.FileVisitResult;
@@ -126,14 +125,12 @@ public class FilesFileTraverserTest extends TestCase {
         .containsExactly(rootDir, fileA, fileB, dir1, dir2);
   }
 
-  @CanIgnoreReturnValue
   private File newDir(String name) {
     File file = new File(rootDir, name);
     file.mkdir();
     return file;
   }
 
-  @CanIgnoreReturnValue
   private File newFile(String name) throws IOException {
     File file = new File(rootDir, name);
     file.createNewFile();
diff --git a/guava-tests/test/com/google/common/io/FilesTest.java b/guava-tests/test/com/google/common/io/FilesTest.java
index 8446da1..c269f0e 100644
--- a/guava-tests/test/com/google/common/io/FilesTest.java
+++ b/guava-tests/test/com/google/common/io/FilesTest.java
@@ -19,7 +19,6 @@ package com.google.common.io;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableList;
 import com.google.common.hash.Hashing;
 import com.google.common.primitives.Bytes;
 import java.io.BufferedReader;
diff --git a/guava-tests/test/com/google/common/io/IoTestCase.java b/guava-tests/test/com/google/common/io/IoTestCase.java
index fa89619..89dc072 100644
--- a/guava-tests/test/com/google/common/io/IoTestCase.java
+++ b/guava-tests/test/com/google/common/io/IoTestCase.java
@@ -17,7 +17,6 @@
 package com.google.common.io;
 
 import com.google.common.collect.Sets;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -170,7 +169,6 @@ public abstract class IoTestCase extends TestCase {
     }
   }
 
-  @CanIgnoreReturnValue
   private boolean delete(File file) {
     if (file.isDirectory()) {
       File[] files = file.listFiles();
diff --git a/guava-tests/test/com/google/common/io/MoreFilesFileTraverserTest.java b/guava-tests/test/com/google/common/io/MoreFilesFileTraverserTest.java
index 8b26b49..25031f8 100644
--- a/guava-tests/test/com/google/common/io/MoreFilesFileTraverserTest.java
+++ b/guava-tests/test/com/google/common/io/MoreFilesFileTraverserTest.java
@@ -21,7 +21,6 @@ import static com.google.common.truth.Truth.assertThat;
 import com.google.common.collect.Iterables;
 import com.google.common.jimfs.Configuration;
 import com.google.common.jimfs.Jimfs;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -107,14 +106,12 @@ public class MoreFilesFileTraverserTest extends TestCase {
         .containsExactly(rootDir, fileA, fileB, dir1, dir2);
   }
 
-  @CanIgnoreReturnValue
   private Path newDir(String name) throws IOException {
     Path dir = rootDir.resolve(name);
     Files.createDirectory(dir);
     return dir;
   }
 
-  @CanIgnoreReturnValue
   private Path newFile(String name) throws IOException {
     Path file = rootDir.resolve(name);
     MoreFiles.touch(file);
diff --git a/guava-tests/test/com/google/common/io/MultiReaderTest.java b/guava-tests/test/com/google/common/io/MultiReaderTest.java
index 20b4042..8c550ec 100644
--- a/guava-tests/test/com/google/common/io/MultiReaderTest.java
+++ b/guava-tests/test/com/google/common/io/MultiReaderTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.io;
 
-import com.google.common.collect.ImmutableList;
 import java.io.FilterReader;
 import java.io.IOException;
 import java.io.Reader;
diff --git a/guava-tests/test/com/google/common/io/ResourcesTest.java b/guava-tests/test/com/google/common/io/ResourcesTest.java
index af2abbb..bb7df92 100644
--- a/guava-tests/test/com/google/common/io/ResourcesTest.java
+++ b/guava-tests/test/com/google/common/io/ResourcesTest.java
@@ -20,7 +20,6 @@ import static com.google.common.base.CharMatcher.whitespace;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.NullPointerTester;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
diff --git a/guava-tests/test/com/google/common/io/SourceSinkFactories.java b/guava-tests/test/com/google/common/io/SourceSinkFactories.java
index d24622d..1c599c4 100644
--- a/guava-tests/test/com/google/common/io/SourceSinkFactories.java
+++ b/guava-tests/test/com/google/common/io/SourceSinkFactories.java
@@ -40,7 +40,6 @@ import java.nio.file.StandardOpenOption;
 import java.util.Arrays;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * {@link SourceSinkFactory} implementations.
diff --git a/guava-tests/test/com/google/common/io/SourceSinkTester.java b/guava-tests/test/com/google/common/io/SourceSinkTester.java
index 9b07355..ec2fe74 100644
--- a/guava-tests/test/com/google/common/io/SourceSinkTester.java
+++ b/guava-tests/test/com/google/common/io/SourceSinkTester.java
@@ -18,8 +18,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import java.io.IOException;
 import java.io.Reader;
diff --git a/guava-tests/test/com/google/common/io/TestByteSink.java b/guava-tests/test/com/google/common/io/TestByteSink.java
index b7eeef0..d6c025a 100644
--- a/guava-tests/test/com/google/common/io/TestByteSink.java
+++ b/guava-tests/test/com/google/common/io/TestByteSink.java
@@ -16,7 +16,6 @@
 
 package com.google.common.io;
 
-import com.google.common.collect.ImmutableSet;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/guava-tests/test/com/google/common/io/TestByteSource.java b/guava-tests/test/com/google/common/io/TestByteSource.java
index 54ee982..0ac483c 100644
--- a/guava-tests/test/com/google/common/io/TestByteSource.java
+++ b/guava-tests/test/com/google/common/io/TestByteSource.java
@@ -18,7 +18,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.collect.ImmutableSet;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/guava-tests/test/com/google/common/io/TestInputStream.java b/guava-tests/test/com/google/common/io/TestInputStream.java
index c885cf7..09fbdf3 100644
--- a/guava-tests/test/com/google/common/io/TestInputStream.java
+++ b/guava-tests/test/com/google/common/io/TestInputStream.java
@@ -22,7 +22,6 @@ import static com.google.common.io.TestOption.OPEN_THROWS;
 import static com.google.common.io.TestOption.READ_THROWS;
 import static com.google.common.io.TestOption.SKIP_THROWS;
 
-import com.google.common.collect.ImmutableSet;
 import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/guava-tests/test/com/google/common/io/TestOutputStream.java b/guava-tests/test/com/google/common/io/TestOutputStream.java
index 1a40b83..3a923f7 100644
--- a/guava-tests/test/com/google/common/io/TestOutputStream.java
+++ b/guava-tests/test/com/google/common/io/TestOutputStream.java
@@ -21,7 +21,6 @@ import static com.google.common.io.TestOption.CLOSE_THROWS;
 import static com.google.common.io.TestOption.OPEN_THROWS;
 import static com.google.common.io.TestOption.WRITE_THROWS;
 
-import com.google.common.collect.ImmutableSet;
 import java.io.FilterOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/guava-tests/test/com/google/common/math/AndroidIncompatible.java b/guava-tests/test/com/google/common/math/AndroidIncompatible.java
index b9d81c0..6d65888 100644
--- a/guava-tests/test/com/google/common/math/AndroidIncompatible.java
+++ b/guava-tests/test/com/google/common/math/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-tests/test/com/google/common/math/BigDecimalMathTest.java b/guava-tests/test/com/google/common/math/BigDecimalMathTest.java
index ff86fd5..891f7a0 100644
--- a/guava-tests/test/com/google/common/math/BigDecimalMathTest.java
+++ b/guava-tests/test/com/google/common/math/BigDecimalMathTest.java
@@ -26,7 +26,6 @@ import static java.math.RoundingMode.UNNECESSARY;
 import static java.math.RoundingMode.UP;
 import static java.math.RoundingMode.values;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
@@ -35,7 +34,6 @@ import java.util.EnumSet;
 import java.util.Map;
 import junit.framework.TestCase;
 
-@GwtIncompatible
 public class BigDecimalMathTest extends TestCase {
   private static final class RoundToDoubleTester {
     private final BigDecimal input;
diff --git a/guava-tests/test/com/google/common/math/BigIntegerMathTest.java b/guava-tests/test/com/google/common/math/BigIntegerMathTest.java
index 170261b..9d47e88 100644
--- a/guava-tests/test/com/google/common/math/BigIntegerMathTest.java
+++ b/guava-tests/test/com/google/common/math/BigIntegerMathTest.java
@@ -38,8 +38,6 @@ import static java.math.RoundingMode.UP;
 import static java.math.RoundingMode.values;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -54,7 +52,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class BigIntegerMathTest extends TestCase {
   public void testCeilingPowerOfTwo() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
@@ -110,7 +107,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantSqrt2PrecomputedBits() {
     assertEquals(
         BigIntegerMath.sqrt(
@@ -213,7 +210,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10ZeroAlwaysThrows() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -224,7 +221,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10NegativeAlwaysThrows() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -235,7 +232,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10Floor() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : asList(FLOOR, DOWN)) {
@@ -246,7 +243,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10Ceiling() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : asList(CEILING, UP)) {
@@ -258,7 +255,7 @@ public class BigIntegerMathTest extends TestCase {
   }
 
   // Relies on the correctness of log10(BigInteger, FLOOR).
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10Exact() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       int logFloor = BigIntegerMath.log10(x, FLOOR);
@@ -272,7 +269,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10HalfUp() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       int result = BigIntegerMath.log10(x, HALF_UP);
@@ -284,7 +281,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10HalfDown() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       int result = BigIntegerMath.log10(x, HALF_DOWN);
@@ -297,7 +294,7 @@ public class BigIntegerMathTest extends TestCase {
   }
 
   // Relies on the correctness of log10(BigInteger, {HALF_UP,HALF_DOWN}).
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10HalfEven() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       int halfEven = BigIntegerMath.log10(x, HALF_EVEN);
@@ -308,7 +305,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10TrivialOnPowerOf10() {
     BigInteger x = BigInteger.TEN.pow(100);
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -316,14 +313,14 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtZeroAlwaysZero() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       assertEquals(ZERO, BigIntegerMath.sqrt(ZERO, mode));
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtNegativeAlwaysThrows() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -334,7 +331,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtFloor() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : asList(FLOOR, DOWN)) {
@@ -346,7 +343,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtCeiling() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : asList(CEILING, UP)) {
@@ -359,7 +356,7 @@ public class BigIntegerMathTest extends TestCase {
   }
 
   // Relies on the correctness of sqrt(BigInteger, FLOOR).
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtExact() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       BigInteger floor = BigIntegerMath.sqrt(x, FLOOR);
@@ -374,7 +371,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtHalfUp() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       BigInteger result = BigIntegerMath.sqrt(x, HALF_UP);
@@ -390,7 +387,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtHalfDown() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       BigInteger result = BigIntegerMath.sqrt(x, HALF_DOWN);
@@ -407,7 +404,7 @@ public class BigIntegerMathTest extends TestCase {
   }
 
   // Relies on the correctness of sqrt(BigInteger, {HALF_UP,HALF_DOWN}).
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtHalfEven() {
     for (BigInteger x : POSITIVE_BIGINTEGER_CANDIDATES) {
       BigInteger halfEven = BigIntegerMath.sqrt(x, HALF_EVEN);
@@ -418,7 +415,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   @AndroidIncompatible // slow
   public void testDivNonZero() {
     for (BigInteger p : NONZERO_BIGINTEGER_CANDIDATES) {
@@ -438,7 +435,7 @@ public class BigIntegerMathTest extends TestCase {
   private static final BigInteger BAD_FOR_GINGERBREAD_P = new BigInteger("-9223372036854775808");
   private static final BigInteger BAD_FOR_GINGERBREAD_Q = new BigInteger("-4294967296");
 
-  @GwtIncompatible // TODO
+  // TODO
   @AndroidIncompatible // slow
   public void testDivNonZeroExact() {
     boolean isAndroid = System.getProperty("java.runtime.name").contains("Android");
@@ -469,7 +466,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testZeroDivIsAlwaysZero() {
     for (BigInteger q : NONZERO_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -478,7 +475,7 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testDivByZeroAlwaysFails() {
     for (BigInteger p : ALL_BIGINTEGER_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -515,7 +512,7 @@ public class BigIntegerMathTest extends TestCase {
     runBinomialTest(0, 30);
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testBinomialLarge() {
     runBinomialTest(31, 100);
   }
@@ -548,7 +545,6 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible
   private static final class RoundToDoubleTester {
     private final BigInteger input;
     private final Map<RoundingMode, Double> expectedValues = new EnumMap<>(RoundingMode.class);
@@ -598,24 +594,20 @@ public class BigIntegerMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_Zero() {
     new RoundToDoubleTester(BigInteger.ZERO).setExpectation(0.0, values()).test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_smallPositive() {
     new RoundToDoubleTester(BigInteger.valueOf(16)).setExpectation(16.0, values()).test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_maxPreciselyRepresentable() {
     new RoundToDoubleTester(BigInteger.valueOf(1L << 53))
         .setExpectation(Math.pow(2, 53), values())
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_maxPreciselyRepresentablePlusOne() {
     double twoToThe53 = Math.pow(2, 53);
     // the representable doubles are 2^53 and 2^53 + 2.
@@ -627,7 +619,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_twoToThe54PlusOne() {
     double twoToThe54 = Math.pow(2, 54);
     // the representable doubles are 2^54 and 2^54 + 4
@@ -639,7 +630,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_twoToThe54PlusThree() {
     double twoToThe54 = Math.pow(2, 54);
     // the representable doubles are 2^54 and 2^54 + 4
@@ -651,20 +641,17 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_twoToThe54PlusFour() {
     new RoundToDoubleTester(BigInteger.valueOf((1L << 54) + 4))
         .setExpectation(Math.pow(2, 54) + 4, values())
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_maxDouble() {
     BigInteger maxDoubleAsBI = DoubleMath.roundToBigInteger(Double.MAX_VALUE, UNNECESSARY);
     new RoundToDoubleTester(maxDoubleAsBI).setExpectation(Double.MAX_VALUE, values()).test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_maxDoublePlusOne() {
     BigInteger maxDoubleAsBI =
         DoubleMath.roundToBigInteger(Double.MAX_VALUE, UNNECESSARY).add(BigInteger.ONE);
@@ -675,7 +662,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_wayTooBig() {
     BigInteger bi = BigInteger.ONE.shiftLeft(2 * Double.MAX_EXPONENT);
     new RoundToDoubleTester(bi)
@@ -685,19 +671,16 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_smallNegative() {
     new RoundToDoubleTester(BigInteger.valueOf(-16)).setExpectation(-16.0, values()).test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_minPreciselyRepresentable() {
     new RoundToDoubleTester(BigInteger.valueOf(-1L << 53))
         .setExpectation(-Math.pow(2, 53), values())
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_minPreciselyRepresentableMinusOne() {
     // the representable doubles are -2^53 and -2^53 - 2.
     // -2^53-1 is halfway between, so HALF_UP will go up and HALF_DOWN will go down.
@@ -708,7 +691,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_negativeTwoToThe54MinusOne() {
     new RoundToDoubleTester(BigInteger.valueOf((-1L << 54) - 1))
         .setExpectation(-Math.pow(2, 54), DOWN, CEILING, HALF_DOWN, HALF_UP, HALF_EVEN)
@@ -717,7 +699,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_negativeTwoToThe54MinusThree() {
     new RoundToDoubleTester(BigInteger.valueOf((-1L << 54) - 3))
         .setExpectation(-Math.pow(2, 54), DOWN, CEILING)
@@ -727,20 +708,17 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_negativeTwoToThe54MinusFour() {
     new RoundToDoubleTester(BigInteger.valueOf((-1L << 54) - 4))
         .setExpectation(-Math.pow(2, 54) - 4, values())
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_minDouble() {
     BigInteger minDoubleAsBI = DoubleMath.roundToBigInteger(-Double.MAX_VALUE, UNNECESSARY);
     new RoundToDoubleTester(minDoubleAsBI).setExpectation(-Double.MAX_VALUE, values()).test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_minDoubleMinusOne() {
     BigInteger minDoubleAsBI =
         DoubleMath.roundToBigInteger(-Double.MAX_VALUE, UNNECESSARY).subtract(BigInteger.ONE);
@@ -751,7 +729,6 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible
   public void testRoundToDouble_negativeWayTooBig() {
     BigInteger bi = BigInteger.ONE.shiftLeft(2 * Double.MAX_EXPONENT).negate();
     new RoundToDoubleTester(bi)
@@ -761,7 +738,7 @@ public class BigIntegerMathTest extends TestCase {
         .test();
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.setDefault(BigInteger.class, ONE);
@@ -770,7 +747,7 @@ public class BigIntegerMathTest extends TestCase {
     tester.testAllPublicStaticMethods(BigIntegerMath.class);
   }
 
-  @GwtIncompatible // String.format
+  // String.format
   private static void failFormat(String template, Object... args) {
     fail(String.format(template, args));
   }
diff --git a/guava-tests/test/com/google/common/math/DoubleMathTest.java b/guava-tests/test/com/google/common/math/DoubleMathTest.java
index 724ae96..5557918 100644
--- a/guava-tests/test/com/google/common/math/DoubleMathTest.java
+++ b/guava-tests/test/com/google/common/math/DoubleMathTest.java
@@ -38,9 +38,6 @@ import static java.math.RoundingMode.UNNECESSARY;
 import static java.math.RoundingMode.UP;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.primitives.Doubles;
 import com.google.common.testing.NullPointerTester;
@@ -56,7 +53,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class DoubleMathTest extends TestCase {
 
   private static final BigDecimal MAX_INT_AS_BIG_DECIMAL = BigDecimal.valueOf(Integer.MAX_VALUE);
@@ -79,7 +75,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundIntegralDoubleToInt() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -98,7 +94,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundFractionalDoubleToInt() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -120,7 +116,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundExactIntegralDoubleToInt() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       BigDecimal expected = new BigDecimal(d).setScale(0, UNNECESSARY);
@@ -137,7 +133,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundExactFractionalDoubleToIntFails() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       try {
@@ -148,7 +144,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundNaNToIntAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -159,7 +155,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToInt(double, RoundingMode)
+  // DoubleMath.roundToInt(double, RoundingMode)
   public void testRoundInfiniteToIntAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -175,7 +171,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundIntegralDoubleToLong() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -194,7 +190,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundFractionalDoubleToLong() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -213,7 +209,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundExactIntegralDoubleToLong() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       // every mode except UNNECESSARY
@@ -231,7 +227,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundExactFractionalDoubleToLongFails() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       try {
@@ -242,7 +238,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundNaNToLongAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -253,7 +249,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToLong(double, RoundingMode)
+  // DoubleMath.roundToLong(double, RoundingMode)
   public void testRoundInfiniteToLongAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -269,7 +265,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundIntegralDoubleToBigInteger() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -279,7 +275,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundFractionalDoubleToBigInteger() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -289,7 +285,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundExactIntegralDoubleToBigInteger() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       BigDecimal expected = new BigDecimal(d).setScale(0, UNNECESSARY);
@@ -297,7 +293,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundExactFractionalDoubleToBigIntegerFails() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       try {
@@ -308,7 +304,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundNaNToBigIntegerAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -319,7 +315,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundInfiniteToBigIntegerAlwaysFails() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -335,7 +331,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.roundToBigInteger(double, RoundingMode)
+  // DoubleMath.roundToBigInteger(double, RoundingMode)
   public void testRoundLog2Floor() {
     for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       int log2 = DoubleMath.log2(d, FLOOR);
@@ -344,7 +340,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode), StrictMath
+  // DoubleMath.log2(double, RoundingMode), StrictMath
   public void testRoundLog2Ceiling() {
     for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       int log2 = DoubleMath.log2(d, CEILING);
@@ -354,7 +350,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode), StrictMath
+  // DoubleMath.log2(double, RoundingMode), StrictMath
   public void testRoundLog2Down() {
     for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       int log2 = DoubleMath.log2(d, DOWN);
@@ -370,7 +366,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode), StrictMath
+  // DoubleMath.log2(double, RoundingMode), StrictMath
   public void testRoundLog2Up() {
     for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       int log2 = DoubleMath.log2(d, UP);
@@ -386,7 +382,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode)
+  // DoubleMath.log2(double, RoundingMode)
   public void testRoundLog2Half() {
     // We don't expect perfect rounding accuracy.
     for (int exp : asList(-1022, -50, -1, 0, 1, 2, 3, 4, 100, 1022, 1023)) {
@@ -404,7 +400,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode)
+  // DoubleMath.log2(double, RoundingMode)
   public void testRoundLog2Exact() {
     for (double x : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       boolean isPowerOfTwo = StrictMath.pow(2.0, DoubleMath.log2(x, FLOOR)) == x;
@@ -418,7 +414,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode)
+  // DoubleMath.log2(double, RoundingMode)
   public void testRoundLog2ThrowsOnZerosInfinitiesAndNaN() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       for (double d :
@@ -432,7 +428,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.log2(double, RoundingMode)
+  // DoubleMath.log2(double, RoundingMode)
   public void testRoundLog2ThrowsOnNegative() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
@@ -445,14 +441,14 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.isPowerOfTwo, DoubleMath.log2(double, RoundingMode), StrictMath
+  // DoubleMath.isPowerOfTwo, DoubleMath.log2(double, RoundingMode), StrictMath
   public void testIsPowerOfTwoYes() {
     for (int i = -1074; i <= 1023; i++) {
       assertTrue(DoubleMath.isPowerOfTwo(StrictMath.pow(2.0, i)));
     }
   }
 
-  @GwtIncompatible // DoubleMath.isPowerOfTwo, DoubleMath.log2(double, RoundingMode), StrictMath
+  // DoubleMath.isPowerOfTwo, DoubleMath.log2(double, RoundingMode), StrictMath
   public void testIsPowerOfTwo() {
     for (double x : ALL_DOUBLE_CANDIDATES) {
       boolean expected =
@@ -464,7 +460,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // #trueLog2, Math.ulp
+  // #trueLog2, Math.ulp
   public void testLog2Accuracy() {
     for (double d : POSITIVE_FINITE_DOUBLE_CANDIDATES) {
       double dmLog2 = DoubleMath.log2(d);
@@ -496,7 +492,7 @@ public class DoubleMathTest extends TestCase {
     assertTrue(Double.isNaN(DoubleMath.log2(Double.NaN)));
   }
 
-  @GwtIncompatible // StrictMath
+  // StrictMath
   private strictfp double trueLog2(double d) {
     double trueLog2 = StrictMath.log(d) / StrictMath.log(2);
     // increment until it's >= the true value
@@ -514,28 +510,28 @@ public class DoubleMathTest extends TestCase {
     return trueLog2;
   }
 
-  @GwtIncompatible // DoubleMath.isMathematicalInteger
+  // DoubleMath.isMathematicalInteger
   public void testIsMathematicalIntegerIntegral() {
     for (double d : INTEGRAL_DOUBLE_CANDIDATES) {
       assertTrue(DoubleMath.isMathematicalInteger(d));
     }
   }
 
-  @GwtIncompatible // DoubleMath.isMathematicalInteger
+  // DoubleMath.isMathematicalInteger
   public void testIsMathematicalIntegerFractional() {
     for (double d : FRACTIONAL_DOUBLE_CANDIDATES) {
       assertFalse(DoubleMath.isMathematicalInteger(d));
     }
   }
 
-  @GwtIncompatible // DoubleMath.isMathematicalInteger
+  // DoubleMath.isMathematicalInteger
   public void testIsMathematicalIntegerNotFinite() {
     for (double d : Arrays.asList(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NaN)) {
       assertFalse(DoubleMath.isMathematicalInteger(d));
     }
   }
 
-  @GwtIncompatible // Math.ulp
+  // Math.ulp
   public void testFactorial() {
     for (int i = 0; i <= DoubleMath.MAX_FACTORIAL; i++) {
       double actual = BigIntegerMath.factorial(i).doubleValue();
@@ -710,7 +706,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_doubleVarargs() {
     assertEquals(-1.375, DoubleMath.mean(1.1, -2.2, 4.4, -8.8), 1.0e-10);
     assertEquals(1.1, DoubleMath.mean(1.1), 1.0e-10);
@@ -726,19 +722,19 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_intVarargs() {
     assertEquals(-13.75, DoubleMath.mean(11, -22, 44, -88), 1.0e-10);
     assertEquals(11.0, DoubleMath.mean(11), 1.0e-10);
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_longVarargs() {
     assertEquals(-13.75, DoubleMath.mean(11L, -22L, 44L, -88L), 1.0e-10);
     assertEquals(11.0, DoubleMath.mean(11L), 1.0e-10);
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_emptyVarargs() {
     try {
       DoubleMath.mean();
@@ -747,7 +743,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_doubleIterable() {
     assertEquals(-1.375, DoubleMath.mean(ImmutableList.of(1.1, -2.2, 4.4, -8.8)), 1.0e-10);
     assertEquals(1.1, DoubleMath.mean(ImmutableList.of(1.1)), 1.0e-10);
@@ -768,7 +764,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_intIterable() {
     assertEquals(-13.75, DoubleMath.mean(ImmutableList.of(11, -22, 44, -88)), 1.0e-10);
     assertEquals(11, DoubleMath.mean(ImmutableList.of(11)), 1.0e-10);
@@ -779,7 +775,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_longIterable() {
     assertEquals(-13.75, DoubleMath.mean(ImmutableList.of(11L, -22L, 44L, -88L)), 1.0e-10);
     assertEquals(11, DoubleMath.mean(ImmutableList.of(11L)), 1.0e-10);
@@ -790,7 +786,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_intIterator() {
     assertEquals(-13.75, DoubleMath.mean(ImmutableList.of(11, -22, 44, -88).iterator()), 1.0e-10);
     assertEquals(11, DoubleMath.mean(ImmutableList.of(11).iterator()), 1.0e-10);
@@ -801,7 +797,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // DoubleMath.mean
+  // DoubleMath.mean
   public void testMean_longIterator() {
     assertEquals(
         -13.75, DoubleMath.mean(ImmutableList.of(11L, -22L, 44L, -88L).iterator()), 1.0e-10);
@@ -813,7 +809,7 @@ public class DoubleMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.setDefault(double.class, 3.0);
diff --git a/guava-tests/test/com/google/common/math/IntMathTest.java b/guava-tests/test/com/google/common/math/IntMathTest.java
index 12b23e2..1022786 100644
--- a/guava-tests/test/com/google/common/math/IntMathTest.java
+++ b/guava-tests/test/com/google/common/math/IntMathTest.java
@@ -28,8 +28,6 @@ import static java.math.BigInteger.valueOf;
 import static java.math.RoundingMode.FLOOR;
 import static java.math.RoundingMode.UNNECESSARY;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -42,7 +40,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class IntMathTest extends TestCase {
   public void testMaxSignedPowerOfTwo() {
     assertTrue(IntMath.isPowerOfTwo(IntMath.MAX_SIGNED_POWER_OF_TWO));
@@ -110,7 +107,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testConstantMaxPowerOfSqrt2Unsigned() {
     assertEquals(
         /*expected=*/ BigIntegerMath.sqrt(BigInteger.ZERO.setBit(2 * Integer.SIZE - 1), FLOOR)
@@ -118,14 +115,14 @@ public class IntMathTest extends TestCase {
         /*actual=*/ IntMath.MAX_POWER_OF_SQRT2_UNSIGNED);
   }
 
-  @GwtIncompatible // pow()
+  // pow()
   public void testConstantsPowersOf10() {
     for (int i = 0; i < IntMath.powersOf10.length - 1; i++) {
       assertEquals(IntMath.pow(10, i), IntMath.powersOf10[i]);
     }
   }
 
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testMaxLog10ForLeadingZeros() {
     for (int i = 0; i < Integer.SIZE; i++) {
       assertEquals(
@@ -134,7 +131,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testConstantsHalfPowersOf10() {
     for (int i = 0; i < IntMath.halfPowersOf10.length; i++) {
       assert IntMath.halfPowersOf10[i]
@@ -159,7 +156,7 @@ public class IntMathTest extends TestCase {
                 2 * IntMath.biggestBinomials.length, IntMath.biggestBinomials.length)));
   }
 
-  @GwtIncompatible // sqrt
+  // sqrt
   public void testPowersSqrtMaxInt() {
     assertEquals(
         /*expected=*/ IntMath.sqrt(Integer.MAX_VALUE, FLOOR),
@@ -179,7 +176,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // java.math.BigInteger
+  // java.math.BigInteger
   public void testIsPowerOfTwo() {
     for (int x : ALL_INTEGER_CANDIDATES) {
       // Checks for a single bit set.
@@ -234,7 +231,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // log10
+  // log10
   public void testLog10ZeroAlwaysThrows() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -245,7 +242,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // log10
+  // log10
   public void testLog10NegativeAlwaysThrows() {
     for (int x : NEGATIVE_INTEGER_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -259,7 +256,7 @@ public class IntMathTest extends TestCase {
   }
 
   // Relies on the correctness of BigIntegerMath.log10 for all modes except UNNECESSARY.
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testLog10MatchesBigInteger() {
     for (int x : POSITIVE_INTEGER_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -270,7 +267,7 @@ public class IntMathTest extends TestCase {
   }
 
   // Relies on the correctness of log10(int, FLOOR) and of pow(int, int).
-  @GwtIncompatible // pow()
+  // pow()
   public void testLog10Exact() {
     for (int x : POSITIVE_INTEGER_CANDIDATES) {
       int floor = IntMath.log10(x, FLOOR);
@@ -284,7 +281,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // log10
+  // log10
   public void testLog10TrivialOnPowerOfTen() {
     int x = 1000000;
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -293,14 +290,14 @@ public class IntMathTest extends TestCase {
   }
 
   // Simple test to cover sqrt(0) for all types and all modes.
-  @GwtIncompatible // sqrt
+  // sqrt
   public void testSqrtZeroAlwaysZero() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       assertEquals(0, IntMath.sqrt(0, mode));
     }
   }
 
-  @GwtIncompatible // sqrt
+  // sqrt
   public void testSqrtNegativeAlwaysThrows() {
     for (int x : NEGATIVE_INTEGER_CANDIDATES) {
       for (RoundingMode mode : RoundingMode.values()) {
@@ -314,7 +311,7 @@ public class IntMathTest extends TestCase {
   }
 
   /* Relies on the correctness of BigIntegerMath.sqrt for all modes except UNNECESSARY. */
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testSqrtMatchesBigInteger() {
     for (int x : POSITIVE_INTEGER_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -327,7 +324,7 @@ public class IntMathTest extends TestCase {
   }
 
   /* Relies on the correctness of sqrt(int, FLOOR). */
-  @GwtIncompatible // sqrt
+  // sqrt
   public void testSqrtExactMatchesFloorOrThrows() {
     for (int x : POSITIVE_INTEGER_CANDIDATES) {
       int floor = IntMath.sqrt(x, FLOOR);
@@ -342,7 +339,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // 2147483646^2 expected=4
+  // 2147483646^2 expected=4
   public void testPow() {
     for (int i : ALL_INTEGER_CANDIDATES) {
       for (int pow : EXPONENTS) {
@@ -548,7 +545,7 @@ public class IntMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedAdd() {
     for (int a : ALL_INTEGER_CANDIDATES) {
       for (int b : ALL_INTEGER_CANDIDATES) {
@@ -559,7 +556,7 @@ public class IntMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedSubtract() {
     for (int a : ALL_INTEGER_CANDIDATES) {
       for (int b : ALL_INTEGER_CANDIDATES) {
@@ -574,7 +571,7 @@ public class IntMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedMultiply() {
     for (int a : ALL_INTEGER_CANDIDATES) {
       for (int b : ALL_INTEGER_CANDIDATES) {
@@ -588,7 +585,7 @@ public class IntMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedPow() {
     for (int a : ALL_INTEGER_CANDIDATES) {
       for (int b : EXPONENTS) {
@@ -673,7 +670,7 @@ public class IntMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // java.math.BigInteger
+  // java.math.BigInteger
   public void testMean() {
     // Odd-sized ranges have an obvious mean
     assertMean(2, 1, 3);
@@ -744,14 +741,14 @@ public class IntMathTest extends TestCase {
     return big.bitLength() <= 31;
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.setDefault(int.class, 1);
     tester.testAllPublicStaticMethods(IntMath.class);
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrime() {
     // Defer correctness tests to Long.isPrime
 
diff --git a/guava-tests/test/com/google/common/math/LongMathTest.java b/guava-tests/test/com/google/common/math/LongMathTest.java
index 40c2ac9..48fc47f 100644
--- a/guava-tests/test/com/google/common/math/LongMathTest.java
+++ b/guava-tests/test/com/google/common/math/LongMathTest.java
@@ -31,8 +31,6 @@ import static java.math.BigInteger.valueOf;
 import static java.math.RoundingMode.FLOOR;
 import static java.math.RoundingMode.UNNECESSARY;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.testing.NullPointerTester;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -46,7 +44,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class LongMathTest extends TestCase {
   @SuppressWarnings("ConstantOverflow")
   public void testMaxSignedPowerOfTwo() {
@@ -112,7 +109,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantMaxPowerOfSqrt2Unsigned() {
     assertEquals(
         /*expected=*/ BigIntegerMath.sqrt(BigInteger.ZERO.setBit(2 * Long.SIZE - 1), FLOOR)
@@ -120,7 +117,7 @@ public class LongMathTest extends TestCase {
         /*actual=*/ LongMath.MAX_POWER_OF_SQRT2_UNSIGNED);
   }
 
-  @GwtIncompatible // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
+  // BigIntegerMath // TODO(cpovirk): GWT-enable BigIntegerMath
   public void testMaxLog10ForLeadingZeros() {
     for (int i = 0; i < Long.SIZE; i++) {
       assertEquals(
@@ -129,7 +126,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsPowersOf10() {
     for (int i = 0; i < LongMath.powersOf10.length; i++) {
       assertEquals(LongMath.checkedPow(10, i), LongMath.powersOf10[i]);
@@ -141,7 +138,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsHalfPowersOf10() {
     for (int i = 0; i < LongMath.halfPowersOf10.length; i++) {
       assertEquals(
@@ -153,14 +150,14 @@ public class LongMathTest extends TestCase {
     assertTrue(nextBigger.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0);
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsSqrtMaxLong() {
     assertEquals(
         /*expected=*/ LongMath.sqrt(Long.MAX_VALUE, FLOOR),
         /*actual=*/ LongMath.FLOOR_SQRT_MAX_LONG);
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsFactorials() {
     long expected = 1;
     for (int i = 0; i < LongMath.factorials.length; i++, expected *= i) {
@@ -174,7 +171,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsBiggestBinomials() {
     for (int k = 0; k < LongMath.biggestBinomials.length; k++) {
       assertTrue(fitsInLong(BigIntegerMath.binomial(LongMath.biggestBinomials[k], k)));
@@ -189,7 +186,7 @@ public class LongMathTest extends TestCase {
     // 2 * k is the smallest value for which we don't replace k with (n-k).
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testConstantsBiggestSimpleBinomials() {
     for (int k = 0; k < LongMath.biggestSimpleBinomials.length; k++) {
       assertTrue(LongMath.biggestSimpleBinomials[k] <= LongMath.biggestBinomials[k]);
@@ -227,7 +224,7 @@ public class LongMathTest extends TestCase {
   }
 
   // Throws an ArithmeticException if "the simple implementation" of binomial coefficients overflows
-  @GwtIncompatible // TODO
+  // TODO
   private long simpleBinomial(int n, int k) {
     long accum = 1;
     for (int i = 0; i < k; i++) {
@@ -237,7 +234,7 @@ public class LongMathTest extends TestCase {
     return accum;
   }
 
-  @GwtIncompatible // java.math.BigInteger
+  // java.math.BigInteger
   public void testIsPowerOfTwo() {
     for (long x : ALL_LONG_CANDIDATES) {
       // Checks for a single bit set.
@@ -293,7 +290,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10ZeroAlwaysThrows() {
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
       try {
@@ -304,7 +301,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10NegativeAlwaysThrows() {
     for (long x : NEGATIVE_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -318,7 +315,7 @@ public class LongMathTest extends TestCase {
   }
 
   // Relies on the correctness of BigIntegerMath.log10 for all modes except UNNECESSARY.
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10MatchesBigInteger() {
     for (long x : POSITIVE_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -328,7 +325,7 @@ public class LongMathTest extends TestCase {
   }
 
   // Relies on the correctness of log10(long, FLOOR) and of pow(long, int).
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10Exact() {
     for (long x : POSITIVE_LONG_CANDIDATES) {
       int floor = LongMath.log10(x, FLOOR);
@@ -344,7 +341,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testLog10TrivialOnPowerOf10() {
     long x = 1000000000000L;
     for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -352,7 +349,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtNegativeAlwaysThrows() {
     for (long x : NEGATIVE_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -366,7 +363,7 @@ public class LongMathTest extends TestCase {
   }
 
   // Relies on the correctness of BigIntegerMath.sqrt for all modes except UNNECESSARY.
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtMatchesBigInteger() {
     for (long x : POSITIVE_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_SAFE_ROUNDING_MODES) {
@@ -378,7 +375,7 @@ public class LongMathTest extends TestCase {
   }
 
   /* Relies on the correctness of sqrt(long, FLOOR). */
-  @GwtIncompatible // TODO
+  // TODO
   public void testSqrtExactMatchesFloorOrThrows() {
     for (long x : POSITIVE_LONG_CANDIDATES) {
       long sqrtFloor = LongMath.sqrt(x, FLOOR);
@@ -393,7 +390,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testPow() {
     for (long i : ALL_LONG_CANDIDATES) {
       for (int exp : EXPONENTS) {
@@ -402,7 +399,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   @AndroidIncompatible // TODO(cpovirk): File BigDecimal.divide() rounding bug.
   public void testDivNonZero() {
     for (long p : NONZERO_LONG_CANDIDATES) {
@@ -419,7 +416,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   @AndroidIncompatible // Bug in older versions of Android we test against, since fixed.
   public void testDivNonZeroExact() {
     for (long p : NONZERO_LONG_CANDIDATES) {
@@ -439,7 +436,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testZeroDivIsAlwaysZero() {
     for (long q : NONZERO_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -448,7 +445,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testDivByZeroAlwaysFails() {
     for (long p : ALL_LONG_CANDIDATES) {
       for (RoundingMode mode : ALL_ROUNDING_MODES) {
@@ -461,7 +458,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testIntMod() {
     for (long x : ALL_LONG_CANDIDATES) {
       for (int m : POSITIVE_INTEGER_CANDIDATES) {
@@ -470,7 +467,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testIntModNegativeModulusFails() {
     for (long x : ALL_LONG_CANDIDATES) {
       for (int m : NEGATIVE_INTEGER_CANDIDATES) {
@@ -483,7 +480,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testIntModZeroModulusFails() {
     for (long x : ALL_LONG_CANDIDATES) {
       try {
@@ -495,7 +492,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testMod() {
     for (long x : ALL_LONG_CANDIDATES) {
       for (long m : POSITIVE_LONG_CANDIDATES) {
@@ -504,7 +501,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testModNegativeModulusFails() {
     for (long x : ALL_LONG_CANDIDATES) {
       for (long m : NEGATIVE_LONG_CANDIDATES) {
@@ -525,7 +522,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testGCDZero() {
     for (long a : POSITIVE_LONG_CANDIDATES) {
       assertEquals(a, LongMath.gcd(a, 0));
@@ -534,7 +531,7 @@ public class LongMathTest extends TestCase {
     assertEquals(0, LongMath.gcd(0, 0));
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testGCDNegativePositiveThrows() {
     for (long a : NEGATIVE_LONG_CANDIDATES) {
       try {
@@ -550,7 +547,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testGCDNegativeZeroThrows() {
     for (long a : NEGATIVE_LONG_CANDIDATES) {
       try {
@@ -567,7 +564,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testCheckedAdd() {
     for (long a : ALL_LONG_CANDIDATES) {
       for (long b : ALL_LONG_CANDIDATES) {
@@ -586,7 +583,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   @AndroidIncompatible // slow
   public void testCheckedSubtract() {
     for (long a : ALL_LONG_CANDIDATES) {
@@ -638,7 +635,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testCheckedPow() {
     for (long b : ALL_LONG_CANDIDATES) {
       for (int exp : EXPONENTS) {
@@ -659,7 +656,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedAdd() {
     for (long a : ALL_LONG_CANDIDATES) {
       for (long b : ALL_LONG_CANDIDATES) {
@@ -670,7 +667,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedSubtract() {
     for (long a : ALL_LONG_CANDIDATES) {
       for (long b : ALL_LONG_CANDIDATES) {
@@ -685,7 +682,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedMultiply() {
     for (long a : ALL_LONG_CANDIDATES) {
       for (long b : ALL_LONG_CANDIDATES) {
@@ -699,7 +696,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testSaturatedPow() {
     for (long a : ALL_LONG_CANDIDATES) {
       for (int b : EXPONENTS) {
@@ -716,7 +713,7 @@ public class LongMathTest extends TestCase {
   }
 
   // Depends on the correctness of BigIntegerMath.factorial.
-  @GwtIncompatible // TODO
+  // TODO
   public void testFactorial() {
     for (int n = 0; n <= 50; n++) {
       BigInteger expectedBig = BigIntegerMath.factorial(n);
@@ -725,7 +722,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   public void testFactorialNegative() {
     for (int n : NEGATIVE_INTEGER_CANDIDATES) {
       try {
@@ -748,7 +745,7 @@ public class LongMathTest extends TestCase {
   }
 
 
-  @GwtIncompatible // Slow
+  // Slow
   public void testBinomial_exhaustiveNotOverflowing() {
     // Tests all of the inputs to LongMath.binomial that won't cause it to overflow, that weren't
     // tested in the previous method, for k >= 3.
@@ -785,7 +782,7 @@ public class LongMathTest extends TestCase {
   }
 
 
-  @GwtIncompatible // far too slow
+  // far too slow
   public void testSqrtOfPerfectSquareAsDoubleIsPerfect() {
     // This takes just over a minute on my machine.
     for (long n = 0; n <= LongMath.FLOOR_SQRT_MAX_LONG; n++) {
@@ -800,7 +797,7 @@ public class LongMathTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // java.math.BigInteger
+  // java.math.BigInteger
   public void testMean() {
     // Odd-sized ranges have an obvious mean
     assertMean(2, 1, 3);
@@ -884,7 +881,7 @@ public class LongMathTest extends TestCase {
     return big.longValue();
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNullPointers() {
     NullPointerTester tester = new NullPointerTester();
     tester.setDefault(int.class, 1);
@@ -892,7 +889,7 @@ public class LongMathTest extends TestCase {
     tester.testAllPublicStaticMethods(LongMath.class);
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeSmall() {
     // Check the first 1000 integers
     for (int i = 2; i < 1000; i++) {
@@ -900,7 +897,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeManyConstants() {
     // Test the thorough test inputs, which also includes special constants in the Miller-Rabin
     // tests.
@@ -909,7 +906,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeOnUniformRandom() {
     Random rand = new Random(1);
     for (int bits = 10; bits < 63; bits++) {
@@ -921,7 +918,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeOnRandomPrimes() {
     Random rand = new Random(1);
     for (int bits = 10; bits < 63; bits++) {
@@ -932,7 +929,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeOnRandomComposites() {
     Random rand = new Random(1);
     for (int bits = 5; bits < 32; bits++) {
@@ -944,7 +941,7 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // isPrime is GWT-incompatible
+  // isPrime is GWT-incompatible
   public void testIsPrimeThrowsOnNegative() {
     try {
       LongMath.isPrime(-1);
@@ -989,7 +986,6 @@ public class LongMathTest extends TestCase {
     Long.MIN_VALUE
   };
 
-  @GwtIncompatible
   public void testRoundToDoubleAgainstBigInteger() {
     for (RoundingMode roundingMode : EnumSet.complementOf(EnumSet.of(UNNECESSARY))) {
       for (long candidate : roundToDoubleTestCandidates) {
@@ -999,7 +995,6 @@ public class LongMathTest extends TestCase {
     }
   }
 
-  @GwtIncompatible
   public void testRoundToDoubleAgainstBigIntegerUnnecessary() {
     for (long candidate : roundToDoubleTestCandidates) {
       Double expectedDouble = null;
diff --git a/guava-tests/test/com/google/common/math/MathPreconditionsTest.java b/guava-tests/test/com/google/common/math/MathPreconditionsTest.java
index 5dbe017..66b1fa8 100644
--- a/guava-tests/test/com/google/common/math/MathPreconditionsTest.java
+++ b/guava-tests/test/com/google/common/math/MathPreconditionsTest.java
@@ -18,7 +18,6 @@ package com.google.common.math;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import java.math.BigInteger;
 import java.math.RoundingMode;
 import junit.framework.TestCase;
@@ -28,7 +27,6 @@ import junit.framework.TestCase;
  *
  * @author Ben Yu
  */
-@GwtCompatible
 public class MathPreconditionsTest extends TestCase {
 
   public void testCheckPositive_zeroInt() {
diff --git a/guava-tests/test/com/google/common/math/MathTesting.java b/guava-tests/test/com/google/common/math/MathTesting.java
index 6b74f11..9a55865 100644
--- a/guava-tests/test/com/google/common/math/MathTesting.java
+++ b/guava-tests/test/com/google/common/math/MathTesting.java
@@ -27,11 +27,8 @@ import static java.math.RoundingMode.HALF_UP;
 import static java.math.RoundingMode.UP;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.primitives.Doubles;
 import java.math.BigInteger;
@@ -42,7 +39,6 @@ import java.math.RoundingMode;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 public class MathTesting {
   static final ImmutableSet<RoundingMode> ALL_ROUNDING_MODES =
       ImmutableSet.copyOf(RoundingMode.values());
diff --git a/guava-tests/test/com/google/common/math/PairedStatsTest.java b/guava-tests/test/com/google/common/math/PairedStatsTest.java
index 7dd9e94..53fd7b3 100644
--- a/guava-tests/test/com/google/common/math/PairedStatsTest.java
+++ b/guava-tests/test/com/google/common/math/PairedStatsTest.java
@@ -49,7 +49,6 @@ import static com.google.common.math.StatsTesting.createPairedStatsOf;
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.math.StatsTesting.ManyValues;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.SerializableTester;
diff --git a/guava-tests/test/com/google/common/math/QuantilesAlgorithm.java b/guava-tests/test/com/google/common/math/QuantilesAlgorithm.java
index 54d310f..beb2962 100644
--- a/guava-tests/test/com/google/common/math/QuantilesAlgorithm.java
+++ b/guava-tests/test/com/google/common/math/QuantilesAlgorithm.java
@@ -16,7 +16,6 @@
 
 package com.google.common.math;
 
-import com.google.common.collect.ImmutableMap;
 import java.math.RoundingMode;
 import java.util.Arrays;
 import java.util.Collection;
diff --git a/guava-tests/test/com/google/common/math/QuantilesAlgorithmTest.java b/guava-tests/test/com/google/common/math/QuantilesAlgorithmTest.java
index 87a962a..34c2b41 100644
--- a/guava-tests/test/com/google/common/math/QuantilesAlgorithmTest.java
+++ b/guava-tests/test/com/google/common/math/QuantilesAlgorithmTest.java
@@ -19,7 +19,6 @@ package com.google.common.math;
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import java.util.Map;
 import java.util.Random;
diff --git a/guava-tests/test/com/google/common/math/QuantilesTest.java b/guava-tests/test/com/google/common/math/QuantilesTest.java
index a9b7872..4a26d74 100644
--- a/guava-tests/test/com/google/common/math/QuantilesTest.java
+++ b/guava-tests/test/com/google/common/math/QuantilesTest.java
@@ -28,8 +28,6 @@ import static java.math.RoundingMode.CEILING;
 import static java.math.RoundingMode.FLOOR;
 import static java.math.RoundingMode.UNNECESSARY;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Ordering;
 import com.google.common.math.Quantiles.ScaleAndIndexes;
 import com.google.common.primitives.Doubles;
@@ -42,7 +40,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Random;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Tests for {@link Quantiles}.
diff --git a/guava-tests/test/com/google/common/math/StatsAccumulatorTest.java b/guava-tests/test/com/google/common/math/StatsAccumulatorTest.java
index 2dba5fb..e40f0ce 100644
--- a/guava-tests/test/com/google/common/math/StatsAccumulatorTest.java
+++ b/guava-tests/test/com/google/common/math/StatsAccumulatorTest.java
@@ -54,7 +54,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 import static java.lang.Math.sqrt;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.math.StatsTesting.ManyValues;
 import com.google.common.primitives.Doubles;
 import com.google.common.primitives.Longs;
diff --git a/guava-tests/test/com/google/common/math/StatsTest.java b/guava-tests/test/com/google/common/math/StatsTest.java
index 9112ef3..3c35104 100644
--- a/guava-tests/test/com/google/common/math/StatsTest.java
+++ b/guava-tests/test/com/google/common/math/StatsTest.java
@@ -78,7 +78,6 @@ import static java.lang.Double.POSITIVE_INFINITY;
 import static java.lang.Math.sqrt;
 import static java.util.Arrays.stream;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.math.StatsTesting.ManyValues;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.Longs;
diff --git a/guava-tests/test/com/google/common/math/StatsTesting.java b/guava-tests/test/com/google/common/math/StatsTesting.java
index 261cdd4..e696f6f 100644
--- a/guava-tests/test/com/google/common/math/StatsTesting.java
+++ b/guava-tests/test/com/google/common/math/StatsTesting.java
@@ -24,7 +24,6 @@ import static java.lang.Double.POSITIVE_INFINITY;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.primitives.Doubles;
diff --git a/guava-tests/test/com/google/common/math/TestPlatform.java b/guava-tests/test/com/google/common/math/TestPlatform.java
index 03eb2ec..5c70ad3 100644
--- a/guava-tests/test/com/google/common/math/TestPlatform.java
+++ b/guava-tests/test/com/google/common/math/TestPlatform.java
@@ -16,10 +16,8 @@
 
 package com.google.common.math;
 
-import com.google.common.annotations.GwtCompatible;
 
 /** @author Chris Povirk */
-@GwtCompatible(emulated = true)
 class TestPlatform {
   static boolean intsCanGoOutOfRange() {
     return false;
diff --git a/guava-tests/test/com/google/common/net/HostAndPortTest.java b/guava-tests/test/com/google/common/net/HostAndPortTest.java
index 65e8096..792d20d 100644
--- a/guava-tests/test/com/google/common/net/HostAndPortTest.java
+++ b/guava-tests/test/com/google/common/net/HostAndPortTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.net;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.SerializableTester;
 import junit.framework.TestCase;
@@ -26,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Paul Marks
  */
-@GwtCompatible
 public class HostAndPortTest extends TestCase {
 
   public void testFromStringWellFormed() {
diff --git a/guava-tests/test/com/google/common/net/HostSpecifierTest.java b/guava-tests/test/com/google/common/net/HostSpecifierTest.java
index fadeff7..fd9a2bb 100644
--- a/guava-tests/test/com/google/common/net/HostSpecifierTest.java
+++ b/guava-tests/test/com/google/common/net/HostSpecifierTest.java
@@ -18,7 +18,6 @@ package com.google.common.net;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import java.text.ParseException;
diff --git a/guava-tests/test/com/google/common/net/HttpHeadersTest.java b/guava-tests/test/com/google/common/net/HttpHeadersTest.java
index 5361b3f..b4c8b21 100644
--- a/guava-tests/test/com/google/common/net/HttpHeadersTest.java
+++ b/guava-tests/test/com/google/common/net/HttpHeadersTest.java
@@ -19,8 +19,6 @@ package com.google.common.net;
 import com.google.common.base.Ascii;
 import com.google.common.base.Joiner;
 import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import java.lang.reflect.Field;
 import java.util.List;
diff --git a/guava-tests/test/com/google/common/net/InetAddressesTest.java b/guava-tests/test/com/google/common/net/InetAddressesTest.java
index be77e7b..ceded47 100644
--- a/guava-tests/test/com/google/common/net/InetAddressesTest.java
+++ b/guava-tests/test/com/google/common/net/InetAddressesTest.java
@@ -18,7 +18,6 @@ package com.google.common.net;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.NullPointerTester;
 import java.math.BigInteger;
 import java.net.Inet4Address;
diff --git a/guava-tests/test/com/google/common/net/InternetDomainNameTest.java b/guava-tests/test/com/google/common/net/InternetDomainNameTest.java
index 7113fb4..17cec57 100644
--- a/guava-tests/test/com/google/common/net/InternetDomainNameTest.java
+++ b/guava-tests/test/com/google/common/net/InternetDomainNameTest.java
@@ -17,11 +17,8 @@
 package com.google.common.net;
 
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Strings;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
@@ -32,7 +29,6 @@ import junit.framework.TestCase;
  *
  * @author Craig Berry
  */
-@GwtCompatible(emulated = true)
 public final class InternetDomainNameTest extends TestCase {
   private static final InternetDomainName UNICODE_EXAMPLE =
       InternetDomainName.from("j\u00f8rpeland.no");
@@ -501,7 +497,7 @@ public final class InternetDomainNameTest extends TestCase {
     return InternetDomainName.from(domain);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     final NullPointerTester tester = new NullPointerTester();
 
diff --git a/guava-tests/test/com/google/common/net/MediaTypeTest.java b/guava-tests/test/com/google/common/net/MediaTypeTest.java
index 574db68..76aaf60 100644
--- a/guava-tests/test/com/google/common/net/MediaTypeTest.java
+++ b/guava-tests/test/com/google/common/net/MediaTypeTest.java
@@ -33,15 +33,10 @@ import static java.lang.reflect.Modifier.isPublic;
 import static java.lang.reflect.Modifier.isStatic;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import java.lang.reflect.Field;
@@ -55,16 +50,15 @@ import junit.framework.TestCase;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 public class MediaTypeTest extends TestCase {
-  @GwtIncompatible // reflection
+  // reflection
   public void testParse_useConstants() throws Exception {
     for (MediaType constant : getConstants()) {
       assertSame(constant, MediaType.parse(constant.toString()));
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testCreate_useConstants() throws Exception {
     for (MediaType constant : getConstants()) {
       assertSame(
@@ -74,7 +68,7 @@ public class MediaTypeTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testConstants_charset() throws Exception {
     for (Field field : getConstantFields()) {
       Optional<Charset> charset = ((MediaType) field.get(null)).charset();
@@ -86,12 +80,12 @@ public class MediaTypeTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   public void testConstants_areUnique() {
     assertThat(getConstants()).containsNoDuplicates();
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static FluentIterable<Field> getConstantFields() {
     return FluentIterable.from(asList(MediaType.class.getDeclaredFields()))
         .filter(
@@ -107,7 +101,7 @@ public class MediaTypeTest extends TestCase {
             });
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static FluentIterable<MediaType> getConstants() {
     return getConstantFields()
         .transform(
@@ -517,7 +511,7 @@ public class MediaTypeTest extends TestCase {
     assertThat(MediaType.parse("text/plain; charset=utf-8").charset()).hasValue(UTF_8);
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testGetCharset_utf16() {
     assertThat(MediaType.parse("text/plain; charset=utf-16").charset()).hasValue(UTF_16);
   }
@@ -589,7 +583,7 @@ public class MediaTypeTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // Non-UTF-8 Charset
+  // Non-UTF-8 Charset
   public void testEquals_nonUtf8Charsets() {
     new EqualsTester()
         .addEqualityGroup(MediaType.create("text", "plain"))
@@ -598,7 +592,7 @@ public class MediaTypeTest extends TestCase {
         .testEquals();
   }
 
-  @GwtIncompatible // com.google.common.testing.NullPointerTester
+  // com.google.common.testing.NullPointerTester
   public void testNullPointer() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicConstructors(MediaType.class);
diff --git a/guava-tests/test/com/google/common/net/PercentEscaperTest.java b/guava-tests/test/com/google/common/net/PercentEscaperTest.java
index 8443680..4febfc1 100644
--- a/guava-tests/test/com/google/common/net/PercentEscaperTest.java
+++ b/guava-tests/test/com/google/common/net/PercentEscaperTest.java
@@ -21,7 +21,6 @@ import static com.google.common.escape.testing.EscaperAsserts.assertUnescaped;
 import static com.google.common.escape.testing.EscaperAsserts.assertUnicodeEscaping;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.escape.UnicodeEscaper;
 import junit.framework.TestCase;
@@ -31,7 +30,6 @@ import junit.framework.TestCase;
  *
  * @author David Beaumont
  */
-@GwtCompatible
 public class PercentEscaperTest extends TestCase {
 
   /** Tests that the simple escaper treats 0-9, a-z and A-Z as safe */
diff --git a/guava-tests/test/com/google/common/net/UrlEscapersTest.java b/guava-tests/test/com/google/common/net/UrlEscapersTest.java
index 9a67a95..bc089e5 100644
--- a/guava-tests/test/com/google/common/net/UrlEscapersTest.java
+++ b/guava-tests/test/com/google/common/net/UrlEscapersTest.java
@@ -23,7 +23,6 @@ import static com.google.common.net.UrlEscapers.urlFormParameterEscaper;
 import static com.google.common.net.UrlEscapers.urlFragmentEscaper;
 import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.UnicodeEscaper;
 import junit.framework.TestCase;
 
@@ -32,7 +31,6 @@ import junit.framework.TestCase;
  *
  * @author David Beaumont
  */
-@GwtCompatible
 public class UrlEscapersTest extends TestCase {
   /**
    * Helper to assert common expected behaviour of uri escapers. You should call
diff --git a/guava-tests/test/com/google/common/primitives/AndroidIncompatible.java b/guava-tests/test/com/google/common/primitives/AndroidIncompatible.java
index 2cf4a28..9ca8779 100644
--- a/guava-tests/test/com/google/common/primitives/AndroidIncompatible.java
+++ b/guava-tests/test/com/google/common/primitives/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-tests/test/com/google/common/primitives/BooleansTest.java b/guava-tests/test/com/google/common/primitives/BooleansTest.java
index 560c337..803e651 100644
--- a/guava-tests/test/com/google/common/primitives/BooleansTest.java
+++ b/guava-tests/test/com/google/common/primitives/BooleansTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -33,7 +31,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class BooleansTest extends TestCase {
   private static final boolean[] EMPTY = {};
   private static final boolean[] ARRAY_FALSE = {false};
@@ -172,7 +169,7 @@ public class BooleansTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<boolean[]> comparator = Booleans.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -338,7 +335,7 @@ public class BooleansTest extends TestCase {
     assertEquals(1, Booleans.countTrue(false, false, true, false, false));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Booleans.class);
   }
diff --git a/guava-tests/test/com/google/common/primitives/ByteArrayAsListTest.java b/guava-tests/test/com/google/common/primitives/ByteArrayAsListTest.java
index c3d0be1..109eb45 100644
--- a/guava-tests/test/com/google/common/primitives/ByteArrayAsListTest.java
+++ b/guava-tests/test/com/google/common/primitives/ByteArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class ByteArrayAsListTest extends TestCase {
 
   private static List<Byte> asList(Byte[] values) {
@@ -48,7 +44,7 @@ public class ByteArrayAsListTest extends TestCase {
     return Bytes.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Byte>> builders =
         ImmutableList.of(
diff --git a/guava-tests/test/com/google/common/primitives/BytesTest.java b/guava-tests/test/com/google/common/primitives/BytesTest.java
index 233a015..2bf492e 100644
--- a/guava-tests/test/com/google/common/primitives/BytesTest.java
+++ b/guava-tests/test/com/google/common/primitives/BytesTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import java.util.Arrays;
@@ -31,7 +29,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class BytesTest extends TestCase {
   private static final byte[] EMPTY = {};
   private static final byte[] ARRAY1 = {(byte) 1};
@@ -268,7 +265,7 @@ public class BytesTest extends TestCase {
     testReverse(new byte[] {-1, 1, -2, 2}, 1, 3, new byte[] {-1, -2, 1, 2});
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Bytes.class);
   }
diff --git a/guava-tests/test/com/google/common/primitives/CharArrayAsListTest.java b/guava-tests/test/com/google/common/primitives/CharArrayAsListTest.java
index fa2a53d..dfb7023 100644
--- a/guava-tests/test/com/google/common/primitives/CharArrayAsListTest.java
+++ b/guava-tests/test/com/google/common/primitives/CharArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class CharArrayAsListTest extends TestCase {
 
   private static List<Character> asList(Character[] values) {
@@ -48,7 +44,7 @@ public class CharArrayAsListTest extends TestCase {
     return Chars.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Character>> builders =
         ImmutableList.of(
diff --git a/guava-tests/test/com/google/common/primitives/CharsTest.java b/guava-tests/test/com/google/common/primitives/CharsTest.java
index f1da7fd..f837e82 100644
--- a/guava-tests/test/com/google/common/primitives/CharsTest.java
+++ b/guava-tests/test/com/google/common/primitives/CharsTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -34,7 +32,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class CharsTest extends TestCase {
   private static final char[] EMPTY = {};
@@ -215,13 +212,13 @@ public class CharsTest extends TestCase {
             new char[] {(char) 1, (char) 2, (char) 3, (char) 4}, Chars.concat(ARRAY1, ARRAY234)));
   }
 
-  @GwtIncompatible // Chars.fromByteArray
+  // Chars.fromByteArray
   public void testFromByteArray() {
     assertEquals('\u2345', Chars.fromByteArray(new byte[] {0x23, 0x45, (byte) 0xDC}));
     assertEquals('\uFEDC', Chars.fromByteArray(new byte[] {(byte) 0xFE, (byte) 0xDC}));
   }
 
-  @GwtIncompatible // Chars.fromByteArray
+  // Chars.fromByteArray
   public void testFromByteArrayFails() {
     try {
       Chars.fromByteArray(new byte[Chars.BYTES - 1]);
@@ -230,13 +227,13 @@ public class CharsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Chars.fromBytes
+  // Chars.fromBytes
   public void testFromBytes() {
     assertEquals('\u2345', Chars.fromBytes((byte) 0x23, (byte) 0x45));
     assertEquals('\uFEDC', Chars.fromBytes((byte) 0xFE, (byte) 0xDC));
   }
 
-  @GwtIncompatible // Chars.fromByteArray, Chars.toByteArray
+  // Chars.fromByteArray, Chars.toByteArray
   public void testByteArrayRoundTrips() {
     char c = 0;
     for (int hi = 0; hi < 256; hi++) {
@@ -258,7 +255,7 @@ public class CharsTest extends TestCase {
     assertEquals((char) 0, c); // sanity check
   }
 
-  @GwtIncompatible // Chars.fromByteArray, Chars.toByteArray
+  // Chars.fromByteArray, Chars.toByteArray
   public void testByteArrayRoundTripsFails() {
     try {
       Chars.fromByteArray(new byte[] {0x11});
@@ -314,7 +311,7 @@ public class CharsTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<char[]> comparator = Chars.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -452,7 +449,7 @@ public class CharsTest extends TestCase {
     assertSame(Collections.emptyList(), Chars.asList(EMPTY));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Chars.class);
   }
diff --git a/guava-tests/test/com/google/common/primitives/DoubleArrayAsListTest.java b/guava-tests/test/com/google/common/primitives/DoubleArrayAsListTest.java
index 23a7ca1..2ee77c4 100644
--- a/guava-tests/test/com/google/common/primitives/DoubleArrayAsListTest.java
+++ b/guava-tests/test/com/google/common/primitives/DoubleArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class DoubleArrayAsListTest extends TestCase {
 
   private static List<Double> asList(Double[] values) {
@@ -48,7 +44,7 @@ public class DoubleArrayAsListTest extends TestCase {
     return Doubles.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Double>> builders =
         ImmutableList.of(
diff --git a/guava-tests/test/com/google/common/primitives/DoublesTest.java b/guava-tests/test/com/google/common/primitives/DoublesTest.java
index 871b84c..1cb0a40 100644
--- a/guava-tests/test/com/google/common/primitives/DoublesTest.java
+++ b/guava-tests/test/com/google/common/primitives/DoublesTest.java
@@ -19,10 +19,7 @@ package com.google.common.primitives;
 import static com.google.common.truth.Truth.assertThat;
 import static java.lang.Double.NaN;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -39,7 +36,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class DoublesTest extends TestCase {
   private static final double[] EMPTY = {};
@@ -194,7 +190,6 @@ public class DoublesTest extends TestCase {
     assertEquals(-1, Doubles.lastIndexOf(new double[] {NaN, 5.0}, NaN));
   }
 
-  @GwtIncompatible
   public void testMax_noArgs() {
     try {
       Doubles.max();
@@ -217,7 +212,6 @@ public class DoublesTest extends TestCase {
     assertTrue(Double.isNaN(Doubles.max(VALUES)));
   }
 
-  @GwtIncompatible
   public void testMin_noArgs() {
     try {
       Doubles.min();
@@ -300,7 +294,7 @@ public class DoublesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Double.toString returns different value in GWT.
+  // Double.toString returns different value in GWT.
   public void testJoin() {
     assertEquals("", Doubles.join(",", EMPTY));
     assertEquals("1.0", Doubles.join(",", ARRAY1));
@@ -403,13 +397,13 @@ public class DoublesTest extends TestCase {
         new double[] {-1, 1, Double.NaN, -2, 2}, 1, 4, new double[] {-1, Double.NaN, 1, -2, 2});
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<double[]> comparator = Doubles.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testStringConverterSerialization() {
     SerializableTester.reserializeAndAssert(Doubles.stringConverter());
   }
@@ -521,7 +515,7 @@ public class DoublesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   private static void checkTryParse(String input) {
     Double expected = referenceTryParse(input);
     assertEquals(expected, Doubles.tryParse(input));
@@ -539,7 +533,7 @@ public class DoublesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   private static void checkTryParse(double expected, String input) {
     assertEquals(Double.valueOf(expected), Doubles.tryParse(input));
     assertThat(input)
@@ -548,7 +542,7 @@ public class DoublesTest extends TestCase {
                 Doubles.FLOATING_POINT_PATTERN.pattern(), Doubles.FLOATING_POINT_PATTERN.flags()));
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseHex() {
     for (String signChar : ImmutableList.of("", "+", "-")) {
       for (String hexPrefix : ImmutableList.of("0x", "0X")) {
@@ -569,7 +563,7 @@ public class DoublesTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseAllCodePoints() {
     // Exercise non-ASCII digit test cases and the like.
     char[] tmp = new char[2];
@@ -579,28 +573,28 @@ public class DoublesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseOfToStringIsOriginal() {
     for (double d : NUMBERS) {
       checkTryParse(d, Double.toString(d));
     }
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseOfToHexStringIsOriginal() {
     for (double d : NUMBERS) {
       checkTryParse(d, Double.toHexString(d));
     }
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseNaN() {
     checkTryParse("NaN");
     checkTryParse("+NaN");
     checkTryParse("-NaN");
   }
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseInfinity() {
     checkTryParse(Double.POSITIVE_INFINITY, "Infinity");
     checkTryParse(Double.POSITIVE_INFINITY, "+Infinity");
@@ -624,7 +618,7 @@ public class DoublesTest extends TestCase {
     "InfinityF"
   };
 
-  @GwtIncompatible // Doubles.tryParse
+  // Doubles.tryParse
   public void testTryParseFailures() {
     for (String badInput : BAD_TRY_PARSE_INPUTS) {
       assertThat(badInput)
@@ -637,7 +631,7 @@ public class DoublesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Doubles.class);
   }
@@ -667,7 +661,7 @@ public class DoublesTest extends TestCase {
     assertNull(Doubles.stringConverter().reverse().convert(null));
   }
 
-  @GwtIncompatible // Double.toString returns different value in GWT.
+  // Double.toString returns different value in GWT.
   public void testStringConverter_reverse() {
     Converter<String, Double> converter = Doubles.stringConverter();
     assertEquals("1.0", converter.reverse().convert(1.0));
@@ -677,13 +671,12 @@ public class DoublesTest extends TestCase {
     assertEquals("1.0E-6", converter.reverse().convert(1e-6));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(Doubles.stringConverter());
   }
 
-  @GwtIncompatible
   public void testTryParse_withNullNoGwt() {
     assertNull(Doubles.tryParse("null"));
     try {
diff --git a/guava-tests/test/com/google/common/primitives/FloatArrayAsListTest.java b/guava-tests/test/com/google/common/primitives/FloatArrayAsListTest.java
index 233a021..bb1b920 100644
--- a/guava-tests/test/com/google/common/primitives/FloatArrayAsListTest.java
+++ b/guava-tests/test/com/google/common/primitives/FloatArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class FloatArrayAsListTest extends TestCase {
 
   private static List<Float> asList(Float[] values) {
@@ -48,7 +44,7 @@ public class FloatArrayAsListTest extends TestCase {
     return Floats.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Float>> builders =
         ImmutableList.of(
diff --git a/guava-tests/test/com/google/common/primitives/FloatsTest.java b/guava-tests/test/com/google/common/primitives/FloatsTest.java
index fd59ad4..4316db9 100644
--- a/guava-tests/test/com/google/common/primitives/FloatsTest.java
+++ b/guava-tests/test/com/google/common/primitives/FloatsTest.java
@@ -19,10 +19,7 @@ package com.google.common.primitives;
 import static com.google.common.truth.Truth.assertThat;
 import static java.lang.Float.NaN;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -38,7 +35,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class FloatsTest extends TestCase {
   private static final float[] EMPTY = {};
@@ -186,7 +182,6 @@ public class FloatsTest extends TestCase {
     assertEquals(-1, Floats.lastIndexOf(new float[] {NaN, 5f}, NaN));
   }
 
-  @GwtIncompatible
   public void testMax_noArgs() {
     try {
       Floats.max();
@@ -208,7 +203,6 @@ public class FloatsTest extends TestCase {
     assertTrue(Float.isNaN(Floats.max(VALUES)));
   }
 
-  @GwtIncompatible
   public void testMin_noArgs() {
     try {
       Floats.min();
@@ -283,7 +277,7 @@ public class FloatsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Float.toString returns different value in GWT.
+  // Float.toString returns different value in GWT.
   public void testJoin() {
     assertEquals("", Floats.join(",", EMPTY));
     assertEquals("1.0", Floats.join(",", ARRAY1));
@@ -308,7 +302,7 @@ public class FloatsTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<float[]> comparator = Floats.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -384,7 +378,7 @@ public class FloatsTest extends TestCase {
         new float[] {-1, 1, Float.NaN, -2, 2}, 1, 4, new float[] {-1, Float.NaN, 1, -2, 2});
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testStringConverterSerialization() {
     SerializableTester.reserializeAndAssert(Floats.stringConverter());
   }
@@ -496,17 +490,17 @@ public class FloatsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   private static void checkTryParse(String input) {
     assertEquals(referenceTryParse(input), Floats.tryParse(input));
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   private static void checkTryParse(float expected, String input) {
     assertEquals(Float.valueOf(expected), Floats.tryParse(input));
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseHex() {
     for (String signChar : ImmutableList.of("", "+", "-")) {
       for (String hexPrefix : ImmutableList.of("0x", "0X")) {
@@ -527,7 +521,7 @@ public class FloatsTest extends TestCase {
   }
 
   @AndroidIncompatible // slow
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseAllCodePoints() {
     // Exercise non-ASCII digit test cases and the like.
     char[] tmp = new char[2];
@@ -537,28 +531,28 @@ public class FloatsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseOfToStringIsOriginal() {
     for (float f : NUMBERS) {
       checkTryParse(f, Float.toString(f));
     }
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseOfToHexStringIsOriginal() {
     for (float f : NUMBERS) {
       checkTryParse(f, Float.toHexString(f));
     }
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseNaN() {
     checkTryParse("NaN");
     checkTryParse("+NaN");
     checkTryParse("-NaN");
   }
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseInfinity() {
     checkTryParse(Float.POSITIVE_INFINITY, "Infinity");
     checkTryParse(Float.POSITIVE_INFINITY, "+Infinity");
@@ -582,7 +576,7 @@ public class FloatsTest extends TestCase {
     "InfinityF"
   };
 
-  @GwtIncompatible // Floats.tryParse
+  // Floats.tryParse
   public void testTryParseFailures() {
     for (String badInput : BAD_TRY_PARSE_INPUTS) {
       assertEquals(referenceTryParse(badInput), Floats.tryParse(badInput));
@@ -590,12 +584,12 @@ public class FloatsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Floats.class);
   }
 
-  @GwtIncompatible // Float.toString returns different value in GWT.
+  // Float.toString returns different value in GWT.
   public void testStringConverter_convert() {
     Converter<String, Float> converter = Floats.stringConverter();
     assertEquals((Float) 1.0f, converter.convert("1.0"));
@@ -621,7 +615,7 @@ public class FloatsTest extends TestCase {
     assertNull(Floats.stringConverter().reverse().convert(null));
   }
 
-  @GwtIncompatible // Float.toString returns different value in GWT.
+  // Float.toString returns different value in GWT.
   public void testStringConverter_reverse() {
     Converter<String, Float> converter = Floats.stringConverter();
     assertEquals("1.0", converter.reverse().convert(1.0f));
@@ -631,13 +625,12 @@ public class FloatsTest extends TestCase {
     assertEquals("1.0E-6", converter.reverse().convert(1e-6f));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(Floats.stringConverter());
   }
 
-  @GwtIncompatible
   public void testTryParse_withNullNoGwt() {
     assertNull(Floats.tryParse("null"));
     try {
diff --git a/guava-tests/test/com/google/common/primitives/ImmutableDoubleArrayTest.java b/guava-tests/test/com/google/common/primitives/ImmutableDoubleArrayTest.java
index 82bc49f..d160ee2 100644
--- a/guava-tests/test/com/google/common/primitives/ImmutableDoubleArrayTest.java
+++ b/guava-tests/test/com/google/common/primitives/ImmutableDoubleArrayTest.java
@@ -18,9 +18,6 @@ import static com.google.common.primitives.TestPlatform.reduceIterationsIfGwt;
 import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ObjectArrays;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
@@ -42,7 +39,6 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 /** @author Kevin Bourrillion */
-@GwtCompatible(emulated = true)
 public class ImmutableDoubleArrayTest extends TestCase {
   // Test all creation paths very lazily: by assuming asList() works
 
@@ -435,7 +431,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     assertActuallyTrims(underSized);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     assertThat(reserialize(ImmutableDoubleArray.of())).isSameInstanceAs(ImmutableDoubleArray.of());
     assertThat(reserialize(ImmutableDoubleArray.of(0, 1).subArray(1, 1)))
@@ -459,7 +455,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     assertThat(iia.trimmed()).isSameInstanceAs(iia);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Double>> builders =
         ImmutableList.of(
@@ -490,7 +486,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static ImmutableDoubleArray makeArray(Double[] values) {
     return ImmutableDoubleArray.copyOf(Arrays.asList(values));
   }
@@ -498,7 +494,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
   // Test generators.  To let the GWT test suite generator access them, they need to be public named
   // classes with a public default constructor (not that we run these suites under GWT yet).
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableDoubleArrayAsListGenerator extends TestDoubleListGenerator {
     @Override
     protected List<Double> create(Double[] elements) {
@@ -506,7 +502,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableDoubleArrayHeadSubListAsListGenerator
       extends TestDoubleListGenerator {
     @Override
@@ -517,7 +513,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableDoubleArrayTailSubListAsListGenerator
       extends TestDoubleListGenerator {
     @Override
@@ -528,7 +524,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableDoubleArrayMiddleSubListAsListGenerator
       extends TestDoubleListGenerator {
     @Override
@@ -540,12 +536,12 @@ public class ImmutableDoubleArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static Double[] concat(Double[] a, Double[] b) {
     return ObjectArrays.concat(a, b, Double.class);
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public abstract static class TestDoubleListGenerator implements TestListGenerator<Double> {
     @Override
     public SampleElements<Double> samples() {
@@ -580,7 +576,7 @@ public class ImmutableDoubleArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static class SampleDoubles extends SampleElements<Double> {
     public SampleDoubles() {
       super(-0.0, Long.MAX_VALUE * 3.0, Double.MAX_VALUE, Double.POSITIVE_INFINITY, Double.NaN);
diff --git a/guava-tests/test/com/google/common/primitives/ImmutableIntArrayTest.java b/guava-tests/test/com/google/common/primitives/ImmutableIntArrayTest.java
index 6a9eead..9d5a984 100644
--- a/guava-tests/test/com/google/common/primitives/ImmutableIntArrayTest.java
+++ b/guava-tests/test/com/google/common/primitives/ImmutableIntArrayTest.java
@@ -18,9 +18,6 @@ import static com.google.common.primitives.TestPlatform.reduceIterationsIfGwt;
 import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ObjectArrays;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
@@ -42,7 +39,6 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 /** @author Kevin Bourrillion */
-@GwtCompatible(emulated = true)
 public class ImmutableIntArrayTest extends TestCase {
   // Test all creation paths very lazily: by assuming asList() works
 
@@ -420,7 +416,7 @@ public class ImmutableIntArrayTest extends TestCase {
     assertActuallyTrims(underSized);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     assertThat(reserialize(ImmutableIntArray.of())).isSameInstanceAs(ImmutableIntArray.of());
     assertThat(reserialize(ImmutableIntArray.of(0, 1).subArray(1, 1)))
@@ -444,7 +440,7 @@ public class ImmutableIntArrayTest extends TestCase {
     assertThat(iia.trimmed()).isSameInstanceAs(iia);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Integer>> builders =
         ImmutableList.of(
@@ -475,7 +471,7 @@ public class ImmutableIntArrayTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static ImmutableIntArray makeArray(Integer[] values) {
     return ImmutableIntArray.copyOf(Arrays.asList(values));
   }
@@ -483,7 +479,7 @@ public class ImmutableIntArrayTest extends TestCase {
   // Test generators.  To let the GWT test suite generator access them, they need to be public named
   // classes with a public default constructor (not that we run these suites under GWT yet).
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableIntArrayAsListGenerator extends TestIntegerListGenerator {
     @Override
     protected List<Integer> create(Integer[] elements) {
@@ -491,7 +487,7 @@ public class ImmutableIntArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableIntArrayHeadSubListAsListGenerator
       extends TestIntegerListGenerator {
     @Override
@@ -502,7 +498,7 @@ public class ImmutableIntArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableIntArrayTailSubListAsListGenerator
       extends TestIntegerListGenerator {
     @Override
@@ -513,7 +509,7 @@ public class ImmutableIntArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableIntArrayMiddleSubListAsListGenerator
       extends TestIntegerListGenerator {
     @Override
@@ -525,12 +521,12 @@ public class ImmutableIntArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static Integer[] concat(Integer[] a, Integer[] b) {
     return ObjectArrays.concat(a, b, Integer.class);
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public abstract static class TestIntegerListGenerator implements TestListGenerator<Integer> {
     @Override
     public SampleElements<Integer> samples() {
@@ -565,7 +561,7 @@ public class ImmutableIntArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static class SampleIntegers extends SampleElements<Integer> {
     public SampleIntegers() {
       super(1, 3, 6, 10, 15);
diff --git a/guava-tests/test/com/google/common/primitives/ImmutableLongArrayTest.java b/guava-tests/test/com/google/common/primitives/ImmutableLongArrayTest.java
index e4621fc..f4e86b6 100644
--- a/guava-tests/test/com/google/common/primitives/ImmutableLongArrayTest.java
+++ b/guava-tests/test/com/google/common/primitives/ImmutableLongArrayTest.java
@@ -18,9 +18,6 @@ import static com.google.common.primitives.TestPlatform.reduceIterationsIfGwt;
 import static com.google.common.testing.SerializableTester.reserialize;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ObjectArrays;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
@@ -42,7 +39,6 @@ import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 /** @author Kevin Bourrillion */
-@GwtCompatible(emulated = true)
 public class ImmutableLongArrayTest extends TestCase {
   // Test all creation paths very lazily: by assuming asList() works
 
@@ -423,7 +419,7 @@ public class ImmutableLongArrayTest extends TestCase {
     assertActuallyTrims(underSized);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testSerialization() {
     assertThat(reserialize(ImmutableLongArray.of())).isSameInstanceAs(ImmutableLongArray.of());
     assertThat(reserialize(ImmutableLongArray.of(0, 1).subArray(1, 1)))
@@ -447,7 +443,7 @@ public class ImmutableLongArrayTest extends TestCase {
     assertThat(iia.trimmed()).isSameInstanceAs(iia);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Long>> builders =
         ImmutableList.of(
@@ -478,7 +474,7 @@ public class ImmutableLongArrayTest extends TestCase {
     return suite;
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static ImmutableLongArray makeArray(Long[] values) {
     return ImmutableLongArray.copyOf(Arrays.asList(values));
   }
@@ -486,7 +482,7 @@ public class ImmutableLongArrayTest extends TestCase {
   // Test generators.  To let the GWT test suite generator access them, they need to be public named
   // classes with a public default constructor (not that we run these suites under GWT yet).
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableLongArrayAsListGenerator extends TestLongListGenerator {
     @Override
     protected List<Long> create(Long[] elements) {
@@ -494,7 +490,7 @@ public class ImmutableLongArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableLongArrayHeadSubListAsListGenerator
       extends TestLongListGenerator {
     @Override
@@ -505,7 +501,7 @@ public class ImmutableLongArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableLongArrayTailSubListAsListGenerator
       extends TestLongListGenerator {
     @Override
@@ -516,7 +512,7 @@ public class ImmutableLongArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static final class ImmutableLongArrayMiddleSubListAsListGenerator
       extends TestLongListGenerator {
     @Override
@@ -528,12 +524,12 @@ public class ImmutableLongArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   private static Long[] concat(Long[] a, Long[] b) {
     return ObjectArrays.concat(a, b, Long.class);
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public abstract static class TestLongListGenerator implements TestListGenerator<Long> {
     @Override
     public SampleElements<Long> samples() {
@@ -568,7 +564,7 @@ public class ImmutableLongArrayTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only from suite
+  // used only from suite
   public static class SampleLongs extends SampleElements<Long> {
     public SampleLongs() {
       super(1L << 31, 1L << 33, 1L << 36, 1L << 40, 1L << 45);
diff --git a/guava-tests/test/com/google/common/primitives/IntArrayAsListTest.java b/guava-tests/test/com/google/common/primitives/IntArrayAsListTest.java
index e02d1aa..8eae19b 100644
--- a/guava-tests/test/com/google/common/primitives/IntArrayAsListTest.java
+++ b/guava-tests/test/com/google/common/primitives/IntArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class IntArrayAsListTest extends TestCase {
 
@@ -49,7 +45,7 @@ public class IntArrayAsListTest extends TestCase {
     return Ints.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Integer>> builders =
         ImmutableList.of(
diff --git a/guava-tests/test/com/google/common/primitives/IntsTest.java b/guava-tests/test/com/google/common/primitives/IntsTest.java
index 7215422..5a2d18e 100644
--- a/guava-tests/test/com/google/common/primitives/IntsTest.java
+++ b/guava-tests/test/com/google/common/primitives/IntsTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
@@ -35,7 +33,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class IntsTest extends TestCase {
   private static final int[] EMPTY = {};
@@ -155,7 +152,6 @@ public class IntsTest extends TestCase {
     assertEquals(3, Ints.lastIndexOf(new int[] {(int) 2, (int) 3, (int) 2, (int) 3}, (int) 3));
   }
 
-  @GwtIncompatible
   public void testMax_noArgs() {
     try {
       Ints.max();
@@ -170,7 +166,6 @@ public class IntsTest extends TestCase {
     assertEquals((int) 9, Ints.max((int) 8, (int) 6, (int) 7, (int) 5, (int) 3, (int) 0, (int) 9));
   }
 
-  @GwtIncompatible
   public void testMin_noArgs() {
     try {
       Ints.min();
@@ -300,7 +295,7 @@ public class IntsTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<int[]> comparator = Ints.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -365,7 +360,7 @@ public class IntsTest extends TestCase {
     testSortDescending(new int[] {-1, -2, 1, 2}, 1, 3, new int[] {-1, 1, -2, 2});
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testStringConverterSerialization() {
     SerializableTester.reserializeAndAssert(Ints.stringConverter());
   }
@@ -461,7 +456,7 @@ public class IntsTest extends TestCase {
     assertSame(Collections.emptyList(), Ints.asList(EMPTY));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Ints.class);
   }
@@ -502,7 +497,7 @@ public class IntsTest extends TestCase {
     assertEquals("438", converter.reverse().convert(0666));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(Ints.stringConverter());
diff --git a/guava-tests/test/com/google/common/primitives/LongArrayAsListTest.java b/guava-tests/test/com/google/common/primitives/LongArrayAsListTest.java
index 1c51e7e..98a9b41 100644
--- a/guava-tests/test/com/google/common/primitives/LongArrayAsListTest.java
+++ b/guava-tests/test/com/google/common/primitives/LongArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class LongArrayAsListTest extends TestCase {
 
   private static List<Long> asList(Long[] values) {
@@ -48,7 +44,7 @@ public class LongArrayAsListTest extends TestCase {
     return Longs.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Long>> builders =
         ImmutableList.of(
diff --git a/guava-tests/test/com/google/common/primitives/LongsTest.java b/guava-tests/test/com/google/common/primitives/LongsTest.java
index 236d461..ec31882 100644
--- a/guava-tests/test/com/google/common/primitives/LongsTest.java
+++ b/guava-tests/test/com/google/common/primitives/LongsTest.java
@@ -19,8 +19,6 @@ package com.google.common.primitives;
 import static java.lang.Long.MAX_VALUE;
 import static java.lang.Long.MIN_VALUE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
@@ -39,7 +37,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class LongsTest extends TestCase {
   private static final long[] EMPTY = {};
@@ -48,7 +45,7 @@ public class LongsTest extends TestCase {
 
   private static final long[] VALUES = {MIN_VALUE, (long) -1, (long) 0, (long) 1, MAX_VALUE};
 
-  @GwtIncompatible // Long.hashCode returns different values in GWT.
+  // Long.hashCode returns different values in GWT.
   public void testHashCode() {
     for (long value : VALUES) {
       assertEquals("hashCode for " + value, ((Long) value).hashCode(), Longs.hashCode(value));
@@ -312,7 +309,7 @@ public class LongsTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<long[]> comparator = Longs.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -377,7 +374,7 @@ public class LongsTest extends TestCase {
     testSortDescending(new long[] {-1, -2, 1, 2}, 1, 3, new long[] {-1, 1, -2, 2});
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testStringConverterSerialization() {
     SerializableTester.reserializeAndAssert(Longs.stringConverter());
   }
@@ -473,7 +470,7 @@ public class LongsTest extends TestCase {
     assertSame(Collections.emptyList(), Longs.asList(EMPTY));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Longs.class);
   }
@@ -514,7 +511,7 @@ public class LongsTest extends TestCase {
     assertEquals("438", converter.reverse().convert(0666L));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(Longs.stringConverter());
diff --git a/guava-tests/test/com/google/common/primitives/PrimitivesTest.java b/guava-tests/test/com/google/common/primitives/PrimitivesTest.java
index 1e09743..d602cd2 100644
--- a/guava-tests/test/com/google/common/primitives/PrimitivesTest.java
+++ b/guava-tests/test/com/google/common/primitives/PrimitivesTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.NullPointerTester;
 import java.util.Set;
 import junit.framework.TestCase;
diff --git a/guava-tests/test/com/google/common/primitives/ShortArrayAsListTest.java b/guava-tests/test/com/google/common/primitives/ShortArrayAsListTest.java
index 9a1fada..3808e05 100644
--- a/guava-tests/test/com/google/common/primitives/ShortArrayAsListTest.java
+++ b/guava-tests/test/com/google/common/primitives/ShortArrayAsListTest.java
@@ -18,9 +18,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.ListTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestListGenerator;
@@ -37,7 +34,6 @@ import junit.framework.TestSuite;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 public class ShortArrayAsListTest extends TestCase {
 
   private static List<Short> asList(Short[] values) {
@@ -48,7 +44,7 @@ public class ShortArrayAsListTest extends TestCase {
     return Shorts.asList(temp);
   }
 
-  @GwtIncompatible // suite
+  // suite
   public static Test suite() {
     List<ListTestSuiteBuilder<Short>> builders =
         ImmutableList.of(
diff --git a/guava-tests/test/com/google/common/primitives/ShortsTest.java b/guava-tests/test/com/google/common/primitives/ShortsTest.java
index 0816c69..d1590c2 100644
--- a/guava-tests/test/com/google/common/primitives/ShortsTest.java
+++ b/guava-tests/test/com/google/common/primitives/ShortsTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
@@ -35,7 +33,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class ShortsTest extends TestCase {
   private static final short[] EMPTY = {};
@@ -175,7 +172,6 @@ public class ShortsTest extends TestCase {
         3, Shorts.lastIndexOf(new short[] {(short) 2, (short) 3, (short) 2, (short) 3}, (short) 3));
   }
 
-  @GwtIncompatible
   public void testMax_noArgs() {
     try {
       Shorts.max();
@@ -192,7 +188,6 @@ public class ShortsTest extends TestCase {
         Shorts.max((short) 8, (short) 6, (short) 7, (short) 5, (short) 3, (short) 0, (short) 9));
   }
 
-  @GwtIncompatible
   public void testMin_noArgs() {
     try {
       Shorts.min();
@@ -238,20 +233,20 @@ public class ShortsTest extends TestCase {
             Shorts.concat(ARRAY1, ARRAY234)));
   }
 
-  @GwtIncompatible // Shorts.toByteArray
+  // Shorts.toByteArray
   public void testToByteArray() {
     assertTrue(Arrays.equals(new byte[] {0x23, 0x45}, Shorts.toByteArray((short) 0x2345)));
     assertTrue(
         Arrays.equals(new byte[] {(byte) 0xFE, (byte) 0xDC}, Shorts.toByteArray((short) 0xFEDC)));
   }
 
-  @GwtIncompatible // Shorts.fromByteArray
+  // Shorts.fromByteArray
   public void testFromByteArray() {
     assertEquals((short) 0x2345, Shorts.fromByteArray(new byte[] {0x23, 0x45}));
     assertEquals((short) 0xFEDC, Shorts.fromByteArray(new byte[] {(byte) 0xFE, (byte) 0xDC}));
   }
 
-  @GwtIncompatible // Shorts.fromByteArray
+  // Shorts.fromByteArray
   public void testFromByteArrayFails() {
     try {
       Shorts.fromByteArray(new byte[] {0x01});
@@ -260,13 +255,13 @@ public class ShortsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Shorts.fromBytes
+  // Shorts.fromBytes
   public void testFromBytes() {
     assertEquals((short) 0x2345, Shorts.fromBytes((byte) 0x23, (byte) 0x45));
     assertEquals((short) 0xFEDC, Shorts.fromBytes((byte) 0xFE, (byte) 0xDC));
   }
 
-  @GwtIncompatible // Shorts.fromByteArray, Shorts.toByteArray
+  // Shorts.fromByteArray, Shorts.toByteArray
   public void testByteArrayRoundTrips() {
     Random r = new Random(5);
     byte[] b = new byte[Shorts.BYTES];
@@ -328,7 +323,7 @@ public class ShortsTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<short[]> comparator = Shorts.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -394,7 +389,7 @@ public class ShortsTest extends TestCase {
     testSortDescending(new short[] {-1, -2, 1, 2}, 1, 3, new short[] {-1, 1, -2, 2});
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testStringConverterSerialization() {
     SerializableTester.reserializeAndAssert(Shorts.stringConverter());
   }
@@ -491,7 +486,7 @@ public class ShortsTest extends TestCase {
     assertSame(Collections.emptyList(), Shorts.asList(EMPTY));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(Shorts.class);
   }
@@ -532,7 +527,7 @@ public class ShortsTest extends TestCase {
     assertEquals("438", converter.reverse().convert((short) 0666));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testStringConverter_nullPointerTester() throws Exception {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicInstanceMethods(Shorts.stringConverter());
diff --git a/guava-tests/test/com/google/common/primitives/SignedBytesTest.java b/guava-tests/test/com/google/common/primitives/SignedBytesTest.java
index 86c2ce6..a7351ac 100644
--- a/guava-tests/test/com/google/common/primitives/SignedBytesTest.java
+++ b/guava-tests/test/com/google/common/primitives/SignedBytesTest.java
@@ -16,8 +16,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -31,7 +29,6 @@ import junit.framework.TestCase;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("cast") // redundant casts are intentional and harmless
 public class SignedBytesTest extends TestCase {
   private static final byte[] EMPTY = {};
@@ -147,7 +144,7 @@ public class SignedBytesTest extends TestCase {
     Helpers.testComparator(comparator, ordered);
   }
 
-  @GwtIncompatible // SerializableTester
+  // SerializableTester
   public void testLexicographicalComparatorSerializable() {
     Comparator<byte[]> comparator = SignedBytes.lexicographicalComparator();
     assertSame(comparator, SerializableTester.reserialize(comparator));
@@ -183,7 +180,7 @@ public class SignedBytesTest extends TestCase {
     testSortDescending(new byte[] {-1, -2, 1, 2}, 1, 3, new byte[] {-1, 1, -2, 2});
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(SignedBytes.class);
   }
diff --git a/guava-tests/test/com/google/common/primitives/TestPlatform.java b/guava-tests/test/com/google/common/primitives/TestPlatform.java
index 094c9d7..e980bf0 100644
--- a/guava-tests/test/com/google/common/primitives/TestPlatform.java
+++ b/guava-tests/test/com/google/common/primitives/TestPlatform.java
@@ -16,9 +16,7 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
-@GwtCompatible(emulated = true)
 class TestPlatform {
   static int reduceIterationsIfGwt(int iterations) {
     return iterations;
diff --git a/guava-tests/test/com/google/common/primitives/UnsignedIntegerTest.java b/guava-tests/test/com/google/common/primitives/UnsignedIntegerTest.java
index 04bf27d..f9f344f 100644
--- a/guava-tests/test/com/google/common/primitives/UnsignedIntegerTest.java
+++ b/guava-tests/test/com/google/common/primitives/UnsignedIntegerTest.java
@@ -14,9 +14,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -28,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class UnsignedIntegerTest extends TestCase {
   private static final ImmutableSet<Integer> TEST_INTS;
   private static final ImmutableSet<Long> TEST_LONGS;
@@ -106,7 +102,7 @@ public class UnsignedIntegerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testToStringRadix() {
     for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX; radix++) {
       for (int l : TEST_INTS) {
@@ -165,7 +161,7 @@ public class UnsignedIntegerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // multiply
+  // multiply
   public void testTimes() {
     for (int a : TEST_INTS) {
       for (int b : TEST_INTS) {
@@ -239,7 +235,7 @@ public class UnsignedIntegerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testEquals() {
     EqualsTester equalsTester = new EqualsTester();
     for (int a : TEST_INTS) {
@@ -261,14 +257,14 @@ public class UnsignedIntegerTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   public void testSerialization() {
     for (int a : TEST_INTS) {
       SerializableTester.reserializeAndAssert(UnsignedInteger.fromIntBits(a));
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(UnsignedInteger.class);
   }
diff --git a/guava-tests/test/com/google/common/primitives/UnsignedIntsTest.java b/guava-tests/test/com/google/common/primitives/UnsignedIntsTest.java
index 0d0b380..9f8c750 100644
--- a/guava-tests/test/com/google/common/primitives/UnsignedIntsTest.java
+++ b/guava-tests/test/com/google/common/primitives/UnsignedIntsTest.java
@@ -16,8 +16,6 @@ package com.google.common.primitives;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import java.util.Arrays;
@@ -31,7 +29,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class UnsignedIntsTest extends TestCase {
   private static final long[] UNSIGNED_INTS = {
     0L,
@@ -245,7 +242,7 @@ public class UnsignedIntsTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // Too slow in GWT (~3min fully optimized)
+  // Too slow in GWT (~3min fully optimized)
   public void testDivideRemainderEuclideanProperty() {
     // Use a seed so that the test is deterministic:
     Random r = new Random(0L);
@@ -383,7 +380,7 @@ public class UnsignedIntsTest extends TestCase {
     return UnsignedInts.join(",", values);
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(UnsignedInts.class);
   }
diff --git a/guava-tests/test/com/google/common/primitives/UnsignedLongTest.java b/guava-tests/test/com/google/common/primitives/UnsignedLongTest.java
index cfa2862..0867f04 100644
--- a/guava-tests/test/com/google/common/primitives/UnsignedLongTest.java
+++ b/guava-tests/test/com/google/common/primitives/UnsignedLongTest.java
@@ -14,9 +14,6 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -28,7 +25,6 @@ import junit.framework.TestCase;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class UnsignedLongTest extends TestCase {
   private static final ImmutableSet<Long> TEST_LONGS;
   private static final ImmutableSet<BigInteger> TEST_BIG_INTEGERS;
@@ -120,7 +116,7 @@ public class UnsignedLongTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testToStringRadix() {
     for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX; radix++) {
       for (long l : TEST_LONGS) {
@@ -263,7 +259,7 @@ public class UnsignedLongTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // too slow
+  // too slow
   public void testEquals() {
     EqualsTester equalsTester = new EqualsTester();
     for (long a : TEST_LONGS) {
@@ -286,14 +282,14 @@ public class UnsignedLongTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   public void testSerialization() {
     for (long a : TEST_LONGS) {
       SerializableTester.reserializeAndAssert(UnsignedLong.fromLongBits(a));
     }
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(UnsignedLong.class);
   }
diff --git a/guava-tests/test/com/google/common/primitives/UnsignedLongsTest.java b/guava-tests/test/com/google/common/primitives/UnsignedLongsTest.java
index a8b7995..e98c303 100644
--- a/guava-tests/test/com/google/common/primitives/UnsignedLongsTest.java
+++ b/guava-tests/test/com/google/common/primitives/UnsignedLongsTest.java
@@ -16,8 +16,6 @@ package com.google.common.primitives;
 
 import static java.math.BigInteger.ONE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.testing.Helpers;
 import com.google.common.testing.NullPointerTester;
 import java.math.BigInteger;
@@ -33,7 +31,6 @@ import junit.framework.TestCase;
  * @author Brian Milch
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 public class UnsignedLongsTest extends TestCase {
   private static final long LEAST = 0L;
   private static final long GREATEST = 0xffffffffffffffffL;
@@ -193,7 +190,7 @@ public class UnsignedLongsTest extends TestCase {
     assertEquals(4, UnsignedLongs.remainder(0xfffffffffffffffeL, 5));
   }
 
-  @GwtIncompatible // Too slow in GWT (~3min fully optimized)
+  // Too slow in GWT (~3min fully optimized)
   public void testDivideRemainderEuclideanProperty() {
     // Use a seed so that the test is deterministic:
     Random r = new Random(0L);
@@ -353,7 +350,7 @@ public class UnsignedLongsTest extends TestCase {
         "184467440737095516159223372036854775808", UnsignedLongs.join("", -1, Long.MIN_VALUE));
   }
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     new NullPointerTester().testAllPublicStaticMethods(UnsignedLongs.class);
   }
diff --git a/guava-tests/test/com/google/common/reflect/AbstractInvocationHandlerTest.java b/guava-tests/test/com/google/common/reflect/AbstractInvocationHandlerTest.java
index 56b20bd..8cb71b4 100644
--- a/guava-tests/test/com/google/common/reflect/AbstractInvocationHandlerTest.java
+++ b/guava-tests/test/com/google/common/reflect/AbstractInvocationHandlerTest.java
@@ -18,7 +18,6 @@ package com.google.common.reflect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.SerializableTester;
 import java.io.Serializable;
diff --git a/guava-tests/test/com/google/common/reflect/AndroidIncompatible.java b/guava-tests/test/com/google/common/reflect/AndroidIncompatible.java
index 7dae25d..a6916f0 100644
--- a/guava-tests/test/com/google/common/reflect/AndroidIncompatible.java
+++ b/guava-tests/test/com/google/common/reflect/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-tests/test/com/google/common/reflect/ClassPathTest.java b/guava-tests/test/com/google/common/reflect/ClassPathTest.java
index 797baeb..5f77c07 100644
--- a/guava-tests/test/com/google/common/reflect/ClassPathTest.java
+++ b/guava-tests/test/com/google/common/reflect/ClassPathTest.java
@@ -27,8 +27,6 @@ import static java.nio.file.Files.createTempDirectory;
 import static java.util.logging.Level.WARNING;
 
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.io.Closer;
 import com.google.common.io.Files;
 import com.google.common.io.Resources;
diff --git a/guava-tests/test/com/google/common/reflect/ImmutableTypeToInstanceMapTest.java b/guava-tests/test/com/google/common/reflect/ImmutableTypeToInstanceMapTest.java
index 064c4b5..16113ab 100644
--- a/guava-tests/test/com/google/common/reflect/ImmutableTypeToInstanceMapTest.java
+++ b/guava-tests/test/com/google/common/reflect/ImmutableTypeToInstanceMapTest.java
@@ -19,7 +19,6 @@ package com.google.common.reflect;
 import static com.google.common.collect.Maps.immutableEntry;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.testing.MapTestSuiteBuilder;
 import com.google.common.collect.testing.SampleElements;
 import com.google.common.collect.testing.TestMapGenerator;
diff --git a/guava-tests/test/com/google/common/reflect/InvokableTest.java b/guava-tests/test/com/google/common/reflect/InvokableTest.java
index 3e51c82..d6294bb 100644
--- a/guava-tests/test/com/google/common/reflect/InvokableTest.java
+++ b/guava-tests/test/com/google/common/reflect/InvokableTest.java
@@ -18,8 +18,6 @@ package com.google.common.reflect;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
@@ -33,7 +31,6 @@ import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.TypeVariable;
 import java.util.Collections;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Unit tests for {@link Invokable}.
diff --git a/guava-tests/test/com/google/common/reflect/MutableTypeToInstanceMapTest.java b/guava-tests/test/com/google/common/reflect/MutableTypeToInstanceMapTest.java
index cea81e3..8c632e9 100644
--- a/guava-tests/test/com/google/common/reflect/MutableTypeToInstanceMapTest.java
+++ b/guava-tests/test/com/google/common/reflect/MutableTypeToInstanceMapTest.java
@@ -19,13 +19,10 @@ package com.google.common.reflect;
 import static com.google.common.collect.Maps.immutableEntry;
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.testing.MapTestSuiteBuilder;
 import com.google.common.collect.testing.features.CollectionFeature;
 import com.google.common.collect.testing.features.CollectionSize;
 import com.google.common.collect.testing.features.MapFeature;
-import com.google.common.reflect.ImmutableTypeToInstanceMapTest.TestTypeToInstanceMapGenerator;
 import java.util.Map;
 import java.util.Map.Entry;
 import junit.framework.Test;
diff --git a/guava-tests/test/com/google/common/reflect/TypeTokenTest.java b/guava-tests/test/com/google/common/reflect/TypeTokenTest.java
index 171ef49..b45d8ff 100644
--- a/guava-tests/test/com/google/common/reflect/TypeTokenTest.java
+++ b/guava-tests/test/com/google/common/reflect/TypeTokenTest.java
@@ -19,16 +19,12 @@ package com.google.common.reflect;
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.primitives.Primitives;
 import com.google.common.testing.EqualsTester;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
 import com.google.common.truth.IterableSubject;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
@@ -1860,7 +1856,6 @@ public class TypeTokenTest extends TestCase {
     }
   }
 
-  @CanIgnoreReturnValue
   private static <T> T reserialize(T object) {
     T copy = SerializableTester.reserialize(object);
     new EqualsTester().addEqualityGroup(object, copy).testEquals();
diff --git a/guava-tests/test/com/google/common/util/concurrent/AbstractAbstractFutureTest.java b/guava-tests/test/com/google/common/util/concurrent/AbstractAbstractFutureTest.java
index f49b962..f2d6125 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AbstractAbstractFutureTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AbstractAbstractFutureTest.java
@@ -27,8 +27,6 @@ import static com.google.common.util.concurrent.TestPlatform.verifyTimedGetOnPen
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.util.concurrent.AbstractFutureTest.TimedWaiterThread;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
@@ -39,7 +37,6 @@ import junit.framework.TestCase;
  * Base class for tests for emulated {@link AbstractFuture} that allow subclasses to swap in a
  * different "source Future" for {@link AbstractFuture#setFuture} calls.
  */
-@GwtCompatible(emulated = true)
 abstract class AbstractAbstractFutureTest extends TestCase {
   private TestedFuture<Integer> future;
   private AbstractFuture<Integer> delegate;
@@ -358,7 +355,7 @@ abstract class AbstractAbstractFutureTest extends TestCase {
     assertEquals(1, future.get(-1, SECONDS).intValue());
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testOverflowTimeout() throws Exception {
     // First, sanity check that naive multiplication would really overflow to a negative number:
diff --git a/guava-tests/test/com/google/common/util/concurrent/AbstractFutureBenchmarks.java b/guava-tests/test/com/google/common/util/concurrent/AbstractFutureBenchmarks.java
index d90c5bb..d39a543 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AbstractFutureBenchmarks.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AbstractFutureBenchmarks.java
@@ -18,35 +18,29 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.locks.AbstractQueuedSynchronizer;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Utilities for the AbstractFutureBenchmarks */
 final class AbstractFutureBenchmarks {
   private AbstractFutureBenchmarks() {}
 
   interface Facade<T> extends ListenableFuture<T> {
-    @CanIgnoreReturnValue
     boolean set(T t);
 
-    @CanIgnoreReturnValue
     boolean setException(Throwable t);
   }
 
   private static class NewAbstractFutureFacade<T> extends AbstractFuture<T> implements Facade<T> {
-    @CanIgnoreReturnValue
     @Override
     public boolean set(T t) {
       return super.set(t);
     }
 
-    @CanIgnoreReturnValue
     @Override
     public boolean setException(Throwable t) {
       return super.setException(t);
@@ -55,13 +49,11 @@ final class AbstractFutureBenchmarks {
 
   private static class OldAbstractFutureFacade<T> extends OldAbstractFuture<T>
       implements Facade<T> {
-    @CanIgnoreReturnValue
     @Override
     public boolean set(T t) {
       return super.set(t);
     }
 
-    @CanIgnoreReturnValue
     @Override
     public boolean setException(Throwable t) {
       return super.setException(t);
@@ -127,7 +119,6 @@ final class AbstractFutureBenchmarks {
      *     (optional but recommended).
      * @throws CancellationException {@inheritDoc}
      */
-    @CanIgnoreReturnValue
     @Override
     public V get(long timeout, TimeUnit unit)
         throws InterruptedException, TimeoutException, ExecutionException {
@@ -149,7 +140,6 @@ final class AbstractFutureBenchmarks {
      *     (optional but recommended).
      * @throws CancellationException {@inheritDoc}
      */
-    @CanIgnoreReturnValue
     @Override
     public V get() throws InterruptedException, ExecutionException {
       return sync.get();
@@ -165,7 +155,6 @@ final class AbstractFutureBenchmarks {
       return sync.isCancelled();
     }
 
-    @CanIgnoreReturnValue
     @Override
     public boolean cancel(boolean mayInterruptIfRunning) {
       if (!sync.cancel(mayInterruptIfRunning)) {
@@ -217,7 +206,6 @@ final class AbstractFutureBenchmarks {
      * @param value the value that was the result of the task.
      * @return true if the state was successfully changed.
      */
-    @CanIgnoreReturnValue
     protected boolean set(@Nullable V value) {
       boolean result = sync.set(value);
       if (result) {
@@ -234,7 +222,6 @@ final class AbstractFutureBenchmarks {
      * @param throwable the exception that the task failed with.
      * @return true if the state was successfully changed.
      */
-    @CanIgnoreReturnValue
     protected boolean setException(Throwable throwable) {
       boolean result = sync.setException(checkNotNull(throwable));
       if (result) {
diff --git a/guava-tests/test/com/google/common/util/concurrent/AbstractFutureCancellationCauseTest.java b/guava-tests/test/com/google/common/util/concurrent/AbstractFutureCancellationCauseTest.java
index 6c921b5..d9121bf 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AbstractFutureCancellationCauseTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AbstractFutureCancellationCauseTest.java
@@ -26,7 +26,6 @@ import java.util.concurrent.CancellationException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
-import javax.annotation.concurrent.GuardedBy;
 import junit.framework.TestCase;
 
 /** Tests for {@link AbstractFuture} with the cancellation cause system property set */
@@ -49,7 +48,6 @@ public class AbstractFutureCancellationCauseTest extends TestCase {
     final String concurrentPackage = SettableFuture.class.getPackage().getName();
     classReloader =
         new URLClassLoader(ClassPathUtil.getClassPathUrls()) {
-          @GuardedBy("loadedClasses")
           final Map<String, Class<?>> loadedClasses = new HashMap<>();
 
           @Override
diff --git a/guava-tests/test/com/google/common/util/concurrent/AbstractFutureFallbackAtomicHelperTest.java b/guava-tests/test/com/google/common/util/concurrent/AbstractFutureFallbackAtomicHelperTest.java
index 208cf24..3f2bf91 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AbstractFutureFallbackAtomicHelperTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AbstractFutureFallbackAtomicHelperTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.collect.ImmutableSet;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
diff --git a/guava-tests/test/com/google/common/util/concurrent/AbstractFutureInnocuousThreadTest.java b/guava-tests/test/com/google/common/util/concurrent/AbstractFutureInnocuousThreadTest.java
index e49af23..2f2b549 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AbstractFutureInnocuousThreadTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AbstractFutureInnocuousThreadTest.java
@@ -25,7 +25,6 @@ import java.util.PropertyPermission;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.TimeUnit;
-import javax.annotation.concurrent.GuardedBy;
 import junit.framework.TestCase;
 
 /** Tests for {@link AbstractFuture} using an innocuous thread. */
@@ -47,7 +46,6 @@ public class AbstractFutureInnocuousThreadTest extends TestCase {
     final String concurrentPackage = SettableFuture.class.getPackage().getName();
     classReloader =
         new URLClassLoader(ClassPathUtil.getClassPathUrls()) {
-          @GuardedBy("loadedClasses")
           final Map<String, Class<?>> loadedClasses = new HashMap<>();
 
           @Override
diff --git a/guava-tests/test/com/google/common/util/concurrent/AbstractFutureTest.java b/guava-tests/test/com/google/common/util/concurrent/AbstractFutureTest.java
index e55a31e..6108732 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AbstractFutureTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AbstractFutureTest.java
@@ -19,7 +19,6 @@ package com.google.common.util.concurrent;
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Range;
 import com.google.common.collect.Sets;
@@ -839,7 +838,6 @@ public class AbstractFutureTest extends TestCase {
 
   // Verify that StackOverflowError in a long chain of SetFuture doesn't cause the entire toString
   // call to fail
-  @GwtIncompatible
   @AndroidIncompatible
   public void testSetFutureToString_stackOverflow() {
     SettableFuture<String> orig = SettableFuture.create();
diff --git a/guava-tests/test/com/google/common/util/concurrent/AbstractListeningExecutorServiceTest.java b/guava-tests/test/com/google/common/util/concurrent/AbstractListeningExecutorServiceTest.java
index 139581f..7571746 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AbstractListeningExecutorServiceTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AbstractListeningExecutorServiceTest.java
@@ -18,7 +18,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.collect.ImmutableList;
 import java.util.List;
 import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
diff --git a/guava-tests/test/com/google/common/util/concurrent/AbstractServiceTest.java b/guava-tests/test/com/google/common/util/concurrent/AbstractServiceTest.java
index e3c22a8..30f09c6 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AbstractServiceTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AbstractServiceTest.java
@@ -21,12 +21,10 @@ import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static java.lang.Thread.currentThread;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.Service.Listener;
 import com.google.common.util.concurrent.Service.State;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
@@ -831,7 +829,6 @@ public class AbstractServiceTest extends TestCase {
       this.service = service;
     }
 
-    @GuardedBy("this")
     final List<State> stateHistory = Lists.newArrayList();
 
     final CountDownLatch completionLatch = new CountDownLatch(1);
diff --git a/guava-tests/test/com/google/common/util/concurrent/AggregateFutureStateFallbackAtomicHelperTest.java b/guava-tests/test/com/google/common/util/concurrent/AggregateFutureStateFallbackAtomicHelperTest.java
index fec9394..ec40dbb 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AggregateFutureStateFallbackAtomicHelperTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AggregateFutureStateFallbackAtomicHelperTest.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.collect.ImmutableSet;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
diff --git a/guava-tests/test/com/google/common/util/concurrent/AndroidIncompatible.java b/guava-tests/test/com/google/common/util/concurrent/AndroidIncompatible.java
index b18a153..f0cfe2b 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AndroidIncompatible.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AndroidIncompatible.java
@@ -23,7 +23,6 @@ import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
@@ -37,5 +36,4 @@ import java.lang.annotation.Target;
  */
 @Retention(CLASS)
 @Target({ANNOTATION_TYPE, CONSTRUCTOR, FIELD, METHOD, TYPE})
-@GwtCompatible
 @interface AndroidIncompatible {}
diff --git a/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapBasherTest.java b/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapBasherTest.java
index 4765825..b87b680 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapBasherTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapBasherTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Random;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -30,7 +29,7 @@ import junit.framework.TestCase;
  *
  * @author mike nonemacher
  */
-@GwtIncompatible // threads
+// threads
 
 public class AtomicLongMapBasherTest extends TestCase {
   private final Random random = new Random(301);
diff --git a/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapTest.java b/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapTest.java
index 587a4ec..926a309 100644
--- a/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/AtomicLongMapTest.java
@@ -16,9 +16,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Sets;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.SerializableTester;
@@ -32,14 +29,13 @@ import junit.framework.TestCase;
  *
  * @author mike nonemacher
  */
-@GwtCompatible(emulated = true)
 public class AtomicLongMapTest extends TestCase {
   private static final int ITERATIONS = 100;
   private static final int MAX_ADDEND = 100;
 
   private final Random random = new Random(301);
 
-  @GwtIncompatible // NullPointerTester
+  // NullPointerTester
   public void testNulls() {
     NullPointerTester tester = new NullPointerTester();
     tester.testAllPublicConstructors(AtomicLongMap.class);
diff --git a/guava-tests/test/com/google/common/util/concurrent/CallablesTest.java b/guava-tests/test/com/google/common/util/concurrent/CallablesTest.java
index 5bc92dc..861b664 100644
--- a/guava-tests/test/com/google/common/util/concurrent/CallablesTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/CallablesTest.java
@@ -18,8 +18,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Supplier;
 import com.google.common.base.Suppliers;
 import java.security.Permission;
@@ -32,7 +30,6 @@ import junit.framework.TestCase;
  *
  * @author Isaac Shum
  */
-@GwtCompatible(emulated = true)
 public class CallablesTest extends TestCase {
 
   public void testReturning() throws Exception {
@@ -45,7 +42,6 @@ public class CallablesTest extends TestCase {
     assertSame(value, callable.call());
   }
 
-  @GwtIncompatible
   public void testAsAsyncCallable() throws Exception {
     final String expected = "MyCallableString";
     Callable<String> callable =
@@ -63,7 +59,6 @@ public class CallablesTest extends TestCase {
     assertSame(expected, future.get());
   }
 
-  @GwtIncompatible
   public void testAsAsyncCallable_exception() throws Exception {
     final Exception expected = new IllegalArgumentException();
     Callable<String> callable =
@@ -86,7 +81,7 @@ public class CallablesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
   public void testRenaming() throws Exception {
     String oldName = Thread.currentThread().getName();
     final Supplier<String> newName = Suppliers.ofInstance("MyCrazyThreadName");
@@ -102,7 +97,7 @@ public class CallablesTest extends TestCase {
     assertEquals(oldName, Thread.currentThread().getName());
   }
 
-  @GwtIncompatible // threads
+  // threads
   public void testRenaming_exceptionalReturn() throws Exception {
     String oldName = Thread.currentThread().getName();
     final Supplier<String> newName = Suppliers.ofInstance("MyCrazyThreadName");
@@ -123,7 +118,7 @@ public class CallablesTest extends TestCase {
     assertEquals(oldName, Thread.currentThread().getName());
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testRenaming_noPermissions() throws Exception {
     System.setSecurityManager(
diff --git a/guava-tests/test/com/google/common/util/concurrent/ClassPathUtil.java b/guava-tests/test/com/google/common/util/concurrent/ClassPathUtil.java
index a36aa34..9642270 100644
--- a/guava-tests/test/com/google/common/util/concurrent/ClassPathUtil.java
+++ b/guava-tests/test/com/google/common/util/concurrent/ClassPathUtil.java
@@ -18,7 +18,6 @@ import static com.google.common.base.StandardSystemProperty.JAVA_CLASS_PATH;
 import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR;
 
 import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableList;
 import java.io.File;
 import java.net.MalformedURLException;
 import java.net.URL;
diff --git a/guava-tests/test/com/google/common/util/concurrent/ClosingFutureTest.java b/guava-tests/test/com/google/common/util/concurrent/ClosingFutureTest.java
index ab0e5f8..0bf714e 100644
--- a/guava-tests/test/com/google/common/util/concurrent/ClosingFutureTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/ClosingFutureTest.java
@@ -34,7 +34,6 @@ import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.verify;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.reflect.Reflection;
 import com.google.common.truth.FailureStrategy;
 import com.google.common.truth.StandardSubjectBuilder;
diff --git a/guava-tests/test/com/google/common/util/concurrent/ExecutionSequencerTest.java b/guava-tests/test/com/google/common/util/concurrent/ExecutionSequencerTest.java
index 1c03f5a..6055c54 100644
--- a/guava-tests/test/com/google/common/util/concurrent/ExecutionSequencerTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/ExecutionSequencerTest.java
@@ -20,12 +20,9 @@ import static com.google.common.util.concurrent.Futures.getDone;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.testing.GcFinalization;
 import com.google.common.testing.TestLogHandler;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
-import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -149,8 +146,7 @@ public class ExecutionSequencerTest extends TestCase {
     assertThat(getDone(future2)).isFalse();
   }
 
-  @GwtIncompatible
-  @J2ObjCIncompatible // gc
+  // gc
   @AndroidIncompatible
   public void testCancellationWithReferencedObject() throws Exception {
     Object toBeGCed = new Object();
@@ -326,7 +322,7 @@ public class ExecutionSequencerTest extends TestCase {
   private static final int ITERATION_COUNT = 50_000;
   private static final int DIRECT_EXECUTIONS_PER_THREAD = 100;
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testAvoidsStackOverflow_multipleThreads() throws Exception {
     final LongHolder holder = new LongHolder();
diff --git a/guava-tests/test/com/google/common/util/concurrent/FluentFutureTest.java b/guava-tests/test/com/google/common/util/concurrent/FluentFutureTest.java
index cc4751d..e7ff42b 100644
--- a/guava-tests/test/com/google/common/util/concurrent/FluentFutureTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/FluentFutureTest.java
@@ -24,8 +24,6 @@ import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static java.util.concurrent.Executors.newScheduledThreadPool;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture;
 import java.util.concurrent.ExecutionException;
@@ -37,7 +35,6 @@ import junit.framework.TestCase;
  * Tests for {@link FluentFuture}. The tests cover only the basics for the API. The actual logic is
  * tested in {@link FuturesTest}.
  */
-@GwtCompatible(emulated = true)
 public class FluentFutureTest extends TestCase {
   public void testFromFluentFuture() {
     FluentFuture<String> f = FluentFuture.from(SettableFuture.<String>create());
@@ -133,7 +130,7 @@ public class FluentFutureTest extends TestCase {
   }
 
 
-  @GwtIncompatible // withTimeout
+  // withTimeout
   public void testWithTimeout() throws Exception {
     ScheduledExecutorService executor = newScheduledThreadPool(1);
     try {
diff --git a/guava-tests/test/com/google/common/util/concurrent/FutureCallbackTest.java b/guava-tests/test/com/google/common/util/concurrent/FutureCallbackTest.java
index 22eba9b..fa2fdd6 100644
--- a/guava-tests/test/com/google/common/util/concurrent/FutureCallbackTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/FutureCallbackTest.java
@@ -20,12 +20,9 @@ import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.util.concurrent.Futures.addCallback;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.Executor;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 import org.mockito.Mockito;
 
 /**
@@ -33,7 +30,6 @@ import org.mockito.Mockito;
  *
  * @author Anthony Zana
  */
-@GwtCompatible(emulated = true)
 public class FutureCallbackTest extends TestCase {
   public void testSameThreadSuccess() {
     SettableFuture<String> f = SettableFuture.create();
@@ -96,7 +92,7 @@ public class FutureCallbackTest extends TestCase {
     addCallback(f, callback, directExecutor());
   }
 
-  @GwtIncompatible // Mockito
+  // Mockito
   public void testOnSuccessThrowsRuntimeException() throws Exception {
     RuntimeException exception = new RuntimeException();
     String result = "result";
@@ -111,7 +107,7 @@ public class FutureCallbackTest extends TestCase {
     Mockito.verifyNoMoreInteractions(callback);
   }
 
-  @GwtIncompatible // Mockito
+  // Mockito
   public void testOnSuccessThrowsError() throws Exception {
     class TestError extends Error {}
     TestError error = new TestError();
@@ -157,8 +153,8 @@ public class FutureCallbackTest extends TestCase {
   }
 
   private final class MockCallback implements FutureCallback<String> {
-    @Nullable private String value = null;
-    @Nullable private Throwable failure = null;
+    private String value = null;
+    private Throwable failure = null;
     private boolean wasCalled = false;
 
     MockCallback(String expectedValue) {
diff --git a/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedInputs.java b/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedInputs.java
index 27916d8..a569330 100644
--- a/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedInputs.java
+++ b/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedInputs.java
@@ -16,13 +16,11 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.util.concurrent.Futures.immediateFailedFuture;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.Future;
 
 /**
  * Classes and futures used in {@link FuturesGetCheckedTest} and {@link FuturesGetUncheckedTest}.
  */
-@GwtCompatible
 final class FuturesGetCheckedInputs {
   static final Exception CHECKED_EXCEPTION = new Exception("mymessage");
   static final Future<String> FAILED_FUTURE_CHECKED_EXCEPTION =
diff --git a/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedTest.java b/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedTest.java
index 3bc69bd..e2f1ff7 100644
--- a/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/FuturesGetCheckedTest.java
@@ -41,7 +41,6 @@ import com.google.common.util.concurrent.FuturesGetCheckedInputs.ExceptionWithWr
 import com.google.common.util.concurrent.FuturesGetCheckedInputs.ExceptionWithoutThrowableConstructor;
 import com.google.common.util.concurrent.FuturesGetCheckedInputs.TwoArgConstructorException;
 import com.google.common.util.concurrent.FuturesGetCheckedInputs.TwoArgConstructorRuntimeException;
-import java.lang.ref.WeakReference;
 import java.net.URLClassLoader;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.Future;
diff --git a/guava-tests/test/com/google/common/util/concurrent/FuturesGetDoneTest.java b/guava-tests/test/com/google/common/util/concurrent/FuturesGetDoneTest.java
index cf9cb9d..8ab42a4 100644
--- a/guava-tests/test/com/google/common/util/concurrent/FuturesGetDoneTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/FuturesGetDoneTest.java
@@ -20,13 +20,11 @@ import static com.google.common.util.concurrent.Futures.immediateCancelledFuture
 import static com.google.common.util.concurrent.Futures.immediateFailedFuture;
 import static com.google.common.util.concurrent.Futures.immediateFuture;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import junit.framework.TestCase;
 
 /** Unit tests for {@link Futures#getDone}. */
-@GwtCompatible
 public class FuturesGetDoneTest extends TestCase {
   public void testSuccessful() throws ExecutionException {
     assertThat(getDone(immediateFuture("a"))).isEqualTo("a");
diff --git a/guava-tests/test/com/google/common/util/concurrent/FuturesGetUncheckedTest.java b/guava-tests/test/com/google/common/util/concurrent/FuturesGetUncheckedTest.java
index 93baaf6..ab31320 100644
--- a/guava-tests/test/com/google/common/util/concurrent/FuturesGetUncheckedTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/FuturesGetUncheckedTest.java
@@ -28,20 +28,17 @@ import static com.google.common.util.concurrent.FuturesGetCheckedInputs.RUNTIME_
 import static com.google.common.util.concurrent.FuturesGetCheckedInputs.RUNTIME_EXCEPTION_FUTURE;
 import static com.google.common.util.concurrent.FuturesGetCheckedInputs.UNCHECKED_EXCEPTION;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.Future;
 import junit.framework.TestCase;
 
 /** Unit tests for {@link Futures#getUnchecked(Future)}. */
-@GwtCompatible(emulated = true)
 public class FuturesGetUncheckedTest extends TestCase {
   public void testGetUnchecked_success() {
     assertEquals("foo", getUnchecked(immediateFuture("foo")));
   }
 
-  @GwtIncompatible // Thread.interrupt
+  // Thread.interrupt
   public void testGetUnchecked_interrupted() {
     Thread.currentThread().interrupt();
     try {
diff --git a/guava-tests/test/com/google/common/util/concurrent/FuturesTest.java b/guava-tests/test/com/google/common/util/concurrent/FuturesTest.java
index 0c3a9ae..5dd0eb6 100644
--- a/guava-tests/test/com/google/common/util/concurrent/FuturesTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/FuturesTest.java
@@ -55,21 +55,15 @@ import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
 import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.testing.ClassSanityTester;
 import com.google.common.testing.GcFinalization;
 import com.google.common.testing.TestLogHandler;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.lang.ref.WeakReference;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.Callable;
@@ -89,14 +83,12 @@ import java.util.logging.LogRecord;
 import java.util.logging.Logger;
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Unit tests for {@link Futures}.
  *
  * @author Nishant Thakkar
  */
-@GwtCompatible(emulated = true)
 public class FuturesTest extends TestCase {
   private static final Logger aggregateFutureLogger =
       Logger.getLogger(AggregateFuture.class.getName());
@@ -193,7 +185,6 @@ public class FuturesTest extends TestCase {
     assertTrue(future.isCancelled());
   }
 
-  @GwtIncompatible
   public void testImmediateCancelledFutureStack() throws Exception {
     ListenableFuture<String> future = CallerClass1.makeImmediateCancelledFuture();
     assertTrue(future.isCancelled());
@@ -214,7 +205,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static Predicate<StackTraceElement> hasClassName(final Class<?> clazz) {
     return new Predicate<StackTraceElement>() {
       @Override
@@ -231,7 +222,6 @@ public class FuturesTest extends TestCase {
   }
 
   private static final class CallerClass2 {
-    @CanIgnoreReturnValue
     static <V> V get(ListenableFuture<V> future) throws ExecutionException, InterruptedException {
       return getDone(future);
     }
@@ -273,7 +263,7 @@ public class FuturesTest extends TestCase {
    * stack-overflow tests work. It must depend on the exact place the error occurs.
    */
   @AndroidIncompatible
-  @GwtIncompatible // StackOverflowError
+  // StackOverflowError
   public void testTransform_StackOverflow() throws Exception {
     {
       /*
@@ -409,7 +399,7 @@ public class FuturesTest extends TestCase {
     assertTrue(input.wasInterrupted());
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testTransformAsync_interruptPropagatesToTransformingThread() throws Exception {
     SettableFuture<String> input = SettableFuture.create();
@@ -504,7 +494,7 @@ public class FuturesTest extends TestCase {
    * stack-overflow tests work. It must depend on the exact place the error occurs.
    */
   @AndroidIncompatible
-  @GwtIncompatible // StackOverflowError
+  // StackOverflowError
   public void testTransformAsync_StackOverflow() throws Exception {
     {
       /*
@@ -695,7 +685,7 @@ public class FuturesTest extends TestCase {
    * Test that the function is invoked only once, even if it throws an exception. Also, test that
    * that function's result is wrapped in an ExecutionException.
    */
-  @GwtIncompatible // reflection
+  // reflection
   public void testTransformExceptionRemainsMemoized() throws Throwable {
     // We need to test with two input futures since ExecutionList.execute
     // doesn't catch Errors and we cannot depend on the order that our
@@ -727,7 +717,7 @@ public class FuturesTest extends TestCase {
     runGetIdempotencyTest(errorComposedFuture, MyError.class);
   }
 
-  @GwtIncompatible // reflection
+  // reflection
   private static void runGetIdempotencyTest(
       Future<Integer> transformedFuture, Class<? extends Throwable> expectedExceptionClass)
       throws Throwable {
@@ -743,7 +733,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static Function<Integer, Integer> newOneTimeExceptionThrower() {
     return new Function<Integer, Integer>() {
       int calls = 0;
@@ -758,7 +748,7 @@ public class FuturesTest extends TestCase {
     };
   }
 
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static Function<Integer, Integer> newOneTimeErrorThrower() {
     return new Function<Integer, Integer>() {
       int calls = 0;
@@ -802,7 +792,7 @@ public class FuturesTest extends TestCase {
     assertTrue(spy.wasExecuted);
   }
 
-  @GwtIncompatible // Threads
+  // Threads
 
   public void testTransformAsync_functionToString() throws Exception {
     final CountDownLatch functionCalled = new CountDownLatch(1);
@@ -831,7 +821,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // lazyTransform
+  // lazyTransform
   public void testLazyTransform() throws Exception {
     FunctionSpy<Object, String> spy = new FunctionSpy<>(constant("bar"));
     Future<String> input = immediateFuture("foo");
@@ -843,7 +833,7 @@ public class FuturesTest extends TestCase {
     spy.verifyCallCount(2);
   }
 
-  @GwtIncompatible // lazyTransform
+  // lazyTransform
   public void testLazyTransform_exception() throws Exception {
     final RuntimeException exception = new RuntimeException("deliberate");
     Function<Integer, String> function =
@@ -967,7 +957,7 @@ public class FuturesTest extends TestCase {
     fallback.verifyCallCount(1);
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatchingAsync_inputCancelledWithoutFallback() throws Exception {
     AsyncFunction<Throwable, Integer> fallback = unexpectedAsyncFunction();
     ListenableFuture<Integer> originalFuture = immediateCancelledFuture();
@@ -1078,7 +1068,7 @@ public class FuturesTest extends TestCase {
     assertFalse(primary.wasInterrupted());
   }
 
-  @GwtIncompatible // mocks
+  // mocks
   // TODO(cpovirk): eliminate use of mocks
   @SuppressWarnings("unchecked")
   public void testCatchingAsync_resultCancelledAfterFallback() throws Exception {
@@ -1131,7 +1121,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testCatchingAsync_interruptPropagatesToTransformingThread() throws Exception {
     SettableFuture<String> input = SettableFuture.create();
@@ -1171,7 +1161,7 @@ public class FuturesTest extends TestCase {
     // gotException.await();
   }
 
-  @GwtIncompatible // Threads
+  // Threads
 
   public void testCatchingAsync_functionToString() throws Exception {
     final CountDownLatch functionCalled = new CountDownLatch(1);
@@ -1250,7 +1240,7 @@ public class FuturesTest extends TestCase {
     fallback.verifyCallCount(1);
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatching_inputCancelledWithoutFallback() throws Exception {
     Function<IOException, Integer> fallback = unexpectedFunction();
     ListenableFuture<Integer> originalFuture = immediateCancelledFuture();
@@ -1352,7 +1342,7 @@ public class FuturesTest extends TestCase {
     assertEquals(1, (int) getDone(faultTolerantFuture));
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatching_customTypeMatch() throws Exception {
     Function<IOException, Integer> fallback = functionReturningOne();
     ListenableFuture<Integer> originalFuture = immediateFailedFuture(new FileNotFoundException());
@@ -1361,7 +1351,7 @@ public class FuturesTest extends TestCase {
     assertEquals(1, (int) getDone(faultTolerantFuture));
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatching_customTypeNoMatch() throws Exception {
     Function<IOException, Integer> fallback = functionReturningOne();
     ListenableFuture<Integer> originalFuture = immediateFailedFuture(new RuntimeException());
@@ -1375,7 +1365,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // StackOverflowError
+  // StackOverflowError
   public void testCatching_StackOverflow() throws Exception {
     {
       /*
@@ -1487,7 +1477,7 @@ public class FuturesTest extends TestCase {
     assertEquals(1, (int) getDone(faultTolerantFuture));
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatchingAsync_customTypeMatch() throws Exception {
     AsyncFunction<IOException, Integer> fallback = asyncFunctionReturningOne();
     ListenableFuture<Integer> originalFuture = immediateFailedFuture(new FileNotFoundException());
@@ -1496,7 +1486,7 @@ public class FuturesTest extends TestCase {
     assertEquals(1, (int) getDone(faultTolerantFuture));
   }
 
-  @GwtIncompatible // non-Throwable exceptionType
+  // non-Throwable exceptionType
   public void testCatchingAsync_customTypeNoMatch() throws Exception {
     AsyncFunction<IOException, Integer> fallback = asyncFunctionReturningOne();
     ListenableFuture<Integer> originalFuture = immediateFailedFuture(new RuntimeException());
@@ -1510,7 +1500,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // StackOverflowError
+  // StackOverflowError
   public void testCatchingAsync_StackOverflow() throws Exception {
     {
       /*
@@ -1697,7 +1687,7 @@ public class FuturesTest extends TestCase {
     assertSame(barChild, bar);
   }
 
-  @GwtIncompatible // get() timeout
+  // get() timeout
   public void testTransformAsync_asyncFunction_timeout()
       throws InterruptedException, ExecutionException {
     AsyncFunction<String, Integer> function = constantAsyncFunction(immediateFuture(1));
@@ -1748,7 +1738,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testTransformAsync_asyncFunction_cancelledWhileApplyingFunction()
       throws InterruptedException, ExecutionException {
@@ -1783,7 +1773,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testTransformAsync_asyncFunction_cancelledBeforeApplyingFunction()
       throws InterruptedException {
@@ -1857,7 +1847,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testSubmitAsync_asyncCallable_cancelledWhileApplyingFunction()
       throws InterruptedException, ExecutionException {
@@ -1891,7 +1881,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testSubmitAsync_asyncCallable_cancelledBeforeApplyingFunction()
       throws InterruptedException {
@@ -1925,7 +1915,7 @@ public class FuturesTest extends TestCase {
     assertFalse(callableCalled.get());
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testSubmitAsync_asyncCallable_returnsInterruptedFuture() throws InterruptedException {
     assertThat(Thread.interrupted()).isFalse();
@@ -2014,7 +2004,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testScheduleAsync_asyncCallable_error() throws InterruptedException {
     final Error error = new Error("deliberate");
@@ -2036,7 +2026,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testScheduleAsync_asyncCallable_nullInsteadOfFuture() throws Exception {
     ListenableFuture<?> chainedFuture =
@@ -2058,7 +2048,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testScheduleAsync_asyncCallable_cancelledWhileApplyingFunction()
       throws InterruptedException, ExecutionException {
@@ -2091,7 +2081,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testScheduleAsync_asyncCallable_cancelledBeforeCallingFunction()
       throws InterruptedException {
@@ -2546,7 +2536,7 @@ public class FuturesTest extends TestCase {
     return "-" + i + "-" + b;
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllComplete_noLeakInterruption() throws Exception {
     final SettableFuture<String> stringFuture = SettableFuture.create();
@@ -2590,7 +2580,7 @@ public class FuturesTest extends TestCase {
     unused = whenAllComplete(asList(futures)).call(combiner, directExecutor());
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllComplete_asyncResult() throws Exception {
     SettableFuture<Integer> futureInteger = SettableFuture.create();
@@ -2682,7 +2672,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllComplete_cancelledNotInterrupted() throws Exception {
     SettableFuture<String> stringFuture = SettableFuture.create();
@@ -2721,7 +2711,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllComplete_interrupted() throws Exception {
     SettableFuture<String> stringFuture = SettableFuture.create();
@@ -2814,7 +2804,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllCompleteRunnable_resultCanceledWithoutInterrupt_doesNotInterruptRunnable()
       throws Exception {
@@ -2855,7 +2845,7 @@ public class FuturesTest extends TestCase {
     combinerCompletedWithoutInterrupt.await();
   }
 
-  @GwtIncompatible // threads
+  // threads
 
   public void testWhenAllCompleteRunnable_resultCanceledWithInterrupt_InterruptsRunnable()
       throws Exception {
@@ -2921,7 +2911,6 @@ public class FuturesTest extends TestCase {
   }
 
   @AndroidIncompatible
-  @GwtIncompatible
   public void testWhenAllSucceed_releasesInputFuturesUponSubmission() throws Exception {
     SettableFuture<Long> future1 = SettableFuture.create();
     SettableFuture<Long> future2 = SettableFuture.create();
@@ -2956,7 +2945,6 @@ public class FuturesTest extends TestCase {
   }
 
   @AndroidIncompatible
-  @GwtIncompatible
   public void testWhenAllComplete_releasesInputFuturesUponCancellation() throws Exception {
     SettableFuture<Long> future = SettableFuture.create();
     WeakReference<SettableFuture<Long>> futureRef = new WeakReference<>(future);
@@ -2979,7 +2967,6 @@ public class FuturesTest extends TestCase {
   }
 
   @AndroidIncompatible
-  @GwtIncompatible
   public void testWhenAllSucceed_releasesCallable() throws Exception {
     AsyncCallable<Long> combiner =
         new AsyncCallable<Long>() {
@@ -3008,7 +2995,7 @@ public class FuturesTest extends TestCase {
    * finisher}, a task that will complete the future in some fashion when it is called, allowing for
    * testing both before and after the completion of the future.
    */
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static final class TestFuture {
 
     final ListenableFuture<String> future;
@@ -3030,7 +3017,7 @@ public class FuturesTest extends TestCase {
    * <p>Each test requires a new {@link TestFutureBatch} because we need new delayed futures each
    * time, as the old delayed futures were completed as part of the old test.
    */
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static final class TestFutureBatch {
 
     final ListenableFuture<String> doneSuccess = immediateFuture("a");
@@ -3215,7 +3202,7 @@ public class FuturesTest extends TestCase {
    * {@link Futures#allAsList(Iterable)} or {@link Futures#successfulAsList(Iterable)}, hidden
    * behind a common interface for testing.
    */
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private interface Merger {
 
     ListenableFuture<List<String>> merged(ListenableFuture<String> a, ListenableFuture<String> b);
@@ -3245,8 +3232,7 @@ public class FuturesTest extends TestCase {
    * <p>We need this to test the behavior of no-arg get methods without hanging the main test thread
    * forever in the case of failure.
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // threads
+  // threads
   static <V> V pseudoTimedGetUninterruptibly(final Future<V> input, long timeout, TimeUnit unit)
       throws ExecutionException, TimeoutException {
     ExecutorService executor = newSingleThreadExecutor();
@@ -3277,7 +3263,7 @@ public class FuturesTest extends TestCase {
    * before future completion, and untimed after future completion) return or throw the proper
    * values.
    */
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static void runExtensiveMergerTest(Merger merger) throws InterruptedException {
     int inputCount = new TestFutureBatch().allFutures.size();
 
@@ -3356,7 +3342,7 @@ public class FuturesTest extends TestCase {
    * that is expected to succeed; the fact that the numbers match is only a coincidence.) See the
    * comment below for how to restore the fast but hang-y version.
    */
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static List<String> conditionalPseudoTimedGetUninterruptibly(
       TestFutureBatch inputs,
       ListenableFuture<String> iFuture,
@@ -3376,13 +3362,13 @@ public class FuturesTest extends TestCase {
   }
 
 
-  @GwtIncompatible // threads
+  // threads
   public void testAllAsList_extensive() throws InterruptedException {
     runExtensiveMergerTest(Merger.allMerger);
   }
 
 
-  @GwtIncompatible // threads
+  // threads
   public void testSuccessfulAsList_extensive() throws InterruptedException {
     runExtensiveMergerTest(Merger.successMerger);
   }
@@ -3697,7 +3683,7 @@ public class FuturesTest extends TestCase {
     assertFalse(input.isDone());
   }
 
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private static class TestException extends Exception {
 
     TestException(@Nullable Throwable cause) {
@@ -3705,7 +3691,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // used only in GwtIncompatible tests
+  // used only in GwtIncompatible tests
   private interface MapperFunction extends Function<Throwable, Exception> {}
 
   public void testCompletionOrder() throws Exception {
@@ -3854,7 +3840,6 @@ public class FuturesTest extends TestCase {
   }
 
   @AndroidIncompatible // reference is never cleared under some versions of the emulator
-  @GwtIncompatible
   public void testInputGCedIfUnreferenced() throws Exception {
     SettableFuture<Long> future1 = SettableFuture.create();
     SettableFuture<Long> future2 = SettableFuture.create();
@@ -3896,7 +3881,7 @@ public class FuturesTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // ClassSanityTester
+  // ClassSanityTester
   public void testFutures_nullChecks() throws Exception {
     new ClassSanityTester()
         .forAllPublicStaticMethods(Futures.class)
diff --git a/guava-tests/test/com/google/common/util/concurrent/GeneratedMonitorTest.java b/guava-tests/test/com/google/common/util/concurrent/GeneratedMonitorTest.java
index 4e2c85e..b054b6f 100644
--- a/guava-tests/test/com/google/common/util/concurrent/GeneratedMonitorTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/GeneratedMonitorTest.java
@@ -19,9 +19,7 @@ package com.google.common.util.concurrent;
 import static com.google.common.util.concurrent.Uninterruptibles.awaitUninterruptibly;
 
 import com.google.common.base.CaseFormat;
-import com.google.common.collect.ImmutableList;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.time.Duration;
@@ -723,7 +721,6 @@ public class GeneratedMonitorTest extends TestCase {
     awaitUninterruptibly(enteredLatch);
   }
 
-  @CanIgnoreReturnValue
   static Thread startThread(Runnable runnable) {
     Thread thread = new Thread(runnable);
     thread.setDaemon(true);
diff --git a/guava-tests/test/com/google/common/util/concurrent/ListenableFutureTester.java b/guava-tests/test/com/google/common/util/concurrent/ListenableFutureTester.java
index 5c99bc8..e58d040 100644
--- a/guava-tests/test/com/google/common/util/concurrent/ListenableFutureTester.java
+++ b/guava-tests/test/com/google/common/util/concurrent/ListenableFutureTester.java
@@ -29,7 +29,6 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Used to test listenable future implementations.
diff --git a/guava-tests/test/com/google/common/util/concurrent/ListenerCallQueueTest.java b/guava-tests/test/com/google/common/util/concurrent/ListenerCallQueueTest.java
index 5fd9b95..0f437c0 100644
--- a/guava-tests/test/com/google/common/util/concurrent/ListenerCallQueueTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/ListenerCallQueueTest.java
@@ -19,8 +19,6 @@ package com.google.common.util.concurrent;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 
 import com.google.common.collect.ConcurrentHashMultiset;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultiset;
 import com.google.common.collect.Multiset;
 import com.google.common.testing.TestLogHandler;
 import java.util.Map;
diff --git a/guava-tests/test/com/google/common/util/concurrent/MoreExecutorsTest.java b/guava-tests/test/com/google/common/util/concurrent/MoreExecutorsTest.java
index fe4e7f5..7db2a17 100644
--- a/guava-tests/test/com/google/common/util/concurrent/MoreExecutorsTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/MoreExecutorsTest.java
@@ -45,7 +45,6 @@ import static org.mockito.Mockito.when;
 
 import com.google.common.base.Suppliers;
 import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.testing.ClassSanityTester;
 import com.google.common.util.concurrent.MoreExecutors.Application;
diff --git a/guava-tests/test/com/google/common/util/concurrent/RateLimiterTest.java b/guava-tests/test/com/google/common/util/concurrent/RateLimiterTest.java
index a6c0899..c347406 100644
--- a/guava-tests/test/com/google/common/util/concurrent/RateLimiterTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/RateLimiterTest.java
@@ -22,8 +22,6 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.collect.ImmutableClassToInstanceMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.NullPointerTester.Visibility;
diff --git a/guava-tests/test/com/google/common/util/concurrent/RunnablesTest.java b/guava-tests/test/com/google/common/util/concurrent/RunnablesTest.java
index c4bd1c7..6b07a64 100644
--- a/guava-tests/test/com/google/common/util/concurrent/RunnablesTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/RunnablesTest.java
@@ -16,7 +16,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import junit.framework.TestCase;
 
 /**
@@ -24,7 +23,6 @@ import junit.framework.TestCase;
  *
  * @author Olivier Pernet
  */
-@GwtCompatible
 public class RunnablesTest extends TestCase {
   public void testDoNothingRunnableIsSingleton() {
     assertSame(Runnables.doNothing(), Runnables.doNothing());
diff --git a/guava-tests/test/com/google/common/util/concurrent/SequentialExecutorTest.java b/guava-tests/test/com/google/common/util/concurrent/SequentialExecutorTest.java
index 20209e8..a675197 100644
--- a/guava-tests/test/com/google/common/util/concurrent/SequentialExecutorTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/SequentialExecutorTest.java
@@ -20,7 +20,6 @@ import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.util.concurrent.MoreExecutors.newSequentialExecutor;
 import static com.google.common.util.concurrent.Uninterruptibles.awaitUninterruptibly;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Queues;
 import java.util.List;
diff --git a/guava-tests/test/com/google/common/util/concurrent/ServiceManagerTest.java b/guava-tests/test/com/google/common/util/concurrent/ServiceManagerTest.java
index e8552ed..81384b2 100644
--- a/guava-tests/test/com/google/common/util/concurrent/ServiceManagerTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/ServiceManagerTest.java
@@ -21,8 +21,6 @@ import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static java.util.Arrays.asList;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import com.google.common.testing.NullPointerTester;
diff --git a/guava-tests/test/com/google/common/util/concurrent/StripedTest.java b/guava-tests/test/com/google/common/util/concurrent/StripedTest.java
index fa9d87f..5295a1e 100644
--- a/guava-tests/test/com/google/common/util/concurrent/StripedTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/StripedTest.java
@@ -20,14 +20,12 @@ import static com.google.common.collect.Iterables.concat;
 
 import com.google.common.base.Functions;
 import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.Sets;
 import com.google.common.testing.GcFinalization;
 import com.google.common.testing.NullPointerTester;
-import java.lang.ref.WeakReference;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
diff --git a/guava-tests/test/com/google/common/util/concurrent/TestPlatform.java b/guava-tests/test/com/google/common/util/concurrent/TestPlatform.java
index 5c87fe5..fd22af5 100644
--- a/guava-tests/test/com/google/common/util/concurrent/TestPlatform.java
+++ b/guava-tests/test/com/google/common/util/concurrent/TestPlatform.java
@@ -26,14 +26,12 @@ import static java.util.concurrent.TimeUnit.SECONDS;
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.fail;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeoutException;
 import junit.framework.AssertionFailedError;
 
 /** Methods factored out so that they can be emulated differently in GWT. */
-@GwtCompatible(emulated = true)
 final class TestPlatform {
   static void verifyGetOnPendingFuture(Future<?> future) {
     checkNotNull(future);
diff --git a/guava-tests/test/com/google/common/util/concurrent/TestThread.java b/guava-tests/test/com/google/common/util/concurrent/TestThread.java
index 6d56093..f187b18 100644
--- a/guava-tests/test/com/google/common/util/concurrent/TestThread.java
+++ b/guava-tests/test/com/google/common/util/concurrent/TestThread.java
@@ -29,7 +29,6 @@ import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import junit.framework.AssertionFailedError;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A helper for concurrency testing. One or more {@code TestThread} instances are instantiated in a
diff --git a/guava-tests/test/com/google/common/util/concurrent/TrustedInputFutureTest.java b/guava-tests/test/com/google/common/util/concurrent/TrustedInputFutureTest.java
index 1f2ecca..263208e 100644
--- a/guava-tests/test/com/google/common/util/concurrent/TrustedInputFutureTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/TrustedInputFutureTest.java
@@ -17,14 +17,12 @@
 package com.google.common.util.concurrent;
 
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.util.concurrent.AbstractFuture.TrustedFuture;
 
 /**
  * Tests for {@link AbstractFuture} that use a {@link TrustedFuture} for {@link
  * AbstractFuture#setFuture} calls.
  */
-@GwtCompatible
 public class TrustedInputFutureTest extends AbstractAbstractFutureTest {
   @Override
   AbstractFuture<Integer> newDelegate() {
diff --git a/guava-tests/test/com/google/common/util/concurrent/TrustedListenableFutureTaskTest.java b/guava-tests/test/com/google/common/util/concurrent/TrustedListenableFutureTaskTest.java
index 157afa7..4b0d324 100644
--- a/guava-tests/test/com/google/common/util/concurrent/TrustedListenableFutureTaskTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/TrustedListenableFutureTaskTest.java
@@ -21,8 +21,6 @@ import static com.google.common.util.concurrent.Callables.returning;
 import static com.google.common.util.concurrent.Futures.getDone;
 import static com.google.common.util.concurrent.TestPlatform.verifyThreadWasNotInterrupted;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.CountDownLatch;
@@ -35,7 +33,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import junit.framework.TestCase;
 
 /** Test case for {@link TrustedListenableFutureTask}. */
-@GwtCompatible(emulated = true)
 public class TrustedListenableFutureTaskTest extends TestCase {
 
   public void testSuccessful() throws Exception {
@@ -83,7 +80,7 @@ public class TrustedListenableFutureTaskTest extends TestCase {
     }
   }
 
-  @GwtIncompatible // blocking wait
+  // blocking wait
 
   public void testCancel_interrupted() throws Exception {
     final AtomicBoolean interruptedExceptionThrown = new AtomicBoolean();
@@ -134,7 +131,7 @@ public class TrustedListenableFutureTaskTest extends TestCase {
     assertTrue(interruptedExceptionThrown.get());
   }
 
-  @GwtIncompatible // blocking wait
+  // blocking wait
 
   public void testRunIdempotency() throws Exception {
     final int numThreads = 10;
@@ -170,7 +167,7 @@ public class TrustedListenableFutureTaskTest extends TestCase {
     executor.shutdown();
   }
 
-  @GwtIncompatible // blocking wait
+  // blocking wait
 
   public void testToString() throws Exception {
     final CountDownLatch enterLatch = new CountDownLatch(1);
@@ -208,7 +205,7 @@ public class TrustedListenableFutureTaskTest extends TestCase {
     exitLatch.await();
   }
 
-  @GwtIncompatible // used only in GwtIncomaptible tests
+  // used only in GwtIncomaptible tests
   private void awaitUnchecked(CyclicBarrier barrier) {
     try {
       barrier.await();
diff --git a/guava-tests/test/com/google/common/util/concurrent/UncheckedThrowingFuture.java b/guava-tests/test/com/google/common/util/concurrent/UncheckedThrowingFuture.java
index 4057722..26092b8 100644
--- a/guava-tests/test/com/google/common/util/concurrent/UncheckedThrowingFuture.java
+++ b/guava-tests/test/com/google/common/util/concurrent/UncheckedThrowingFuture.java
@@ -18,7 +18,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
@@ -33,7 +32,6 @@ import java.util.concurrent.TimeoutException;
  *
  * @author Anthony Zana
  */
-@GwtCompatible
 final class UncheckedThrowingFuture<V> extends AbstractFuture<V> {
 
   public static <V> ListenableFuture<V> throwingError(Error error) {
diff --git a/guava-tests/test/com/google/common/util/concurrent/UninterruptiblesTest.java b/guava-tests/test/com/google/common/util/concurrent/UninterruptiblesTest.java
index 4343d89..baed5c8 100644
--- a/guava-tests/test/com/google/common/util/concurrent/UninterruptiblesTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/UninterruptiblesTest.java
@@ -33,7 +33,6 @@ import com.google.common.base.Stopwatch;
 import com.google.common.testing.NullPointerTester;
 import com.google.common.testing.TearDown;
 import com.google.common.testing.TearDownStack;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.time.Duration;
 import java.util.Date;
 import java.util.concurrent.ArrayBlockingQueue;
@@ -853,7 +852,6 @@ public class UninterruptiblesTest extends TestCase {
     InterruptionUtil.requestInterruptIn(millis, MILLISECONDS);
   }
 
-  @CanIgnoreReturnValue
   private static Thread acquireFor(final Lock lock, final long duration, final TimeUnit unit) {
     final CountDownLatch latch = new CountDownLatch(1);
     Thread thread =
diff --git a/guava-tests/test/com/google/common/util/concurrent/UntrustedInputFutureTest.java b/guava-tests/test/com/google/common/util/concurrent/UntrustedInputFutureTest.java
index a6241d2..b2c6efe 100644
--- a/guava-tests/test/com/google/common/util/concurrent/UntrustedInputFutureTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/UntrustedInputFutureTest.java
@@ -17,14 +17,12 @@
 package com.google.common.util.concurrent;
 
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.util.concurrent.AbstractFuture.TrustedFuture;
 
 /**
  * Tests for {@link AbstractFuture} that use a non-{@link TrustedFuture} for {@link
  * AbstractFuture#setFuture} calls.
  */
-@GwtCompatible
 public class UntrustedInputFutureTest extends AbstractAbstractFutureTest {
   @Override
   AbstractFuture<Integer> newDelegate() {
diff --git a/guava-tests/test/com/google/common/util/concurrent/WrappingExecutorServiceTest.java b/guava-tests/test/com/google/common/util/concurrent/WrappingExecutorServiceTest.java
index fdb2c54..c74eee0 100644
--- a/guava-tests/test/com/google/common/util/concurrent/WrappingExecutorServiceTest.java
+++ b/guava-tests/test/com/google/common/util/concurrent/WrappingExecutorServiceTest.java
@@ -22,7 +22,6 @@ import static com.google.common.util.concurrent.Runnables.doNothing;
 
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import java.util.Collection;
diff --git a/guava-tests/test/com/google/common/xml/XmlEscapersTest.java b/guava-tests/test/com/google/common/xml/XmlEscapersTest.java
index 00b5cf1..0b2dc17 100644
--- a/guava-tests/test/com/google/common/xml/XmlEscapersTest.java
+++ b/guava-tests/test/com/google/common/xml/XmlEscapersTest.java
@@ -19,7 +19,6 @@ package com.google.common.xml;
 import static com.google.common.escape.testing.EscaperAsserts.assertEscaping;
 import static com.google.common.escape.testing.EscaperAsserts.assertUnescaped;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.CharEscaper;
 import junit.framework.TestCase;
 
@@ -29,7 +28,6 @@ import junit.framework.TestCase;
  * @author Alex Matevossian
  * @author David Beaumont
  */
-@GwtCompatible
 public class XmlEscapersTest extends TestCase {
 
   public void testXmlContentEscaper() throws Exception {
diff --git a/guava/src/com/google/common/annotations/Beta.java b/guava/src/com/google/common/annotations/Beta.java
index f71dc94..f5ff07d 100644
--- a/guava/src/com/google/common/annotations/Beta.java
+++ b/guava/src/com/google/common/annotations/Beta.java
@@ -42,5 +42,4 @@ import java.lang.annotation.Target;
   ElementType.TYPE
 })
 @Documented
-@GwtCompatible
 public @interface Beta {}
diff --git a/guava/src/com/google/common/annotations/GwtCompatible.java b/guava/src/com/google/common/annotations/GwtCompatible.java
index 4bf6efb..00395c0 100644
--- a/guava/src/com/google/common/annotations/GwtCompatible.java
+++ b/guava/src/com/google/common/annotations/GwtCompatible.java
@@ -60,7 +60,6 @@ import java.lang.annotation.Target;
 @Retention(RetentionPolicy.CLASS)
 @Target({ElementType.TYPE, ElementType.METHOD})
 @Documented
-@GwtCompatible
 public @interface GwtCompatible {
 
   /**
diff --git a/guava/src/com/google/common/annotations/GwtIncompatible.java b/guava/src/com/google/common/annotations/GwtIncompatible.java
index 4b7e4a9..2cf9708 100644
--- a/guava/src/com/google/common/annotations/GwtIncompatible.java
+++ b/guava/src/com/google/common/annotations/GwtIncompatible.java
@@ -33,7 +33,6 @@ import java.lang.annotation.Target;
 @Retention(RetentionPolicy.CLASS)
 @Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD})
 @Documented
-@GwtCompatible
 public @interface GwtIncompatible {
   /**
    * Describes why the annotated element is incompatible with GWT. Since this is generally due to a
diff --git a/guava/src/com/google/common/annotations/VisibleForTesting.java b/guava/src/com/google/common/annotations/VisibleForTesting.java
index e767afc..a5104c6 100644
--- a/guava/src/com/google/common/annotations/VisibleForTesting.java
+++ b/guava/src/com/google/common/annotations/VisibleForTesting.java
@@ -27,6 +27,5 @@ package com.google.common.annotations;
  *
  * @author Johannes Henkel
  */
-@GwtCompatible
 public @interface VisibleForTesting {
 }
diff --git a/guava/src/com/google/common/base/Absent.java b/guava/src/com/google/common/base/Absent.java
index f96136b..6331d23 100644
--- a/guava/src/com/google/common/base/Absent.java
+++ b/guava/src/com/google/common/base/Absent.java
@@ -16,13 +16,11 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.Set;
 import javax.annotation.CheckForNull;
 
 /** Implementation of an {@link Optional} not containing a reference. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class Absent<T> extends Optional<T> {
   static final Absent<Object> INSTANCE = new Absent<>();
diff --git a/guava/src/com/google/common/base/AbstractIterator.java b/guava/src/com/google/common/base/AbstractIterator.java
index bb0a1d3..5f83329 100644
--- a/guava/src/com/google/common/base/AbstractIterator.java
+++ b/guava/src/com/google/common/base/AbstractIterator.java
@@ -14,23 +14,18 @@
 
 package com.google.common.base;
 
-import static com.google.common.base.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Note this class is a copy of {@link com.google.common.collect.AbstractIterator} (for dependency
  * reasons).
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractIterator<T extends @Nullable Object> implements Iterator<T> {
+abstract class AbstractIterator<T extends Object> implements Iterator<T> {
   private State state = State.NOT_READY;
 
   protected AbstractIterator() {}
@@ -47,7 +42,6 @@ abstract class AbstractIterator<T extends @Nullable Object> implements Iterator<
   @CheckForNull
   protected abstract T computeNext();
 
-  @CanIgnoreReturnValue
   @CheckForNull
   protected final T endOfData() {
     state = State.DONE;
diff --git a/guava/src/com/google/common/base/Ascii.java b/guava/src/com/google/common/base/Ascii.java
index 0c651bb..81f5156 100644
--- a/guava/src/com/google/common/base/Ascii.java
+++ b/guava/src/com/google/common/base/Ascii.java
@@ -17,7 +17,6 @@ package com.google.common.base;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Static methods pertaining to ASCII characters (those in the range of values {@code 0x00} through
@@ -36,7 +35,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Gregory Kick
  * @since 7.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Ascii {
 
diff --git a/guava/src/com/google/common/base/CaseFormat.java b/guava/src/com/google/common/base/CaseFormat.java
index 7b393eb..9e2ad58 100644
--- a/guava/src/com/google/common/base/CaseFormat.java
+++ b/guava/src/com/google/common/base/CaseFormat.java
@@ -15,9 +15,7 @@
 package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -28,7 +26,6 @@ import javax.annotation.CheckForNull;
  * @author Mike Bostock
  * @since 1.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public enum CaseFormat {
   /** Hyphenated variable naming convention, e.g., "lower-hyphen". */
diff --git a/guava/src/com/google/common/base/CharMatcher.java b/guava/src/com/google/common/base/CharMatcher.java
index e052f80..5a32399 100644
--- a/guava/src/com/google/common/base/CharMatcher.java
+++ b/guava/src/com/google/common/base/CharMatcher.java
@@ -18,9 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndex;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.util.Arrays;
 import java.util.BitSet;
 
@@ -60,7 +57,6 @@ import java.util.BitSet;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public abstract class CharMatcher implements Predicate<Character> {
   /*
@@ -412,7 +408,7 @@ public abstract class CharMatcher implements Predicate<Character> {
    * constructs an eight-kilobyte bit array and queries that. In many situations this produces a
    * matcher which is faster to query than the original.
    */
-  @GwtIncompatible // SmallCharMatcher
+  // SmallCharMatcher
   CharMatcher precomputedInternal() {
     final BitSet table = new BitSet();
     setBits(table);
@@ -442,7 +438,7 @@ public abstract class CharMatcher implements Predicate<Character> {
   /**
    * Helper method for {@link #precomputedInternal} that doesn't test if the negation is cheaper.
    */
-  @GwtIncompatible // SmallCharMatcher
+  // SmallCharMatcher
   private static CharMatcher precomputedPositive(
       int totalCharacters, BitSet table, String description) {
     switch (totalCharacters) {
@@ -461,7 +457,7 @@ public abstract class CharMatcher implements Predicate<Character> {
     }
   }
 
-  @GwtIncompatible // SmallCharMatcher
+  // SmallCharMatcher
   private static boolean isSmall(int totalCharacters, int tableLength) {
     return totalCharacters <= SmallCharMatcher.MAX_SIZE
         && tableLength > (totalCharacters * 4 * Character.SIZE);
@@ -469,7 +465,7 @@ public abstract class CharMatcher implements Predicate<Character> {
   }
 
   /** Sets bits in {@code table} matched by this matcher. */
-  @GwtIncompatible // used only from other GwtIncompatible code
+  // used only from other GwtIncompatible code
   void setBits(BitSet table) {
     for (int c = Character.MAX_VALUE; c >= Character.MIN_VALUE; c--) {
       if (matches((char) c)) {
@@ -979,7 +975,7 @@ public abstract class CharMatcher implements Predicate<Character> {
   }
 
   /** Fast matcher using a {@link BitSet} table of matching characters. */
-  @GwtIncompatible // used only from other GwtIncompatible code
+  // used only from other GwtIncompatible code
   private static final class BitSetMatcher extends NamedFastMatcher {
 
     private final BitSet table;
@@ -1207,7 +1203,6 @@ public abstract class CharMatcher implements Predicate<Character> {
   }
 
   /** Implementation of {@link #whitespace()}. */
-  @VisibleForTesting
   static final class Whitespace extends NamedFastMatcher {
 
     // TABLE is a precomputed hashset of whitespace characters. MULTIPLIER serves as a hash function
@@ -1233,7 +1228,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return TABLE.charAt((MULTIPLIER * c) >>> SHIFT) == c;
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       for (int i = 0; i < TABLE.length(); i++) {
@@ -1519,7 +1514,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return sequence.length() - original.countIn(sequence);
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       BitSet tmp = new BitSet();
@@ -1555,7 +1550,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return first.matches(c) && second.matches(c);
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       BitSet tmp1 = new BitSet();
@@ -1583,7 +1578,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       second = checkNotNull(b);
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       first.setBits(table);
@@ -1637,7 +1632,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return isNot(match);
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       table.set(match);
@@ -1673,7 +1668,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return other.matches(match) ? any() : this;
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       table.set(0, match);
@@ -1711,7 +1706,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return c == match1 || c == match2;
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       table.set(match1);
@@ -1740,7 +1735,7 @@ public abstract class CharMatcher implements Predicate<Character> {
     }
 
     @Override
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     void setBits(BitSet table) {
       for (char c : chars) {
         table.set(c);
@@ -1775,7 +1770,7 @@ public abstract class CharMatcher implements Predicate<Character> {
       return startInclusive <= c && c <= endInclusive;
     }
 
-    @GwtIncompatible // used only from other GwtIncompatible code
+    // used only from other GwtIncompatible code
     @Override
     void setBits(BitSet table) {
       table.set(startInclusive, endInclusive + 1);
diff --git a/guava/src/com/google/common/base/Charsets.java b/guava/src/com/google/common/base/Charsets.java
index 7aebea8..33a431a 100644
--- a/guava/src/com/google/common/base/Charsets.java
+++ b/guava/src/com/google/common/base/Charsets.java
@@ -14,8 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.nio.charset.Charset;
 
 /**
@@ -30,7 +28,6 @@ import java.nio.charset.Charset;
  * @author Mike Bostock
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Charsets {
   private Charsets() {}
@@ -42,7 +39,7 @@ public final class Charsets {
    * java.nio.charset.StandardCharsets#US_ASCII} instead.
    *
    */
-  @GwtIncompatible // Charset not supported by GWT
+  // Charset not supported by GWT
   public static final Charset US_ASCII = Charset.forName("US-ASCII");
 
   /**
@@ -70,7 +67,7 @@ public final class Charsets {
    * java.nio.charset.StandardCharsets#UTF_16BE} instead.
    *
    */
-  @GwtIncompatible // Charset not supported by GWT
+  // Charset not supported by GWT
   public static final Charset UTF_16BE = Charset.forName("UTF-16BE");
 
   /**
@@ -80,7 +77,7 @@ public final class Charsets {
    * java.nio.charset.StandardCharsets#UTF_16LE} instead.
    *
    */
-  @GwtIncompatible // Charset not supported by GWT
+  // Charset not supported by GWT
   public static final Charset UTF_16LE = Charset.forName("UTF-16LE");
 
   /**
@@ -91,7 +88,7 @@ public final class Charsets {
    * java.nio.charset.StandardCharsets#UTF_16} instead.
    *
    */
-  @GwtIncompatible // Charset not supported by GWT
+  // Charset not supported by GWT
   public static final Charset UTF_16 = Charset.forName("UTF-16");
 
   /*
diff --git a/guava/src/com/google/common/base/CommonMatcher.java b/guava/src/com/google/common/base/CommonMatcher.java
index d63b46b..2702934 100644
--- a/guava/src/com/google/common/base/CommonMatcher.java
+++ b/guava/src/com/google/common/base/CommonMatcher.java
@@ -14,14 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * The subset of the {@link java.util.regex.Matcher} API which is used by this package, and also
  * shared with the {@code re2j} library. For internal use only. Please refer to the {@code Matcher}
  * javadoc for details.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class CommonMatcher {
   public abstract boolean matches();
diff --git a/guava/src/com/google/common/base/CommonPattern.java b/guava/src/com/google/common/base/CommonPattern.java
index c425d52..cdadb59 100644
--- a/guava/src/com/google/common/base/CommonPattern.java
+++ b/guava/src/com/google/common/base/CommonPattern.java
@@ -14,14 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * The subset of the {@link java.util.regex.Pattern} API which is used by this package, and also
  * shared with the {@code re2j} library. For internal use only. Please refer to the {@code Pattern}
  * javadoc for details.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class CommonPattern {
   public abstract CommonMatcher matcher(CharSequence t);
diff --git a/guava/src/com/google/common/base/Converter.java b/guava/src/com/google/common/base/Converter.java
index 208a032..bdc78d4 100644
--- a/guava/src/com/google/common/base/Converter.java
+++ b/guava/src/com/google/common/base/Converter.java
@@ -14,14 +14,8 @@
 
 package com.google.common.base;
 
-import static com.google.common.base.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.ForOverride;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
 import java.io.Serializable;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
@@ -113,7 +107,6 @@ import javax.annotation.CheckForNull;
  * @author Gregory Kick
  * @since 16.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 /*
  * 1. The type parameter is <T> rather than <T extends @Nullable> so that we can use T in the
@@ -143,7 +136,7 @@ public abstract class Converter<A, B> implements Function<A, B> {
   private final boolean handleNullAutomatically;
 
   // We lazily cache the reverse view to avoid allocating on every call to reverse().
-  @LazyInit @RetainedWith @CheckForNull private transient Converter<B, A> reverse;
+  @CheckForNull private transient Converter<B, A> reverse;
 
   /** Constructor for use by subclasses. */
   protected Converter() {
@@ -164,7 +157,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    * @param a the instance to convert; will never be null
    * @return the converted instance; <b>must not</b> be null
    */
-  @ForOverride
   protected abstract B doForward(A a);
 
   /**
@@ -179,7 +171,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    *     then this is not logically a {@code Converter} at all, and should just implement {@link
    *     Function}.
    */
-  @ForOverride
   protected abstract A doBackward(B b);
 
   // API (consumer-side) methods
@@ -189,7 +180,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    *
    * @return the converted value; is null <i>if and only if</i> {@code a} is null
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   public final B convert(@CheckForNull A a) {
     return correctedDoForward(a);
@@ -259,7 +249,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    * a successful {@code remove()} call, {@code fromIterable} no longer contains the corresponding
    * element.
    */
-  @CanIgnoreReturnValue
   /*
    * Just as Converter could implement `Function<@Nullable A, @Nullable B>` instead of `Function<A,
    * B>`, convertAll could accept and return iterables with nullable element types. In both cases,
@@ -307,7 +296,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    *
    * <p><b>Note:</b> you should not override this method. It is non-final for legacy reasons.
    */
-  @CanIgnoreReturnValue
   public Converter<B, A> reverse() {
     Converter<B, A> result = reverse;
     return (result == null) ? reverse = new ReverseConverter<>(this) : result;
@@ -459,7 +447,6 @@ public abstract class Converter<A, B> implements Function<A, B> {
    */
   @Deprecated
   @Override
-  @CanIgnoreReturnValue
   /*
    * Even though we implement `Function<A, B>` instead of `Function<@Nullable A, @Nullable B>` (as
    * discussed in a code comment at the top of the class), we declare our override of Function.apply
diff --git a/guava/src/com/google/common/base/Defaults.java b/guava/src/com/google/common/base/Defaults.java
index 5d12343..c5a9f97 100644
--- a/guava/src/com/google/common/base/Defaults.java
+++ b/guava/src/com/google/common/base/Defaults.java
@@ -16,7 +16,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -25,7 +24,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Defaults {
   private Defaults() {}
diff --git a/guava/src/com/google/common/base/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/base/ElementTypesAreNonnullByDefault.java
index 890e3a3..f5595b7 100644
--- a/guava/src/com/google/common/base/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/base/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/base/Enums.java b/guava/src/com/google/common/base/Enums.java
index 449b7e3..06969ed 100644
--- a/guava/src/com/google/common/base/Enums.java
+++ b/guava/src/com/google/common/base/Enums.java
@@ -16,15 +16,11 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
-import java.lang.ref.WeakReference;
 import java.lang.reflect.Field;
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.WeakHashMap;
 import javax.annotation.CheckForNull;
 
 /**
@@ -33,7 +29,6 @@ import javax.annotation.CheckForNull;
  * @author Steve McKay
  * @since 9.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Enums {
 
@@ -46,7 +41,7 @@ public final class Enums {
    *
    * @since 12.0
    */
-  @GwtIncompatible // reflection
+  // reflection
   public static Field getField(Enum<?> enumValue) {
     Class<?> clazz = enumValue.getDeclaringClass();
     try {
@@ -70,11 +65,11 @@ public final class Enums {
     return Platform.getEnumIfPresent(enumClass, value);
   }
 
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   private static final Map<Class<? extends Enum<?>>, Map<String, WeakReference<? extends Enum<?>>>>
       enumConstantCache = new WeakHashMap<>();
 
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   private static <T extends Enum<T>> Map<String, WeakReference<? extends Enum<?>>> populateCache(
       Class<T> enumClass) {
     Map<String, WeakReference<? extends Enum<?>>> result = new HashMap<>();
@@ -85,7 +80,7 @@ public final class Enums {
     return result;
   }
 
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   static <T extends Enum<T>> Map<String, WeakReference<? extends Enum<?>>> getEnumConstants(
       Class<T> enumClass) {
     synchronized (enumConstantCache) {
diff --git a/guava/src/com/google/common/base/Equivalence.java b/guava/src/com/google/common/base/Equivalence.java
index fbcd212..2f5ccdb 100644
--- a/guava/src/com/google/common/base/Equivalence.java
+++ b/guava/src/com/google/common/base/Equivalence.java
@@ -16,12 +16,9 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.ForOverride;
 import java.io.Serializable;
 import java.util.function.BiPredicate;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A strategy for determining whether two instances are considered equivalent, and for computing
@@ -34,13 +31,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 10.0 (<a href="https://github.com/google/guava/wiki/Compatibility">mostly
  *     source-compatible</a> since 4.0)
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 /*
  * The type parameter is <T> rather than <T extends @Nullable> so that we can use T in the
  * doEquivalent and doHash methods to indicate that the parameter cannot be null.
  */
-public abstract class Equivalence<T> implements BiPredicate<@Nullable T, @Nullable T> {
+public abstract class Equivalence<T> implements BiPredicate<T, T> {
   /** Constructor for use by subclasses. */
   protected Equivalence() {}
 
@@ -91,7 +87,6 @@ public abstract class Equivalence<T> implements BiPredicate<@Nullable T, @Nullab
    *
    * @since 10.0 (previously, subclasses would override equivalent())
    */
-  @ForOverride
   protected abstract boolean doEquivalent(T a, T b);
 
   /**
@@ -127,7 +122,6 @@ public abstract class Equivalence<T> implements BiPredicate<@Nullable T, @Nullab
    *
    * @since 10.0 (previously, subclasses would override hash())
    */
-  @ForOverride
   protected abstract int doHash(T t);
 
   /**
@@ -164,7 +158,7 @@ public abstract class Equivalence<T> implements BiPredicate<@Nullable T, @Nullab
    *
    * @since 10.0
    */
-  public final <S extends @Nullable T> Wrapper<S> wrap(@ParametricNullness S reference) {
+  public final <S extends T> Wrapper<S> wrap(@ParametricNullness S reference) {
     return new Wrapper<S>(this, reference);
   }
 
@@ -188,7 +182,7 @@ public abstract class Equivalence<T> implements BiPredicate<@Nullable T, @Nullab
    *
    * @since 10.0
    */
-  public static final class Wrapper<T extends @Nullable Object> implements Serializable {
+  public static final class Wrapper<T extends Object> implements Serializable {
     private final Equivalence<? super T> equivalence;
     @ParametricNullness private final T reference;
 
@@ -258,8 +252,7 @@ public abstract class Equivalence<T> implements BiPredicate<@Nullable T, @Nullab
    *
    * @since 10.0
    */
-  @GwtCompatible(serializable = true)
-  public final <S extends @Nullable T> Equivalence<Iterable<S>> pairwise() {
+  public final <S extends T> Equivalence<Iterable<S>> pairwise() {
     // Ideally, the returned equivalence would support Iterable<? extends T>. However,
     // the need for this is so rare that it's not worth making callers deal with the ugly wildcard.
     return new PairwiseEquivalence<>(this);
@@ -271,12 +264,12 @@ public abstract class Equivalence<T> implements BiPredicate<@Nullable T, @Nullab
    *
    * @since 10.0
    */
-  public final Predicate<@Nullable T> equivalentTo(@CheckForNull T target) {
+  public final Predicate<T> equivalentTo(@CheckForNull T target) {
     return new EquivalentToPredicate<T>(this, target);
   }
 
   private static final class EquivalentToPredicate<T>
-      implements Predicate<@Nullable T>, Serializable {
+      implements Predicate<T>, Serializable {
 
     private final Equivalence<T> equivalence;
     @CheckForNull private final T target;
diff --git a/guava/src/com/google/common/base/ExtraObjectsMethodsForWeb.java b/guava/src/com/google/common/base/ExtraObjectsMethodsForWeb.java
index 6770755..a5aa8a2 100644
--- a/guava/src/com/google/common/base/ExtraObjectsMethodsForWeb.java
+++ b/guava/src/com/google/common/base/ExtraObjectsMethodsForWeb.java
@@ -14,12 +14,10 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Holder for extra methods of {@code Objects} only in web. Intended to be empty for regular
  * version.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ExtraObjectsMethodsForWeb {}
diff --git a/guava/src/com/google/common/base/FinalizablePhantomReference.java b/guava/src/com/google/common/base/FinalizablePhantomReference.java
index 4f93996..fa47907 100644
--- a/guava/src/com/google/common/base/FinalizablePhantomReference.java
+++ b/guava/src/com/google/common/base/FinalizablePhantomReference.java
@@ -14,7 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.lang.ref.PhantomReference;
 import java.lang.ref.ReferenceQueue;
 import javax.annotation.CheckForNull;
@@ -29,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Bob Lee
  * @since 2.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class FinalizablePhantomReference<T> extends PhantomReference<T>
     implements FinalizableReference {
diff --git a/guava/src/com/google/common/base/FinalizableReference.java b/guava/src/com/google/common/base/FinalizableReference.java
index 73753c9..ac0f6e7 100644
--- a/guava/src/com/google/common/base/FinalizableReference.java
+++ b/guava/src/com/google/common/base/FinalizableReference.java
@@ -14,8 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * Implemented by references that have code to run after garbage collection of their referents.
@@ -24,8 +22,6 @@ import com.google.errorprone.annotations.DoNotMock;
  * @author Bob Lee
  * @since 2.0
  */
-@DoNotMock("Use an instance of one of the Finalizable*Reference classes")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface FinalizableReference {
   /**
diff --git a/guava/src/com/google/common/base/FinalizableReferenceQueue.java b/guava/src/com/google/common/base/FinalizableReferenceQueue.java
index 5ce1d31..02d4de0 100644
--- a/guava/src/com/google/common/base/FinalizableReferenceQueue.java
+++ b/guava/src/com/google/common/base/FinalizableReferenceQueue.java
@@ -14,8 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.io.Closeable;
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -88,7 +86,6 @@ import javax.annotation.CheckForNull;
  * @author Bob Lee
  * @since 2.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public class FinalizableReferenceQueue implements Closeable {
   /*
@@ -240,7 +237,7 @@ public class FinalizableReferenceQueue implements Closeable {
   static class SystemLoader implements FinalizerLoader {
     // This is used by the ClassLoader-leak test in FinalizableReferenceQueueTest to disable
     // finding Finalizer on the system class path even if it is there.
-    @VisibleForTesting static boolean disabled;
+    static boolean disabled;
 
     @Override
     @CheckForNull
diff --git a/guava/src/com/google/common/base/FinalizableSoftReference.java b/guava/src/com/google/common/base/FinalizableSoftReference.java
index c0e9b6b..53c83a3 100644
--- a/guava/src/com/google/common/base/FinalizableSoftReference.java
+++ b/guava/src/com/google/common/base/FinalizableSoftReference.java
@@ -14,7 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.lang.ref.ReferenceQueue;
 import java.lang.ref.SoftReference;
 import javax.annotation.CheckForNull;
@@ -27,7 +26,6 @@ import javax.annotation.CheckForNull;
  * @author Bob Lee
  * @since 2.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class FinalizableSoftReference<T> extends SoftReference<T>
     implements FinalizableReference {
diff --git a/guava/src/com/google/common/base/FinalizableWeakReference.java b/guava/src/com/google/common/base/FinalizableWeakReference.java
index 9cca92e..5d44704 100644
--- a/guava/src/com/google/common/base/FinalizableWeakReference.java
+++ b/guava/src/com/google/common/base/FinalizableWeakReference.java
@@ -14,9 +14,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
 import javax.annotation.CheckForNull;
 
 /**
@@ -27,7 +25,6 @@ import javax.annotation.CheckForNull;
  * @author Bob Lee
  * @since 2.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class FinalizableWeakReference<T> extends WeakReference<T>
     implements FinalizableReference {
diff --git a/guava/src/com/google/common/base/Function.java b/guava/src/com/google/common/base/Function.java
index 45287b7..d0362af 100644
--- a/guava/src/com/google/common/base/Function.java
+++ b/guava/src/com/google/common/base/Function.java
@@ -14,10 +14,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Legacy version of {@link java.util.function.Function java.util.function.Function}.
@@ -40,13 +37,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @FunctionalInterface
 @ElementTypesAreNonnullByDefault
-public interface Function<F extends @Nullable Object, T extends @Nullable Object>
+public interface Function<F extends Object, T extends Object>
     extends java.util.function.Function<F, T> {
   @Override
-  @CanIgnoreReturnValue // TODO(kevinb): remove this
+  // TODO(kevinb): remove this
   @ParametricNullness
   T apply(@ParametricNullness F input);
 
diff --git a/guava/src/com/google/common/base/FunctionalEquivalence.java b/guava/src/com/google/common/base/FunctionalEquivalence.java
index 8bb67be..bd18c1d 100644
--- a/guava/src/com/google/common/base/FunctionalEquivalence.java
+++ b/guava/src/com/google/common/base/FunctionalEquivalence.java
@@ -16,8 +16,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -27,8 +25,6 @@ import javax.annotation.CheckForNull;
  * @author Bob Lee
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class FunctionalEquivalence<F, T> extends Equivalence<F> implements Serializable {
 
diff --git a/guava/src/com/google/common/base/Functions.java b/guava/src/com/google/common/base/Functions.java
index 5337d0e..046ca44 100644
--- a/guava/src/com/google/common/base/Functions.java
+++ b/guava/src/com/google/common/base/Functions.java
@@ -14,15 +14,12 @@
 
 package com.google.common.base;
 
-import static com.google.common.base.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@code com.google.common.base.Function} instances; see that
@@ -37,7 +34,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Functions {
   private Functions() {}
@@ -82,12 +78,12 @@ public final class Functions {
   /** Returns the identity function. */
   // implementation is "fully variant"; E has become a "pass-through" type
   @SuppressWarnings("unchecked")
-  public static <E extends @Nullable Object> Function<E, E> identity() {
+  public static <E extends Object> Function<E, E> identity() {
     return (Function<E, E>) IdentityFunction.INSTANCE;
   }
 
   // enum singleton pattern
-  private enum IdentityFunction implements Function<@Nullable Object, @Nullable Object> {
+  private enum IdentityFunction implements Function<Object, Object> {
     INSTANCE;
 
     @Override
@@ -115,7 +111,7 @@ public final class Functions {
    * key (instead of an exception being thrown), you can use the method reference {@code map::get}
    * instead.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Function<K, V> forMap(
+  public static <K extends Object, V extends Object> Function<K, V> forMap(
       Map<K, V> map) {
     return new FunctionForMapNoDefault<>(map);
   }
@@ -133,13 +129,13 @@ public final class Functions {
    * @return function that returns {@code map.get(a)} when {@code a} is a key, or {@code
    *     defaultValue} otherwise
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Function<K, V> forMap(
+  public static <K extends Object, V extends Object> Function<K, V> forMap(
       Map<K, ? extends V> map, @ParametricNullness V defaultValue) {
     return new ForMapWithDefault<>(map, defaultValue);
   }
 
   private static class FunctionForMapNoDefault<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       implements Function<K, V>, Serializable {
     final Map<K, V> map;
 
@@ -178,7 +174,7 @@ public final class Functions {
     private static final long serialVersionUID = 0;
   }
 
-  private static class ForMapWithDefault<K extends @Nullable Object, V extends @Nullable Object>
+  private static class ForMapWithDefault<K extends Object, V extends Object>
       implements Function<K, V>, Serializable {
     final Map<K, ? extends V> map;
     @ParametricNullness final V defaultValue;
@@ -233,13 +229,13 @@ public final class Functions {
    * @return the composition of {@code f} and {@code g}
    * @see <a href="//en.wikipedia.org/wiki/Function_composition">function composition</a>
    */
-  public static <A extends @Nullable Object, B extends @Nullable Object, C extends @Nullable Object>
+  public static <A extends Object, B extends Object, C extends Object>
       Function<A, C> compose(Function<B, C> g, Function<A, ? extends B> f) {
     return new FunctionComposition<>(g, f);
   }
 
   private static class FunctionComposition<
-          A extends @Nullable Object, B extends @Nullable Object, C extends @Nullable Object>
+          A extends Object, B extends Object, C extends Object>
       implements Function<A, C>, Serializable {
     private final Function<B, C> g;
     private final Function<A, ? extends B> f;
@@ -286,13 +282,13 @@ public final class Functions {
    *
    * <p><b>Java 8 users:</b> use the method reference {@code predicate::test} instead.
    */
-  public static <T extends @Nullable Object> Function<T, Boolean> forPredicate(
+  public static <T extends Object> Function<T, Boolean> forPredicate(
       Predicate<T> predicate) {
     return new PredicateFunction<T>(predicate);
   }
 
   /** @see Functions#forPredicate */
-  private static class PredicateFunction<T extends @Nullable Object>
+  private static class PredicateFunction<T extends Object>
       implements Function<T, Boolean>, Serializable {
     private final Predicate<T> predicate;
 
@@ -335,13 +331,13 @@ public final class Functions {
    * @param value the constant value for the function to return
    * @return a function that always returns {@code value}
    */
-  public static <E extends @Nullable Object> Function<@Nullable Object, E> constant(
+  public static <E extends Object> Function<Object, E> constant(
       @ParametricNullness E value) {
     return new ConstantFunction<>(value);
   }
 
-  private static class ConstantFunction<E extends @Nullable Object>
-      implements Function<@Nullable Object, E>, Serializable {
+  private static class ConstantFunction<E extends Object>
+      implements Function<Object, E>, Serializable {
     @ParametricNullness private final E value;
 
     public ConstantFunction(@ParametricNullness E value) {
@@ -383,13 +379,13 @@ public final class Functions {
    *
    * @since 10.0
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> Function<F, T> forSupplier(
+  public static <F extends Object, T extends Object> Function<F, T> forSupplier(
       Supplier<T> supplier) {
     return new SupplierFunction<>(supplier);
   }
 
   /** @see Functions#forSupplier */
-  private static class SupplierFunction<F extends @Nullable Object, T extends @Nullable Object>
+  private static class SupplierFunction<F extends Object, T extends Object>
       implements Function<F, T>, Serializable {
 
     private final Supplier<T> supplier;
diff --git a/guava/src/com/google/common/base/Java8Compatibility.java b/guava/src/com/google/common/base/Java8Compatibility.java
index edc8b73..2d2b5f3 100644
--- a/guava/src/com/google/common/base/Java8Compatibility.java
+++ b/guava/src/com/google/common/base/Java8Compatibility.java
@@ -14,14 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.nio.Buffer;
 
 /**
  * Wrappers around {@link Buffer} methods that are covariantly overridden in Java 9+. See
  * https://github.com/google/guava/issues/3990
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class Java8Compatibility {
   static void clear(Buffer b) {
diff --git a/guava/src/com/google/common/base/JdkPattern.java b/guava/src/com/google/common/base/JdkPattern.java
index 4788398..1d5a310 100644
--- a/guava/src/com/google/common/base/JdkPattern.java
+++ b/guava/src/com/google/common/base/JdkPattern.java
@@ -14,14 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /** A regex pattern implementation which is backed by the {@link Pattern}. */
 @ElementTypesAreNonnullByDefault
-@GwtIncompatible
 final class JdkPattern extends CommonPattern implements Serializable {
   private final Pattern pattern;
 
diff --git a/guava/src/com/google/common/base/Joiner.java b/guava/src/com/google/common/base/Joiner.java
index 0f3d6e4..3668f79 100644
--- a/guava/src/com/google/common/base/Joiner.java
+++ b/guava/src/com/google/common/base/Joiner.java
@@ -15,11 +15,7 @@
 package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -27,7 +23,6 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An object which joins pieces of text (specified as an array, {@link Iterable}, varargs or even a
@@ -64,7 +59,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class Joiner {
   /** Returns a joiner which automatically places {@code separator} between consecutive elements. */
@@ -97,7 +91,6 @@ public class Joiner {
    * Appends the string representation of each of {@code parts}, using the previously configured
    * separator between each, to {@code appendable}.
    */
-  @CanIgnoreReturnValue
   public <A extends Appendable> A appendTo(A appendable, Iterable<? extends @Nullable Object> parts)
       throws IOException {
     return appendTo(appendable, parts.iterator());
@@ -109,7 +102,6 @@ public class Joiner {
    *
    * @since 11.0
    */
-  @CanIgnoreReturnValue
   public <A extends Appendable> A appendTo(A appendable, Iterator<? extends @Nullable Object> parts)
       throws IOException {
     checkNotNull(appendable);
@@ -127,14 +119,12 @@ public class Joiner {
    * Appends the string representation of each of {@code parts}, using the previously configured
    * separator between each, to {@code appendable}.
    */
-  @CanIgnoreReturnValue
   public final <A extends Appendable> A appendTo(A appendable, @Nullable Object[] parts)
       throws IOException {
     return appendTo(appendable, Arrays.asList(parts));
   }
 
   /** Appends to {@code appendable} the string representation of each of the remaining arguments. */
-  @CanIgnoreReturnValue
   public final <A extends Appendable> A appendTo(
       A appendable,
       @CheckForNull Object first,
@@ -149,7 +139,6 @@ public class Joiner {
    * separator between each, to {@code builder}. Identical to {@link #appendTo(Appendable,
    * Iterable)}, except that it does not throw {@link IOException}.
    */
-  @CanIgnoreReturnValue
   public final StringBuilder appendTo(
       StringBuilder builder, Iterable<? extends @Nullable Object> parts) {
     return appendTo(builder, parts.iterator());
@@ -162,7 +151,6 @@ public class Joiner {
    *
    * @since 11.0
    */
-  @CanIgnoreReturnValue
   public final StringBuilder appendTo(
       StringBuilder builder, Iterator<? extends @Nullable Object> parts) {
     try {
@@ -178,7 +166,6 @@ public class Joiner {
    * separator between each, to {@code builder}. Identical to {@link #appendTo(Appendable,
    * Iterable)}, except that it does not throw {@link IOException}.
    */
-  @CanIgnoreReturnValue
   public final StringBuilder appendTo(StringBuilder builder, @Nullable Object[] parts) {
     return appendTo(builder, Arrays.asList(parts));
   }
@@ -188,7 +175,6 @@ public class Joiner {
    * Identical to {@link #appendTo(Appendable, Object, Object, Object...)}, except that it does not
    * throw {@link IOException}.
    */
-  @CanIgnoreReturnValue
   public final StringBuilder appendTo(
       StringBuilder builder,
       @CheckForNull Object first,
@@ -345,7 +331,6 @@ public class Joiner {
      * Appends the string representation of each entry of {@code map}, using the previously
      * configured separator and key-value separator, to {@code appendable}.
      */
-    @CanIgnoreReturnValue
     public <A extends Appendable> A appendTo(A appendable, Map<?, ?> map) throws IOException {
       return appendTo(appendable, map.entrySet());
     }
@@ -355,7 +340,6 @@ public class Joiner {
      * configured separator and key-value separator, to {@code builder}. Identical to {@link
      * #appendTo(Appendable, Map)}, except that it does not throw {@link IOException}.
      */
-    @CanIgnoreReturnValue
     public StringBuilder appendTo(StringBuilder builder, Map<?, ?> map) {
       return appendTo(builder, map.entrySet());
     }
@@ -366,8 +350,6 @@ public class Joiner {
      *
      * @since 10.0
      */
-    @Beta
-    @CanIgnoreReturnValue
     public <A extends Appendable> A appendTo(A appendable, Iterable<? extends Entry<?, ?>> entries)
         throws IOException {
       return appendTo(appendable, entries.iterator());
@@ -379,8 +361,6 @@ public class Joiner {
      *
      * @since 11.0
      */
-    @Beta
-    @CanIgnoreReturnValue
     public <A extends Appendable> A appendTo(A appendable, Iterator<? extends Entry<?, ?>> parts)
         throws IOException {
       checkNotNull(appendable);
@@ -407,8 +387,6 @@ public class Joiner {
      *
      * @since 10.0
      */
-    @Beta
-    @CanIgnoreReturnValue
     public StringBuilder appendTo(StringBuilder builder, Iterable<? extends Entry<?, ?>> entries) {
       return appendTo(builder, entries.iterator());
     }
@@ -420,8 +398,6 @@ public class Joiner {
      *
      * @since 11.0
      */
-    @Beta
-    @CanIgnoreReturnValue
     public StringBuilder appendTo(StringBuilder builder, Iterator<? extends Entry<?, ?>> entries) {
       try {
         appendTo((Appendable) builder, entries);
@@ -445,7 +421,6 @@ public class Joiner {
      *
      * @since 10.0
      */
-    @Beta
     public String join(Iterable<? extends Entry<?, ?>> entries) {
       return join(entries.iterator());
     }
@@ -456,7 +431,6 @@ public class Joiner {
      *
      * @since 11.0
      */
-    @Beta
     public String join(Iterator<? extends Entry<?, ?>> entries) {
       return appendTo(new StringBuilder(), entries).toString();
     }
@@ -492,12 +466,12 @@ public class Joiner {
     return (part instanceof CharSequence) ? (CharSequence) part : part.toString();
   }
 
-  private static Iterable<@Nullable Object> iterable(
+  private static Iterable<Object> iterable(
       @CheckForNull final Object first,
       @CheckForNull final Object second,
       final @Nullable Object[] rest) {
     checkNotNull(rest);
-    return new AbstractList<@Nullable Object>() {
+    return new AbstractList<Object>() {
       @Override
       public int size() {
         return rest.length + 2;
diff --git a/guava/src/com/google/common/base/MoreObjects.java b/guava/src/com/google/common/base/MoreObjects.java
index 16e12bb..a1199ee 100644
--- a/guava/src/com/google/common/base/MoreObjects.java
+++ b/guava/src/com/google/common/base/MoreObjects.java
@@ -16,8 +16,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.lang.reflect.Array;
 import java.util.Arrays;
 import java.util.Collection;
@@ -38,7 +36,6 @@ import javax.annotation.CheckForNull;
  * @author Laurence Gonsalves
  * @since 18.0 (since 2.0 as {@code Objects})
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class MoreObjects {
   /**
@@ -183,7 +180,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 12.0 as {@code Objects.ToStringHelper.omitNullValues()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper omitNullValues() {
       omitNullValues = true;
       return this;
@@ -194,7 +190,6 @@ public final class MoreObjects {
      * is {@code null}, the string {@code "null"} is used, unless {@link #omitNullValues()} is
      * called, in which case this name/value pair will not be added.
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, @CheckForNull Object value) {
       return addHolder(name, value);
     }
@@ -204,7 +199,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, boolean value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -214,7 +208,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, char value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -224,7 +217,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, double value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -234,7 +226,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, float value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -244,7 +235,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, int value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -254,7 +244,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.add()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper add(String name, long value) {
       return addUnconditionalHolder(name, String.valueOf(value));
     }
@@ -265,7 +254,6 @@ public final class MoreObjects {
      * <p>It is strongly encouraged to use {@link #add(String, Object)} instead and give value a
      * readable name.
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(@CheckForNull Object value) {
       return addHolder(value);
     }
@@ -278,7 +266,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(boolean value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
@@ -291,7 +278,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(char value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
@@ -304,7 +290,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(double value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
@@ -317,7 +302,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(float value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
@@ -330,7 +314,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(int value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
@@ -343,7 +326,6 @@ public final class MoreObjects {
      *
      * @since 18.0 (since 11.0 as {@code Objects.ToStringHelper.addValue()}).
      */
-    @CanIgnoreReturnValue
     public ToStringHelper addValue(long value) {
       return addUnconditionalHolder(String.valueOf(value));
     }
diff --git a/guava/src/com/google/common/base/NullnessCasts.java b/guava/src/com/google/common/base/NullnessCasts.java
index 1ada6bf..3132e98 100644
--- a/guava/src/com/google/common/base/NullnessCasts.java
+++ b/guava/src/com/google/common/base/NullnessCasts.java
@@ -14,12 +14,9 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** A utility method to perform unchecked casts to suppress errors produced by nullness analyses. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class NullnessCasts {
   /**
@@ -52,7 +49,7 @@ final class NullnessCasts {
    */
   @ParametricNullness
   @SuppressWarnings("nullness")
-  static <T extends @Nullable Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
+  static <T extends Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
     return t;
   }
 
diff --git a/guava/src/com/google/common/base/Objects.java b/guava/src/com/google/common/base/Objects.java
index bd6b0d9..89c0641 100644
--- a/guava/src/com/google/common/base/Objects.java
+++ b/guava/src/com/google/common/base/Objects.java
@@ -14,10 +14,8 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Arrays;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Helper functions that can operate on any {@code Object}.
@@ -29,7 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Laurence Gonsalves
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Objects extends ExtraObjectsMethodsForWeb {
   private Objects() {}
diff --git a/guava/src/com/google/common/base/Optional.java b/guava/src/com/google/common/base/Optional.java
index b47705e..3384d1c 100644
--- a/guava/src/com/google/common/base/Optional.java
+++ b/guava/src/com/google/common/base/Optional.java
@@ -16,9 +16,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.Serializable;
 import java.util.Iterator;
 import java.util.Set;
@@ -80,8 +77,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@DoNotMock("Use Optional.of(value) or Optional.absent()")
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 public abstract class Optional<T> implements Serializable {
   /**
@@ -239,7 +234,6 @@ public abstract class Optional<T> implements Serializable {
    * @throws NullPointerException if this optional's value is absent and the supplier returns {@code
    *     null}
    */
-  @Beta
   public abstract T or(Supplier<? extends T> supplier);
 
   /**
@@ -331,7 +325,6 @@ public abstract class Optional<T> implements Serializable {
    *
    * @since 11.0 (generics widened in 13.0)
    */
-  @Beta
   public static <T> Iterable<T> presentInstances(
       final Iterable<? extends Optional<? extends T>> optionals) {
     checkNotNull(optionals);
diff --git a/guava/src/com/google/common/base/PairwiseEquivalence.java b/guava/src/com/google/common/base/PairwiseEquivalence.java
index 74be27f..bf6b3d8 100644
--- a/guava/src/com/google/common/base/PairwiseEquivalence.java
+++ b/guava/src/com/google/common/base/PairwiseEquivalence.java
@@ -14,15 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class PairwiseEquivalence<E, T extends @Nullable E> extends Equivalence<Iterable<T>>
+final class PairwiseEquivalence<E, T extends E> extends Equivalence<Iterable<T>>
     implements Serializable {
   final Equivalence<E> elementEquivalence;
 
diff --git a/guava/src/com/google/common/base/ParametricNullness.java b/guava/src/com/google/common/base/ParametricNullness.java
index c736055..e147531 100644
--- a/guava/src/com/google/common/base/ParametricNullness.java
+++ b/guava/src/com/google/common/base/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/base/PatternCompiler.java b/guava/src/com/google/common/base/PatternCompiler.java
index 72a45fa..11e6e86 100644
--- a/guava/src/com/google/common/base/PatternCompiler.java
+++ b/guava/src/com/google/common/base/PatternCompiler.java
@@ -14,14 +14,12 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 
 /**
  * Pluggable interface for compiling a regex pattern. By default this package uses the {@code
  * java.util.regex} library, but an alternate implementation can be supplied using the {@link
  * java.util.ServiceLoader} mechanism.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 interface PatternCompiler {
   /**
diff --git a/guava/src/com/google/common/base/Platform.java b/guava/src/com/google/common/base/Platform.java
index 644e89c..65b076d 100644
--- a/guava/src/com/google/common/base/Platform.java
+++ b/guava/src/com/google/common/base/Platform.java
@@ -14,8 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import java.lang.ref.WeakReference;
 import java.util.Locale;
 import java.util.ServiceConfigurationError;
 import java.util.logging.Level;
@@ -28,7 +26,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Jesse Wilson
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class Platform {
   private static final Logger logger = Logger.getLogger(Platform.class.getName());
diff --git a/guava/src/com/google/common/base/Preconditions.java b/guava/src/com/google/common/base/Preconditions.java
index 13ff77b..86c8190 100644
--- a/guava/src/com/google/common/base/Preconditions.java
+++ b/guava/src/com/google/common/base/Preconditions.java
@@ -16,10 +16,7 @@ package com.google.common.base;
 
 import static com.google.common.base.Strings.lenientFormat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static convenience methods that help a method or constructor check whether it was invoked
@@ -113,7 +110,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Preconditions {
   private Preconditions() {}
@@ -883,7 +879,6 @@ public final class Preconditions {
    * @throws NullPointerException if {@code reference} is null
    * @see Verify#verifyNotNull Verify.verifyNotNull()
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(@CheckForNull T reference) {
     if (reference == null) {
       throw new NullPointerException();
@@ -901,7 +896,6 @@ public final class Preconditions {
    * @throws NullPointerException if {@code reference} is null
    * @see Verify#verifyNotNull Verify.verifyNotNull()
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(@CheckForNull T reference, @CheckForNull Object errorMessage) {
     if (reference == null) {
       throw new NullPointerException(String.valueOf(errorMessage));
@@ -924,7 +918,6 @@ public final class Preconditions {
    * @throws NullPointerException if {@code reference} is null
    * @see Verify#verifyNotNull Verify.verifyNotNull()
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T reference,
       String errorMessageTemplate,
@@ -942,7 +935,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(@CheckForNull T obj, String errorMessageTemplate, char p1) {
     if (obj == null) {
       throw new NullPointerException(lenientFormat(errorMessageTemplate, p1));
@@ -957,7 +949,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(@CheckForNull T obj, String errorMessageTemplate, int p1) {
     if (obj == null) {
       throw new NullPointerException(lenientFormat(errorMessageTemplate, p1));
@@ -972,7 +963,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(@CheckForNull T obj, String errorMessageTemplate, long p1) {
     if (obj == null) {
       throw new NullPointerException(lenientFormat(errorMessageTemplate, p1));
@@ -987,7 +977,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, @CheckForNull Object p1) {
     if (obj == null) {
@@ -1003,7 +992,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, char p1, char p2) {
     if (obj == null) {
@@ -1019,7 +1007,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, char p1, int p2) {
     if (obj == null) {
@@ -1035,7 +1022,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, char p1, long p2) {
     if (obj == null) {
@@ -1051,7 +1037,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, char p1, @CheckForNull Object p2) {
     if (obj == null) {
@@ -1067,7 +1052,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, int p1, char p2) {
     if (obj == null) {
@@ -1083,7 +1067,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, int p1, int p2) {
     if (obj == null) {
@@ -1099,7 +1082,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, int p1, long p2) {
     if (obj == null) {
@@ -1115,7 +1097,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, int p1, @CheckForNull Object p2) {
     if (obj == null) {
@@ -1131,7 +1112,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, long p1, char p2) {
     if (obj == null) {
@@ -1147,7 +1127,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, long p1, int p2) {
     if (obj == null) {
@@ -1163,7 +1142,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, long p1, long p2) {
     if (obj == null) {
@@ -1179,7 +1157,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, long p1, @CheckForNull Object p2) {
     if (obj == null) {
@@ -1195,7 +1172,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, @CheckForNull Object p1, char p2) {
     if (obj == null) {
@@ -1211,7 +1187,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, @CheckForNull Object p1, int p2) {
     if (obj == null) {
@@ -1227,7 +1202,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj, String errorMessageTemplate, @CheckForNull Object p1, long p2) {
     if (obj == null) {
@@ -1243,7 +1217,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj,
       String errorMessageTemplate,
@@ -1262,7 +1235,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj,
       String errorMessageTemplate,
@@ -1282,7 +1254,6 @@ public final class Preconditions {
    *
    * @since 20.0 (varargs overload since 2.0)
    */
-  @CanIgnoreReturnValue
   public static <T> T checkNotNull(
       @CheckForNull T obj,
       String errorMessageTemplate,
@@ -1332,7 +1303,6 @@ public final class Preconditions {
    * @throws IndexOutOfBoundsException if {@code index} is negative or is not less than {@code size}
    * @throws IllegalArgumentException if {@code size} is negative
    */
-  @CanIgnoreReturnValue
   public static int checkElementIndex(int index, int size) {
     return checkElementIndex(index, size, "index");
   }
@@ -1348,7 +1318,6 @@ public final class Preconditions {
    * @throws IndexOutOfBoundsException if {@code index} is negative or is not less than {@code size}
    * @throws IllegalArgumentException if {@code size} is negative
    */
-  @CanIgnoreReturnValue
   public static int checkElementIndex(int index, int size, String desc) {
     // Carefully optimized for execution by hotspot (explanatory comment above)
     if (index < 0 || index >= size) {
@@ -1377,7 +1346,6 @@ public final class Preconditions {
    * @throws IndexOutOfBoundsException if {@code index} is negative or is greater than {@code size}
    * @throws IllegalArgumentException if {@code size} is negative
    */
-  @CanIgnoreReturnValue
   public static int checkPositionIndex(int index, int size) {
     return checkPositionIndex(index, size, "index");
   }
@@ -1393,7 +1361,6 @@ public final class Preconditions {
    * @throws IndexOutOfBoundsException if {@code index} is negative or is greater than {@code size}
    * @throws IllegalArgumentException if {@code size} is negative
    */
-  @CanIgnoreReturnValue
   public static int checkPositionIndex(int index, int size, String desc) {
     // Carefully optimized for execution by hotspot (explanatory comment above)
     if (index < 0 || index > size) {
diff --git a/guava/src/com/google/common/base/Predicate.java b/guava/src/com/google/common/base/Predicate.java
index 4384ed0..e2d3d18 100644
--- a/guava/src/com/google/common/base/Predicate.java
+++ b/guava/src/com/google/common/base/Predicate.java
@@ -14,10 +14,7 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Legacy version of {@link java.util.function.Predicate java.util.function.Predicate}. Determines a
@@ -42,9 +39,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 2.0
  */
 @FunctionalInterface
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface Predicate<T extends @Nullable Object> extends java.util.function.Predicate<T> {
+public interface Predicate<T extends Object> extends java.util.function.Predicate<T> {
   /**
    * Returns the result of applying this predicate to {@code input} (Java 8 users, see notes in the
    * class documentation above). This method is <i>generally expected</i>, but not absolutely
@@ -60,7 +56,6 @@ public interface Predicate<T extends @Nullable Object> extends java.util.functio
    * @throws NullPointerException if {@code input} is null and this predicate does not accept null
    *     arguments
    */
-  @CanIgnoreReturnValue
   boolean apply(@ParametricNullness T input);
 
   /**
diff --git a/guava/src/com/google/common/base/Predicates.java b/guava/src/com/google/common/base/Predicates.java
index c3b5562..c8a5b1f 100644
--- a/guava/src/com/google/common/base/Predicates.java
+++ b/guava/src/com/google/common/base/Predicates.java
@@ -16,9 +16,6 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -26,7 +23,6 @@ import java.util.Collection;
 import java.util.List;
 import java.util.regex.Pattern;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@code Predicate} instances.
@@ -39,7 +35,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Predicates {
   private Predicates() {}
@@ -48,14 +43,12 @@ public final class Predicates {
   // interface which specifies an accept(PredicateVisitor) method.
 
   /** Returns a predicate that always evaluates to {@code true}. */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Predicate<T> alwaysTrue() {
+  public static <T extends Object> Predicate<T> alwaysTrue() {
     return ObjectPredicate.ALWAYS_TRUE.withNarrowedType();
   }
 
   /** Returns a predicate that always evaluates to {@code false}. */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Predicate<T> alwaysFalse() {
+  public static <T extends Object> Predicate<T> alwaysFalse() {
     return ObjectPredicate.ALWAYS_FALSE.withNarrowedType();
   }
 
@@ -63,8 +56,7 @@ public final class Predicates {
    * Returns a predicate that evaluates to {@code true} if the object reference being tested is
    * null.
    */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Predicate<T> isNull() {
+  public static <T extends Object> Predicate<T> isNull() {
     return ObjectPredicate.IS_NULL.withNarrowedType();
   }
 
@@ -72,8 +64,7 @@ public final class Predicates {
    * Returns a predicate that evaluates to {@code true} if the object reference being tested is not
    * null.
    */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Predicate<T> notNull() {
+  public static <T extends Object> Predicate<T> notNull() {
     return ObjectPredicate.NOT_NULL.withNarrowedType();
   }
 
@@ -81,7 +72,7 @@ public final class Predicates {
    * Returns a predicate that evaluates to {@code true} if the given predicate evaluates to {@code
    * false}.
    */
-  public static <T extends @Nullable Object> Predicate<T> not(Predicate<T> predicate) {
+  public static <T extends Object> Predicate<T> not(Predicate<T> predicate) {
     return new NotPredicate<T>(predicate);
   }
 
@@ -92,7 +83,7 @@ public final class Predicates {
    * changes to it won't alter the behavior of this predicate. If {@code components} is empty, the
    * returned predicate will always evaluate to {@code true}.
    */
-  public static <T extends @Nullable Object> Predicate<T> and(
+  public static <T extends Object> Predicate<T> and(
       Iterable<? extends Predicate<? super T>> components) {
     return new AndPredicate<T>(defensiveCopy(components));
   }
@@ -105,7 +96,7 @@ public final class Predicates {
    * returned predicate will always evaluate to {@code true}.
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> Predicate<T> and(Predicate<? super T>... components) {
+  public static <T extends Object> Predicate<T> and(Predicate<? super T>... components) {
     return new AndPredicate<T>(defensiveCopy(components));
   }
 
@@ -114,7 +105,7 @@ public final class Predicates {
    * true}. The components are evaluated in order, and evaluation will be "short-circuited" as soon
    * as a false predicate is found.
    */
-  public static <T extends @Nullable Object> Predicate<T> and(
+  public static <T extends Object> Predicate<T> and(
       Predicate<? super T> first, Predicate<? super T> second) {
     return new AndPredicate<T>(Predicates.<T>asList(checkNotNull(first), checkNotNull(second)));
   }
@@ -126,7 +117,7 @@ public final class Predicates {
    * changes to it won't alter the behavior of this predicate. If {@code components} is empty, the
    * returned predicate will always evaluate to {@code false}.
    */
-  public static <T extends @Nullable Object> Predicate<T> or(
+  public static <T extends Object> Predicate<T> or(
       Iterable<? extends Predicate<? super T>> components) {
     return new OrPredicate<T>(defensiveCopy(components));
   }
@@ -139,7 +130,7 @@ public final class Predicates {
    * returned predicate will always evaluate to {@code false}.
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> Predicate<T> or(Predicate<? super T>... components) {
+  public static <T extends Object> Predicate<T> or(Predicate<? super T>... components) {
     return new OrPredicate<T>(defensiveCopy(components));
   }
 
@@ -148,7 +139,7 @@ public final class Predicates {
    * {@code true}. The components are evaluated in order, and evaluation will be "short-circuited"
    * as soon as a true predicate is found.
    */
-  public static <T extends @Nullable Object> Predicate<T> or(
+  public static <T extends Object> Predicate<T> or(
       Predicate<? super T> first, Predicate<? super T> second) {
     return new OrPredicate<T>(Predicates.<T>asList(checkNotNull(first), checkNotNull(second)));
   }
@@ -157,7 +148,7 @@ public final class Predicates {
    * Returns a predicate that evaluates to {@code true} if the object being tested {@code equals()}
    * the given target or both are null.
    */
-  public static <T extends @Nullable Object> Predicate<T> equalTo(@ParametricNullness T target) {
+  public static <T extends Object> Predicate<T> equalTo(@ParametricNullness T target) {
     return (target == null)
         ? Predicates.<T>isNull()
         : new IsEqualToPredicate(target).withNarrowedType();
@@ -176,8 +167,8 @@ public final class Predicates {
    * example, {@code instanceOf(ArrayList.class)} will yield different results for the two equal
    * instances {@code Lists.newArrayList(1)} and {@code Arrays.asList(1)}.
    */
-  @GwtIncompatible // Class.isInstance
-  public static <T extends @Nullable Object> Predicate<T> instanceOf(Class<?> clazz) {
+  // Class.isInstance
+  public static <T extends Object> Predicate<T> instanceOf(Class<?> clazz) {
     return new InstanceOfPredicate<>(clazz);
   }
 
@@ -195,8 +186,7 @@ public final class Predicates {
    *
    * @since 20.0 (since 10.0 under the incorrect name {@code assignableFrom})
    */
-  @GwtIncompatible // Class.isAssignableFrom
-  @Beta
+  // Class.isAssignableFrom
   public static Predicate<Class<?>> subtypeOf(Class<?> clazz) {
     return new SubtypeOfPredicate(clazz);
   }
@@ -212,7 +202,7 @@ public final class Predicates {
    *
    * @param target the collection that may contain the function input
    */
-  public static <T extends @Nullable Object> Predicate<T> in(Collection<? extends T> target) {
+  public static <T extends Object> Predicate<T> in(Collection<? extends T> target) {
     return new InPredicate<T>(target);
   }
 
@@ -222,7 +212,7 @@ public final class Predicates {
    *
    * @return the composition of the provided function and predicate
    */
-  public static <A extends @Nullable Object, B extends @Nullable Object> Predicate<A> compose(
+  public static <A extends Object, B extends Object> Predicate<A> compose(
       Predicate<B> predicate, Function<A, ? extends B> function) {
     return new CompositionPredicate<>(predicate, function);
   }
@@ -235,7 +225,7 @@ public final class Predicates {
    * @throws IllegalArgumentException if the pattern is invalid
    * @since 3.0
    */
-  @GwtIncompatible // Only used by other GWT-incompatible code.
+  // Only used by other GWT-incompatible code.
   public static Predicate<CharSequence> containsPattern(String pattern) {
     return new ContainsPatternFromStringPredicate(pattern);
   }
@@ -247,7 +237,6 @@ public final class Predicates {
    *
    * @since 3.0
    */
-  @GwtIncompatible(value = "java.util.regex.Pattern")
   public static Predicate<CharSequence> contains(Pattern pattern) {
     return new ContainsPatternPredicate(new JdkPattern(pattern));
   }
@@ -255,7 +244,7 @@ public final class Predicates {
   // End public API, begin private implementation classes.
 
   // Package private for GWT serialization.
-  enum ObjectPredicate implements Predicate<@Nullable Object> {
+  enum ObjectPredicate implements Predicate<Object> {
     /** @see Predicates#alwaysTrue() */
     ALWAYS_TRUE {
       @Override
@@ -306,13 +295,13 @@ public final class Predicates {
     };
 
     @SuppressWarnings("unchecked") // safe contravariant cast
-    <T extends @Nullable Object> Predicate<T> withNarrowedType() {
+    <T extends Object> Predicate<T> withNarrowedType() {
       return (Predicate<T>) this;
     }
   }
 
   /** @see Predicates#not(Predicate) */
-  private static class NotPredicate<T extends @Nullable Object>
+  private static class NotPredicate<T extends Object>
       implements Predicate<T>, Serializable {
     final Predicate<T> predicate;
 
@@ -348,7 +337,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#and(Iterable) */
-  private static class AndPredicate<T extends @Nullable Object>
+  private static class AndPredicate<T extends Object>
       implements Predicate<T>, Serializable {
     private final List<? extends Predicate<? super T>> components;
 
@@ -391,7 +380,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#or(Iterable) */
-  private static class OrPredicate<T extends @Nullable Object>
+  private static class OrPredicate<T extends Object>
       implements Predicate<T>, Serializable {
     private final List<? extends Predicate<? super T>> components;
 
@@ -447,7 +436,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#equalTo(Object) */
-  private static class IsEqualToPredicate implements Predicate<@Nullable Object>, Serializable {
+  private static class IsEqualToPredicate implements Predicate<Object>, Serializable {
     private final Object target;
 
     private IsEqualToPredicate(Object target) {
@@ -481,14 +470,14 @@ public final class Predicates {
     private static final long serialVersionUID = 0;
 
     @SuppressWarnings("unchecked") // safe contravariant cast
-    <T extends @Nullable Object> Predicate<T> withNarrowedType() {
+    <T extends Object> Predicate<T> withNarrowedType() {
       return (Predicate<T>) this;
     }
   }
 
   /** @see Predicates#instanceOf(Class) */
-  @GwtIncompatible // Class.isInstance
-  private static class InstanceOfPredicate<T extends @Nullable Object>
+  // Class.isInstance
+  private static class InstanceOfPredicate<T extends Object>
       implements Predicate<T>, Serializable {
     private final Class<?> clazz;
 
@@ -524,7 +513,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#subtypeOf(Class) */
-  @GwtIncompatible // Class.isAssignableFrom
+  // Class.isAssignableFrom
   private static class SubtypeOfPredicate implements Predicate<Class<?>>, Serializable {
     private final Class<?> clazz;
 
@@ -560,7 +549,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#in(Collection) */
-  private static class InPredicate<T extends @Nullable Object>
+  private static class InPredicate<T extends Object>
       implements Predicate<T>, Serializable {
     private final Collection<?> target;
 
@@ -600,7 +589,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#compose(Predicate, Function) */
-  private static class CompositionPredicate<A extends @Nullable Object, B extends @Nullable Object>
+  private static class CompositionPredicate<A extends Object, B extends Object>
       implements Predicate<A>, Serializable {
     final Predicate<B> p;
     final Function<A, ? extends B> f;
@@ -639,7 +628,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#contains(Pattern) */
-  @GwtIncompatible // Only used by other GWT-incompatible code.
+  // Only used by other GWT-incompatible code.
   private static class ContainsPatternPredicate implements Predicate<CharSequence>, Serializable {
     final CommonPattern pattern;
 
@@ -687,7 +676,7 @@ public final class Predicates {
   }
 
   /** @see Predicates#containsPattern(String) */
-  @GwtIncompatible // Only used by other GWT-incompatible code.
+  // Only used by other GWT-incompatible code.
   private static class ContainsPatternFromStringPredicate extends ContainsPatternPredicate {
 
     ContainsPatternFromStringPredicate(String string) {
@@ -702,7 +691,7 @@ public final class Predicates {
     private static final long serialVersionUID = 0;
   }
 
-  private static <T extends @Nullable Object> List<Predicate<? super T>> asList(
+  private static <T extends Object> List<Predicate<? super T>> asList(
       Predicate<? super T> first, Predicate<? super T> second) {
     // TODO(kevinb): understand why we still get a warning despite @SafeVarargs!
     return Arrays.<Predicate<? super T>>asList(first, second);
diff --git a/guava/src/com/google/common/base/Present.java b/guava/src/com/google/common/base/Present.java
index 59efebc..35d951e 100644
--- a/guava/src/com/google/common/base/Present.java
+++ b/guava/src/com/google/common/base/Present.java
@@ -16,13 +16,11 @@ package com.google.common.base;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collections;
 import java.util.Set;
 import javax.annotation.CheckForNull;
 
 /** Implementation of an {@link Optional} containing a reference. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class Present<T> extends Optional<T> {
   private final T reference;
diff --git a/guava/src/com/google/common/base/SmallCharMatcher.java b/guava/src/com/google/common/base/SmallCharMatcher.java
index f0e801b..7bc52b0 100644
--- a/guava/src/com/google/common/base/SmallCharMatcher.java
+++ b/guava/src/com/google/common/base/SmallCharMatcher.java
@@ -14,8 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.CharMatcher.NamedFastMatcher;
 import java.util.BitSet;
 
@@ -25,7 +23,7 @@ import java.util.BitSet;
  *
  * @author Christopher Swenson
  */
-@GwtIncompatible // no precomputation is done in GWT
+// no precomputation is done in GWT
 @ElementTypesAreNonnullByDefault
 final class SmallCharMatcher extends NamedFastMatcher {
   static final int MAX_SIZE = 1023;
@@ -70,7 +68,6 @@ final class SmallCharMatcher extends NamedFastMatcher {
    * with linear probing in its implementation. The returned size is the smallest power of two that
    * can hold setSize elements with the desired load factor.
    */
-  @VisibleForTesting
   static int chooseTableSize(int setSize) {
     if (setSize == 1) {
       return 2;
diff --git a/guava/src/com/google/common/base/Splitter.java b/guava/src/com/google/common/base/Splitter.java
index e60e988..43ec508 100644
--- a/guava/src/com/google/common/base/Splitter.java
+++ b/guava/src/com/google/common/base/Splitter.java
@@ -17,9 +17,6 @@ package com.google.common.base;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
@@ -99,7 +96,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Splitter {
   private final CharMatcher trimmer;
@@ -214,7 +210,7 @@ public final class Splitter {
    * @return a splitter, with default settings, that uses this pattern
    * @throws IllegalArgumentException if {@code separatorPattern} matches the empty string
    */
-  @GwtIncompatible // java.util.regex
+  // java.util.regex
   public static Splitter on(Pattern separatorPattern) {
     return on(new JdkPattern(separatorPattern));
   }
@@ -257,7 +253,7 @@ public final class Splitter {
    * @throws IllegalArgumentException if {@code separatorPattern} matches the empty string or is a
    *     malformed expression
    */
-  @GwtIncompatible // java.util.regex
+  // java.util.regex
   public static Splitter onPattern(String separatorPattern) {
     return on(Platform.compilePattern(separatorPattern));
   }
@@ -434,7 +430,6 @@ public final class Splitter {
    * @return a stream over the segments split from the parameter
    * @since 28.2
    */
-  @Beta
   public Stream<String> splitToStream(CharSequence sequence) {
     // Can't use Streams.stream() from base
     return StreamSupport.stream(split(sequence).spliterator(), false);
@@ -446,7 +441,6 @@ public final class Splitter {
    *
    * @since 10.0
    */
-  @Beta
   public MapSplitter withKeyValueSeparator(String separator) {
     return withKeyValueSeparator(on(separator));
   }
@@ -457,7 +451,6 @@ public final class Splitter {
    *
    * @since 14.0
    */
-  @Beta
   public MapSplitter withKeyValueSeparator(char separator) {
     return withKeyValueSeparator(on(separator));
   }
@@ -481,7 +474,6 @@ public final class Splitter {
    *
    * @since 10.0
    */
-  @Beta
   public MapSplitter withKeyValueSeparator(Splitter keyValueSplitter) {
     return new MapSplitter(this, keyValueSplitter);
   }
@@ -494,7 +486,6 @@ public final class Splitter {
    *
    * @since 10.0
    */
-  @Beta
   public static final class MapSplitter {
     private static final String INVALID_ENTRY_MESSAGE = "Chunk [%s] is not a valid entry";
     private final Splitter outerSplitter;
diff --git a/guava/src/com/google/common/base/StandardSystemProperty.java b/guava/src/com/google/common/base/StandardSystemProperty.java
index dc29792..e480500 100644
--- a/guava/src/com/google/common/base/StandardSystemProperty.java
+++ b/guava/src/com/google/common/base/StandardSystemProperty.java
@@ -14,7 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -23,7 +22,7 @@ import javax.annotation.CheckForNull;
  * @author Kurt Alfred Kluever
  * @since 15.0
  */
-@GwtIncompatible // java.lang.System#getProperty
+// java.lang.System#getProperty
 @ElementTypesAreNonnullByDefault
 public enum StandardSystemProperty {
 
diff --git a/guava/src/com/google/common/base/Stopwatch.java b/guava/src/com/google/common/base/Stopwatch.java
index 9d5282d..f590d13 100644
--- a/guava/src/com/google/common/base/Stopwatch.java
+++ b/guava/src/com/google/common/base/Stopwatch.java
@@ -24,10 +24,6 @@ import static java.util.concurrent.TimeUnit.MINUTES;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
 import java.time.Duration;
 import java.util.concurrent.TimeUnit;
 
@@ -87,7 +83,6 @@ import java.util.concurrent.TimeUnit;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("GoodTime") // lots of violations
 @ElementTypesAreNonnullByDefault
 public final class Stopwatch {
@@ -154,7 +149,6 @@ public final class Stopwatch {
    * @return this {@code Stopwatch} instance
    * @throws IllegalStateException if the stopwatch is already running.
    */
-  @CanIgnoreReturnValue
   public Stopwatch start() {
     checkState(!isRunning, "This stopwatch is already running.");
     isRunning = true;
@@ -169,7 +163,6 @@ public final class Stopwatch {
    * @return this {@code Stopwatch} instance
    * @throws IllegalStateException if the stopwatch is already stopped.
    */
-  @CanIgnoreReturnValue
   public Stopwatch stop() {
     long tick = ticker.read();
     checkState(isRunning, "This stopwatch is already stopped.");
@@ -183,7 +176,6 @@ public final class Stopwatch {
    *
    * @return this {@code Stopwatch} instance
    */
-  @CanIgnoreReturnValue
   public Stopwatch reset() {
     elapsedNanos = 0;
     isRunning = false;
@@ -217,8 +209,6 @@ public final class Stopwatch {
    *
    * @since 22.0
    */
-  @GwtIncompatible
-  @J2ObjCIncompatible
   public Duration elapsed() {
     return Duration.ofNanos(elapsedNanos());
   }
diff --git a/guava/src/com/google/common/base/Strings.java b/guava/src/com/google/common/base/Strings.java
index e56bf1c..5dc132f 100644
--- a/guava/src/com/google/common/base/Strings.java
+++ b/guava/src/com/google/common/base/Strings.java
@@ -18,13 +18,8 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.util.logging.Level.WARNING;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.InlineMe;
-import com.google.errorprone.annotations.InlineMeValidationDisabled;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@code String} or {@code CharSequence} instances.
@@ -32,7 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 3.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Strings {
   private Strings() {}
@@ -147,8 +141,6 @@ public final class Strings {
    *     {@code count} is zero)
    * @throws IllegalArgumentException if {@code count} is negative
    */
-  @InlineMe(replacement = "string.repeat(count)")
-  @InlineMeValidationDisabled("Java 11+ API only")
   public static String repeat(String string, int count) {
     checkNotNull(string); // eager for GWT.
 
@@ -224,7 +216,6 @@ public final class Strings {
    * True when a valid surrogate pair starts at the given {@code index} in the given {@code string}.
    * Out-of-range indexes return false.
    */
-  @VisibleForTesting
   static boolean validSurrogatePairAt(CharSequence string, int index) {
     return index >= 0
         && index <= (string.length() - 2)
diff --git a/guava/src/com/google/common/base/Supplier.java b/guava/src/com/google/common/base/Supplier.java
index 08f96be..2e737b1 100644
--- a/guava/src/com/google/common/base/Supplier.java
+++ b/guava/src/com/google/common/base/Supplier.java
@@ -14,9 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Legacy version of {@link java.util.function.Supplier java.util.function.Supplier}. Semantically,
@@ -36,17 +33,15 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Harry Heymann
  * @since 2.0
  */
-@GwtCompatible
 @FunctionalInterface
 @ElementTypesAreNonnullByDefault
-public interface Supplier<T extends @Nullable Object> extends java.util.function.Supplier<T> {
+public interface Supplier<T extends Object> extends java.util.function.Supplier<T> {
   /**
    * Retrieves an instance of the appropriate type. The returned object may or may not be a new
    * instance, depending on the implementation.
    *
    * @return an instance of the appropriate type
    */
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   T get();
diff --git a/guava/src/com/google/common/base/Suppliers.java b/guava/src/com/google/common/base/Suppliers.java
index 57d3486..5d7374b 100644
--- a/guava/src/com/google/common/base/Suppliers.java
+++ b/guava/src/com/google/common/base/Suppliers.java
@@ -14,17 +14,12 @@
 
 package com.google.common.base;
 
-import static com.google.common.base.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.io.Serializable;
 import java.util.concurrent.TimeUnit;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Useful suppliers.
@@ -35,7 +30,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Harry Heymann
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Suppliers {
   private Suppliers() {}
@@ -46,12 +40,12 @@ public final class Suppliers {
    * and then applying {@code function} to that value. Note that the resulting supplier will not
    * call {@code supplier} or invoke {@code function} until it is called.
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> Supplier<T> compose(
+  public static <F extends Object, T extends Object> Supplier<T> compose(
       Function<? super F, T> function, Supplier<F> supplier) {
     return new SupplierComposition<>(function, supplier);
   }
 
-  private static class SupplierComposition<F extends @Nullable Object, T extends @Nullable Object>
+  private static class SupplierComposition<F extends Object, T extends Object>
       implements Supplier<T>, Serializable {
     final Function<? super F, T> function;
     final Supplier<F> supplier;
@@ -105,7 +99,7 @@ public final class Suppliers {
    * <p>If {@code delegate} is an instance created by an earlier call to {@code memoize}, it is
    * returned directly.
    */
-  public static <T extends @Nullable Object> Supplier<T> memoize(Supplier<T> delegate) {
+  public static <T extends Object> Supplier<T> memoize(Supplier<T> delegate) {
     if (delegate instanceof NonSerializableMemoizingSupplier
         || delegate instanceof MemoizingSupplier) {
       return delegate;
@@ -115,8 +109,7 @@ public final class Suppliers {
         : new NonSerializableMemoizingSupplier<T>(delegate);
   }
 
-  @VisibleForTesting
-  static class MemoizingSupplier<T extends @Nullable Object> implements Supplier<T>, Serializable {
+  static class MemoizingSupplier<T extends Object> implements Supplier<T>, Serializable {
     final Supplier<T> delegate;
     transient volatile boolean initialized;
     // "value" does not need to be volatile; visibility piggy-backs
@@ -155,8 +148,7 @@ public final class Suppliers {
     private static final long serialVersionUID = 0;
   }
 
-  @VisibleForTesting
-  static class NonSerializableMemoizingSupplier<T extends @Nullable Object> implements Supplier<T> {
+  static class NonSerializableMemoizingSupplier<T extends Object> implements Supplier<T> {
     @CheckForNull volatile Supplier<T> delegate;
     volatile boolean initialized;
     // "value" does not need to be volatile; visibility piggy-backs
@@ -224,14 +216,13 @@ public final class Suppliers {
    * @since 2.0
    */
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
-  public static <T extends @Nullable Object> Supplier<T> memoizeWithExpiration(
+  public static <T extends Object> Supplier<T> memoizeWithExpiration(
       Supplier<T> delegate, long duration, TimeUnit unit) {
     return new ExpiringMemoizingSupplier<T>(delegate, duration, unit);
   }
 
-  @VisibleForTesting
   @SuppressWarnings("GoodTime") // lots of violations
-  static class ExpiringMemoizingSupplier<T extends @Nullable Object>
+  static class ExpiringMemoizingSupplier<T extends Object>
       implements Supplier<T>, Serializable {
     final Supplier<T> delegate;
     final long durationNanos;
@@ -284,12 +275,12 @@ public final class Suppliers {
   }
 
   /** Returns a supplier that always supplies {@code instance}. */
-  public static <T extends @Nullable Object> Supplier<T> ofInstance(
+  public static <T extends Object> Supplier<T> ofInstance(
       @ParametricNullness T instance) {
     return new SupplierOfInstance<T>(instance);
   }
 
-  private static class SupplierOfInstance<T extends @Nullable Object>
+  private static class SupplierOfInstance<T extends Object>
       implements Supplier<T>, Serializable {
     @ParametricNullness final T instance;
 
@@ -329,12 +320,12 @@ public final class Suppliers {
    * Returns a supplier whose {@code get()} method synchronizes on {@code delegate} before calling
    * it, making it thread-safe.
    */
-  public static <T extends @Nullable Object> Supplier<T> synchronizedSupplier(
+  public static <T extends Object> Supplier<T> synchronizedSupplier(
       Supplier<T> delegate) {
     return new ThreadSafeSupplier<T>(delegate);
   }
 
-  private static class ThreadSafeSupplier<T extends @Nullable Object>
+  private static class ThreadSafeSupplier<T extends Object>
       implements Supplier<T>, Serializable {
     final Supplier<T> delegate;
 
@@ -366,15 +357,15 @@ public final class Suppliers {
    *
    * @since 8.0
    */
-  public static <T extends @Nullable Object> Function<Supplier<T>, T> supplierFunction() {
+  public static <T extends Object> Function<Supplier<T>, T> supplierFunction() {
     @SuppressWarnings("unchecked") // implementation is "fully variant"
     SupplierFunction<T> sf = (SupplierFunction<T>) SupplierFunctionImpl.INSTANCE;
     return sf;
   }
 
-  private interface SupplierFunction<T extends @Nullable Object> extends Function<Supplier<T>, T> {}
+  private interface SupplierFunction<T extends Object> extends Function<Supplier<T>, T> {}
 
-  private enum SupplierFunctionImpl implements SupplierFunction<@Nullable Object> {
+  private enum SupplierFunctionImpl implements SupplierFunction<Object> {
     INSTANCE;
 
     // Note: This makes T a "pass-through type"
diff --git a/guava/src/com/google/common/base/Throwables.java b/guava/src/com/google/common/base/Throwables.java
index 7832d18..6b52bce 100644
--- a/guava/src/com/google/common/base/Throwables.java
+++ b/guava/src/com/google/common/base/Throwables.java
@@ -17,13 +17,7 @@ package com.google.common.base;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.util.Arrays.asList;
 import static java.util.Collections.unmodifiableList;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
@@ -45,7 +39,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Throwables {
   private Throwables() {}
@@ -70,7 +63,7 @@ public final class Throwables {
    *
    * @since 20.0
    */
-  @GwtIncompatible // Class.cast, Class.isInstance
+  // Class.cast, Class.isInstance
   public static <X extends Throwable> void throwIfInstanceOf(
       Throwable throwable, Class<X> declaredType) throws X {
     checkNotNull(throwable);
@@ -99,7 +92,7 @@ public final class Throwables {
    *     null}.
    */
   @Deprecated
-  @GwtIncompatible // throwIfInstanceOf
+  // throwIfInstanceOf
   public static <X extends Throwable> void propagateIfInstanceOf(
       @CheckForNull Throwable throwable, Class<X> declaredType) throws X {
     if (throwable != null) {
@@ -155,7 +148,6 @@ public final class Throwables {
    *     null}.
    */
   @Deprecated
-  @GwtIncompatible
   public static void propagateIfPossible(@CheckForNull Throwable throwable) {
     if (throwable != null) {
       throwIfUnchecked(throwable);
@@ -180,7 +172,7 @@ public final class Throwables {
    * @param throwable the Throwable to possibly propagate
    * @param declaredType the single checked exception type declared by the calling method
    */
-  @GwtIncompatible // propagateIfInstanceOf
+  // propagateIfInstanceOf
   public static <X extends Throwable> void propagateIfPossible(
       @CheckForNull Throwable throwable, Class<X> declaredType) throws X {
     propagateIfInstanceOf(throwable, declaredType);
@@ -198,7 +190,7 @@ public final class Throwables {
    * @param declaredType1 any checked exception type declared by the calling method
    * @param declaredType2 any other checked exception type declared by the calling method
    */
-  @GwtIncompatible // propagateIfInstanceOf
+  // propagateIfInstanceOf
   public static <X1 extends Throwable, X2 extends Throwable> void propagateIfPossible(
       @CheckForNull Throwable throwable, Class<X1> declaredType1, Class<X2> declaredType2)
       throws X1, X2 {
@@ -235,8 +227,6 @@ public final class Throwables {
    *     background on the deprecation, read <a href="https://goo.gl/Ivn2kc">Why we deprecated
    *     {@code Throwables.propagate}</a>.
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible
   @Deprecated
   public static RuntimeException propagate(Throwable throwable) {
     throwIfUnchecked(throwable);
@@ -290,7 +280,7 @@ public final class Throwables {
    * @return an unmodifiable list containing the cause chain starting with {@code throwable}
    * @throws IllegalArgumentException if there is a loop in the causal chain
    */
-  @Beta // TODO(kevinb): decide best return type
+  // TODO(kevinb): decide best return type
   public static List<Throwable> getCausalChain(Throwable throwable) {
     checkNotNull(throwable);
     List<Throwable> causes = new ArrayList<>(4);
@@ -330,8 +320,7 @@ public final class Throwables {
    *     ClassCastException}'s cause is {@code throwable}.
    * @since 22.0
    */
-  @Beta
-  @GwtIncompatible // Class.cast(Object)
+  // Class.cast(Object)
   @CheckForNull
   public static <X extends Throwable> X getCauseAs(
       Throwable throwable, Class<X> expectedCauseType) {
@@ -349,7 +338,7 @@ public final class Throwables {
    * parsing the resulting string; if you need programmatic access to the stack frames, you can call
    * {@link Throwable#getStackTrace()}.
    */
-  @GwtIncompatible // java.io.PrintWriter, java.io.StringWriter
+  // java.io.PrintWriter, java.io.StringWriter
   public static String getStackTraceAsString(Throwable throwable) {
     StringWriter stringWriter = new StringWriter();
     throwable.printStackTrace(new PrintWriter(stringWriter));
@@ -384,8 +373,7 @@ public final class Throwables {
    * @since 19.0
    */
   // TODO(cpovirk): Say something about the possibility that List access could fail at runtime?
-  @Beta
-  @GwtIncompatible // lazyStackTraceIsLazy, jlaStackTrace
+  // lazyStackTraceIsLazy, jlaStackTrace
   // TODO(cpovirk): Consider making this available under GWT (slow implementation only).
   public static List<StackTraceElement> lazyStackTrace(Throwable throwable) {
     return lazyStackTraceIsLazy()
@@ -399,13 +387,12 @@ public final class Throwables {
    *
    * @since 19.0
    */
-  @Beta
-  @GwtIncompatible // getStackTraceElementMethod
+  // getStackTraceElementMethod
   public static boolean lazyStackTraceIsLazy() {
     return getStackTraceElementMethod != null && getStackTraceDepthMethod != null;
   }
 
-  @GwtIncompatible // invokeAccessibleNonThrowingMethod
+  // invokeAccessibleNonThrowingMethod
   private static List<StackTraceElement> jlaStackTrace(final Throwable t) {
     checkNotNull(t);
     /*
@@ -435,7 +422,7 @@ public final class Throwables {
     };
   }
 
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   private static Object invokeAccessibleNonThrowingMethod(
       Method method, Object receiver, Object... params) {
     try {
@@ -448,16 +435,15 @@ public final class Throwables {
   }
 
   /** JavaLangAccess class name to load using reflection */
-  @GwtIncompatible // not used by GWT emulation
+  // not used by GWT emulation
   private static final String JAVA_LANG_ACCESS_CLASSNAME = "sun.misc.JavaLangAccess";
 
   /** SharedSecrets class name to load using reflection */
-  @GwtIncompatible // not used by GWT emulation
-  @VisibleForTesting
+  // not used by GWT emulation
   static final String SHARED_SECRETS_CLASSNAME = "sun.misc.SharedSecrets";
 
   /** Access to some fancy internal JVM internals. */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static final Object jla = getJLA();
 
@@ -465,7 +451,7 @@ public final class Throwables {
    * The "getStackTraceElementMethod" method, only available on some JDKs so we use reflection to
    * find it when available. When this is null, use the slow way.
    */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static final Method getStackTraceElementMethod = (jla == null) ? null : getGetMethod();
 
@@ -473,7 +459,7 @@ public final class Throwables {
    * The "getStackTraceDepth" method, only available on some JDKs so we use reflection to find it
    * when available. When this is null, use the slow way.
    */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static final Method getStackTraceDepthMethod = (jla == null) ? null : getSizeMethod(jla);
 
@@ -481,7 +467,7 @@ public final class Throwables {
    * Returns the JavaLangAccess class that is present in all Sun JDKs. It is not allowed in
    * AppEngine, and not present in non-Sun JDKs.
    */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static Object getJLA() {
     try {
@@ -507,7 +493,7 @@ public final class Throwables {
    * Returns the Method that can be used to resolve an individual StackTraceElement, or null if that
    * method cannot be found (it is only to be found in fairly recent JDKs).
    */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static Method getGetMethod() {
     return getJlaMethod("getStackTraceElement", Throwable.class, int.class);
@@ -522,7 +508,7 @@ public final class Throwables {
    * <p>See <a href="https://github.com/google/guava/issues/2887">Throwables#lazyStackTrace throws
    * UnsupportedOperationException</a>.
    */
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static Method getSizeMethod(Object jla) {
     try {
@@ -537,7 +523,7 @@ public final class Throwables {
     }
   }
 
-  @GwtIncompatible // java.lang.reflect
+  // java.lang.reflect
   @CheckForNull
   private static Method getJlaMethod(String name, Class<?>... parameterTypes) throws ThreadDeath {
     try {
diff --git a/guava/src/com/google/common/base/Ticker.java b/guava/src/com/google/common/base/Ticker.java
index d898735..4a7d6f8 100644
--- a/guava/src/com/google/common/base/Ticker.java
+++ b/guava/src/com/google/common/base/Ticker.java
@@ -14,7 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A time source; returns a time value representing the number of nanoseconds elapsed since some
@@ -27,7 +26,6 @@ import com.google.common.annotations.GwtCompatible;
  * @since 10.0 (<a href="https://github.com/google/guava/wiki/Compatibility">mostly
  *     source-compatible</a> since 9.0)
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class Ticker {
   /** Constructor for use by subclasses. */
diff --git a/guava/src/com/google/common/base/Utf8.java b/guava/src/com/google/common/base/Utf8.java
index bb945a3..8851b0e 100644
--- a/guava/src/com/google/common/base/Utf8.java
+++ b/guava/src/com/google/common/base/Utf8.java
@@ -18,8 +18,6 @@ import static com.google.common.base.Preconditions.checkPositionIndexes;
 import static java.lang.Character.MAX_SURROGATE;
 import static java.lang.Character.MIN_SURROGATE;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Low-level, high-performance utility methods related to the {@linkplain Charsets#UTF_8 UTF-8}
@@ -36,8 +34,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Clément Roux
  * @since 16.0
  */
-@Beta
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Utf8 {
   /**
diff --git a/guava/src/com/google/common/base/Verify.java b/guava/src/com/google/common/base/Verify.java
index b2e9f5f..4ee01d2 100644
--- a/guava/src/com/google/common/base/Verify.java
+++ b/guava/src/com/google/common/base/Verify.java
@@ -16,10 +16,7 @@ package com.google.common.base;
 
 import static com.google.common.base.Strings.lenientFormat;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static convenience methods that serve the same purpose as Java language <a
@@ -87,7 +84,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 17.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Verify {
   /**
@@ -474,7 +470,6 @@ public final class Verify {
    * @throws VerifyException if {@code reference} is {@code null}
    * @see Preconditions#checkNotNull Preconditions.checkNotNull()
    */
-  @CanIgnoreReturnValue
   public static <T> T verifyNotNull(@CheckForNull T reference) {
     return verifyNotNull(reference, "expected a non-null reference");
   }
@@ -494,7 +489,6 @@ public final class Verify {
    * @throws VerifyException if {@code reference} is {@code null}
    * @see Preconditions#checkNotNull Preconditions.checkNotNull()
    */
-  @CanIgnoreReturnValue
   public static <T> T verifyNotNull(
       @CheckForNull T reference,
       String errorMessageTemplate,
diff --git a/guava/src/com/google/common/base/VerifyException.java b/guava/src/com/google/common/base/VerifyException.java
index 10b99de..f1cb7ca 100644
--- a/guava/src/com/google/common/base/VerifyException.java
+++ b/guava/src/com/google/common/base/VerifyException.java
@@ -14,7 +14,6 @@
 
 package com.google.common.base;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -24,7 +23,6 @@ import javax.annotation.CheckForNull;
  *
  * @since 17.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class VerifyException extends RuntimeException {
   /** Constructs a {@code VerifyException} with no message. */
diff --git a/guava/src/com/google/common/base/internal/Finalizer.java b/guava/src/com/google/common/base/internal/Finalizer.java
index 75d0d72..11626db 100644
--- a/guava/src/com/google/common/base/internal/Finalizer.java
+++ b/guava/src/com/google/common/base/internal/Finalizer.java
@@ -17,13 +17,11 @@ package com.google.common.base.internal;
 import java.lang.ref.PhantomReference;
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Thread that finalizes referents. All references should implement {@code
@@ -116,10 +114,10 @@ public class Finalizer implements Runnable {
   // By preference, we will use the Thread constructor that has an `inheritThreadLocals` parameter.
   // But before Java 9, our only way not to inherit ThreadLocals is to zap them after the thread
   // is created, by accessing a private field.
-  private static final @Nullable Constructor<Thread> bigThreadConstructor =
+  private static final Constructor<Thread> bigThreadConstructor =
       getBigThreadConstructor();
 
-  private static final @Nullable Field inheritableThreadLocals =
+  private static final Field inheritableThreadLocals =
       (bigThreadConstructor == null) ? getInheritableThreadLocalsField() : null;
 
   /** Constructs a new finalizer thread. */
@@ -191,7 +189,7 @@ public class Finalizer implements Runnable {
   }
 
   /** Looks up FinalizableReference.finalizeReferent() method. */
-  private @Nullable Method getFinalizeReferentMethod() {
+  private Method getFinalizeReferentMethod() {
     Class<?> finalizableReferenceClass = finalizableReferenceClassReference.get();
     if (finalizableReferenceClass == null) {
       /*
@@ -209,7 +207,7 @@ public class Finalizer implements Runnable {
     }
   }
 
-  private static @Nullable Field getInheritableThreadLocalsField() {
+  private static Field getInheritableThreadLocalsField() {
     try {
       Field inheritableThreadLocals = Thread.class.getDeclaredField("inheritableThreadLocals");
       inheritableThreadLocals.setAccessible(true);
@@ -223,7 +221,7 @@ public class Finalizer implements Runnable {
     }
   }
 
-  private static @Nullable Constructor<Thread> getBigThreadConstructor() {
+  private static Constructor<Thread> getBigThreadConstructor() {
     try {
       return Thread.class.getConstructor(
           ThreadGroup.class, Runnable.class, String.class, long.class, boolean.class);
diff --git a/guava/src/com/google/common/base/package-info.java b/guava/src/com/google/common/base/package-info.java
index f221856..f4e7d6a 100644
--- a/guava/src/com/google/common/base/package-info.java
+++ b/guava/src/com/google/common/base/package-info.java
@@ -55,9 +55,7 @@
  * </ul>
  *
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.base;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/cache/AbstractCache.java b/guava/src/com/google/common/cache/AbstractCache.java
index eec5fdc..a1f9d4c 100644
--- a/guava/src/com/google/common/cache/AbstractCache.java
+++ b/guava/src/com/google/common/cache/AbstractCache.java
@@ -14,8 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -37,7 +35,6 @@ import java.util.concurrent.ExecutionException;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractCache<K, V> implements Cache<K, V> {
 
diff --git a/guava/src/com/google/common/cache/AbstractLoadingCache.java b/guava/src/com/google/common/cache/AbstractLoadingCache.java
index 489597c..77d7935 100644
--- a/guava/src/com/google/common/cache/AbstractLoadingCache.java
+++ b/guava/src/com/google/common/cache/AbstractLoadingCache.java
@@ -14,8 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import java.util.Map;
@@ -37,7 +35,6 @@ import java.util.concurrent.ExecutionException;
  * @author Charles Fry
  * @since 11.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractLoadingCache<K, V> extends AbstractCache<K, V>
     implements LoadingCache<K, V> {
diff --git a/guava/src/com/google/common/cache/Cache.java b/guava/src/com/google/common/cache/Cache.java
index 8755595..f53cdd3 100644
--- a/guava/src/com/google/common/cache/Cache.java
+++ b/guava/src/com/google/common/cache/Cache.java
@@ -14,13 +14,8 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.ExecutionError;
 import com.google.common.util.concurrent.UncheckedExecutionException;
-import com.google.errorprone.annotations.CheckReturnValue;
-import com.google.errorprone.annotations.CompatibleWith;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentMap;
@@ -40,8 +35,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 10.0
  */
-@DoNotMock("Use CacheBuilder.newBuilder().build()")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public interface Cache<K, V> {
 
@@ -150,7 +143,6 @@ public interface Cache<K, V> {
   void invalidateAll();
 
   /** Returns the approximate number of entries in this cache. */
-  @CheckReturnValue
   long size();
 
   /**
@@ -164,7 +156,6 @@ public interface Cache<K, V> {
    * all values is returned.
    *
    */
-  @CheckReturnValue
   CacheStats stats();
 
   /**
@@ -175,7 +166,6 @@ public interface Cache<K, V> {
    * concurrent use, but if the cache is modified (including by eviction) after the iterator is
    * created, it is undefined which of the changes (if any) will be reflected in that iterator.
    */
-  @CheckReturnValue
   ConcurrentMap<K, V> asMap();
 
   /**
diff --git a/guava/src/com/google/common/cache/CacheBuilder.java b/guava/src/com/google/common/cache/CacheBuilder.java
index 3537bab..d374934 100644
--- a/guava/src/com/google/common/cache/CacheBuilder.java
+++ b/guava/src/com/google/common/cache/CacheBuilder.java
@@ -18,8 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Equivalence;
 import com.google.common.base.MoreObjects;
@@ -29,8 +27,6 @@ import com.google.common.base.Ticker;
 import com.google.common.cache.AbstractCache.SimpleStatsCounter;
 import com.google.common.cache.AbstractCache.StatsCounter;
 import com.google.common.cache.LocalCache.Strength;
-import com.google.errorprone.annotations.CheckReturnValue;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
 import java.util.ConcurrentModificationException;
 import java.util.IdentityHashMap;
 import java.util.Map;
@@ -38,7 +34,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A builder of {@link LoadingCache} and {@link Cache} instances.
@@ -189,7 +184,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class CacheBuilder<K, V> {
   private static final int DEFAULT_INITIAL_CAPACITY = 16;
@@ -270,10 +264,10 @@ public final class CacheBuilder<K, V> {
   int concurrencyLevel = UNSET_INT;
   long maximumSize = UNSET_INT;
   long maximumWeight = UNSET_INT;
-  @Nullable Weigher<? super K, ? super V> weigher;
+  Weigher<? super K, ? super V> weigher;
 
-  @Nullable Strength keyStrength;
-  @Nullable Strength valueStrength;
+  Strength keyStrength;
+  Strength valueStrength;
 
   @SuppressWarnings("GoodTime") // should be a java.time.Duration
   long expireAfterWriteNanos = UNSET_INT;
@@ -284,11 +278,11 @@ public final class CacheBuilder<K, V> {
   @SuppressWarnings("GoodTime") // should be a java.time.Duration
   long refreshNanos = UNSET_INT;
 
-  @Nullable Equivalence<Object> keyEquivalence;
-  @Nullable Equivalence<Object> valueEquivalence;
+  Equivalence<Object> keyEquivalence;
+  Equivalence<Object> valueEquivalence;
 
-  @Nullable RemovalListener<? super K, ? super V> removalListener;
-  @Nullable Ticker ticker;
+  RemovalListener<? super K, ? super V> removalListener;
+  Ticker ticker;
 
   Supplier<? extends StatsCounter> statsCounterSupplier = NULL_STATS_COUNTER;
 
@@ -301,7 +295,6 @@ public final class CacheBuilder<K, V> {
    * <p>Note that while this return type is {@code CacheBuilder<Object, Object>}, type parameters on
    * the {@link #build} methods allow you to create a cache of any key and value type desired.
    */
-  @CheckReturnValue
   public static CacheBuilder<Object, Object> newBuilder() {
     return new CacheBuilder<>();
   }
@@ -311,8 +304,7 @@ public final class CacheBuilder<K, V> {
    *
    * @since 12.0
    */
-  @GwtIncompatible // To be supported
-  @CheckReturnValue
+  // To be supported
   public static CacheBuilder<Object, Object> from(CacheBuilderSpec spec) {
     return spec.toCacheBuilder().lenientParsing();
   }
@@ -324,8 +316,7 @@ public final class CacheBuilder<K, V> {
    * @param spec a String in the format specified by {@link CacheBuilderSpec}
    * @since 12.0
    */
-  @GwtIncompatible // To be supported
-  @CheckReturnValue
+  // To be supported
   public static CacheBuilder<Object, Object> from(String spec) {
     return from(CacheBuilderSpec.parse(spec));
   }
@@ -335,7 +326,7 @@ public final class CacheBuilder<K, V> {
    *
    * @return this {@code CacheBuilder} instance (for chaining)
    */
-  @GwtIncompatible // To be supported
+  // To be supported
   CacheBuilder<K, V> lenientParsing() {
     strictParsing = false;
     return this;
@@ -349,7 +340,7 @@ public final class CacheBuilder<K, V> {
    *
    * @return this {@code CacheBuilder} instance (for chaining)
    */
-  @GwtIncompatible // To be supported
+  // To be supported
   CacheBuilder<K, V> keyEquivalence(Equivalence<Object> equivalence) {
     checkState(keyEquivalence == null, "key equivalence was already set to %s", keyEquivalence);
     keyEquivalence = checkNotNull(equivalence);
@@ -369,7 +360,7 @@ public final class CacheBuilder<K, V> {
    *
    * @return this {@code CacheBuilder} instance (for chaining)
    */
-  @GwtIncompatible // To be supported
+  // To be supported
   CacheBuilder<K, V> valueEquivalence(Equivalence<Object> equivalence) {
     checkState(
         valueEquivalence == null, "value equivalence was already set to %s", valueEquivalence);
@@ -512,7 +503,7 @@ public final class CacheBuilder<K, V> {
    * @throws IllegalStateException if a maximum weight or size was already set
    * @since 11.0
    */
-  @GwtIncompatible // To be supported
+  // To be supported
   public CacheBuilder<K, V> maximumWeight(long maximumWeight) {
     checkState(
         this.maximumWeight == UNSET_INT,
@@ -554,7 +545,7 @@ public final class CacheBuilder<K, V> {
    * @throws IllegalStateException if a maximum size was already set
    * @since 11.0
    */
-  @GwtIncompatible // To be supported
+  // To be supported
   public <K1 extends K, V1 extends V> CacheBuilder<K1, V1> weigher(
       Weigher<? super K1, ? super V1> weigher) {
     checkState(this.weigher == null);
@@ -601,7 +592,7 @@ public final class CacheBuilder<K, V> {
    * @return this {@code CacheBuilder} instance (for chaining)
    * @throws IllegalStateException if the key strength was already set
    */
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   public CacheBuilder<K, V> weakKeys() {
     return setKeyStrength(Strength.WEAK);
   }
@@ -633,7 +624,7 @@ public final class CacheBuilder<K, V> {
    * @return this {@code CacheBuilder} instance (for chaining)
    * @throws IllegalStateException if the value strength was already set
    */
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   public CacheBuilder<K, V> weakValues() {
     return setValueStrength(Strength.WEAK);
   }
@@ -658,7 +649,7 @@ public final class CacheBuilder<K, V> {
    * @return this {@code CacheBuilder} instance (for chaining)
    * @throws IllegalStateException if the value strength was already set
    */
-  @GwtIncompatible // java.lang.ref.SoftReference
+  // java.lang.ref.SoftReference
   public CacheBuilder<K, V> softValues() {
     return setValueStrength(Strength.SOFT);
   }
@@ -693,8 +684,7 @@ public final class CacheBuilder<K, V> {
    * @throws ArithmeticException for durations greater than +/- approximately 292 years
    * @since 25.0
    */
-  @J2ObjCIncompatible
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   @SuppressWarnings("GoodTime") // java.time.Duration decomposition
   public CacheBuilder<K, V> expireAfterWrite(java.time.Duration duration) {
     return expireAfterWrite(toNanosSaturated(duration), TimeUnit.NANOSECONDS);
@@ -763,8 +753,7 @@ public final class CacheBuilder<K, V> {
    * @throws ArithmeticException for durations greater than +/- approximately 292 years
    * @since 25.0
    */
-  @J2ObjCIncompatible
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   @SuppressWarnings("GoodTime") // java.time.Duration decomposition
   public CacheBuilder<K, V> expireAfterAccess(java.time.Duration duration) {
     return expireAfterAccess(toNanosSaturated(duration), TimeUnit.NANOSECONDS);
@@ -842,8 +831,7 @@ public final class CacheBuilder<K, V> {
    * @throws ArithmeticException for durations greater than +/- approximately 292 years
    * @since 25.0
    */
-  @J2ObjCIncompatible
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   @SuppressWarnings("GoodTime") // java.time.Duration decomposition
   public CacheBuilder<K, V> refreshAfterWrite(java.time.Duration duration) {
     return refreshAfterWrite(toNanosSaturated(duration), TimeUnit.NANOSECONDS);
@@ -879,7 +867,7 @@ public final class CacheBuilder<K, V> {
    * @throws IllegalStateException if {@link #refreshAfterWrite} was already set
    * @since 11.0
    */
-  @GwtIncompatible // To be supported (synchronously).
+  // To be supported (synchronously).
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public CacheBuilder<K, V> refreshAfterWrite(long duration, TimeUnit unit) {
     checkNotNull(unit);
@@ -938,7 +926,6 @@ public final class CacheBuilder<K, V> {
    * @return this {@code CacheBuilder} instance (for chaining)
    * @throws IllegalStateException if a removal listener was already set
    */
-  @CheckReturnValue
   public <K1 extends K, V1 extends V> CacheBuilder<K1, V1> removalListener(
       RemovalListener<? super K1, ? super V1> listener) {
     checkState(this.removalListener == null);
@@ -991,7 +978,6 @@ public final class CacheBuilder<K, V> {
    * @param loader the cache loader used to obtain new values
    * @return a cache having the requested features
    */
-  @CheckReturnValue
   public <K1 extends K, V1 extends V> LoadingCache<K1, V1> build(
       CacheLoader<? super K1, V1> loader) {
     checkWeightWithWeigher();
@@ -1010,7 +996,6 @@ public final class CacheBuilder<K, V> {
    * @return a cache having the requested features
    * @since 11.0
    */
-  @CheckReturnValue
   public <K1 extends K, V1 extends V> Cache<K1, V1> build() {
     checkWeightWithWeigher();
     checkNonLoadingCache();
@@ -1085,7 +1070,7 @@ public final class CacheBuilder<K, V> {
    * {@link Long#MAX_VALUE} or {@link Long#MIN_VALUE}. This behavior can be useful when decomposing
    * a duration in order to call a legacy API which requires a {@code long, TimeUnit} pair.
    */
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   @SuppressWarnings("GoodTime") // duration decomposition
   private static long toNanosSaturated(java.time.Duration duration) {
     // Using a try/catch seems lazy, but the catch block will rarely get invoked (except for
diff --git a/guava/src/com/google/common/cache/CacheBuilderSpec.java b/guava/src/com/google/common/cache/CacheBuilderSpec.java
index 64b5ad2..ad6c1fe 100644
--- a/guava/src/com/google/common/cache/CacheBuilderSpec.java
+++ b/guava/src/com/google/common/cache/CacheBuilderSpec.java
@@ -17,19 +17,14 @@ package com.google.common.cache;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Strings.isNullOrEmpty;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Splitter;
 import com.google.common.cache.LocalCache.Strength;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.concurrent.TimeUnit;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A specification of a {@link CacheBuilder} configuration.
@@ -79,7 +74,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 12.0
  */
 @SuppressWarnings("GoodTime") // lots of violations (nanosecond math)
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class CacheBuilderSpec {
   /** Parses a single value. */
@@ -110,19 +104,19 @@ public final class CacheBuilderSpec {
           .put("refreshInterval", new RefreshDurationParser())
           .build();
 
-  @VisibleForTesting @CheckForNull Integer initialCapacity;
-  @VisibleForTesting @CheckForNull Long maximumSize;
-  @VisibleForTesting @CheckForNull Long maximumWeight;
-  @VisibleForTesting @CheckForNull Integer concurrencyLevel;
-  @VisibleForTesting @CheckForNull Strength keyStrength;
-  @VisibleForTesting @CheckForNull Strength valueStrength;
-  @VisibleForTesting @CheckForNull Boolean recordStats;
-  @VisibleForTesting long writeExpirationDuration;
-  @VisibleForTesting @CheckForNull TimeUnit writeExpirationTimeUnit;
-  @VisibleForTesting long accessExpirationDuration;
-  @VisibleForTesting @CheckForNull TimeUnit accessExpirationTimeUnit;
-  @VisibleForTesting long refreshDuration;
-  @VisibleForTesting @CheckForNull TimeUnit refreshTimeUnit;
+  @CheckForNull Integer initialCapacity;
+  @CheckForNull Long maximumSize;
+  @CheckForNull Long maximumWeight;
+  @CheckForNull Integer concurrencyLevel;
+  @CheckForNull Strength keyStrength;
+  @CheckForNull Strength valueStrength;
+  @CheckForNull Boolean recordStats;
+  long writeExpirationDuration;
+  @CheckForNull TimeUnit writeExpirationTimeUnit;
+  long accessExpirationDuration;
+  @CheckForNull TimeUnit accessExpirationTimeUnit;
+  long refreshDuration;
+  @CheckForNull TimeUnit refreshTimeUnit;
   /** Specification; used for toParseableString(). */
   private final String specification;
 
diff --git a/guava/src/com/google/common/cache/CacheLoader.java b/guava/src/com/google/common/cache/CacheLoader.java
index 7a5e017..56c7b9a 100644
--- a/guava/src/com/google/common/cache/CacheLoader.java
+++ b/guava/src/com/google/common/cache/CacheLoader.java
@@ -16,14 +16,11 @@ package com.google.common.cache;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Supplier;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListenableFutureTask;
-import com.google.errorprone.annotations.CheckReturnValue;
 import java.io.Serializable;
 import java.util.Map;
 import java.util.concurrent.Callable;
@@ -56,7 +53,6 @@ import java.util.concurrent.Executor;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public abstract class CacheLoader<K, V> {
   /** Constructor for use by subclasses. */
@@ -95,7 +91,7 @@ public abstract class CacheLoader<K, V> {
    *     the thread's interrupt status is set
    * @since 11.0
    */
-  @GwtIncompatible // Futures
+  // Futures
   public ListenableFuture<V> reload(K key, V oldValue) throws Exception {
     checkNotNull(key);
     checkNotNull(oldValue);
@@ -137,7 +133,6 @@ public abstract class CacheLoader<K, V> {
    * @param function the function to be used for loading values; must never return {@code null}
    * @return a cache loader that loads values by passing each key to {@code function}
    */
-  @CheckReturnValue
   public static <K, V> CacheLoader<K, V> from(Function<K, V> function) {
     return new FunctionToCacheLoader<>(function);
   }
@@ -151,7 +146,6 @@ public abstract class CacheLoader<K, V> {
    * @return a cache loader that loads values by calling {@link Supplier#get}, irrespective of the
    *     key
    */
-  @CheckReturnValue
   public static <V> CacheLoader<Object, V> from(Supplier<V> supplier) {
     return new SupplierToCacheLoader<V>(supplier);
   }
@@ -181,8 +175,7 @@ public abstract class CacheLoader<K, V> {
    *
    * @since 17.0
    */
-  @CheckReturnValue
-  @GwtIncompatible // Executor + Futures
+  // Executor + Futures
   public static <K, V> CacheLoader<K, V> asyncReloading(
       final CacheLoader<K, V> loader, final Executor executor) {
     checkNotNull(loader);
diff --git a/guava/src/com/google/common/cache/CacheStats.java b/guava/src/com/google/common/cache/CacheStats.java
index 8307e94..b41ad6c 100644
--- a/guava/src/com/google/common/cache/CacheStats.java
+++ b/guava/src/com/google/common/cache/CacheStats.java
@@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.math.LongMath.saturatedAdd;
 import static com.google.common.math.LongMath.saturatedSubtract;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import java.util.concurrent.Callable;
@@ -56,7 +55,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class CacheStats {
   private final long hitCount;
diff --git a/guava/src/com/google/common/cache/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/cache/ElementTypesAreNonnullByDefault.java
index bcf0fce..2cc8bd2 100644
--- a/guava/src/com/google/common/cache/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/cache/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/cache/ForwardingCache.java b/guava/src/com/google/common/cache/ForwardingCache.java
index f118977..ee86545 100644
--- a/guava/src/com/google/common/cache/ForwardingCache.java
+++ b/guava/src/com/google/common/cache/ForwardingCache.java
@@ -14,10 +14,8 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ForwardingObject;
-import com.google.common.collect.ImmutableMap;
 import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentMap;
@@ -32,7 +30,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingCache<K, V> extends ForwardingObject implements Cache<K, V> {
 
diff --git a/guava/src/com/google/common/cache/ForwardingLoadingCache.java b/guava/src/com/google/common/cache/ForwardingLoadingCache.java
index ecd44ca..7d4ae02 100644
--- a/guava/src/com/google/common/cache/ForwardingLoadingCache.java
+++ b/guava/src/com/google/common/cache/ForwardingLoadingCache.java
@@ -14,9 +14,7 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
 import java.util.concurrent.ExecutionException;
 
 /**
@@ -30,7 +28,6 @@ import java.util.concurrent.ExecutionException;
  * @author Charles Fry
  * @since 11.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingLoadingCache<K, V> extends ForwardingCache<K, V>
     implements LoadingCache<K, V> {
diff --git a/guava/src/com/google/common/cache/LoadingCache.java b/guava/src/com/google/common/cache/LoadingCache.java
index e338ac4..509d6ac 100644
--- a/guava/src/com/google/common/cache/LoadingCache.java
+++ b/guava/src/com/google/common/cache/LoadingCache.java
@@ -14,9 +14,7 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.ExecutionError;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import java.util.concurrent.ConcurrentMap;
@@ -38,7 +36,6 @@ import java.util.concurrent.ExecutionException;
  * @author Charles Fry
  * @since 11.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public interface LoadingCache<K, V> extends Cache<K, V>, Function<K, V> {
 
diff --git a/guava/src/com/google/common/cache/LocalCache.java b/guava/src/com/google/common/cache/LocalCache.java
index f421781..d7036ef 100644
--- a/guava/src/com/google/common/cache/LocalCache.java
+++ b/guava/src/com/google/common/cache/LocalCache.java
@@ -23,9 +23,6 @@ import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Stopwatch;
 import com.google.common.base.Ticker;
@@ -37,8 +34,6 @@ import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
 import com.google.common.cache.CacheLoader.UnsupportedLoadingOperationException;
 import com.google.common.cache.LocalCache.AbstractCacheSet;
 import com.google.common.collect.AbstractSequentialIterator;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
@@ -49,16 +44,12 @@ import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import com.google.common.util.concurrent.Uninterruptibles;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.Weak;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.Serializable;
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
 import java.lang.ref.SoftReference;
-import java.lang.ref.WeakReference;
 import java.util.AbstractCollection;
 import java.util.AbstractMap;
 import java.util.AbstractQueue;
@@ -85,7 +76,6 @@ import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * The concurrent hash map implementation built by {@link CacheBuilder}.
@@ -101,7 +91,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
   "GoodTime", // lots of violations (nanosecond math)
   "nullness", // too much trouble for the payoff
 })
-@GwtCompatible(emulated = true)
 // TODO(cpovirk): Annotate for nullness.
 class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V> {
 
@@ -234,7 +223,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
   final StatsCounter globalStatsCounter;
 
   /** The default cache loader to use on loading operations. */
-  final @Nullable CacheLoader<? super K, V> defaultLoader;
+  final CacheLoader<? super K, V> defaultLoader;
 
   /**
    * Creates a new, empty map with the specified strategy, initial capacity and concurrency level.
@@ -626,7 +615,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
   /** A reference to a value. */
   interface ValueReference<K, V> {
     /** Returns the value. Does not block or throw exceptions. */
-    @Nullable
     V get();
 
     /**
@@ -645,7 +633,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * Returns the entry associated with this value reference, or {@code null} if this value
      * reference is independent of any entry.
      */
-    @Nullable
     ReferenceEntry<K, V> getEntry();
 
     /**
@@ -957,7 +944,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     // The code below is exactly the same for each entry type.
 
     final int hash;
-    final @Nullable ReferenceEntry<K, V> next;
+    final ReferenceEntry<K, V> next;
     volatile ValueReference<K, V> valueReference = unset();
 
     @Override
@@ -1001,7 +988,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
+    ReferenceEntry<K, V> nextAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1014,7 +1001,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
+    ReferenceEntry<K, V> previousAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1047,7 +1034,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
+    ReferenceEntry<K, V> nextWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1060,7 +1047,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
+    ReferenceEntry<K, V> previousWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1093,7 +1080,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
+    ReferenceEntry<K, V> nextAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1106,7 +1093,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
+    ReferenceEntry<K, V> previousAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1133,7 +1120,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
+    ReferenceEntry<K, V> nextWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1146,7 +1133,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
+    ReferenceEntry<K, V> previousWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1244,7 +1231,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     // The code below is exactly the same for each entry type.
 
     final int hash;
-    final @Nullable ReferenceEntry<K, V> next;
+    final ReferenceEntry<K, V> next;
     volatile ValueReference<K, V> valueReference = unset();
 
     @Override
@@ -1288,7 +1275,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
+    ReferenceEntry<K, V> nextAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1301,7 +1288,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
+    ReferenceEntry<K, V> previousAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1334,7 +1321,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
+    ReferenceEntry<K, V> nextWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1347,7 +1334,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
+    ReferenceEntry<K, V> previousWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1381,7 +1368,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
+    ReferenceEntry<K, V> nextAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1394,7 +1381,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
+    ReferenceEntry<K, V> previousAccess = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1421,7 +1408,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
+    ReferenceEntry<K, V> nextWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1434,7 +1421,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // Guarded By Segment.this
-    @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
+    ReferenceEntry<K, V> previousWrite = nullEntry();
 
     @Override
     public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1665,7 +1652,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
   /**
    * This method is a convenience for testing. Code should call {@link Segment#newEntry} directly.
    */
-  @VisibleForTesting
   ReferenceEntry<K, V> newEntry(K key, int hash, @Nullable ReferenceEntry<K, V> next) {
     Segment<K, V> segment = segmentFor(hash);
     segment.lock();
@@ -1681,7 +1667,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
    */
   // Guarded By Segment.this
   @SuppressWarnings("GuardedBy")
-  @VisibleForTesting
   ReferenceEntry<K, V> copyEntry(ReferenceEntry<K, V> original, ReferenceEntry<K, V> newNext) {
     int hash = original.getHash();
     return segmentFor(hash).copyEntry(original, newNext);
@@ -1691,7 +1676,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
    * This method is a convenience for testing. Code should call {@link Segment#setValue} instead.
    */
   // Guarded By Segment.this
-  @VisibleForTesting
   ValueReference<K, V> newValueReference(ReferenceEntry<K, V> entry, V value, int weight) {
     int hash = entry.getHash();
     return valueStrength.referenceValue(segmentFor(hash), entry, checkNotNull(value), weight);
@@ -1717,7 +1701,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
    * This method is a convenience for testing. Code should call {@link Segment#getLiveValue}
    * instead.
    */
-  @VisibleForTesting
   boolean isLive(ReferenceEntry<K, V> entry, long now) {
     return segmentFor(entry.getHash()).getLiveValue(entry, now) != null;
   }
@@ -1744,7 +1727,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
    * cleanup stale entries. As such it should only be called outside of a segment context, such as
    * during iteration.
    */
-  @Nullable
   V getLiveValue(ReferenceEntry<K, V> entry, long now) {
     if (entry.getKey() == null) {
       return null;
@@ -1865,13 +1847,12 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * comments.
      */
 
-    @Weak final LocalCache<K, V> map;
+    final LocalCache<K, V> map;
 
     /** The number of live elements in this segment's region. */
     volatile int count;
 
     /** The weight of the live elements in this segment's region. */
-    @GuardedBy("this")
     long totalWeight;
 
     /**
@@ -1889,7 +1870,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     int threshold;
 
     /** The per-segment table. */
-    volatile @Nullable AtomicReferenceArray<ReferenceEntry<K, V>> table;
+    volatile AtomicReferenceArray<ReferenceEntry<K, V>> table;
 
     /** The maximum weight of this segment. UNSET_INT if there is no maximum. */
     final long maxSegmentWeight;
@@ -1898,13 +1879,13 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * The key reference queue contains entries whose keys have been garbage collected, and which
      * need to be cleaned up internally.
      */
-    final @Nullable ReferenceQueue<K> keyReferenceQueue;
+    final ReferenceQueue<K> keyReferenceQueue;
 
     /**
      * The value reference queue contains value references whose values have been garbage collected,
      * and which need to be cleaned up internally.
      */
-    final @Nullable ReferenceQueue<V> valueReferenceQueue;
+    final ReferenceQueue<V> valueReferenceQueue;
 
     /**
      * The recency queue is used to record which entries were accessed for updating the access
@@ -1923,14 +1904,12 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * A queue of elements currently in the map, ordered by write time. Elements are added to the
      * tail of the queue on write.
      */
-    @GuardedBy("this")
     final Queue<ReferenceEntry<K, V>> writeQueue;
 
     /**
      * A queue of elements currently in the map, ordered by access time. Elements are added to the
      * tail of the queue on access (note that writes count as accesses).
      */
-    @GuardedBy("this")
     final Queue<ReferenceEntry<K, V>> accessQueue;
 
     /** Accumulates cache statistics. */
@@ -1979,7 +1958,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       this.table = newTable;
     }
 
-    @GuardedBy("this")
     ReferenceEntry<K, V> newEntry(K key, int hash, @Nullable ReferenceEntry<K, V> next) {
       return map.entryFactory.newEntry(this, checkNotNull(key), hash, next);
     }
@@ -1988,7 +1966,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * Copies {@code original} into a new entry chained to {@code newNext}. Returns the new entry,
      * or {@code null} if {@code original} was already garbage collected.
      */
-    @GuardedBy("this")
     ReferenceEntry<K, V> copyEntry(ReferenceEntry<K, V> original, ReferenceEntry<K, V> newNext) {
       if (original.getKey() == null) {
         // key collected
@@ -2008,7 +1985,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     /** Sets a new value of an entry. Adds newly created entries at the end of the access queue. */
-    @GuardedBy("this")
     void setValue(ReferenceEntry<K, V> entry, K key, V value, long now) {
       ValueReference<K, V> previous = entry.getValueReference();
       int weight = map.weigher.weigh(key, value);
@@ -2060,7 +2036,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @Nullable
     V get(Object key, int hash) {
       try {
         if (count != 0) { // read-volatile
@@ -2353,7 +2328,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * {@code null} if another thread is performing the refresh or if an error occurs during
      * refresh.
      */
-    @Nullable
     V refresh(K key, int hash, CacheLoader<? super K, V> loader, boolean checkTime) {
       final LoadingValueReference<K, V> loadingValueReference =
           insertLoadingValueReference(key, hash, checkTime);
@@ -2376,7 +2350,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * Returns a newly inserted {@code LoadingValueReference}, or null if the live value reference
      * is already loading.
      */
-    @Nullable
     LoadingValueReference<K, V> insertLoadingValueReference(
         final K key, final int hash, boolean checkTime) {
       ReferenceEntry<K, V> e = null;
@@ -2444,7 +2417,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * Drain the key and value reference queues, cleaning up internal entries containing garbage
      * collected keys or values.
      */
-    @GuardedBy("this")
     void drainReferenceQueues() {
       if (map.usesKeyReferences()) {
         drainKeyReferenceQueue();
@@ -2454,7 +2426,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @GuardedBy("this")
     void drainKeyReferenceQueue() {
       Reference<? extends K> ref;
       int i = 0;
@@ -2468,7 +2439,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @GuardedBy("this")
     void drainValueReferenceQueue() {
       Reference<? extends V> ref;
       int i = 0;
@@ -2523,7 +2493,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * <p>Note: this method should only be called under lock, as it directly manipulates the
      * eviction queues. Unlocked reads should use {@link #recordRead}.
      */
-    @GuardedBy("this")
     void recordLockedRead(ReferenceEntry<K, V> entry, long now) {
       if (map.recordsAccess()) {
         entry.setAccessTime(now);
@@ -2535,7 +2504,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * Updates eviction metadata that {@code entry} was just written. This currently amounts to
      * adding {@code entry} to relevant eviction lists.
      */
-    @GuardedBy("this")
     void recordWrite(ReferenceEntry<K, V> entry, int weight, long now) {
       // we are already under lock, so drain the recency queue immediately
       drainRecencyQueue();
@@ -2557,7 +2525,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * lists (accounting for the fact that they could have been removed from the map since being
      * added to the recency queue).
      */
-    @GuardedBy("this")
     void drainRecencyQueue() {
       ReferenceEntry<K, V> e;
       while ((e = recencyQueue.poll()) != null) {
@@ -2585,7 +2552,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @GuardedBy("this")
     void expireEntries(long now) {
       drainRecencyQueue();
 
@@ -2604,7 +2570,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
 
     // eviction
 
-    @GuardedBy("this")
     void enqueueNotification(
         @Nullable K key, int hash, @Nullable V value, int weight, RemovalCause cause) {
       totalWeight -= weight;
@@ -2623,7 +2588,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      *
      * @param newest the most recently added entry
      */
-    @GuardedBy("this")
     void evictEntries(ReferenceEntry<K, V> newest) {
       if (!map.evictsBySize()) {
         return;
@@ -2648,7 +2612,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     // TODO(fry): instead implement this with an eviction head
-    @GuardedBy("this")
     ReferenceEntry<K, V> getNextEvictable() {
       for (ReferenceEntry<K, V> e : accessQueue) {
         int weight = e.getValueReference().getWeight();
@@ -2668,7 +2631,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
 
     // Specialized implementations of map methods
 
-    @Nullable
     ReferenceEntry<K, V> getEntry(Object key, int hash) {
       for (ReferenceEntry<K, V> e = getFirst(hash); e != null; e = e.getNext()) {
         if (e.getHash() != hash) {
@@ -2689,7 +2651,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       return null;
     }
 
-    @Nullable
     ReferenceEntry<K, V> getLiveEntry(Object key, int hash, long now) {
       ReferenceEntry<K, V> e = getEntry(key, hash);
       if (e == null) {
@@ -2744,7 +2705,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      * This method is a convenience for testing. Code should call {@link LocalCache#containsValue}
      * directly.
      */
-    @VisibleForTesting
     boolean containsValue(Object value) {
       try {
         if (count != 0) { // read-volatile
@@ -2770,7 +2730,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @Nullable
     V put(K key, int hash, V value, boolean onlyIfAbsent) {
       lock();
       try {
@@ -2846,7 +2805,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
 
     /** Expands the table if possible. */
-    @GuardedBy("this")
     void expand() {
       AtomicReferenceArray<ReferenceEntry<K, V>> oldTable = table;
       int oldCapacity = oldTable.length();
@@ -2976,7 +2934,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @Nullable
     V replace(K key, int hash, V newValue) {
       lock();
       try {
@@ -3031,7 +2988,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @Nullable
     V remove(Object key, int hash) {
       lock();
       try {
@@ -3222,8 +3178,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @GuardedBy("this")
-    @Nullable
     ReferenceEntry<K, V> removeValueFromChain(
         ReferenceEntry<K, V> first,
         ReferenceEntry<K, V> entry,
@@ -3244,8 +3198,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @GuardedBy("this")
-    @Nullable
     ReferenceEntry<K, V> removeEntryFromChain(
         ReferenceEntry<K, V> first, ReferenceEntry<K, V> entry) {
       int newCount = count;
@@ -3263,7 +3215,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       return newFirst;
     }
 
-    @GuardedBy("this")
     void removeCollectedEntry(ReferenceEntry<K, V> entry) {
       enqueueNotification(
           entry.getKey(),
@@ -3387,8 +3338,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       }
     }
 
-    @VisibleForTesting
-    @GuardedBy("this")
     boolean removeEntry(ReferenceEntry<K, V> entry, int hash, RemovalCause cause) {
       int newCount = this.count - 1;
       AtomicReferenceArray<ReferenceEntry<K, V>> table = this.table;
@@ -3433,7 +3382,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
      *
      * <p>Post-condition: expireEntries has been run.
      */
-    @GuardedBy("this")
     void preWriteCleanup(long now) {
       runLockedCleanup(now);
     }
@@ -3643,7 +3591,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
           @Override
           public void setWriteTime(long time) {}
 
-          @Weak ReferenceEntry<K, V> nextWrite = this;
+          ReferenceEntry<K, V> nextWrite = this;
 
           @Override
           public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -3655,7 +3603,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
             this.nextWrite = next;
           }
 
-          @Weak ReferenceEntry<K, V> previousWrite = this;
+          ReferenceEntry<K, V> previousWrite = this;
 
           @Override
           public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -3782,7 +3730,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
           @Override
           public void setAccessTime(long time) {}
 
-          @Weak ReferenceEntry<K, V> nextAccess = this;
+          ReferenceEntry<K, V> nextAccess = this;
 
           @Override
           public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -3794,7 +3742,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
             this.nextAccess = next;
           }
 
-          @Weak ReferenceEntry<K, V> previousAccess = this;
+          ReferenceEntry<K, V> previousAccess = this;
 
           @Override
           public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -3953,7 +3901,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
   }
 
   @Override
-  public @Nullable V get(@Nullable Object key) {
+  public V get(@Nullable Object key) {
     if (key == null) {
       return null;
     }
@@ -3966,7 +3914,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     return segmentFor(hash).get(key, hash, loader);
   }
 
-  public @Nullable V getIfPresent(Object key) {
+  public V getIfPresent(Object key) {
     int hash = hash(checkNotNull(key));
     V value = segmentFor(hash).get(key, hash);
     if (value == null) {
@@ -3980,7 +3928,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
   // Only becomes available in Java 8 when it's on the interface.
   // @Override
   @Override
-  public @Nullable V getOrDefault(@Nullable Object key, @Nullable V defaultValue) {
+  public V getOrDefault(@Nullable Object key, @Nullable V defaultValue) {
     V result = get(key);
     return (result != null) ? result : defaultValue;
   }
@@ -4060,7 +4008,6 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
    * Returns the result of calling {@link CacheLoader#loadAll}, or null if {@code loader} doesn't
    * implement {@code loadAll}.
    */
-  @Nullable
   Map<K, V> loadAll(Set<? extends K> keys, CacheLoader<? super K, V> loader)
       throws ExecutionException {
     checkNotNull(loader);
@@ -4293,7 +4240,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     }
   }
 
-  @RetainedWith @Nullable Set<K> keySet;
+  Set<K> keySet;
 
   @Override
   public Set<K> keySet() {
@@ -4302,7 +4249,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     return (ks != null) ? ks : (keySet = new KeySet());
   }
 
-  @RetainedWith @Nullable Collection<V> values;
+  Collection<V> values;
 
   @Override
   public Collection<V> values() {
@@ -4311,10 +4258,10 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     return (vs != null) ? vs : (values = new Values());
   }
 
-  @RetainedWith @Nullable Set<Entry<K, V>> entrySet;
+  Set<Entry<K, V>> entrySet;
 
   @Override
-  @GwtIncompatible // Not supported.
+  // Not supported.
   public Set<Entry<K, V>> entrySet() {
     // does not impact recency ordering
     Set<Entry<K, V>> es = entrySet;
@@ -4327,11 +4274,11 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
 
     int nextSegmentIndex;
     int nextTableIndex;
-    @Nullable Segment<K, V> currentSegment;
-    @Nullable AtomicReferenceArray<ReferenceEntry<K, V>> currentTable;
-    @Nullable ReferenceEntry<K, V> nextEntry;
-    @Nullable WriteThroughEntry nextExternal;
-    @Nullable WriteThroughEntry lastReturned;
+    Segment<K, V> currentSegment;
+    AtomicReferenceArray<ReferenceEntry<K, V>> currentTable;
+    ReferenceEntry<K, V> nextEntry;
+    WriteThroughEntry nextExternal;
+    WriteThroughEntry lastReturned;
 
     HashIterator() {
       nextSegmentIndex = segments.length - 1;
@@ -4689,10 +4636,10 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     final Weigher<K, V> weigher;
     final int concurrencyLevel;
     final RemovalListener<? super K, ? super V> removalListener;
-    final @Nullable Ticker ticker;
+    final Ticker ticker;
     final CacheLoader<? super K, V> loader;
 
-    transient @Nullable Cache<K, V> delegate;
+    transient Cache<K, V> delegate;
 
     ManualSerializationProxy(LocalCache<K, V> cache) {
       this(
@@ -4797,7 +4744,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
       implements LoadingCache<K, V>, Serializable {
     private static final long serialVersionUID = 1;
 
-    transient @Nullable LoadingCache<K, V> autoDelegate;
+    transient LoadingCache<K, V> autoDelegate;
 
     LoadingSerializationProxy(LocalCache<K, V> cache) {
       super(cache);
@@ -4853,7 +4800,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
     // Cache methods
 
     @Override
-    public @Nullable V getIfPresent(Object key) {
+    public V getIfPresent(Object key) {
       return localCache.getIfPresent(key);
     }
 
diff --git a/guava/src/com/google/common/cache/LongAddable.java b/guava/src/com/google/common/cache/LongAddable.java
index 9851052..ae150aa 100644
--- a/guava/src/com/google/common/cache/LongAddable.java
+++ b/guava/src/com/google/common/cache/LongAddable.java
@@ -14,14 +14,12 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Abstract interface for objects that can concurrently add longs.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 interface LongAddable {
   void increment();
diff --git a/guava/src/com/google/common/cache/LongAddables.java b/guava/src/com/google/common/cache/LongAddables.java
index b0f9e2b..16df509 100644
--- a/guava/src/com/google/common/cache/LongAddables.java
+++ b/guava/src/com/google/common/cache/LongAddables.java
@@ -14,7 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Supplier;
 import java.util.concurrent.atomic.AtomicLong;
 
@@ -23,7 +22,6 @@ import java.util.concurrent.atomic.AtomicLong;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class LongAddables {
   private static final Supplier<LongAddable> SUPPLIER;
diff --git a/guava/src/com/google/common/cache/LongAdder.java b/guava/src/com/google/common/cache/LongAdder.java
index 7ead7e8..088b4ae 100644
--- a/guava/src/com/google/common/cache/LongAdder.java
+++ b/guava/src/com/google/common/cache/LongAdder.java
@@ -11,7 +11,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -39,7 +38,6 @@ import java.util.concurrent.atomic.AtomicLong;
  * @since 1.8
  * @author Doug Lea
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class LongAdder extends Striped64 implements Serializable, LongAddable {
   private static final long serialVersionUID = 7249069246863182397L;
diff --git a/guava/src/com/google/common/cache/ParametricNullness.java b/guava/src/com/google/common/cache/ParametricNullness.java
index 19305a6..4c0df9f 100644
--- a/guava/src/com/google/common/cache/ParametricNullness.java
+++ b/guava/src/com/google/common/cache/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/cache/ReferenceEntry.java b/guava/src/com/google/common/cache/ReferenceEntry.java
index 8ff2e6c..89936c2 100644
--- a/guava/src/com/google/common/cache/ReferenceEntry.java
+++ b/guava/src/com/google/common/cache/ReferenceEntry.java
@@ -14,7 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.cache.LocalCache.ValueReference;
 import javax.annotation.CheckForNull;
 
@@ -38,7 +37,6 @@ import javax.annotation.CheckForNull;
  *   <li>Unset: marked as unset, awaiting cleanup or reuse
  * </ul>
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 interface ReferenceEntry<K, V> {
   /** Returns the value reference from this entry. */
diff --git a/guava/src/com/google/common/cache/RemovalCause.java b/guava/src/com/google/common/cache/RemovalCause.java
index 2e68e68..aed3352 100644
--- a/guava/src/com/google/common/cache/RemovalCause.java
+++ b/guava/src/com/google/common/cache/RemovalCause.java
@@ -14,7 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.concurrent.ConcurrentMap;
@@ -25,7 +24,6 @@ import java.util.concurrent.ConcurrentMap;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public enum RemovalCause {
   /**
diff --git a/guava/src/com/google/common/cache/RemovalListener.java b/guava/src/com/google/common/cache/RemovalListener.java
index 4713be5..8c6d47e 100644
--- a/guava/src/com/google/common/cache/RemovalListener.java
+++ b/guava/src/com/google/common/cache/RemovalListener.java
@@ -14,7 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * An object that can receive a notification when an entry is removed from a cache. The removal
@@ -32,7 +31,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @FunctionalInterface
 @ElementTypesAreNonnullByDefault
 public interface RemovalListener<K, V> {
diff --git a/guava/src/com/google/common/cache/RemovalListeners.java b/guava/src/com/google/common/cache/RemovalListeners.java
index d0623e7..bc0f7c0 100644
--- a/guava/src/com/google/common/cache/RemovalListeners.java
+++ b/guava/src/com/google/common/cache/RemovalListeners.java
@@ -16,7 +16,6 @@ package com.google.common.cache;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.Executor;
 
 /**
@@ -25,7 +24,6 @@ import java.util.concurrent.Executor;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class RemovalListeners {
 
diff --git a/guava/src/com/google/common/cache/RemovalNotification.java b/guava/src/com/google/common/cache/RemovalNotification.java
index dab7fe5..6b81a29 100644
--- a/guava/src/com/google/common/cache/RemovalNotification.java
+++ b/guava/src/com/google/common/cache/RemovalNotification.java
@@ -16,10 +16,7 @@ package com.google.common.cache;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import java.util.AbstractMap.SimpleImmutableEntry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A notification of the removal of a single entry. The key and/or value may be null if they were
@@ -32,10 +29,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class RemovalNotification<K, V>
-    extends SimpleImmutableEntry<@Nullable K, @Nullable V> {
+    extends SimpleImmutableEntry<K, V> {
   private final RemovalCause cause;
 
   /**
diff --git a/guava/src/com/google/common/cache/Striped64.java b/guava/src/com/google/common/cache/Striped64.java
index 0d2d75b..d4544ca 100644
--- a/guava/src/com/google/common/cache/Striped64.java
+++ b/guava/src/com/google/common/cache/Striped64.java
@@ -11,17 +11,14 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Random;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A package-local class holding common representation and mechanics for classes supporting dynamic
  * striping on 64bit values. The class extends Number so that concrete subclasses must publicly do
  * so.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class Striped64 extends Number {
   /*
@@ -127,7 +124,7 @@ abstract class Striped64 extends Number {
    * class, we use a suboptimal int[] representation to avoid introducing a new type that can impede
    * class-unloading when ThreadLocals are not removed.
    */
-  static final ThreadLocal<int @Nullable []> threadHashCode = new ThreadLocal<>();
+  static final ThreadLocal<int []> threadHashCode = new ThreadLocal<>();
 
   /** Generator of new random hash codes */
   static final Random rng = new Random();
diff --git a/guava/src/com/google/common/cache/Weigher.java b/guava/src/com/google/common/cache/Weigher.java
index bbee3f5..62564a8 100644
--- a/guava/src/com/google/common/cache/Weigher.java
+++ b/guava/src/com/google/common/cache/Weigher.java
@@ -14,7 +14,6 @@
 
 package com.google.common.cache;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Calculates the weights of cache entries.
@@ -22,7 +21,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Charles Fry
  * @since 11.0
  */
-@GwtCompatible
 @FunctionalInterface
 @ElementTypesAreNonnullByDefault
 public interface Weigher<K, V> {
diff --git a/guava/src/com/google/common/collect/AbstractBiMap.java b/guava/src/com/google/common/collect/AbstractBiMap.java
index 9b2ad2a..a2cc941 100644
--- a/guava/src/com/google/common/collect/AbstractBiMap.java
+++ b/guava/src/com/google/common/collect/AbstractBiMap.java
@@ -18,14 +18,8 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -36,7 +30,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.function.BiFunction;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A general-purpose bimap implementation using any two backing {@code Map} instances.
@@ -47,13 +40,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @author Mike Bostock
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractBiMap<K extends Object, V extends Object>
     extends ForwardingMap<K, V> implements BiMap<K, V>, Serializable {
 
   private transient Map<K, V> delegate;
-  @RetainedWith transient AbstractBiMap<V, K> inverse;
+  transient AbstractBiMap<V, K> inverse;
 
   /** Package-private constructor for creating a map-backed bimap. */
   AbstractBiMap(Map<K, V> forward, Map<V, K> backward) {
@@ -72,14 +64,12 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
   }
 
   /** Returns its input, or throws an exception if this is not a valid key. */
-  @CanIgnoreReturnValue
   @ParametricNullness
   K checkKey(@ParametricNullness K key) {
     return key;
   }
 
   /** Returns its input, or throws an exception if this is not a valid value. */
-  @CanIgnoreReturnValue
   @ParametricNullness
   V checkValue(@ParametricNullness V value) {
     return value;
@@ -116,14 +106,12 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
 
   // Modification Operations
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(@ParametricNullness K key, @ParametricNullness V value) {
     return putInBothMaps(key, value, false);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V forcePut(@ParametricNullness K key, @ParametricNullness V value) {
@@ -160,14 +148,12 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     inverse.delegate.put(newValue, key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V remove(@CheckForNull Object key) {
     return containsKey(key) ? removeFromBothMaps(key) : null;
   }
 
-  @CanIgnoreReturnValue
   @ParametricNullness
   private V removeFromBothMaps(@CheckForNull Object key) {
     // The cast is safe because the callers of this method first check that the key is present.
@@ -233,7 +219,6 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     return (result == null) ? keySet = new KeySet() : result;
   }
 
-  @WeakOuter
   private class KeySet extends ForwardingSet<K> {
     @Override
     protected Set<K> delegate() {
@@ -282,7 +267,6 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     return (result == null) ? valueSet = new ValueSet() : result;
   }
 
-  @WeakOuter
   private class ValueSet extends ForwardingSet<V> {
     final Set<V> valuesDelegate = inverse.keySet();
 
@@ -297,13 +281,13 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       return standardToArray();
     }
 
     @Override
     @SuppressWarnings("nullness") // bug in our checker's handling of toArray signatures
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return standardToArray(array);
     }
 
@@ -379,7 +363,6 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     };
   }
 
-  @WeakOuter
   private class EntrySet extends ForwardingSet<Entry<K, V>> {
     final Set<Entry<K, V>> esDelegate = delegate.entrySet();
 
@@ -435,7 +418,7 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
 
     @Override
     @SuppressWarnings("nullness") // bug in our checker's handling of toArray signatures
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return standardToArray(array);
     }
 
@@ -461,7 +444,7 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
   }
 
   /** The inverse of any other {@code AbstractBiMap} subclass. */
-  static class Inverse<K extends @Nullable Object, V extends @Nullable Object>
+  static class Inverse<K extends Object, V extends Object>
       extends AbstractBiMap<K, V> {
     Inverse(Map<K, V> backward, AbstractBiMap<V, K> forward) {
       super(backward, forward);
@@ -489,28 +472,28 @@ abstract class AbstractBiMap<K extends @Nullable Object, V extends @Nullable Obj
     }
 
     /** @serialData the forward bimap */
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       stream.defaultWriteObject();
       stream.writeObject(inverse());
     }
 
-    @GwtIncompatible // java.io.ObjectInputStream
+    // java.io.ObjectInputStream
     @SuppressWarnings("unchecked") // reading data stored by writeObject
     private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
       stream.defaultReadObject();
       setInverse((AbstractBiMap<V, K>) stream.readObject());
     }
 
-    @GwtIncompatible // Not needed in the emulated source.
+    // Not needed in the emulated source.
     Object readResolve() {
       return inverse().inverse();
     }
 
-    @GwtIncompatible // Not needed in emulated source.
+    // Not needed in emulated source.
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // Not needed in emulated source.
+  // Not needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/AbstractIndexedListIterator.java b/guava/src/com/google/common/collect/AbstractIndexedListIterator.java
index abb3960..025f9ab 100644
--- a/guava/src/com/google/common/collect/AbstractIndexedListIterator.java
+++ b/guava/src/com/google/common/collect/AbstractIndexedListIterator.java
@@ -18,10 +18,8 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkPositionIndex;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ListIterator;
 import java.util.NoSuchElementException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * This class provides a skeletal implementation of the {@link ListIterator} interface across a
@@ -30,9 +28,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractIndexedListIterator<E extends @Nullable Object>
+abstract class AbstractIndexedListIterator<E extends Object>
     extends UnmodifiableListIterator<E> {
   private final int size;
   private int position;
diff --git a/guava/src/com/google/common/collect/AbstractIterator.java b/guava/src/com/google/common/collect/AbstractIterator.java
index 66273f4..584723f 100644
--- a/guava/src/com/google/common/collect/AbstractIterator.java
+++ b/guava/src/com/google/common/collect/AbstractIterator.java
@@ -17,13 +17,9 @@
 package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.NoSuchElementException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * This class provides a skeletal implementation of the {@code Iterator} interface, to make this
@@ -62,9 +58,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  */
 // When making changes to this class, please also update the copy at
 // com.google.common.base.AbstractIterator
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class AbstractIterator<T extends @Nullable Object> extends UnmodifiableIterator<T> {
+public abstract class AbstractIterator<T extends Object> extends UnmodifiableIterator<T> {
   private State state = State.NOT_READY;
 
   /** Constructor for use by subclasses. */
@@ -120,14 +115,13 @@ public abstract class AbstractIterator<T extends @Nullable Object> extends Unmod
    * @return {@code null}; a convenience so your {@code computeNext} implementation can use the
    *     simple statement {@code return endOfData();}
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   protected final T endOfData() {
     state = State.DONE;
     return null;
   }
 
-  @CanIgnoreReturnValue // TODO(kak): Should we remove this? Some people are using it to prefetch?
+  // TODO(kak): Should we remove this? Some people are using it to prefetch?
   @Override
   public final boolean hasNext() {
     checkState(state != State.FAILED);
@@ -151,7 +145,7 @@ public abstract class AbstractIterator<T extends @Nullable Object> extends Unmod
     return false;
   }
 
-  @CanIgnoreReturnValue // TODO(kak): Should we remove this?
+  // TODO(kak): Should we remove this?
   @Override
   @ParametricNullness
   public final T next() {
diff --git a/guava/src/com/google/common/collect/AbstractListMultimap.java b/guava/src/com/google/common/collect/AbstractListMultimap.java
index 46c4ee2..809c8f7 100644
--- a/guava/src/com/google/common/collect/AbstractListMultimap.java
+++ b/guava/src/com/google/common/collect/AbstractListMultimap.java
@@ -16,14 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of the {@link ListMultimap} interface. It's a wrapper around {@link
@@ -33,9 +30,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractListMultimap<K extends Object, V extends Object>
     extends AbstractMapBasedMultimap<K, V> implements ListMultimap<K, V> {
   /**
    * Creates a new multimap that uses the provided map.
@@ -55,7 +51,7 @@ abstract class AbstractListMultimap<K extends @Nullable Object, V extends @Nulla
   }
 
   @Override
-  <E extends @Nullable Object> Collection<E> unmodifiableCollectionSubclass(
+  <E extends Object> Collection<E> unmodifiableCollectionSubclass(
       Collection<E> collection) {
     return Collections.unmodifiableList((List<E>) collection);
   }
@@ -86,7 +82,6 @@ abstract class AbstractListMultimap<K extends @Nullable Object, V extends @Nulla
    * this method returns a {@link List}, instead of the {@link Collection} specified in the {@link
    * Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   public List<V> removeAll(@CheckForNull Object key) {
     return (List<V>) super.removeAll(key);
@@ -99,7 +94,6 @@ abstract class AbstractListMultimap<K extends @Nullable Object, V extends @Nulla
    * this method returns a {@link List}, instead of the {@link Collection} specified in the {@link
    * Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   public List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return (List<V>) super.replaceValues(key, values);
@@ -112,7 +106,6 @@ abstract class AbstractListMultimap<K extends @Nullable Object, V extends @Nulla
    * @param value value to store in the multimap
    * @return {@code true} always
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean put(@ParametricNullness K key, @ParametricNullness V value) {
     return super.put(key, value);
diff --git a/guava/src/com/google/common/collect/AbstractMapBasedMultimap.java b/guava/src/com/google/common/collect/AbstractMapBasedMultimap.java
index 4c5a0f0..9ffda7e 100644
--- a/guava/src/com/google/common/collect/AbstractMapBasedMultimap.java
+++ b/guava/src/com/google/common/collect/AbstractMapBasedMultimap.java
@@ -19,12 +19,8 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Maps.ViewCachingAbstractMap;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.Serializable;
 import java.util.AbstractCollection;
 import java.util.Collection;
@@ -45,7 +41,6 @@ import java.util.SortedSet;
 import java.util.Spliterator;
 import java.util.function.BiConsumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of the {@link Multimap} interface. This class represents a multimap as a map
@@ -85,9 +80,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractMapBasedMultimap<K extends Object, V extends Object>
     extends AbstractMultimap<K, V> implements Serializable {
   /*
    * Here's an outline of the overall design.
@@ -264,7 +258,7 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     return unmodifiableCollectionSubclass(output);
   }
 
-  <E extends @Nullable Object> Collection<E> unmodifiableCollectionSubclass(
+  <E extends Object> Collection<E> unmodifiableCollectionSubclass(
       Collection<E> collection) {
     return Collections.unmodifiableCollection(collection);
   }
@@ -325,7 +319,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
    * subcollection {@code refreshIfEmpty}, {@code removeIfEmpty}, and {@code addToMap} methods call
    * the corresponding methods of the full wrapped collection.
    */
-  @WeakOuter
   class WrappedCollection extends AbstractCollection<V> {
     @ParametricNullness final K key;
     Collection<V> delegate;
@@ -587,7 +580,7 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  private static <E extends @Nullable Object> Iterator<E> iteratorOrListIterator(
+  private static <E extends Object> Iterator<E> iteratorOrListIterator(
       Collection<E> collection) {
     return (collection instanceof List)
         ? ((List<E>) collection).listIterator()
@@ -595,7 +588,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
   }
 
   /** Set decorator that stays in sync with the multimap values for a key. */
-  @WeakOuter
   class WrappedSet extends WrappedCollection implements Set<V> {
     WrappedSet(@ParametricNullness K key, Set<V> delegate) {
       super(key, delegate, null);
@@ -622,7 +614,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
   }
 
   /** SortedSet decorator that stays in sync with the multimap values for a key. */
-  @WeakOuter
   class WrappedSortedSet extends WrappedCollection implements SortedSet<V> {
     WrappedSortedSet(
         @ParametricNullness K key,
@@ -683,7 +674,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   class WrappedNavigableSet extends WrappedSortedSet implements NavigableSet<V> {
     WrappedNavigableSet(
         @ParametricNullness K key,
@@ -769,7 +759,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
   }
 
   /** List decorator that stays in sync with the multimap values for a key. */
-  @WeakOuter
   class WrappedList extends WrappedCollection implements List<V> {
     WrappedList(
         @ParametricNullness K key, List<V> delegate, @CheckForNull WrappedCollection ancestor) {
@@ -941,7 +930,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   private class KeySet extends Maps.KeySet<K, Collection<V>> {
     KeySet(final Map<K, Collection<V>> subMap) {
       super(subMap);
@@ -1017,7 +1005,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   private class SortedKeySet extends KeySet implements SortedSet<K> {
 
     SortedKeySet(SortedMap<K, Collection<V>> subMap) {
@@ -1062,7 +1049,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   class NavigableKeySet extends SortedKeySet implements NavigableSet<K> {
     NavigableKeySet(NavigableMap<K, Collection<V>> subMap) {
       super(subMap);
@@ -1167,7 +1153,7 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  private abstract class Itr<T extends @Nullable Object> implements Iterator<T> {
+  private abstract class Itr<T extends Object> implements Iterator<T> {
     final Iterator<Entry<K, Collection<V>>> keyIterator;
     @CheckForNull K key;
     @CheckForNull Collection<V> collection;
@@ -1337,7 +1323,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   private class AsMap extends ViewCachingAbstractMap<K, Collection<V>> {
     /**
      * Usually the same as map, but smaller for the headMap(), tailMap(), or subMap() of a
@@ -1427,7 +1412,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
       return Maps.immutableEntry(key, wrapCollection(key, entry.getValue()));
     }
 
-    @WeakOuter
     class AsMapEntries extends Maps.EntrySet<K, Collection<V>> {
       @Override
       Map<K, Collection<V>> map() {
@@ -1491,7 +1475,6 @@ abstract class AbstractMapBasedMultimap<K extends @Nullable Object, V extends @N
     }
   }
 
-  @WeakOuter
   private class SortedAsMap extends AsMap implements SortedMap<K, Collection<V>> {
     SortedAsMap(SortedMap<K, Collection<V>> submap) {
       super(submap);
diff --git a/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java b/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java
index b37214e..e2cfb52 100644
--- a/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java
+++ b/guava/src/com/google/common/collect/AbstractMapBasedMultiset.java
@@ -21,12 +21,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.InvalidObjectException;
 import java.io.ObjectStreamException;
 import java.io.Serializable;
@@ -36,7 +32,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.function.ObjIntConsumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of {@code Multiset<E>} backed by an instance of {@code Map<E, Count>}.
@@ -46,9 +41,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends AbstractMultiset<E>
+abstract class AbstractMapBasedMultiset<E extends Object> extends AbstractMultiset<E>
     implements Serializable {
   // TODO(lowasser): consider overhauling this back to Map<E, Integer>
   private transient Map<E, Count> backingMap;
@@ -261,7 +255,6 @@ abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends Abst
    * @throws IllegalArgumentException if the call would result in more than {@link
    *     Integer#MAX_VALUE} occurrences of {@code element} in this multiset.
    */
-  @CanIgnoreReturnValue
   @Override
   public int add(@ParametricNullness E element, int occurrences) {
     if (occurrences == 0) {
@@ -283,7 +276,6 @@ abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends Abst
     return oldCount;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int remove(@CheckForNull Object element, int occurrences) {
     if (occurrences == 0) {
@@ -311,7 +303,6 @@ abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends Abst
   }
 
   // Roughly a 33% performance improvement over AbstractMultiset.setCount().
-  @CanIgnoreReturnValue
   @Override
   public int setCount(@ParametricNullness E element, int count) {
     checkNonnegative(count, "count");
@@ -343,11 +334,11 @@ abstract class AbstractMapBasedMultiset<E extends @Nullable Object> extends Abst
   }
 
   // Don't allow default serialization.
-  @GwtIncompatible // java.io.ObjectStreamException
+  // java.io.ObjectStreamException
   private void readObjectNoData() throws ObjectStreamException {
     throw new InvalidObjectException("Stream data required");
   }
 
-  @GwtIncompatible // not needed in emulated source.
+  // not needed in emulated source.
   private static final long serialVersionUID = -2250766705698539974L;
 }
diff --git a/guava/src/com/google/common/collect/AbstractMapEntry.java b/guava/src/com/google/common/collect/AbstractMapEntry.java
index e9accf0..9ef13e5 100644
--- a/guava/src/com/google/common/collect/AbstractMapEntry.java
+++ b/guava/src/com/google/common/collect/AbstractMapEntry.java
@@ -16,11 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code
@@ -28,9 +26,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractMapEntry<K extends Object, V extends Object>
     implements Entry<K, V> {
 
   @Override
diff --git a/guava/src/com/google/common/collect/AbstractMultimap.java b/guava/src/com/google/common/collect/AbstractMultimap.java
index 299decb..720a269 100644
--- a/guava/src/com/google/common/collect/AbstractMultimap.java
+++ b/guava/src/com/google/common/collect/AbstractMultimap.java
@@ -18,10 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.AbstractCollection;
 import java.util.Collection;
 import java.util.Iterator;
@@ -31,16 +27,14 @@ import java.util.Set;
 import java.util.Spliterator;
 import java.util.Spliterators;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A skeleton {@code Multimap} implementation, not necessarily in terms of a {@code Map}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractMultimap<K extends Object, V extends Object>
     implements Multimap<K, V> {
   @Override
   public boolean isEmpty() {
@@ -64,20 +58,17 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     return collection != null && collection.contains(value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@CheckForNull Object key, @CheckForNull Object value) {
     Collection<V> collection = asMap().get(key);
     return collection != null && collection.remove(value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean put(@ParametricNullness K key, @ParametricNullness V value) {
     return get(key).add(value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean putAll(@ParametricNullness K key, Iterable<? extends V> values) {
     checkNotNull(values);
@@ -92,7 +83,6 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     }
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean putAll(Multimap<? extends K, ? extends V> multimap) {
     boolean changed = false;
@@ -102,7 +92,6 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     return changed;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public Collection<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     checkNotNull(values);
@@ -111,7 +100,7 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     return result;
   }
 
-  @LazyInit @CheckForNull private transient Collection<Entry<K, V>> entries;
+  @CheckForNull private transient Collection<Entry<K, V>> entries;
 
   @Override
   public Collection<Entry<K, V>> entries() {
@@ -121,7 +110,6 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
 
   abstract Collection<Entry<K, V>> createEntries();
 
-  @WeakOuter
   class Entries extends Multimaps.Entries<K, V> {
     @Override
     Multimap<K, V> multimap() {
@@ -139,7 +127,6 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     }
   }
 
-  @WeakOuter
   class EntrySet extends Entries implements Set<Entry<K, V>> {
     @Override
     public int hashCode() {
@@ -159,7 +146,7 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
         entryIterator(), size(), (this instanceof SetMultimap) ? Spliterator.DISTINCT : 0);
   }
 
-  @LazyInit @CheckForNull private transient Set<K> keySet;
+  @CheckForNull private transient Set<K> keySet;
 
   @Override
   public Set<K> keySet() {
@@ -169,7 +156,7 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
 
   abstract Set<K> createKeySet();
 
-  @LazyInit @CheckForNull private transient Multiset<K> keys;
+  @CheckForNull private transient Multiset<K> keys;
 
   @Override
   public Multiset<K> keys() {
@@ -179,7 +166,7 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
 
   abstract Multiset<K> createKeys();
 
-  @LazyInit @CheckForNull private transient Collection<V> values;
+  @CheckForNull private transient Collection<V> values;
 
   @Override
   public Collection<V> values() {
@@ -189,7 +176,6 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
 
   abstract Collection<V> createValues();
 
-  @WeakOuter
   class Values extends AbstractCollection<V> {
     @Override
     public Iterator<V> iterator() {
@@ -225,7 +211,7 @@ abstract class AbstractMultimap<K extends @Nullable Object, V extends @Nullable
     return Spliterators.spliterator(valueIterator(), size(), 0);
   }
 
-  @LazyInit @CheckForNull private transient Map<K, Collection<V>> asMap;
+  @CheckForNull private transient Map<K, Collection<V>> asMap;
 
   @Override
   public Map<K, Collection<V>> asMap() {
diff --git a/guava/src/com/google/common/collect/AbstractMultiset.java b/guava/src/com/google/common/collect/AbstractMultiset.java
index 8203e44..c3132d2 100644
--- a/guava/src/com/google/common/collect/AbstractMultiset.java
+++ b/guava/src/com/google/common/collect/AbstractMultiset.java
@@ -18,16 +18,11 @@ package com.google.common.collect;
 
 import static com.google.common.collect.Multisets.setCountImpl;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.AbstractCollection;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * This class provides a skeletal implementation of the {@link Multiset} interface. A new multiset
@@ -42,9 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractCollection<E>
+abstract class AbstractMultiset<E extends Object> extends AbstractCollection<E>
     implements Multiset<E> {
   // Query Operations
 
@@ -59,38 +53,32 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
   }
 
   // Modification Operations
-  @CanIgnoreReturnValue
   @Override
   public final boolean add(@ParametricNullness E element) {
     add(element, 1);
     return true;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int add(@ParametricNullness E element, int occurrences) {
     throw new UnsupportedOperationException();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public final boolean remove(@CheckForNull Object element) {
     return remove(element, 1) > 0;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int remove(@CheckForNull Object element, int occurrences) {
     throw new UnsupportedOperationException();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int setCount(@ParametricNullness E element, int count) {
     return setCountImpl(this, element, count);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean setCount(@ParametricNullness E element, int oldCount, int newCount) {
     return setCountImpl(this, element, oldCount, newCount);
@@ -104,19 +92,16 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
    * <p>This implementation is highly efficient when {@code elementsToAdd} is itself a {@link
    * Multiset}.
    */
-  @CanIgnoreReturnValue
   @Override
   public final boolean addAll(Collection<? extends E> elementsToAdd) {
     return Multisets.addAllImpl(this, elementsToAdd);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public final boolean removeAll(Collection<?> elementsToRemove) {
     return Multisets.removeAllImpl(this, elementsToRemove);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public final boolean retainAll(Collection<?> elementsToRetain) {
     return Multisets.retainAllImpl(this, elementsToRetain);
@@ -127,7 +112,7 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
 
   // Views
 
-  @LazyInit @CheckForNull private transient Set<E> elementSet;
+  @CheckForNull private transient Set<E> elementSet;
 
   @Override
   public Set<E> elementSet() {
@@ -146,7 +131,6 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
     return new ElementSet();
   }
 
-  @WeakOuter
   class ElementSet extends Multisets.ElementSet<E> {
     @Override
     Multiset<E> multiset() {
@@ -161,7 +145,7 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
 
   abstract Iterator<E> elementIterator();
 
-  @LazyInit @CheckForNull private transient Set<Entry<E>> entrySet;
+  @CheckForNull private transient Set<Entry<E>> entrySet;
 
   @Override
   public Set<Entry<E>> entrySet() {
@@ -172,7 +156,6 @@ abstract class AbstractMultiset<E extends @Nullable Object> extends AbstractColl
     return result;
   }
 
-  @WeakOuter
   class EntrySet extends Multisets.EntrySet<E> {
     @Override
     Multiset<E> multiset() {
diff --git a/guava/src/com/google/common/collect/AbstractNavigableMap.java b/guava/src/com/google/common/collect/AbstractNavigableMap.java
index 47048d0..d08ec66 100644
--- a/guava/src/com/google/common/collect/AbstractNavigableMap.java
+++ b/guava/src/com/google/common/collect/AbstractNavigableMap.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Maps.IteratorBasedAbstractMap;
 import java.util.Iterator;
 import java.util.NavigableMap;
@@ -25,16 +24,14 @@ import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.SortedMap;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Skeletal implementation of {@link NavigableMap}.
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractNavigableMap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractNavigableMap<K extends Object, V extends Object>
     extends IteratorBasedAbstractMap<K, V> implements NavigableMap<K, V> {
 
   @Override
diff --git a/guava/src/com/google/common/collect/AbstractRangeSet.java b/guava/src/com/google/common/collect/AbstractRangeSet.java
index d112a11..545b73b 100644
--- a/guava/src/com/google/common/collect/AbstractRangeSet.java
+++ b/guava/src/com/google/common/collect/AbstractRangeSet.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -22,7 +21,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class AbstractRangeSet<C extends Comparable> implements RangeSet<C> {
   AbstractRangeSet() {}
diff --git a/guava/src/com/google/common/collect/AbstractSequentialIterator.java b/guava/src/com/google/common/collect/AbstractSequentialIterator.java
index 172fe35..db1ab50 100644
--- a/guava/src/com/google/common/collect/AbstractSequentialIterator.java
+++ b/guava/src/com/google/common/collect/AbstractSequentialIterator.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.NoSuchElementException;
 import javax.annotation.CheckForNull;
 
@@ -39,7 +38,6 @@ import javax.annotation.CheckForNull;
  * @author Chris Povirk
  * @since 12.0 (in Guava as {@code AbstractLinkedIterator} since 8.0)
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractSequentialIterator<T> extends UnmodifiableIterator<T> {
   @CheckForNull private T nextOrNull;
diff --git a/guava/src/com/google/common/collect/AbstractSetMultimap.java b/guava/src/com/google/common/collect/AbstractSetMultimap.java
index 90aa9dc..a642da1 100644
--- a/guava/src/com/google/common/collect/AbstractSetMultimap.java
+++ b/guava/src/com/google/common/collect/AbstractSetMultimap.java
@@ -16,15 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of the {@link SetMultimap} interface. It's a wrapper around {@link
@@ -33,9 +30,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractSetMultimap<K extends Object, V extends Object>
     extends AbstractMapBasedMultimap<K, V> implements SetMultimap<K, V> {
   /**
    * Creates a new multimap that uses the provided map.
@@ -55,7 +51,7 @@ abstract class AbstractSetMultimap<K extends @Nullable Object, V extends @Nullab
   }
 
   @Override
-  <E extends @Nullable Object> Collection<E> unmodifiableCollectionSubclass(
+  <E extends Object> Collection<E> unmodifiableCollectionSubclass(
       Collection<E> collection) {
     return Collections.unmodifiableSet((Set<E>) collection);
   }
@@ -95,7 +91,6 @@ abstract class AbstractSetMultimap<K extends @Nullable Object, V extends @Nullab
    * <p>Because a {@code SetMultimap} has unique values for a given key, this method returns a
    * {@link Set}, instead of the {@link Collection} specified in the {@link Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   public Set<V> removeAll(@CheckForNull Object key) {
     return (Set<V>) super.removeAll(key);
@@ -109,7 +104,6 @@ abstract class AbstractSetMultimap<K extends @Nullable Object, V extends @Nullab
    *
    * <p>Any duplicates in {@code values} will be stored in the multimap once.
    */
-  @CanIgnoreReturnValue
   @Override
   public Set<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return (Set<V>) super.replaceValues(key, values);
@@ -134,7 +128,6 @@ abstract class AbstractSetMultimap<K extends @Nullable Object, V extends @Nullab
    * @return {@code true} if the method increased the size of the multimap, or {@code false} if the
    *     multimap already contained the key-value pair
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean put(@ParametricNullness K key, @ParametricNullness V value) {
     return super.put(key, value);
diff --git a/guava/src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java b/guava/src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java
index 676936f..a170b45 100644
--- a/guava/src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java
+++ b/guava/src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java
@@ -16,12 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of a {@link SortedSetMultimap} with a sorted key set.
@@ -31,10 +29,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class AbstractSortedKeySortedSetMultimap<
-        K extends @Nullable Object, V extends @Nullable Object>
+        K extends Object, V extends Object>
     extends AbstractSortedSetMultimap<K, V> {
 
   AbstractSortedKeySortedSetMultimap(SortedMap<K, Collection<V>> map) {
diff --git a/guava/src/com/google/common/collect/AbstractSortedMultiset.java b/guava/src/com/google/common/collect/AbstractSortedMultiset.java
index fd4fce2..c76a5b7 100644
--- a/guava/src/com/google/common/collect/AbstractSortedMultiset.java
+++ b/guava/src/com/google/common/collect/AbstractSortedMultiset.java
@@ -16,13 +16,10 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * This class provides a skeletal implementation of the {@link SortedMultiset} interface.
@@ -33,9 +30,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class AbstractSortedMultiset<E extends @Nullable Object> extends AbstractMultiset<E>
+abstract class AbstractSortedMultiset<E extends Object> extends AbstractMultiset<E>
     implements SortedMultiset<E> {
   @GwtTransient final Comparator<? super E> comparator;
 
@@ -131,7 +127,6 @@ abstract class AbstractSortedMultiset<E extends @Nullable Object> extends Abstra
   }
 
   SortedMultiset<E> createDescendingMultiset() {
-    @WeakOuter
     class DescendingMultisetImpl extends DescendingMultiset<E> {
       @Override
       SortedMultiset<E> forwardMultiset() {
diff --git a/guava/src/com/google/common/collect/AbstractSortedSetMultimap.java b/guava/src/com/google/common/collect/AbstractSortedSetMultimap.java
index 3231613..a075ad1 100644
--- a/guava/src/com/google/common/collect/AbstractSortedSetMultimap.java
+++ b/guava/src/com/google/common/collect/AbstractSortedSetMultimap.java
@@ -16,15 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 import java.util.NavigableSet;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Basic implementation of the {@link SortedSetMultimap} interface. It's a wrapper around {@link
@@ -33,9 +30,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AbstractSortedSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+abstract class AbstractSortedSetMultimap<K extends Object, V extends Object>
     extends AbstractSetMultimap<K, V> implements SortedSetMultimap<K, V> {
   /**
    * Creates a new multimap that uses the provided map.
@@ -55,7 +51,7 @@ abstract class AbstractSortedSetMultimap<K extends @Nullable Object, V extends @
   }
 
   @Override
-  <E extends @Nullable Object> SortedSet<E> unmodifiableCollectionSubclass(
+  <E extends Object> SortedSet<E> unmodifiableCollectionSubclass(
       Collection<E> collection) {
     if (collection instanceof NavigableSet) {
       return Sets.unmodifiableNavigableSet((NavigableSet<E>) collection);
@@ -97,7 +93,6 @@ abstract class AbstractSortedSetMultimap<K extends @Nullable Object, V extends @
    * returns a {@link SortedSet}, instead of the {@link Collection} specified in the {@link
    * Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   public SortedSet<V> removeAll(@CheckForNull Object key) {
     return (SortedSet<V>) super.removeAll(key);
@@ -113,7 +108,6 @@ abstract class AbstractSortedSetMultimap<K extends @Nullable Object, V extends @
    *
    * <p>Any duplicates in {@code values} will be stored in the multimap once.
    */
-  @CanIgnoreReturnValue
   @Override
   public SortedSet<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return (SortedSet<V>) super.replaceValues(key, values);
diff --git a/guava/src/com/google/common/collect/AbstractTable.java b/guava/src/com/google/common/collect/AbstractTable.java
index 99a1215..be99b96 100644
--- a/guava/src/com/google/common/collect/AbstractTable.java
+++ b/guava/src/com/google/common/collect/AbstractTable.java
@@ -14,10 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.AbstractCollection;
 import java.util.AbstractSet;
 import java.util.Collection;
@@ -26,17 +22,15 @@ import java.util.Map;
 import java.util.Set;
 import java.util.Spliterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Skeletal, implementation-agnostic implementation of the {@link Table} interface.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class AbstractTable<
-        R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+        R extends Object, C extends Object, V extends Object>
     implements Table<R, C, V> {
 
   @Override
@@ -92,7 +86,6 @@ abstract class AbstractTable<
     Iterators.clear(cellSet().iterator());
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V remove(@CheckForNull Object rowKey, @CheckForNull Object columnKey) {
@@ -100,7 +93,6 @@ abstract class AbstractTable<
     return (row == null) ? null : Maps.safeRemove(row, columnKey);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(
@@ -115,7 +107,7 @@ abstract class AbstractTable<
     }
   }
 
-  @LazyInit @CheckForNull private transient Set<Cell<R, C, V>> cellSet;
+  @CheckForNull private transient Set<Cell<R, C, V>> cellSet;
 
   @Override
   public Set<Cell<R, C, V>> cellSet() {
@@ -131,7 +123,6 @@ abstract class AbstractTable<
 
   abstract Spliterator<Table.Cell<R, C, V>> cellSpliterator();
 
-  @WeakOuter
   class CellSet extends AbstractSet<Cell<R, C, V>> {
     @Override
     public boolean contains(@CheckForNull Object o) {
@@ -178,7 +169,7 @@ abstract class AbstractTable<
     }
   }
 
-  @LazyInit @CheckForNull private transient Collection<V> values;
+  @CheckForNull private transient Collection<V> values;
 
   @Override
   public Collection<V> values() {
@@ -204,7 +195,6 @@ abstract class AbstractTable<
     return CollectSpliterators.map(cellSpliterator(), Table.Cell::getValue);
   }
 
-  @WeakOuter
   class Values extends AbstractCollection<V> {
     @Override
     public Iterator<V> iterator() {
diff --git a/guava/src/com/google/common/collect/AllEqualOrdering.java b/guava/src/com/google/common/collect/AllEqualOrdering.java
index f6ca6fa..9a0ded5 100644
--- a/guava/src/com/google/common/collect/AllEqualOrdering.java
+++ b/guava/src/com/google/common/collect/AllEqualOrdering.java
@@ -16,20 +16,17 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An ordering that treats all references as equals, even nulls.
  *
  * @author Emily Soldal
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class AllEqualOrdering extends Ordering<@Nullable Object> implements Serializable {
+final class AllEqualOrdering extends Ordering<Object> implements Serializable {
   static final AllEqualOrdering INSTANCE = new AllEqualOrdering();
 
   @Override
@@ -38,19 +35,19 @@ final class AllEqualOrdering extends Ordering<@Nullable Object> implements Seria
   }
 
   @Override
-  public <E extends @Nullable Object> List<E> sortedCopy(Iterable<E> iterable) {
+  public <E extends Object> List<E> sortedCopy(Iterable<E> iterable) {
     return Lists.newArrayList(iterable);
   }
 
   @Override
   @SuppressWarnings("nullness") // unsafe: see supertype
-  public <E extends @Nullable Object> ImmutableList<E> immutableSortedCopy(Iterable<E> iterable) {
+  public <E extends Object> ImmutableList<E> immutableSortedCopy(Iterable<E> iterable) {
     return ImmutableList.copyOf(iterable);
   }
 
   @SuppressWarnings("unchecked")
   @Override
-  public <S extends @Nullable Object> Ordering<S> reverse() {
+  public <S extends Object> Ordering<S> reverse() {
     return (Ordering<S>) this;
   }
 
diff --git a/guava/src/com/google/common/collect/ArrayListMultimap.java b/guava/src/com/google/common/collect/ArrayListMultimap.java
index c8f7106..78e42d6 100644
--- a/guava/src/com/google/common/collect/ArrayListMultimap.java
+++ b/guava/src/com/google/common/collect/ArrayListMultimap.java
@@ -18,9 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -29,7 +26,6 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@code Multimap} that uses an {@code ArrayList} to store the values for a given
@@ -59,14 +55,13 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class ArrayListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public final class ArrayListMultimap<K extends Object, V extends Object>
     extends ArrayListMultimapGwtSerializationDependencies<K, V> {
   // Default from ArrayList
   private static final int DEFAULT_VALUES_PER_KEY = 3;
 
-  @VisibleForTesting transient int expectedValuesPerKey;
+  transient int expectedValuesPerKey;
 
   /**
    * Creates a new, empty {@code ArrayListMultimap} with the default initial capacities.
@@ -74,7 +69,7 @@ public final class ArrayListMultimap<K extends @Nullable Object, V extends @Null
    * <p>This method will soon be deprecated in favor of {@code
    * MultimapBuilder.hashKeys().arrayListValues().build()}.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ArrayListMultimap<K, V> create() {
     return new ArrayListMultimap<>();
   }
@@ -91,7 +86,7 @@ public final class ArrayListMultimap<K extends @Nullable Object, V extends @Null
    * @throws IllegalArgumentException if {@code expectedKeys} or {@code expectedValuesPerKey} is
    *     negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ArrayListMultimap<K, V> create(int expectedKeys, int expectedValuesPerKey) {
     return new ArrayListMultimap<>(expectedKeys, expectedValuesPerKey);
   }
@@ -104,7 +99,7 @@ public final class ArrayListMultimap<K extends @Nullable Object, V extends @Null
    *
    * @param multimap the multimap whose contents are copied to this multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ArrayListMultimap<K, V> create(Multimap<? extends K, ? extends V> multimap) {
     return new ArrayListMultimap<>(multimap);
   }
@@ -155,13 +150,13 @@ public final class ArrayListMultimap<K extends @Nullable Object, V extends @Null
    * @serialData expectedValuesPerKey, number of distinct keys, and then for each distinct key: the
    *     key, number of values for that key, and the key's values
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     Serialization.writeMultimap(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     expectedValuesPerKey = DEFAULT_VALUES_PER_KEY;
@@ -171,6 +166,6 @@ public final class ArrayListMultimap<K extends @Nullable Object, V extends @Null
     Serialization.populateMultimap(this, stream, distinctKeys);
   }
 
-  @GwtIncompatible // Not needed in emulated source.
+  // Not needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java b/guava/src/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java
index 9a8cdfb..15220cf 100644
--- a/guava/src/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java
+++ b/guava/src/com/google/common/collect/ArrayListMultimapGwtSerializationDependencies.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Map;
 
@@ -29,7 +28,6 @@ import java.util.Map;
  *
  * <p>TODO(cpovirk): Consider applying this subclass approach to our other types.
  */
-@GwtCompatible(emulated = true)
 abstract class ArrayListMultimapGwtSerializationDependencies<K, V>
     extends AbstractListMultimap<K, V> {
   ArrayListMultimapGwtSerializationDependencies(Map<K, Collection<V>> map) {
diff --git a/guava/src/com/google/common/collect/ArrayTable.java b/guava/src/com/google/common/collect/ArrayTable.java
index 01652c5..3b81a97 100644
--- a/guava/src/com/google/common/collect/ArrayTable.java
+++ b/guava/src/com/google/common/collect/ArrayTable.java
@@ -21,14 +21,8 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.util.Collections.emptyMap;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.collect.Maps.IteratorBasedAbstractMap;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.Serializable;
 import java.lang.reflect.Array;
 import java.util.Arrays;
@@ -38,7 +32,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.Spliterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Fixed-size {@link Table} implementation backed by a two-dimensional array.
@@ -89,10 +82,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 10.0
  */
-@Beta
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
+public final class ArrayTable<R, C, V> extends AbstractTable<R, C, V>
     implements Serializable {
 
   /**
@@ -145,7 +136,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
   // TODO(jlevy): Add getters returning rowKeyToIndex and columnKeyToIndex?
   private final ImmutableMap<R, Integer> rowKeyToIndex;
   private final ImmutableMap<C, Integer> columnKeyToIndex;
-  private final @Nullable V[][] array;
+  private final V[][] array;
 
   private ArrayTable(Iterable<? extends R> rowKeys, Iterable<? extends C> columnKeys) {
     this.rowList = ImmutableList.copyOf(rowKeys);
@@ -162,7 +153,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     columnKeyToIndex = Maps.indexMap(columnList);
 
     @SuppressWarnings("unchecked")
-    @Nullable
     V[][] tmpArray = (@Nullable V[][]) new Object[rowList.size()][columnList.size()];
     array = tmpArray;
     // Necessary because in GWT the arrays are initialized with "undefined" instead of null.
@@ -180,7 +170,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     rowKeyToIndex = table.rowKeyToIndex;
     columnKeyToIndex = table.columnKeyToIndex;
     @SuppressWarnings("unchecked")
-    @Nullable
     V[][] copy = (@Nullable V[][]) new Object[rowList.size()][columnList.size()];
     array = copy;
     for (int i = 0; i < rowList.size(); i++) {
@@ -188,7 +177,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     }
   }
 
-  private abstract static class ArrayMap<K, V extends @Nullable Object>
+  private abstract static class ArrayMap<K, V extends Object>
       extends IteratorBasedAbstractMap<K, V> {
     private final ImmutableMap<K, Integer> keyIndex;
 
@@ -350,7 +339,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    *     or equal to the number of allowed row keys, or {@code columnIndex} is greater than or equal
    *     to the number of allowed column keys
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   public V set(int rowIndex, int columnIndex, @CheckForNull V value) {
     // In GWT array access never throws IndexOutOfBoundsException.
@@ -370,10 +358,9 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    *
    * @param valueClass class of values stored in the returned array
    */
-  @GwtIncompatible // reflection
-  public @Nullable V[][] toArray(Class<V> valueClass) {
+  // reflection
+  public V[][] toArray(Class<V> valueClass) {
     @SuppressWarnings("unchecked") // TODO: safe?
-    @Nullable
     V[][] copy = (@Nullable V[][]) Array.newInstance(valueClass, rowList.size(), columnList.size());
     for (int i = 0; i < rowList.size(); i++) {
       System.arraycopy(array[i], 0, copy[i], 0, array[i].length);
@@ -387,7 +374,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link #eraseAll}
    */
-  @DoNotCall("Always throws UnsupportedOperationException")
   @Override
   @Deprecated
   public void clear() {
@@ -462,7 +448,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @throws IllegalArgumentException if {@code rowKey} is not in {@link #rowKeySet()} or {@code
    *     columnKey} is not in {@link #columnKeySet()}.
    */
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(R rowKey, C columnKey, @CheckForNull V value) {
@@ -501,8 +486,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link #erase}
    */
-  @DoNotCall("Always throws UnsupportedOperationException")
-  @CanIgnoreReturnValue
   @Override
   @Deprecated
   @CheckForNull
@@ -523,7 +506,6 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @return the value previously associated with the keys, or {@code null} if no mapping existed
    *     for the keys
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   public V erase(@CheckForNull Object rowKey, @CheckForNull Object columnKey) {
     Integer rowIndex = rowKeyToIndex.get(rowKey);
@@ -553,28 +535,28 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @return set of table cells consisting of row key / column key / value triplets
    */
   @Override
-  public Set<Cell<R, C, @Nullable V>> cellSet() {
+  public Set<Cell<R, C, V>> cellSet() {
     return super.cellSet();
   }
 
   @Override
-  Iterator<Cell<R, C, @Nullable V>> cellIterator() {
-    return new AbstractIndexedListIterator<Cell<R, C, @Nullable V>>(size()) {
+  Iterator<Cell<R, C, V>> cellIterator() {
+    return new AbstractIndexedListIterator<Cell<R, C, V>>(size()) {
       @Override
-      protected Cell<R, C, @Nullable V> get(final int index) {
+      protected Cell<R, C, V> get(final int index) {
         return getCell(index);
       }
     };
   }
 
   @Override
-  Spliterator<Cell<R, C, @Nullable V>> cellSpliterator() {
-    return CollectSpliterators.<Cell<R, C, @Nullable V>>indexed(
+  Spliterator<Cell<R, C, V>> cellSpliterator() {
+    return CollectSpliterators.<Cell<R, C, V>>indexed(
         size(), Spliterator.ORDERED | Spliterator.NONNULL | Spliterator.DISTINCT, this::getCell);
   }
 
-  private Cell<R, C, @Nullable V> getCell(final int index) {
-    return new Tables.AbstractCell<R, C, @Nullable V>() {
+  private Cell<R, C, V> getCell(final int index) {
+    return new Tables.AbstractCell<R, C, V>() {
       final int rowIndex = index / columnList.size();
       final int columnIndex = index % columnList.size();
 
@@ -615,7 +597,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @return the corresponding map from row keys to values
    */
   @Override
-  public Map<R, @Nullable V> column(C columnKey) {
+  public Map<R, V> column(C columnKey) {
     checkNotNull(columnKey);
     Integer columnIndex = columnKeyToIndex.get(columnKey);
     if (columnIndex == null) {
@@ -625,7 +607,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     }
   }
 
-  private class Column extends ArrayMap<R, @Nullable V> {
+  private class Column extends ArrayMap<R, V> {
     final int columnIndex;
 
     Column(int columnIndex) {
@@ -665,13 +647,12 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
   @CheckForNull private transient ColumnMap columnMap;
 
   @Override
-  public Map<C, Map<R, @Nullable V>> columnMap() {
+  public Map<C, Map<R, V>> columnMap() {
     ColumnMap map = columnMap;
     return (map == null) ? columnMap = new ColumnMap() : map;
   }
 
-  @WeakOuter
-  private class ColumnMap extends ArrayMap<C, Map<R, @Nullable V>> {
+  private class ColumnMap extends ArrayMap<C, Map<R, V>> {
     private ColumnMap() {
       super(columnKeyToIndex);
     }
@@ -682,18 +663,18 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     }
 
     @Override
-    Map<R, @Nullable V> getValue(int index) {
+    Map<R, V> getValue(int index) {
       return new Column(index);
     }
 
     @Override
-    Map<R, @Nullable V> setValue(int index, Map<R, @Nullable V> newValue) {
+    Map<R, V> setValue(int index, Map<R, @Nullable V> newValue) {
       throw new UnsupportedOperationException();
     }
 
     @Override
     @CheckForNull
-    public Map<R, @Nullable V> put(C key, Map<R, @Nullable V> value) {
+    public Map<R, V> put(C key, Map<R, @Nullable V> value) {
       throw new UnsupportedOperationException();
     }
   }
@@ -710,7 +691,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @return the corresponding map from column keys to values
    */
   @Override
-  public Map<C, @Nullable V> row(R rowKey) {
+  public Map<C, V> row(R rowKey) {
     checkNotNull(rowKey);
     Integer rowIndex = rowKeyToIndex.get(rowKey);
     if (rowIndex == null) {
@@ -720,7 +701,7 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     }
   }
 
-  private class Row extends ArrayMap<C, @Nullable V> {
+  private class Row extends ArrayMap<C, V> {
     final int rowIndex;
 
     Row(int rowIndex) {
@@ -760,13 +741,12 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
   @CheckForNull private transient RowMap rowMap;
 
   @Override
-  public Map<R, Map<C, @Nullable V>> rowMap() {
+  public Map<R, Map<C, V>> rowMap() {
     RowMap map = rowMap;
     return (map == null) ? rowMap = new RowMap() : map;
   }
 
-  @WeakOuter
-  private class RowMap extends ArrayMap<R, Map<C, @Nullable V>> {
+  private class RowMap extends ArrayMap<R, Map<C, V>> {
     private RowMap() {
       super(rowKeyToIndex);
     }
@@ -777,18 +757,18 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
     }
 
     @Override
-    Map<C, @Nullable V> getValue(int index) {
+    Map<C, V> getValue(int index) {
       return new Row(index);
     }
 
     @Override
-    Map<C, @Nullable V> setValue(int index, Map<C, @Nullable V> newValue) {
+    Map<C, V> setValue(int index, Map<C, @Nullable V> newValue) {
       throw new UnsupportedOperationException();
     }
 
     @Override
     @CheckForNull
-    public Map<C, @Nullable V> put(R key, Map<C, @Nullable V> value) {
+    public Map<C, V> put(R key, Map<C, @Nullable V> value) {
       throw new UnsupportedOperationException();
     }
   }
@@ -803,13 +783,13 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
    * @return collection of values
    */
   @Override
-  public Collection<@Nullable V> values() {
+  public Collection<V> values() {
     return super.values();
   }
 
   @Override
-  Iterator<@Nullable V> valuesIterator() {
-    return new AbstractIndexedListIterator<@Nullable V>(size()) {
+  Iterator<V> valuesIterator() {
+    return new AbstractIndexedListIterator<V>(size()) {
       @Override
       @CheckForNull
       protected V get(int index) {
@@ -819,8 +799,8 @@ public final class ArrayTable<R, C, V> extends AbstractTable<R, C, @Nullable V>
   }
 
   @Override
-  Spliterator<@Nullable V> valuesSpliterator() {
-    return CollectSpliterators.<@Nullable V>indexed(size(), Spliterator.ORDERED, this::getValue);
+  Spliterator<V> valuesSpliterator() {
+    return CollectSpliterators.<V>indexed(size(), Spliterator.ORDERED, this::getValue);
   }
 
   private static final long serialVersionUID = 0;
diff --git a/guava/src/com/google/common/collect/BaseImmutableMultimap.java b/guava/src/com/google/common/collect/BaseImmutableMultimap.java
index 2e69c2a..d212bf4 100644
--- a/guava/src/com/google/common/collect/BaseImmutableMultimap.java
+++ b/guava/src/com/google/common/collect/BaseImmutableMultimap.java
@@ -15,12 +15,10 @@
  */
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A dummy superclass of {@link ImmutableMultimap} that can be instanceof'd without ProGuard
  * retaining additional implementation details of {@link ImmutableMultimap}.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class BaseImmutableMultimap<K, V> extends AbstractMultimap<K, V> {}
diff --git a/guava/src/com/google/common/collect/BiMap.java b/guava/src/com/google/common/collect/BiMap.java
index 12eb4e3..eb7d891 100644
--- a/guava/src/com/google/common/collect/BiMap.java
+++ b/guava/src/com/google/common/collect/BiMap.java
@@ -16,12 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A bimap (or "bidirectional map") is a map that preserves the uniqueness of its values as well as
@@ -34,9 +31,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface BiMap<K extends @Nullable Object, V extends @Nullable Object> extends Map<K, V> {
+public interface BiMap<K extends Object, V extends Object> extends Map<K, V> {
   // Modification Operations
 
   /**
@@ -46,7 +42,6 @@ public interface BiMap<K extends @Nullable Object, V extends @Nullable Object> e
    *     bimap. The bimap will remain unmodified in this event. To avoid this exception, call {@link
    *     #forcePut} instead.
    */
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   V put(@ParametricNullness K key, @ParametricNullness V value);
@@ -69,7 +64,6 @@ public interface BiMap<K extends @Nullable Object, V extends @Nullable Object> e
    *     put}, returns {@code null} both if the key is absent and if it is present with a null
    *     value.)
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V forcePut(@ParametricNullness K key, @ParametricNullness V value);
 
diff --git a/guava/src/com/google/common/collect/BoundType.java b/guava/src/com/google/common/collect/BoundType.java
index 00ac08c..1387a45 100644
--- a/guava/src/com/google/common/collect/BoundType.java
+++ b/guava/src/com/google/common/collect/BoundType.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Indicates whether an endpoint of some range is contained in the range itself ("closed") or not
@@ -23,7 +22,6 @@ import com.google.common.annotations.GwtCompatible;
  *
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public enum BoundType {
   /** The endpoint value <i>is not</i> considered part of the set ("exclusive"). */
diff --git a/guava/src/com/google/common/collect/ByFunctionOrdering.java b/guava/src/com/google/common/collect/ByFunctionOrdering.java
index 43ebddd..82cff0d 100644
--- a/guava/src/com/google/common/collect/ByFunctionOrdering.java
+++ b/guava/src/com/google/common/collect/ByFunctionOrdering.java
@@ -18,20 +18,17 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An ordering that orders elements by applying an order to the result of a function on those
  * elements.
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class ByFunctionOrdering<F extends @Nullable Object, T extends @Nullable Object>
+final class ByFunctionOrdering<F extends Object, T extends Object>
     extends Ordering<F> implements Serializable {
   final Function<F, ? extends T> function;
   final Ordering<T> ordering;
diff --git a/guava/src/com/google/common/collect/CartesianList.java b/guava/src/com/google/common/collect/CartesianList.java
index 475b3f2..bf290a0 100644
--- a/guava/src/com/google/common/collect/CartesianList.java
+++ b/guava/src/com/google/common/collect/CartesianList.java
@@ -16,7 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkElementIndex;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.math.IntMath;
 import java.util.AbstractList;
 import java.util.List;
@@ -29,7 +28,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class CartesianList<E> extends AbstractList<List<E>> implements RandomAccess {
 
diff --git a/guava/src/com/google/common/collect/ClassToInstanceMap.java b/guava/src/com/google/common/collect/ClassToInstanceMap.java
index 9bd826f..c6b0da4 100644
--- a/guava/src/com/google/common/collect/ClassToInstanceMap.java
+++ b/guava/src/com/google/common/collect/ClassToInstanceMap.java
@@ -16,9 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Map;
 import javax.annotation.CheckForNull;
 
@@ -52,8 +49,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@DoNotMock("Use ImmutableClassToInstanceMap or MutableClassToInstanceMap")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 // If we ever support non-null projections (https://github.com/jspecify/jspecify/issues/86), we
 // we might annotate this as...
@@ -75,7 +70,6 @@ public interface ClassToInstanceMap<B> extends Map<Class<? extends B>, B> {
    * @return the value previously associated with this class (possibly {@code null}), or {@code
    *     null} if there was no previous entry.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   <T extends B> T putInstance(Class<T> type, T value);
 }
diff --git a/guava/src/com/google/common/collect/CollectCollectors.java b/guava/src/com/google/common/collect/CollectCollectors.java
index 63eec12..229429f 100644
--- a/guava/src/com/google/common/collect/CollectCollectors.java
+++ b/guava/src/com/google/common/collect/CollectCollectors.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import java.util.Collection;
 import java.util.Comparator;
@@ -35,10 +33,8 @@ import java.util.stream.Collector;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Collectors utilities for {@code common.collect} internals. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class CollectCollectors {
 
@@ -56,7 +52,6 @@ final class CollectCollectors {
           ImmutableSet.Builder::combine,
           ImmutableSet.Builder::build);
 
-  @GwtIncompatible
   private static final Collector<Range<Comparable<?>>, ?, ImmutableRangeSet<Comparable<?>>>
       TO_IMMUTABLE_RANGE_SET =
           Collector.of(
@@ -131,7 +126,6 @@ final class CollectCollectors {
     }
   }
 
-  @GwtIncompatible
   @SuppressWarnings({"rawtypes", "unchecked"})
   static <E extends Comparable<? super E>>
       Collector<Range<E>, ?, ImmutableRangeSet<E>> toImmutableRangeSet() {
@@ -140,7 +134,7 @@ final class CollectCollectors {
 
   // Multisets
 
-  static <T extends @Nullable Object, E> Collector<T, ?, ImmutableMultiset<E>> toImmutableMultiset(
+  static <T extends Object, E> Collector<T, ?, ImmutableMultiset<E>> toImmutableMultiset(
       Function<? super T, ? extends E> elementFunction, ToIntFunction<? super T> countFunction) {
     checkNotNull(elementFunction);
     checkNotNull(countFunction);
@@ -155,7 +149,7 @@ final class CollectCollectors {
         (Multiset<E> multiset) -> ImmutableMultiset.copyFromEntries(multiset.entrySet()));
   }
 
-  static <T extends @Nullable Object, E extends @Nullable Object, M extends Multiset<E>>
+  static <T extends Object, E extends Object, M extends Multiset<E>>
       Collector<T, ?, M> toMultiset(
           Function<? super T, E> elementFunction,
           ToIntFunction<? super T> countFunction,
@@ -174,7 +168,7 @@ final class CollectCollectors {
 
   // Maps
 
-  static <T extends @Nullable Object, K, V> Collector<T, ?, ImmutableMap<K, V>> toImmutableMap(
+  static <T extends Object, K, V> Collector<T, ?, ImmutableMap<K, V>> toImmutableMap(
       Function<? super T, ? extends K> keyFunction,
       Function<? super T, ? extends V> valueFunction) {
     checkNotNull(keyFunction);
@@ -186,7 +180,7 @@ final class CollectCollectors {
         ImmutableMap.Builder::build);
   }
 
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableMap<K, V>> toImmutableMap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction,
@@ -199,7 +193,7 @@ final class CollectCollectors {
         ImmutableMap::copyOf);
   }
 
-  static <T extends @Nullable Object, K, V>
+  static <T extends Object, K, V>
       Collector<T, ?, ImmutableSortedMap<K, V>> toImmutableSortedMap(
           Comparator<? super K> comparator,
           Function<? super T, ? extends K> keyFunction,
@@ -219,7 +213,7 @@ final class CollectCollectors {
         Collector.Characteristics.UNORDERED);
   }
 
-  static <T extends @Nullable Object, K, V>
+  static <T extends Object, K, V>
       Collector<T, ?, ImmutableSortedMap<K, V>> toImmutableSortedMap(
           Comparator<? super K> comparator,
           Function<? super T, ? extends K> keyFunction,
@@ -235,7 +229,7 @@ final class CollectCollectors {
         ImmutableSortedMap::copyOfSorted);
   }
 
-  static <T extends @Nullable Object, K, V> Collector<T, ?, ImmutableBiMap<K, V>> toImmutableBiMap(
+  static <T extends Object, K, V> Collector<T, ?, ImmutableBiMap<K, V>> toImmutableBiMap(
       Function<? super T, ? extends K> keyFunction,
       Function<? super T, ? extends V> valueFunction) {
     checkNotNull(keyFunction);
@@ -248,7 +242,7 @@ final class CollectCollectors {
         new Collector.Characteristics[0]);
   }
 
-  static <T extends @Nullable Object, K extends Enum<K>, V>
+  static <T extends Object, K extends Enum<K>, V>
       Collector<T, ?, ImmutableMap<K, V>> toImmutableEnumMap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction) {
@@ -276,7 +270,7 @@ final class CollectCollectors {
         Collector.Characteristics.UNORDERED);
   }
 
-  static <T extends @Nullable Object, K extends Enum<K>, V>
+  static <T extends Object, K extends Enum<K>, V>
       Collector<T, ?, ImmutableMap<K, V>> toImmutableEnumMap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction,
@@ -333,8 +327,7 @@ final class CollectCollectors {
     }
   }
 
-  @GwtIncompatible
-  static <T extends @Nullable Object, K extends Comparable<? super K>, V>
+  static <T extends Object, K extends Comparable<? super K>, V>
       Collector<T, ?, ImmutableRangeMap<K, V>> toImmutableRangeMap(
           Function<? super T, Range<K>> keyFunction,
           Function<? super T, ? extends V> valueFunction) {
@@ -349,7 +342,7 @@ final class CollectCollectors {
 
   // Multimaps
 
-  static <T extends @Nullable Object, K, V>
+  static <T extends Object, K, V>
       Collector<T, ?, ImmutableListMultimap<K, V>> toImmutableListMultimap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction) {
@@ -362,7 +355,7 @@ final class CollectCollectors {
         ImmutableListMultimap.Builder::build);
   }
 
-  static <T extends @Nullable Object, K, V>
+  static <T extends Object, K, V>
       Collector<T, ?, ImmutableListMultimap<K, V>> flatteningToImmutableListMultimap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends Stream<? extends V>> valuesFunction) {
@@ -376,7 +369,7 @@ final class CollectCollectors {
         ImmutableListMultimap::copyOf);
   }
 
-  static <T extends @Nullable Object, K, V>
+  static <T extends Object, K, V>
       Collector<T, ?, ImmutableSetMultimap<K, V>> toImmutableSetMultimap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction) {
@@ -389,7 +382,7 @@ final class CollectCollectors {
         ImmutableSetMultimap.Builder::build);
   }
 
-  static <T extends @Nullable Object, K, V>
+  static <T extends Object, K, V>
       Collector<T, ?, ImmutableSetMultimap<K, V>> flatteningToImmutableSetMultimap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends Stream<? extends V>> valuesFunction) {
@@ -404,9 +397,9 @@ final class CollectCollectors {
   }
 
   static <
-          T extends @Nullable Object,
-          K extends @Nullable Object,
-          V extends @Nullable Object,
+          T extends Object,
+          K extends Object,
+          V extends Object,
           M extends Multimap<K, V>>
       Collector<T, ?, M> toMultimap(
           Function<? super T, ? extends K> keyFunction,
@@ -425,9 +418,9 @@ final class CollectCollectors {
   }
 
   static <
-          T extends @Nullable Object,
-          K extends @Nullable Object,
-          V extends @Nullable Object,
+          T extends Object,
+          K extends Object,
+          V extends Object,
           M extends Multimap<K, V>>
       Collector<T, ?, M> flatteningToMultimap(
           Function<? super T, ? extends K> keyFunction,
diff --git a/guava/src/com/google/common/collect/CollectPreconditions.java b/guava/src/com/google/common/collect/CollectPreconditions.java
index c649b03..a9fa1cd 100644
--- a/guava/src/com/google/common/collect/CollectPreconditions.java
+++ b/guava/src/com/google/common/collect/CollectPreconditions.java
@@ -18,11 +18,8 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 
 /** Precondition checks useful in collection implementations. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class CollectPreconditions {
 
@@ -34,7 +31,6 @@ final class CollectPreconditions {
     }
   }
 
-  @CanIgnoreReturnValue
   static int checkNonnegative(int value, String name) {
     if (value < 0) {
       throw new IllegalArgumentException(name + " cannot be negative but was: " + value);
@@ -42,7 +38,6 @@ final class CollectPreconditions {
     return value;
   }
 
-  @CanIgnoreReturnValue
   static long checkNonnegative(long value, String name) {
     if (value < 0) {
       throw new IllegalArgumentException(name + " cannot be negative but was: " + value);
diff --git a/guava/src/com/google/common/collect/CollectSpliterators.java b/guava/src/com/google/common/collect/CollectSpliterators.java
index 91f563d..db27e1f 100644
--- a/guava/src/com/google/common/collect/CollectSpliterators.java
+++ b/guava/src/com/google/common/collect/CollectSpliterators.java
@@ -18,10 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.j2objc.annotations.Weak;
 import java.util.Comparator;
 import java.util.Spliterator;
 import java.util.function.Consumer;
@@ -33,20 +30,18 @@ import java.util.function.LongConsumer;
 import java.util.function.Predicate;
 import java.util.stream.IntStream;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Spliterator utilities for {@code common.collect} internals. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class CollectSpliterators {
   private CollectSpliterators() {}
 
-  static <T extends @Nullable Object> Spliterator<T> indexed(
+  static <T extends Object> Spliterator<T> indexed(
       int size, int extraCharacteristics, IntFunction<T> function) {
     return indexed(size, extraCharacteristics, function, null);
   }
 
-  static <T extends @Nullable Object> Spliterator<T> indexed(
+  static <T extends Object> Spliterator<T> indexed(
       int size,
       int extraCharacteristics,
       IntFunction<T> function,
@@ -108,7 +103,7 @@ final class CollectSpliterators {
    * Returns a {@code Spliterator} over the elements of {@code fromSpliterator} mapped by {@code
    * function}.
    */
-  static <InElementT extends @Nullable Object, OutElementT extends @Nullable Object>
+  static <InElementT extends Object, OutElementT extends Object>
       Spliterator<OutElementT> map(
           Spliterator<InElementT> fromSpliterator,
           Function<? super InElementT, ? extends OutElementT> function) {
@@ -148,7 +143,7 @@ final class CollectSpliterators {
   }
 
   /** Returns a {@code Spliterator} filtered by the specified predicate. */
-  static <T extends @Nullable Object> Spliterator<T> filter(
+  static <T extends Object> Spliterator<T> filter(
       Spliterator<T> fromSpliterator, Predicate<? super T> predicate) {
     checkNotNull(fromSpliterator);
     checkNotNull(predicate);
@@ -211,7 +206,7 @@ final class CollectSpliterators {
    * Returns a {@code Spliterator} that iterates over the elements of the spliterators generated by
    * applying {@code function} to the elements of {@code fromSpliterator}.
    */
-  static <InElementT extends @Nullable Object, OutElementT extends @Nullable Object>
+  static <InElementT extends Object, OutElementT extends Object>
       Spliterator<OutElementT> flatMap(
           Spliterator<InElementT> fromSpliterator,
           Function<? super InElementT, Spliterator<OutElementT>> function,
@@ -234,7 +229,7 @@ final class CollectSpliterators {
    * generated by applying {@code function} to the elements of {@code fromSpliterator}. (If {@code
    * function} returns {@code null} for an input, it is replaced with an empty stream.)
    */
-  static <InElementT extends @Nullable Object> Spliterator.OfInt flatMapToInt(
+  static <InElementT extends Object> Spliterator.OfInt flatMapToInt(
       Spliterator<InElementT> fromSpliterator,
       Function<? super InElementT, Spliterator.OfInt> function,
       int topCharacteristics,
@@ -256,7 +251,7 @@ final class CollectSpliterators {
    * generated by applying {@code function} to the elements of {@code fromSpliterator}. (If {@code
    * function} returns {@code null} for an input, it is replaced with an empty stream.)
    */
-  static <InElementT extends @Nullable Object> Spliterator.OfLong flatMapToLong(
+  static <InElementT extends Object> Spliterator.OfLong flatMapToLong(
       Spliterator<InElementT> fromSpliterator,
       Function<? super InElementT, Spliterator.OfLong> function,
       int topCharacteristics,
@@ -278,7 +273,7 @@ final class CollectSpliterators {
    * generated by applying {@code function} to the elements of {@code fromSpliterator}. (If {@code
    * function} returns {@code null} for an input, it is replaced with an empty stream.)
    */
-  static <InElementT extends @Nullable Object> Spliterator.OfDouble flatMapToDouble(
+  static <InElementT extends Object> Spliterator.OfDouble flatMapToDouble(
       Spliterator<InElementT> fromSpliterator,
       Function<? super InElementT, Spliterator.OfDouble> function,
       int topCharacteristics,
@@ -303,13 +298,13 @@ final class CollectSpliterators {
    * @param <OutSpliteratorT> the type of the output spliterators
    */
   abstract static class FlatMapSpliterator<
-          InElementT extends @Nullable Object,
-          OutElementT extends @Nullable Object,
+          InElementT extends Object,
+          OutElementT extends Object,
           OutSpliteratorT extends Spliterator<OutElementT>>
       implements Spliterator<OutElementT> {
     /** Factory for constructing {@link FlatMapSpliterator} instances. */
     @FunctionalInterface
-    interface Factory<InElementT extends @Nullable Object, OutSpliteratorT extends Spliterator<?>> {
+    interface Factory<InElementT extends Object, OutSpliteratorT extends Spliterator<?>> {
       OutSpliteratorT newFlatMapSpliterator(
           @CheckForNull OutSpliteratorT prefix,
           Spliterator<InElementT> fromSplit,
@@ -318,7 +313,7 @@ final class CollectSpliterators {
           long estSplitSize);
     }
 
-    @Weak @CheckForNull OutSpliteratorT prefix;
+    @CheckForNull OutSpliteratorT prefix;
     final Spliterator<InElementT> from;
     final Function<? super InElementT, OutSpliteratorT> function;
     final Factory<InElementT, OutSpliteratorT> factory;
@@ -432,7 +427,7 @@ final class CollectSpliterators {
    * @param <OutElementT> the element type of the output spliterators
    */
   static final class FlatMapSpliteratorOfObject<
-          InElementT extends @Nullable Object, OutElementT extends @Nullable Object>
+          InElementT extends Object, OutElementT extends Object>
       extends FlatMapSpliterator<InElementT, OutElementT, Spliterator<OutElementT>> {
     FlatMapSpliteratorOfObject(
         @CheckForNull Spliterator<OutElementT> prefix,
@@ -454,8 +449,8 @@ final class CollectSpliterators {
    * @param <OutSpliteratorT> the primitive spliterator type associated with {@code OutElementT}
    */
   abstract static class FlatMapSpliteratorOfPrimitive<
-          InElementT extends @Nullable Object,
-          OutElementT extends @Nullable Object,
+          InElementT extends Object,
+          OutElementT extends Object,
           OutConsumerT,
           OutSpliteratorT extends
               Spliterator.OfPrimitive<OutElementT, OutConsumerT, OutSpliteratorT>>
@@ -507,7 +502,7 @@ final class CollectSpliterators {
   }
 
   /** Implementation of {@link #flatMapToInt}. */
-  static final class FlatMapSpliteratorOfInt<InElementT extends @Nullable Object>
+  static final class FlatMapSpliteratorOfInt<InElementT extends Object>
       extends FlatMapSpliteratorOfPrimitive<InElementT, Integer, IntConsumer, Spliterator.OfInt>
       implements Spliterator.OfInt {
     FlatMapSpliteratorOfInt(
@@ -521,7 +516,7 @@ final class CollectSpliterators {
   }
 
   /** Implementation of {@link #flatMapToLong}. */
-  static final class FlatMapSpliteratorOfLong<InElementT extends @Nullable Object>
+  static final class FlatMapSpliteratorOfLong<InElementT extends Object>
       extends FlatMapSpliteratorOfPrimitive<InElementT, Long, LongConsumer, Spliterator.OfLong>
       implements Spliterator.OfLong {
     FlatMapSpliteratorOfLong(
@@ -535,7 +530,7 @@ final class CollectSpliterators {
   }
 
   /** Implementation of {@link #flatMapToDouble}. */
-  static final class FlatMapSpliteratorOfDouble<InElementT extends @Nullable Object>
+  static final class FlatMapSpliteratorOfDouble<InElementT extends Object>
       extends FlatMapSpliteratorOfPrimitive<
           InElementT, Double, DoubleConsumer, Spliterator.OfDouble>
       implements Spliterator.OfDouble {
diff --git a/guava/src/com/google/common/collect/Collections2.java b/guava/src/com/google/common/collect/Collections2.java
index eb92859..2720467 100644
--- a/guava/src/com/google/common/collect/Collections2.java
+++ b/guava/src/com/google/common/collect/Collections2.java
@@ -19,10 +19,7 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
@@ -39,7 +36,6 @@ import java.util.List;
 import java.util.Spliterator;
 import java.util.function.Consumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static methods for working with {@code Collection} instances.
@@ -54,7 +50,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Collections2 {
   private Collections2() {}
@@ -86,7 +81,7 @@ public final class Collections2 {
    */
   // TODO(kevinb): how can we omit that Iterables link when building gwt
   // javadoc?
-  public static <E extends @Nullable Object> Collection<E> filter(
+  public static <E extends Object> Collection<E> filter(
       Collection<E> unfiltered, Predicate<? super E> predicate) {
     if (unfiltered instanceof FilteredCollection) {
       // Support clear(), removeAll(), and retainAll() when filtering a filtered
@@ -123,7 +118,7 @@ public final class Collections2 {
     }
   }
 
-  static class FilteredCollection<E extends @Nullable Object> extends AbstractCollection<E> {
+  static class FilteredCollection<E extends Object> extends AbstractCollection<E> {
     final Collection<E> unfiltered;
     final Predicate<? super E> predicate;
 
@@ -230,14 +225,14 @@ public final class Collections2 {
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       // creating an ArrayList so filtering happens once
       return Lists.newArrayList(iterator()).toArray();
     }
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return Lists.newArrayList(iterator()).toArray(array);
     }
   }
@@ -261,12 +256,12 @@ public final class Collections2 {
    *
    * <p><b>{@code Stream} equivalent:</b> {@link java.util.stream.Stream#map Stream.map}.
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> Collection<T> transform(
+  public static <F extends Object, T extends Object> Collection<T> transform(
       Collection<F> fromCollection, Function<? super F, T> function) {
     return new TransformedCollection<>(fromCollection, function);
   }
 
-  static class TransformedCollection<F extends @Nullable Object, T extends @Nullable Object>
+  static class TransformedCollection<F extends Object, T extends Object>
       extends AbstractCollection<T> {
     final Collection<F> fromCollection;
     final Function<? super F, ? extends T> function;
@@ -380,7 +375,6 @@ public final class Collections2 {
    * @throws NullPointerException if the specified iterable is null or has any null elements.
    * @since 12.0
    */
-  @Beta
   public static <E extends Comparable<? super E>> Collection<List<E>> orderedPermutations(
       Iterable<E> elements) {
     return orderedPermutations(elements, Ordering.natural());
@@ -432,7 +426,6 @@ public final class Collections2 {
    *     the specified comparator is null.
    * @since 12.0
    */
-  @Beta
   public static <E> Collection<List<E>> orderedPermutations(
       Iterable<E> elements, Comparator<? super E> comparator) {
     return new OrderedPermutationCollection<E>(elements, comparator);
@@ -594,7 +587,6 @@ public final class Collections2 {
    * @throws NullPointerException if the specified collection is null or has any null elements.
    * @since 12.0
    */
-  @Beta
   public static <E> Collection<List<E>> permutations(Collection<E> elements) {
     return new PermutationCollection<E>(ImmutableList.copyOf(elements));
   }
diff --git a/guava/src/com/google/common/collect/CompactHashMap.java b/guava/src/com/google/common/collect/CompactHashMap.java
index e40b05e..2f93c29 100644
--- a/guava/src/com/google/common/collect/CompactHashMap.java
+++ b/guava/src/com/google/common/collect/CompactHashMap.java
@@ -20,17 +20,11 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 import static com.google.common.collect.CompactHashing.UNSET;
 import static com.google.common.collect.Hashing.smearedHash;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.collect.NullnessCasts.unsafeNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
@@ -51,7 +45,6 @@ import java.util.function.BiConsumer;
 import java.util.function.BiFunction;
 import java.util.function.Consumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * CompactHashMap is an implementation of a Map. All optional operations (put and remove) are
@@ -79,9 +72,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @author Jon Noack
  */
-@GwtIncompatible // not worth using in GWT for now
+// not worth using in GWT for now
 @ElementTypesAreNonnullByDefault
-class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
+class CompactHashMap<K extends Object, V extends Object>
     extends AbstractMap<K, V> implements Serializable {
   /*
    * TODO: Make this a drop-in replacement for j.u. versions, actually drop them in, and test the
@@ -92,7 +85,7 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
    */
 
   /** Creates an empty {@code CompactHashMap} instance. */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       CompactHashMap<K, V> create() {
     return new CompactHashMap<>();
   }
@@ -106,7 +99,7 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
    *     elements without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       CompactHashMap<K, V> createWithExpectedSize(int expectedSize) {
     return new CompactHashMap<>(expectedSize);
   }
@@ -117,8 +110,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
    * Maximum allowed false positive probability of detecting a hash flooding attack given random
    * input.
    */
-  @VisibleForTesting(
-      )
   static final double HASH_FLOODING_FPP = 0.001;
 
   /**
@@ -203,19 +194,19 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
    *
    * <p>The pointers in [size(), entries.length) are all "null" (UNSET).
    */
-  @VisibleForTesting @CheckForNull transient int[] entries;
+  @CheckForNull transient int[] entries;
 
   /**
    * The keys of the entries in the map, in the range of [0, size()). The keys in [size(),
    * keys.length) are all {@code null}.
    */
-  @VisibleForTesting @CheckForNull transient @Nullable Object[] keys;
+  @CheckForNull transient Object[] keys;
 
   /**
    * The values of the entries in the map, in the range of [0, size()). The values in [size(),
    * values.length) are all {@code null}.
    */
-  @VisibleForTesting @CheckForNull transient @Nullable Object[] values;
+  @CheckForNull transient Object[] values;
 
   /**
    * Keeps track of metadata like the number of hash table bits and modifications of this data
@@ -257,13 +248,11 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
   }
 
   /** Returns whether arrays need to be allocated. */
-  @VisibleForTesting
   boolean needsAllocArrays() {
     return table == null;
   }
 
   /** Handle lazy allocation of arrays. */
-  @CanIgnoreReturnValue
   int allocArrays() {
     Preconditions.checkState(needsAllocArrays(), "Arrays already allocated");
 
@@ -280,7 +269,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
   }
 
   @SuppressWarnings("unchecked")
-  @VisibleForTesting
   @CheckForNull
   Map<K, V> delegateOrNull() {
     if (table instanceof Map) {
@@ -293,8 +281,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return new LinkedHashMap<>(tableSize, 1.0f);
   }
 
-  @VisibleForTesting
-  @CanIgnoreReturnValue
   Map<K, V> convertToHashFloodingResistantImplementation() {
     Map<K, V> newDelegate = createHashFloodingResistantDelegate(hashTableMask() + 1);
     for (int i = firstEntryIndex(); i >= 0; i = getSuccessor(i)) {
@@ -332,7 +318,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     // no-op by default
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(@ParametricNullness K key, @ParametricNullness V value) {
@@ -344,8 +329,8 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
       return delegate.put(key, value);
     }
     int[] entries = requireEntries();
-    @Nullable Object[] keys = requireKeys();
-    @Nullable Object[] values = requireValues();
+    Object[] keys = requireKeys();
+    Object[] values = requireValues();
 
     int newEntryIndex = this.size; // current size, and pointer to the entry to be appended
     int newSize = newEntryIndex + 1;
@@ -432,7 +417,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     this.values = Arrays.copyOf(requireValues(), newCapacity);
   }
 
-  @CanIgnoreReturnValue
   private int resizeTable(int oldMask, int newCapacity, int targetHash, int targetEntryIndex) {
     Object newTable = CompactHashing.createTable(newCapacity);
     int newMask = newCapacity - 1;
@@ -523,7 +507,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return value(index);
   }
 
-  @CanIgnoreReturnValue
   @SuppressWarnings("unchecked") // known to be a V
   @Override
   @CheckForNull
@@ -536,7 +519,7 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return (oldValue == NOT_FOUND) ? null : (V) oldValue;
   }
 
-  private @Nullable Object removeHelper(@CheckForNull Object key) {
+  private Object removeHelper(@CheckForNull Object key) {
     if (needsAllocArrays()) {
       return NOT_FOUND;
     }
@@ -569,8 +552,8 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
   void moveLastEntry(int dstIndex, int mask) {
     Object table = requireTable();
     int[] entries = requireEntries();
-    @Nullable Object[] keys = requireKeys();
-    @Nullable Object[] values = requireValues();
+    Object[] keys = requireKeys();
+    Object[] values = requireValues();
     int srcIndex = size() - 1;
     if (dstIndex < srcIndex) {
       // move last entry to deleted spot
@@ -627,7 +610,7 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return indexBeforeRemove - 1;
   }
 
-  private abstract class Itr<T extends @Nullable Object> implements Iterator<T> {
+  private abstract class Itr<T extends Object> implements Iterator<T> {
     int expectedMetadata = metadata;
     int currentIndex = firstEntryIndex();
     int indexToRemove = -1;
@@ -698,14 +681,13 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return new KeySetView();
   }
 
-  @WeakOuter
   class KeySetView extends Maps.KeySet<K, V> {
     KeySetView() {
       super(CompactHashMap.this);
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       if (needsAllocArrays()) {
         return new Object[0];
       }
@@ -717,10 +699,10 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] a) {
+    public <T extends Object> T[] toArray(T[] a) {
       if (needsAllocArrays()) {
         if (a.length > 0) {
-          @Nullable Object[] unsoundlyCovariantArray = a;
+          Object[] unsoundlyCovariantArray = a;
           unsoundlyCovariantArray[0] = null;
         }
         return a;
@@ -808,7 +790,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return new EntrySetView();
   }
 
-  @WeakOuter
   class EntrySetView extends Maps.EntrySet<K, V> {
     @Override
     Map<K, V> map() {
@@ -991,7 +972,6 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return new ValuesView();
   }
 
-  @WeakOuter
   class ValuesView extends Maps.Values<K, V> {
     ValuesView() {
       super(CompactHashMap.this);
@@ -1027,7 +1007,7 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       if (needsAllocArrays()) {
         return new Object[0];
       }
@@ -1039,10 +1019,10 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] a) {
+    public <T extends Object> T[] toArray(T[] a) {
       if (needsAllocArrays()) {
         if (a.length > 0) {
-          @Nullable Object[] unsoundlyCovariantArray = a;
+          Object[] unsoundlyCovariantArray = a;
           unsoundlyCovariantArray[0] = null;
         }
         return a;
@@ -1162,11 +1142,11 @@ class CompactHashMap<K extends @Nullable Object, V extends @Nullable Object>
     return requireNonNull(entries);
   }
 
-  private @Nullable Object[] requireKeys() {
+  private Object[] requireKeys() {
     return requireNonNull(keys);
   }
 
-  private @Nullable Object[] requireValues() {
+  private Object[] requireValues() {
     return requireNonNull(values);
   }
 
diff --git a/guava/src/com/google/common/collect/CompactHashSet.java b/guava/src/com/google/common/collect/CompactHashSet.java
index 2cfcf0a..6120013 100644
--- a/guava/src/com/google/common/collect/CompactHashSet.java
+++ b/guava/src/com/google/common/collect/CompactHashSet.java
@@ -20,14 +20,10 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 import static com.google.common.collect.CompactHashing.UNSET;
 import static com.google.common.collect.Hashing.smearedHash;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
@@ -46,7 +42,6 @@ import java.util.Spliterator;
 import java.util.Spliterators;
 import java.util.function.Consumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * CompactHashSet is an implementation of a Set. All optional operations (adding and removing) are
@@ -75,13 +70,13 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Dimitris Andreou
  * @author Jon Noack
  */
-@GwtIncompatible // not worth using in GWT for now
+// not worth using in GWT for now
 @ElementTypesAreNonnullByDefault
-class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implements Serializable {
+class CompactHashSet<E extends Object> extends AbstractSet<E> implements Serializable {
   // TODO(user): cache all field accesses in local vars
 
   /** Creates an empty {@code CompactHashSet} instance. */
-  public static <E extends @Nullable Object> CompactHashSet<E> create() {
+  public static <E extends Object> CompactHashSet<E> create() {
     return new CompactHashSet<>();
   }
 
@@ -92,7 +87,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
    * @param collection the elements that the set should contain
    * @return a new {@code CompactHashSet} containing those elements (minus duplicates)
    */
-  public static <E extends @Nullable Object> CompactHashSet<E> create(
+  public static <E extends Object> CompactHashSet<E> create(
       Collection<? extends E> collection) {
     CompactHashSet<E> set = createWithExpectedSize(collection.size());
     set.addAll(collection);
@@ -107,7 +102,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
    * @return a new {@code CompactHashSet} containing those elements (minus duplicates)
    */
   @SafeVarargs
-  public static <E extends @Nullable Object> CompactHashSet<E> create(E... elements) {
+  public static <E extends Object> CompactHashSet<E> create(E... elements) {
     CompactHashSet<E> set = createWithExpectedSize(elements.length);
     Collections.addAll(set, elements);
     return set;
@@ -122,7 +117,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
    *     elements without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <E extends @Nullable Object> CompactHashSet<E> createWithExpectedSize(
+  public static <E extends Object> CompactHashSet<E> createWithExpectedSize(
       int expectedSize) {
     return new CompactHashSet<>(expectedSize);
   }
@@ -131,8 +126,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
    * Maximum allowed false positive probability of detecting a hash flooding attack given random
    * input.
    */
-  @VisibleForTesting(
-      )
   static final double HASH_FLOODING_FPP = 0.001;
 
   /**
@@ -187,7 +180,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
    * The elements contained in the set, in the range of [0, size()). The elements in [size(),
    * elements.length) are all {@code null}.
    */
-  @VisibleForTesting @CheckForNull transient @Nullable Object[] elements;
+  @CheckForNull transient Object[] elements;
 
   /**
    * Keeps track of metadata like the number of hash table bits and modifications of this data
@@ -223,13 +216,11 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
   }
 
   /** Returns whether arrays need to be allocated. */
-  @VisibleForTesting
   boolean needsAllocArrays() {
     return table == null;
   }
 
   /** Handle lazy allocation of arrays. */
-  @CanIgnoreReturnValue
   int allocArrays() {
     Preconditions.checkState(needsAllocArrays(), "Arrays already allocated");
 
@@ -245,7 +236,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
   }
 
   @SuppressWarnings("unchecked")
-  @VisibleForTesting
   @CheckForNull
   Set<E> delegateOrNull() {
     if (table instanceof Set) {
@@ -258,8 +248,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     return new LinkedHashSet<>(tableSize, 1.0f);
   }
 
-  @VisibleForTesting
-  @CanIgnoreReturnValue
   Set<E> convertToHashFloodingResistantImplementation() {
     Set<E> newDelegate = createHashFloodingResistantDelegate(hashTableMask() + 1);
     for (int i = firstEntryIndex(); i >= 0; i = getSuccessor(i)) {
@@ -272,7 +260,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     return newDelegate;
   }
 
-  @VisibleForTesting
   boolean isUsingHashFloodingResistance() {
     return delegateOrNull() != null;
   }
@@ -293,7 +280,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     metadata += CompactHashing.MODIFICATION_COUNT_INCREMENT;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean add(@ParametricNullness E object) {
     if (needsAllocArrays()) {
@@ -304,7 +290,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
       return delegate.add(object);
     }
     int[] entries = requireEntries();
-    @Nullable Object[] elements = requireElements();
+    Object[] elements = requireElements();
 
     int newEntryIndex = this.size; // current size, and pointer to the entry to be appended
     int newSize = newEntryIndex + 1;
@@ -383,7 +369,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     this.elements = Arrays.copyOf(requireElements(), newCapacity);
   }
 
-  @CanIgnoreReturnValue
   private int resizeTable(int oldMask, int newCapacity, int targetHash, int targetEntryIndex) {
     Object newTable = CompactHashing.createTable(newCapacity);
     int newMask = newCapacity - 1;
@@ -448,7 +433,6 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     return false;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@CheckForNull Object object) {
     if (needsAllocArrays()) {
@@ -485,7 +469,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
   void moveLastEntry(int dstIndex, int mask) {
     Object table = requireTable();
     int[] entries = requireEntries();
-    @Nullable Object[] elements = requireElements();
+    Object[] elements = requireElements();
     int srcIndex = size() - 1;
     if (dstIndex < srcIndex) {
       // move last entry to deleted spot
@@ -627,7 +611,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
   }
 
   @Override
-  public @Nullable Object[] toArray() {
+  public Object[] toArray() {
     if (needsAllocArrays()) {
       return new Object[0];
     }
@@ -635,10 +619,9 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     return (delegate != null) ? delegate.toArray() : Arrays.copyOf(requireElements(), size);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-  public <T extends @Nullable Object> T[] toArray(T[] a) {
+  public <T extends Object> T[] toArray(T[] a) {
     if (needsAllocArrays()) {
       if (a.length > 0) {
         a[0] = null;
@@ -733,7 +716,7 @@ class CompactHashSet<E extends @Nullable Object> extends AbstractSet<E> implemen
     return requireNonNull(entries);
   }
 
-  private @Nullable Object[] requireElements() {
+  private Object[] requireElements() {
     return requireNonNull(elements);
   }
 
diff --git a/guava/src/com/google/common/collect/CompactHashing.java b/guava/src/com/google/common/collect/CompactHashing.java
index a8fe902..c1b4003 100644
--- a/guava/src/com/google/common/collect/CompactHashing.java
+++ b/guava/src/com/google/common/collect/CompactHashing.java
@@ -16,19 +16,16 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.primitives.Ints;
 import java.util.Arrays;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Helper classes and static methods for implementing compact hash-based collections.
  *
  * @author Jon Noack
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class CompactHashing {
   private CompactHashing() {}
diff --git a/guava/src/com/google/common/collect/CompactLinkedHashMap.java b/guava/src/com/google/common/collect/CompactLinkedHashMap.java
index 97b3a4b..479b14f 100644
--- a/guava/src/com/google/common/collect/CompactLinkedHashMap.java
+++ b/guava/src/com/google/common/collect/CompactLinkedHashMap.java
@@ -16,12 +16,7 @@
 
 package com.google.common.collect;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.LinkedHashMap;
@@ -30,7 +25,6 @@ import java.util.Set;
 import java.util.Spliterator;
 import java.util.Spliterators;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * CompactLinkedHashMap is an implementation of a Map with insertion or LRU iteration order,
@@ -52,14 +46,14 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // not worth using in GWT for now
+// not worth using in GWT for now
 @ElementTypesAreNonnullByDefault
-class CompactLinkedHashMap<K extends @Nullable Object, V extends @Nullable Object>
+class CompactLinkedHashMap<K extends Object, V extends Object>
     extends CompactHashMap<K, V> {
   // TODO(lowasser): implement removeEldestEntry so this can be used as a drop-in replacement
 
   /** Creates an empty {@code CompactLinkedHashMap} instance. */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       CompactLinkedHashMap<K, V> create() {
     return new CompactLinkedHashMap<>();
   }
@@ -73,7 +67,7 @@ class CompactLinkedHashMap<K extends @Nullable Object, V extends @Nullable Objec
    *     expectedSize} elements without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       CompactLinkedHashMap<K, V> createWithExpectedSize(int expectedSize) {
     return new CompactLinkedHashMap<>(expectedSize);
   }
@@ -89,7 +83,7 @@ class CompactLinkedHashMap<K extends @Nullable Object, V extends @Nullable Objec
    * <p>A node with "prev" pointer equal to {@code ENDPOINT} is the first node in the linked list,
    * and a node with "next" pointer equal to {@code ENDPOINT} is the last node.
    */
-  @CheckForNull @VisibleForTesting transient long[] links;
+  @CheckForNull transient long[] links;
 
   /** Pointer to the first node in the linked list, or {@code ENDPOINT} if there are no entries. */
   private transient int firstEntry;
@@ -132,7 +126,6 @@ class CompactLinkedHashMap<K extends @Nullable Object, V extends @Nullable Objec
   }
 
   @Override
-  @CanIgnoreReturnValue
   Map<K, V> convertToHashFloodingResistantImplementation() {
     Map<K, V> result = super.convertToHashFloodingResistantImplementation();
     links = null;
@@ -229,7 +222,6 @@ class CompactLinkedHashMap<K extends @Nullable Object, V extends @Nullable Objec
 
   @Override
   Set<Entry<K, V>> createEntrySet() {
-    @WeakOuter
     class EntrySetImpl extends EntrySetView {
       @Override
       public Spliterator<Entry<K, V>> spliterator() {
@@ -241,16 +233,15 @@ class CompactLinkedHashMap<K extends @Nullable Object, V extends @Nullable Objec
 
   @Override
   Set<K> createKeySet() {
-    @WeakOuter
     class KeySetImpl extends KeySetView {
       @Override
-      public @Nullable Object[] toArray() {
+      public Object[] toArray() {
         return ObjectArrays.toArrayImpl(this);
       }
 
       @Override
       @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-      public <T extends @Nullable Object> T[] toArray(T[] a) {
+      public <T extends Object> T[] toArray(T[] a) {
         return ObjectArrays.toArrayImpl(this, a);
       }
 
@@ -264,16 +255,15 @@ class CompactLinkedHashMap<K extends @Nullable Object, V extends @Nullable Objec
 
   @Override
   Collection<V> createValues() {
-    @WeakOuter
     class ValuesImpl extends ValuesView {
       @Override
-      public @Nullable Object[] toArray() {
+      public Object[] toArray() {
         return ObjectArrays.toArrayImpl(this);
       }
 
       @Override
       @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-      public <T extends @Nullable Object> T[] toArray(T[] a) {
+      public <T extends Object> T[] toArray(T[] a) {
         return ObjectArrays.toArrayImpl(this, a);
       }
 
diff --git a/guava/src/com/google/common/collect/CompactLinkedHashSet.java b/guava/src/com/google/common/collect/CompactLinkedHashSet.java
index c1d813c..7c5821d 100644
--- a/guava/src/com/google/common/collect/CompactLinkedHashSet.java
+++ b/guava/src/com/google/common/collect/CompactLinkedHashSet.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -27,7 +24,6 @@ import java.util.Set;
 import java.util.Spliterator;
 import java.util.Spliterators;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * CompactLinkedHashSet is an implementation of a Set, which a predictable iteration order that
@@ -50,12 +46,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // not worth using in GWT for now
+// not worth using in GWT for now
 @ElementTypesAreNonnullByDefault
-class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E> {
+class CompactLinkedHashSet<E extends Object> extends CompactHashSet<E> {
 
   /** Creates an empty {@code CompactLinkedHashSet} instance. */
-  public static <E extends @Nullable Object> CompactLinkedHashSet<E> create() {
+  public static <E extends Object> CompactLinkedHashSet<E> create() {
     return new CompactLinkedHashSet<>();
   }
 
@@ -66,7 +62,7 @@ class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E>
    * @param collection the elements that the set should contain
    * @return a new {@code CompactLinkedHashSet} containing those elements (minus duplicates)
    */
-  public static <E extends @Nullable Object> CompactLinkedHashSet<E> create(
+  public static <E extends Object> CompactLinkedHashSet<E> create(
       Collection<? extends E> collection) {
     CompactLinkedHashSet<E> set = createWithExpectedSize(collection.size());
     set.addAll(collection);
@@ -81,7 +77,7 @@ class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E>
    * @return a new {@code CompactLinkedHashSet} containing those elements (minus duplicates)
    */
   @SafeVarargs
-  public static <E extends @Nullable Object> CompactLinkedHashSet<E> create(E... elements) {
+  public static <E extends Object> CompactLinkedHashSet<E> create(E... elements) {
     CompactLinkedHashSet<E> set = createWithExpectedSize(elements.length);
     Collections.addAll(set, elements);
     return set;
@@ -96,7 +92,7 @@ class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E>
    *     expectedSize} elements without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <E extends @Nullable Object> CompactLinkedHashSet<E> createWithExpectedSize(
+  public static <E extends Object> CompactLinkedHashSet<E> createWithExpectedSize(
       int expectedSize) {
     return new CompactLinkedHashSet<>(expectedSize);
   }
@@ -149,7 +145,6 @@ class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E>
   }
 
   @Override
-  @CanIgnoreReturnValue
   Set<E> convertToHashFloodingResistantImplementation() {
     Set<E> result = super.convertToHashFloodingResistantImplementation();
     this.predecessor = null;
@@ -233,13 +228,13 @@ class CompactLinkedHashSet<E extends @Nullable Object> extends CompactHashSet<E>
   }
 
   @Override
-  public @Nullable Object[] toArray() {
+  public Object[] toArray() {
     return ObjectArrays.toArrayImpl(this);
   }
 
   @Override
   @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-  public <T extends @Nullable Object> T[] toArray(T[] a) {
+  public <T extends Object> T[] toArray(T[] a) {
     return ObjectArrays.toArrayImpl(this, a);
   }
 
diff --git a/guava/src/com/google/common/collect/ComparatorOrdering.java b/guava/src/com/google/common/collect/ComparatorOrdering.java
index 8b34070..83dabe8 100644
--- a/guava/src/com/google/common/collect/ComparatorOrdering.java
+++ b/guava/src/com/google/common/collect/ComparatorOrdering.java
@@ -18,16 +18,13 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Comparator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering for a pre-existing comparator. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class ComparatorOrdering<T extends @Nullable Object> extends Ordering<T>
+final class ComparatorOrdering<T extends Object> extends Ordering<T>
     implements Serializable {
   final Comparator<T> comparator;
 
diff --git a/guava/src/com/google/common/collect/Comparators.java b/guava/src/com/google/common/collect/Comparators.java
index 1b90fb8..dc01edf 100644
--- a/guava/src/com/google/common/collect/Comparators.java
+++ b/guava/src/com/google/common/collect/Comparators.java
@@ -19,14 +19,11 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collector;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static methods for working with {@link Comparator} instances. For many other helpful
@@ -43,7 +40,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 21.0
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Comparators {
   private Comparators() {}
@@ -62,8 +58,7 @@ public final class Comparators {
   // Note: 90% of the time we don't add type parameters or wildcards that serve only to "tweak" the
   // desired return type. However, *nested* generics introduce a special class of problems that we
   // think tip it over into being worthwhile.
-  @Beta
-  public static <T extends @Nullable Object, S extends T> Comparator<Iterable<S>> lexicographical(
+  public static <T extends Object, S extends T> Comparator<Iterable<S>> lexicographical(
       Comparator<T> comparator) {
     return new LexicographicalOrdering<S>(checkNotNull(comparator));
   }
@@ -73,8 +68,7 @@ public final class Comparators {
    * equal to the element that preceded it, according to the specified comparator. Note that this is
    * always true when the iterable has fewer than two elements.
    */
-  @Beta
-  public static <T extends @Nullable Object> boolean isInOrder(
+  public static <T extends Object> boolean isInOrder(
       Iterable<? extends T> iterable, Comparator<T> comparator) {
     checkNotNull(comparator);
     Iterator<? extends T> it = iterable.iterator();
@@ -96,8 +90,7 @@ public final class Comparators {
    * greater than the element that preceded it, according to the specified comparator. Note that
    * this is always true when the iterable has fewer than two elements.
    */
-  @Beta
-  public static <T extends @Nullable Object> boolean isInStrictOrder(
+  public static <T extends Object> boolean isInStrictOrder(
       Iterable<? extends T> iterable, Comparator<T> comparator) {
     checkNotNull(comparator);
     Iterator<? extends T> it = iterable.iterator();
@@ -134,7 +127,7 @@ public final class Comparators {
    * @throws IllegalArgumentException if {@code k < 0}
    * @since 22.0
    */
-  public static <T extends @Nullable Object> Collector<T, ?, List<T>> least(
+  public static <T extends Object> Collector<T, ?, List<T>> least(
       int k, Comparator<? super T> comparator) {
     checkNonnegative(k, "k");
     checkNotNull(comparator);
@@ -166,7 +159,7 @@ public final class Comparators {
    * @throws IllegalArgumentException if {@code k < 0}
    * @since 22.0
    */
-  public static <T extends @Nullable Object> Collector<T, ?, List<T>> greatest(
+  public static <T extends Object> Collector<T, ?, List<T>> greatest(
       int k, Comparator<? super T> comparator) {
     return least(k, comparator.reversed());
   }
@@ -178,10 +171,9 @@ public final class Comparators {
    *
    * @since 22.0
    */
-  @Beta
   public static <T> Comparator<Optional<T>> emptiesFirst(Comparator<? super T> valueComparator) {
     checkNotNull(valueComparator);
-    return Comparator.<Optional<T>, @Nullable T>comparing(
+    return Comparator.<Optional<T>, T>comparing(
         o -> o.orElse(null), Comparator.nullsFirst(valueComparator));
   }
 
@@ -192,10 +184,9 @@ public final class Comparators {
    *
    * @since 22.0
    */
-  @Beta
   public static <T> Comparator<Optional<T>> emptiesLast(Comparator<? super T> valueComparator) {
     checkNotNull(valueComparator);
-    return Comparator.<Optional<T>, @Nullable T>comparing(
+    return Comparator.<Optional<T>, T>comparing(
         o -> o.orElse(null), Comparator.nullsLast(valueComparator));
   }
 
@@ -212,7 +203,6 @@ public final class Comparators {
    * @throws ClassCastException if the parameters are not <i>mutually comparable</i>.
    * @since 30.0
    */
-  @Beta
   public static <T extends Comparable<? super T>> T min(T a, T b) {
     return (a.compareTo(b) <= 0) ? a : b;
   }
@@ -232,9 +222,8 @@ public final class Comparators {
    *     comparator.
    * @since 30.0
    */
-  @Beta
   @ParametricNullness
-  public static <T extends @Nullable Object> T min(
+  public static <T extends Object> T min(
       @ParametricNullness T a, @ParametricNullness T b, Comparator<T> comparator) {
     return (comparator.compare(a, b) <= 0) ? a : b;
   }
@@ -252,7 +241,6 @@ public final class Comparators {
    * @throws ClassCastException if the parameters are not <i>mutually comparable</i>.
    * @since 30.0
    */
-  @Beta
   public static <T extends Comparable<? super T>> T max(T a, T b) {
     return (a.compareTo(b) >= 0) ? a : b;
   }
@@ -272,9 +260,8 @@ public final class Comparators {
    *     comparator.
    * @since 30.0
    */
-  @Beta
   @ParametricNullness
-  public static <T extends @Nullable Object> T max(
+  public static <T extends Object> T max(
       @ParametricNullness T a, @ParametricNullness T b, Comparator<T> comparator) {
     return (comparator.compare(a, b) >= 0) ? a : b;
   }
diff --git a/guava/src/com/google/common/collect/ComparisonChain.java b/guava/src/com/google/common/collect/ComparisonChain.java
index 32aeb4d..b7937f0 100644
--- a/guava/src/com/google/common/collect/ComparisonChain.java
+++ b/guava/src/com/google/common/collect/ComparisonChain.java
@@ -16,12 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.primitives.Booleans;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.Longs;
 import java.util.Comparator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A utility for performing a chained comparison statement. For example:
@@ -56,7 +54,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ComparisonChain {
   private ComparisonChain() {}
@@ -75,7 +72,7 @@ public abstract class ComparisonChain {
         }
 
         @Override
-        public <T extends @Nullable Object> ComparisonChain compare(
+        public <T extends Object> ComparisonChain compare(
             @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {
           return classify(comparator.compare(left, right));
         }
@@ -137,7 +134,7 @@ public abstract class ComparisonChain {
     }
 
     @Override
-    public <T extends @Nullable Object> ComparisonChain compare(
+    public <T extends Object> ComparisonChain compare(
         @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {
       return this;
     }
@@ -200,7 +197,7 @@ public abstract class ComparisonChain {
    * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not
    * already been determined.
    */
-  public abstract <T extends @Nullable Object> ComparisonChain compare(
+  public abstract <T extends Object> ComparisonChain compare(
       @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);
 
   /**
diff --git a/guava/src/com/google/common/collect/CompoundOrdering.java b/guava/src/com/google/common/collect/CompoundOrdering.java
index 42feed3..22f3c59 100644
--- a/guava/src/com/google/common/collect/CompoundOrdering.java
+++ b/guava/src/com/google/common/collect/CompoundOrdering.java
@@ -16,17 +16,14 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Comparator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering that tries several comparators in order. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class CompoundOrdering<T extends @Nullable Object> extends Ordering<T>
+final class CompoundOrdering<T extends Object> extends Ordering<T>
     implements Serializable {
   final Comparator<? super T>[] comparators;
 
diff --git a/guava/src/com/google/common/collect/ComputationException.java b/guava/src/com/google/common/collect/ComputationException.java
index b05577c..101d25b 100644
--- a/guava/src/com/google/common/collect/ComputationException.java
+++ b/guava/src/com/google/common/collect/ComputationException.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -33,7 +32,6 @@ import javax.annotation.CheckForNull;
  *     from Guava.)
  */
 @Deprecated
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class ComputationException extends RuntimeException {
   /** Creates a new instance with the given cause. */
diff --git a/guava/src/com/google/common/collect/ConcurrentHashMultiset.java b/guava/src/com/google/common/collect/ConcurrentHashMultiset.java
index ab03ead..435e819 100644
--- a/guava/src/com/google/common/collect/ConcurrentHashMultiset.java
+++ b/guava/src/com/google/common/collect/ConcurrentHashMultiset.java
@@ -21,14 +21,9 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Serialization.FieldSetter;
 import com.google.common.math.IntMath;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -42,7 +37,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A multiset that supports concurrent modifications and that provides atomic versions of most
@@ -56,7 +50,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author mike nonemacher
  * @since 2.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> implements Serializable {
 
@@ -119,12 +112,10 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    * @throws IllegalArgumentException if {@code countMap} is not empty
    * @since 20.0
    */
-  @Beta
   public static <E> ConcurrentHashMultiset<E> create(ConcurrentMap<E, AtomicInteger> countMap) {
     return new ConcurrentHashMultiset<E>(countMap);
   }
 
-  @VisibleForTesting
   ConcurrentHashMultiset(ConcurrentMap<E, AtomicInteger> countMap) {
     checkArgument(countMap.isEmpty(), "the backing map (%s) must be empty", countMap);
     this.countMap = countMap;
@@ -171,7 +162,7 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
 
   @Override
   @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-  public <T extends @Nullable Object> T[] toArray(T[] array) {
+  public <T extends Object> T[] toArray(T[] array) {
     return snapshot().toArray(array);
   }
 
@@ -201,7 +192,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    * @throws IllegalArgumentException if {@code occurrences} is negative, or if the resulting amount
    *     would exceed {@link Integer#MAX_VALUE}
    */
-  @CanIgnoreReturnValue
   @Override
   public int add(E element, int occurrences) {
     checkNotNull(element);
@@ -268,7 +258,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    * we'll want to remove @Nullable, add an eager checkNotNull, and loosen up
    * testRemove_nullAllowed.
    */
-  @CanIgnoreReturnValue
   @Override
   public int remove(@CheckForNull Object element, int occurrences) {
     if (occurrences == 0) {
@@ -310,7 +299,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    * @return {@code true} if the removal was possible (including if {@code occurrences} is zero)
    * @throws IllegalArgumentException if {@code occurrences} is negative
    */
-  @CanIgnoreReturnValue
   public boolean removeExactly(@CheckForNull Object element, int occurrences) {
     if (occurrences == 0) {
       return true;
@@ -345,7 +333,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    * @return the count of {@code element} in the multiset before this call
    * @throws IllegalArgumentException if {@code count} is negative
    */
-  @CanIgnoreReturnValue
   @Override
   public int setCount(E element, int count) {
     checkNotNull(element);
@@ -401,7 +388,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
    *     method will return {@code true} if the condition was met.
    * @throws IllegalArgumentException if {@code expectedOldCount} or {@code newCount} is negative
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean setCount(E element, int expectedOldCount, int newCount) {
     checkNotNull(element);
@@ -558,7 +544,6 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
     countMap.clear();
   }
 
-  @WeakOuter
   private class EntrySet extends AbstractMultiset<E>.EntrySet {
     @Override
     ConcurrentHashMultiset<E> multiset() {
@@ -577,7 +562,7 @@ public final class ConcurrentHashMultiset<E> extends AbstractMultiset<E> impleme
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return snapshot().toArray(array);
     }
 
diff --git a/guava/src/com/google/common/collect/ConsumingQueueIterator.java b/guava/src/com/google/common/collect/ConsumingQueueIterator.java
index 7721e12..39e44f9 100644
--- a/guava/src/com/google/common/collect/ConsumingQueueIterator.java
+++ b/guava/src/com/google/common/collect/ConsumingQueueIterator.java
@@ -16,18 +16,15 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Queue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An Iterator implementation which draws elements from a queue, removing them from the queue as it
  * iterates.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class ConsumingQueueIterator<T extends @Nullable Object> extends AbstractIterator<T> {
+final class ConsumingQueueIterator<T extends Object> extends AbstractIterator<T> {
   private final Queue<T> queue;
 
   ConsumingQueueIterator(Queue<T> queue) {
diff --git a/guava/src/com/google/common/collect/ContiguousSet.java b/guava/src/com/google/common/collect/ContiguousSet.java
index cd77042..e230e75 100644
--- a/guava/src/com/google/common/collect/ContiguousSet.java
+++ b/guava/src/com/google/common/collect/ContiguousSet.java
@@ -16,12 +16,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.Collections;
 import java.util.NoSuchElementException;
 import java.util.Set;
@@ -48,7 +43,6 @@ import java.util.Set;
  * @author Gregory Kick
  * @since 10.0
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("rawtypes") // allow ungenerified Comparable types
 @ElementTypesAreNonnullByDefault
 public abstract class ContiguousSet<C extends Comparable> extends ImmutableSortedSet<C> {
@@ -103,7 +97,6 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
    * @throws IllegalArgumentException if {@code lower} is greater than {@code upper}
    * @since 23.0
    */
-  @Beta
   public static ContiguousSet<Integer> closed(int lower, int upper) {
     return create(Range.closed(lower, upper), DiscreteDomain.integers());
   }
@@ -116,7 +109,6 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
    * @throws IllegalArgumentException if {@code lower} is greater than {@code upper}
    * @since 23.0
    */
-  @Beta
   public static ContiguousSet<Long> closed(long lower, long upper) {
     return create(Range.closed(lower, upper), DiscreteDomain.longs());
   }
@@ -129,7 +121,6 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
    * @throws IllegalArgumentException if {@code lower} is greater than {@code upper}
    * @since 23.0
    */
-  @Beta
   public static ContiguousSet<Integer> closedOpen(int lower, int upper) {
     return create(Range.closedOpen(lower, upper), DiscreteDomain.integers());
   }
@@ -142,7 +133,6 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
    * @throws IllegalArgumentException if {@code lower} is greater than {@code upper}
    * @since 23.0
    */
-  @Beta
   public static ContiguousSet<Long> closedOpen(long lower, long upper) {
     return create(Range.closedOpen(lower, upper), DiscreteDomain.longs());
   }
@@ -160,7 +150,7 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
   }
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public ContiguousSet<C> headSet(C toElement, boolean inclusive) {
     return headSetImpl(checkNotNull(toElement), inclusive);
@@ -175,7 +165,7 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
   }
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public ContiguousSet<C> subSet(
       C fromElement, boolean fromInclusive, C toElement, boolean toInclusive) {
@@ -191,7 +181,7 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
   }
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public ContiguousSet<C> tailSet(C fromElement, boolean inclusive) {
     return tailSetImpl(checkNotNull(fromElement), inclusive);
@@ -240,7 +230,7 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
   public abstract Range<C> range(BoundType lowerBoundType, BoundType upperBoundType);
 
   @Override
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   ImmutableSortedSet<C> createDescendingSet() {
     return new DescendingImmutableSortedSet<C>(this);
   }
@@ -260,7 +250,6 @@ public abstract class ContiguousSet<C extends Comparable> extends ImmutableSorte
    * @deprecated Use {@link #create}.
    */
   @Deprecated
-  @DoNotCall("Always throws UnsupportedOperationException")
   public static <E> ImmutableSortedSet.Builder<E> builder() {
     throw new UnsupportedOperationException();
   }
diff --git a/guava/src/com/google/common/collect/Count.java b/guava/src/com/google/common/collect/Count.java
index 7aa5550..9b1e17d 100644
--- a/guava/src/com/google/common/collect/Count.java
+++ b/guava/src/com/google/common/collect/Count.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -23,7 +22,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class Count implements Serializable {
   private int value;
diff --git a/guava/src/com/google/common/collect/Cut.java b/guava/src/com/google/common/collect/Cut.java
index 4a8d4c7..3aff92c 100644
--- a/guava/src/com/google/common/collect/Cut.java
+++ b/guava/src/com/google/common/collect/Cut.java
@@ -16,7 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.primitives.Booleans;
 import java.io.Serializable;
 import java.util.NoSuchElementException;
@@ -31,7 +30,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class Cut<C extends Comparable> implements Comparable<Cut<C>>, Serializable {
   final C endpoint;
diff --git a/guava/src/com/google/common/collect/DenseImmutableTable.java b/guava/src/com/google/common/collect/DenseImmutableTable.java
index 9de77c5..0f27ecc 100644
--- a/guava/src/com/google/common/collect/DenseImmutableTable.java
+++ b/guava/src/com/google/common/collect/DenseImmutableTable.java
@@ -14,19 +14,11 @@
 
 package com.google.common.collect;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap.IteratorBasedImmutableMap;
-import com.google.errorprone.annotations.Immutable;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** A {@code RegularImmutableTable} optimized for dense data. */
-@GwtCompatible
-@Immutable(containerOf = {"R", "C", "V"})
 @ElementTypesAreNonnullByDefault
 final class DenseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V> {
   private final ImmutableMap<R, Integer> rowKeyToIndex;
@@ -41,7 +33,7 @@ final class DenseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V>
   private final int[] columnCounts;
 
   @SuppressWarnings("Immutable") // We don't modify this after construction.
-  private final @Nullable V[][] values;
+  private final V[][] values;
 
   // For each cell in iteration order, the index of that cell's row key in the row key list.
   @SuppressWarnings("Immutable") // We don't modify this after construction.
@@ -56,7 +48,6 @@ final class DenseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V>
       ImmutableSet<R> rowSpace,
       ImmutableSet<C> columnSpace) {
     @SuppressWarnings("unchecked")
-    @Nullable
     V[][] array = (@Nullable V[][]) new Object[rowSpace.size()][columnSpace.size()];
     this.values = array;
     this.rowKeyToIndex = Maps.indexMap(rowSpace);
@@ -196,7 +187,6 @@ final class DenseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V>
     }
   }
 
-  @WeakOuter
   private final class RowMap extends ImmutableArrayMap<R, ImmutableMap<C, V>> {
     private RowMap() {
       super(rowCounts.length);
@@ -218,7 +208,6 @@ final class DenseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V>
     }
   }
 
-  @WeakOuter
   private final class ColumnMap extends ImmutableArrayMap<C, ImmutableMap<R, V>> {
     private ColumnMap() {
       super(columnCounts.length);
diff --git a/guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java b/guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java
index 181731c..26c3e8f 100644
--- a/guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java
+++ b/guava/src/com/google/common/collect/DescendingImmutableSortedMultiset.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -23,7 +22,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  */
 @SuppressWarnings("serial") // uses writeReplace, not default serialization
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class DescendingImmutableSortedMultiset<E> extends ImmutableSortedMultiset<E> {
   private final transient ImmutableSortedMultiset<E> forward;
diff --git a/guava/src/com/google/common/collect/DescendingImmutableSortedSet.java b/guava/src/com/google/common/collect/DescendingImmutableSortedSet.java
index 88c7d6b..75d4bb8 100644
--- a/guava/src/com/google/common/collect/DescendingImmutableSortedSet.java
+++ b/guava/src/com/google/common/collect/DescendingImmutableSortedSet.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -24,7 +23,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class DescendingImmutableSortedSet<E> extends ImmutableSortedSet<E> {
   private final ImmutableSortedSet<E> forward;
@@ -66,19 +64,16 @@ final class DescendingImmutableSortedSet<E> extends ImmutableSortedSet<E> {
   }
 
   @Override
-  @GwtIncompatible("NavigableSet")
   public ImmutableSortedSet<E> descendingSet() {
     return forward;
   }
 
   @Override
-  @GwtIncompatible("NavigableSet")
   public UnmodifiableIterator<E> descendingIterator() {
     return forward.iterator();
   }
 
   @Override
-  @GwtIncompatible("NavigableSet")
   ImmutableSortedSet<E> createDescendingSet() {
     throw new AssertionError("should never be called");
   }
diff --git a/guava/src/com/google/common/collect/DescendingMultiset.java b/guava/src/com/google/common/collect/DescendingMultiset.java
index ec5a1d0..264dc95 100644
--- a/guava/src/com/google/common/collect/DescendingMultiset.java
+++ b/guava/src/com/google/common/collect/DescendingMultiset.java
@@ -16,14 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and
@@ -31,9 +28,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>
+abstract class DescendingMultiset<E extends Object> extends ForwardingMultiset<E>
     implements SortedMultiset<E> {
   abstract SortedMultiset<E> forwardMultiset();
 
@@ -125,7 +121,6 @@ abstract class DescendingMultiset<E extends @Nullable Object> extends Forwarding
   }
 
   Set<Entry<E>> createEntrySet() {
-    @WeakOuter
     class EntrySetImpl extends Multisets.EntrySet<E> {
       @Override
       Multiset<E> multiset() {
@@ -151,13 +146,13 @@ abstract class DescendingMultiset<E extends @Nullable Object> extends Forwarding
   }
 
   @Override
-  public @Nullable Object[] toArray() {
+  public Object[] toArray() {
     return standardToArray();
   }
 
   @Override
   @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-  public <T extends @Nullable Object> T[] toArray(T[] array) {
+  public <T extends Object> T[] toArray(T[] array) {
     return standardToArray(array);
   }
 
diff --git a/guava/src/com/google/common/collect/DiscreteDomain.java b/guava/src/com/google/common/collect/DiscreteDomain.java
index bce7062..c829d0b 100644
--- a/guava/src/com/google/common/collect/DiscreteDomain.java
+++ b/guava/src/com/google/common/collect/DiscreteDomain.java
@@ -19,9 +19,7 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.math.BigInteger;
 import java.util.NoSuchElementException;
@@ -43,7 +41,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class DiscreteDomain<C extends Comparable> {
 
@@ -312,7 +309,6 @@ public abstract class DiscreteDomain<C extends Comparable> {
    * @throws NoSuchElementException if the type has no (practical) minimum value; for example,
    *     {@link java.math.BigInteger}
    */
-  @CanIgnoreReturnValue
   public C minValue() {
     throw new NoSuchElementException();
   }
@@ -328,7 +324,6 @@ public abstract class DiscreteDomain<C extends Comparable> {
    * @throws NoSuchElementException if the type has no (practical) maximum value; for example,
    *     {@link java.math.BigInteger}
    */
-  @CanIgnoreReturnValue
   public C maxValue() {
     throw new NoSuchElementException();
   }
diff --git a/guava/src/com/google/common/collect/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/collect/ElementTypesAreNonnullByDefault.java
index e1c640f..f69d83e 100644
--- a/guava/src/com/google/common/collect/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/collect/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/collect/EmptyContiguousSet.java b/guava/src/com/google/common/collect/EmptyContiguousSet.java
index f4fe33c..1e37912 100644
--- a/guava/src/com/google/common/collect/EmptyContiguousSet.java
+++ b/guava/src/com/google/common/collect/EmptyContiguousSet.java
@@ -13,8 +13,6 @@
  */
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.NoSuchElementException;
 import java.util.Set;
@@ -25,7 +23,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("rawtypes") // allow ungenerified Comparable types
 @ElementTypesAreNonnullByDefault
 final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
@@ -84,7 +81,7 @@ final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
     return false;
   }
 
-  @GwtIncompatible // not used by GWT emulation
+  // not used by GWT emulation
   @Override
   int indexOf(@CheckForNull Object target) {
     return -1;
@@ -95,7 +92,7 @@ final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
     return Iterators.emptyIterator();
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public UnmodifiableIterator<C> descendingIterator() {
     return Iterators.emptyIterator();
@@ -130,7 +127,7 @@ final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
     return false;
   }
 
-  @GwtIncompatible // not used in GWT
+  // not used in GWT
   @Override
   boolean isHashCodeFast() {
     return true;
@@ -141,7 +138,7 @@ final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
     return 0;
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static final class SerializedForm<C extends Comparable> implements Serializable {
     private final DiscreteDomain<C> domain;
 
@@ -156,13 +153,13 @@ final class EmptyContiguousSet<C extends Comparable> extends ContiguousSet<C> {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   @Override
   Object writeReplace() {
     return new SerializedForm<C>(domain);
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   ImmutableSortedSet<C> createDescendingSet() {
     return ImmutableSortedSet.emptySet(Ordering.natural().reverse());
diff --git a/guava/src/com/google/common/collect/EmptyImmutableListMultimap.java b/guava/src/com/google/common/collect/EmptyImmutableListMultimap.java
index 10d030f..afd40c3 100644
--- a/guava/src/com/google/common/collect/EmptyImmutableListMultimap.java
+++ b/guava/src/com/google/common/collect/EmptyImmutableListMultimap.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Implementation of {@link ImmutableListMultimap} with no entries.
  *
  * @author Jared Levy
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 class EmptyImmutableListMultimap extends ImmutableListMultimap<Object, Object> {
   static final EmptyImmutableListMultimap INSTANCE = new EmptyImmutableListMultimap();
diff --git a/guava/src/com/google/common/collect/EmptyImmutableSetMultimap.java b/guava/src/com/google/common/collect/EmptyImmutableSetMultimap.java
index bd0a67a..cc4afdb 100644
--- a/guava/src/com/google/common/collect/EmptyImmutableSetMultimap.java
+++ b/guava/src/com/google/common/collect/EmptyImmutableSetMultimap.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Implementation of {@link ImmutableListMultimap} with no entries.
  *
  * @author Mike Ward
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 class EmptyImmutableSetMultimap extends ImmutableSetMultimap<Object, Object> {
   static final EmptyImmutableSetMultimap INSTANCE = new EmptyImmutableSetMultimap();
diff --git a/guava/src/com/google/common/collect/EnumBiMap.java b/guava/src/com/google/common/collect/EnumBiMap.java
index 82aa052..e1598a7 100644
--- a/guava/src/com/google/common/collect/EnumBiMap.java
+++ b/guava/src/com/google/common/collect/EnumBiMap.java
@@ -19,8 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -37,7 +35,6 @@ import java.util.Map;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class EnumBiMap<K extends Enum<K>, V extends Enum<V>> extends AbstractBiMap<K, V> {
   private transient Class<K> keyType;
@@ -118,7 +115,7 @@ public final class EnumBiMap<K extends Enum<K>, V extends Enum<V>> extends Abstr
    * @serialData the key class, value class, number of entries, first key, first value, second key,
    *     second value, and so on.
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(keyType);
@@ -127,7 +124,7 @@ public final class EnumBiMap<K extends Enum<K>, V extends Enum<V>> extends Abstr
   }
 
   @SuppressWarnings("unchecked") // reading fields populated by writeObject
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     keyType = (Class<K>) stream.readObject();
@@ -136,6 +133,6 @@ public final class EnumBiMap<K extends Enum<K>, V extends Enum<V>> extends Abstr
     Serialization.populateMap(this, stream);
   }
 
-  @GwtIncompatible // not needed in emulated source.
+  // not needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/EnumHashBiMap.java b/guava/src/com/google/common/collect/EnumHashBiMap.java
index f68bc4c..cf3b633 100644
--- a/guava/src/com/google/common/collect/EnumHashBiMap.java
+++ b/guava/src/com/google/common/collect/EnumHashBiMap.java
@@ -18,9 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -28,7 +25,6 @@ import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@code BiMap} backed by an {@code EnumMap} instance for keys-to-values, and a {@code HashMap}
@@ -41,9 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
+public final class EnumHashBiMap<K extends Enum<K>, V extends Object>
     extends AbstractBiMap<K, V> {
   private transient Class<K> keyType;
 
@@ -52,7 +47,7 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
    *
    * @param keyType the key type
    */
-  public static <K extends Enum<K>, V extends @Nullable Object> EnumHashBiMap<K, V> create(
+  public static <K extends Enum<K>, V extends Object> EnumHashBiMap<K, V> create(
       Class<K> keyType) {
     return new EnumHashBiMap<>(keyType);
   }
@@ -67,7 +62,7 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
    * @throws IllegalArgumentException if map is not an {@code EnumBiMap} or an {@code EnumHashBiMap}
    *     instance and contains no mappings
    */
-  public static <K extends Enum<K>, V extends @Nullable Object> EnumHashBiMap<K, V> create(
+  public static <K extends Enum<K>, V extends Object> EnumHashBiMap<K, V> create(
       Map<K, ? extends V> map) {
     EnumHashBiMap<K, V> bimap = create(EnumBiMap.inferKeyType(map));
     bimap.putAll(map);
@@ -88,7 +83,6 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
     return checkNotNull(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @SuppressWarnings("RedundantOverride") // b/192446478: RedundantOverride ignores some annotations.
   // TODO(b/192446998): Remove this override after tools understand nullness better.
@@ -97,7 +91,6 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
     return super.put(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @SuppressWarnings("RedundantOverride") // b/192446478: RedundantOverride ignores some annotations.
   // TODO(b/192446998): Remove this override after tools understand nullness better.
@@ -115,7 +108,7 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
    * @serialData the key class, number of entries, first key, first value, second key, second value,
    *     and so on.
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(keyType);
@@ -123,7 +116,7 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
   }
 
   @SuppressWarnings("unchecked") // reading field populated by writeObject
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     keyType = (Class<K>) stream.readObject();
@@ -132,6 +125,6 @@ public final class EnumHashBiMap<K extends Enum<K>, V extends @Nullable Object>
     Serialization.populateMap(this, stream);
   }
 
-  @GwtIncompatible // only needed in emulated source.
+  // only needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/EnumMultiset.java b/guava/src/com/google/common/collect/EnumMultiset.java
index 09dde1b..ec96d64 100644
--- a/guava/src/com/google/common/collect/EnumMultiset.java
+++ b/guava/src/com/google/common/collect/EnumMultiset.java
@@ -19,10 +19,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -44,7 +41,6 @@ import javax.annotation.CheckForNull;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
     implements Serializable {
@@ -136,7 +132,6 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
   }
 
   // Modification Operations
-  @CanIgnoreReturnValue
   @Override
   public int add(E element, int occurrences) {
     checkIsE(element);
@@ -157,7 +152,6 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
   }
 
   // Modification Operations
-  @CanIgnoreReturnValue
   @Override
   public int remove(@CheckForNull Object element, int occurrences) {
     // isActuallyE checks for null, but we check explicitly to help nullness checkers.
@@ -185,7 +179,6 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
   }
 
   // Modification Operations
-  @CanIgnoreReturnValue
   @Override
   public int setCount(E element, int count) {
     checkIsE(element);
@@ -293,7 +286,7 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
     return Multisets.iteratorImpl(this);
   }
 
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(type);
@@ -304,7 +297,7 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
    * @serialData the {@code Class<E>} for the enum type, the number of distinct elements, the first
    *     element, its count, the second element, its count, and so on
    */
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     @SuppressWarnings("unchecked") // reading data stored by writeObject
@@ -315,6 +308,6 @@ public final class EnumMultiset<E extends Enum<E>> extends AbstractMultiset<E>
     Serialization.populateMultiset(this, stream);
   }
 
-  @GwtIncompatible // Not needed in emulated source
+  // Not needed in emulated source
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/EvictingQueue.java b/guava/src/com/google/common/collect/EvictingQueue.java
index 45f59f3..ab5e384 100644
--- a/guava/src/com/google/common/collect/EvictingQueue.java
+++ b/guava/src/com/google/common/collect/EvictingQueue.java
@@ -19,10 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.util.ArrayDeque;
 import java.util.Collection;
@@ -43,14 +39,12 @@ import java.util.Queue;
  * @author Kurt Alfred Kluever
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class EvictingQueue<E> extends ForwardingQueue<E> implements Serializable {
 
   private final Queue<E> delegate;
 
-  @VisibleForTesting final int maxSize;
+  final int maxSize;
 
   private EvictingQueue(int maxSize) {
     checkArgument(maxSize >= 0, "maxSize (%s) must >= 0", maxSize);
@@ -90,7 +84,6 @@ public final class EvictingQueue<E> extends ForwardingQueue<E> implements Serial
    * @return {@code true} always
    */
   @Override
-  @CanIgnoreReturnValue
   public boolean offer(E e) {
     return add(e);
   }
@@ -102,7 +95,6 @@ public final class EvictingQueue<E> extends ForwardingQueue<E> implements Serial
    * @return {@code true} always
    */
   @Override
-  @CanIgnoreReturnValue
   public boolean add(E e) {
     checkNotNull(e); // check before removing
     if (maxSize == 0) {
@@ -116,7 +108,6 @@ public final class EvictingQueue<E> extends ForwardingQueue<E> implements Serial
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean addAll(Collection<? extends E> collection) {
     int size = collection.size();
     if (size >= maxSize) {
diff --git a/guava/src/com/google/common/collect/ExplicitOrdering.java b/guava/src/com/google/common/collect/ExplicitOrdering.java
index 383318a..36ae7a7 100644
--- a/guava/src/com/google/common/collect/ExplicitOrdering.java
+++ b/guava/src/com/google/common/collect/ExplicitOrdering.java
@@ -16,13 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.List;
 import javax.annotation.CheckForNull;
 
 /** An ordering that compares objects according to a given order. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 final class ExplicitOrdering<T> extends Ordering<T> implements Serializable {
   final ImmutableMap<T, Integer> rankMap;
diff --git a/guava/src/com/google/common/collect/FilteredEntryMultimap.java b/guava/src/com/google/common/collect/FilteredEntryMultimap.java
index 3ff00b7..eac25eb 100644
--- a/guava/src/com/google/common/collect/FilteredEntryMultimap.java
+++ b/guava/src/com/google/common/collect/FilteredEntryMultimap.java
@@ -21,11 +21,9 @@ import static com.google.common.base.Predicates.in;
 import static com.google.common.base.Predicates.not;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Maps.ViewCachingAbstractMap;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
@@ -34,7 +32,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimaps#filterEntries(Multimap, Predicate)}.
@@ -42,9 +39,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Object>
+class FilteredEntryMultimap<K extends Object, V extends Object>
     extends AbstractMultimap<K, V> implements FilteredMultimap<K, V> {
   final Multimap<K, V> unfiltered;
   final Predicate<? super Entry<K, V>> predicate;
@@ -86,7 +82,7 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
     }
   }
 
-  static <E extends @Nullable Object> Collection<E> filterCollection(
+  static <E extends Object> Collection<E> filterCollection(
       Collection<E> collection, Predicate<? super E> predicate) {
     if (collection instanceof Set) {
       return Sets.filter((Set<E>) collection, predicate);
@@ -166,7 +162,6 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
     return changed;
   }
 
-  @WeakOuter
   class AsMap extends ViewCachingAbstractMap<K, Collection<V>> {
     @Override
     public boolean containsKey(@CheckForNull Object key) {
@@ -220,7 +215,6 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
 
     @Override
     Set<K> createKeySet() {
-      @WeakOuter
       class KeySetImpl extends Maps.KeySet<K, Collection<V>> {
         KeySetImpl() {
           super(AsMap.this);
@@ -246,7 +240,6 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
 
     @Override
     Set<Entry<K, Collection<V>>> createEntrySet() {
-      @WeakOuter
       class EntrySetImpl extends Maps.EntrySet<K, Collection<V>> {
         @Override
         Map<K, Collection<V>> map() {
@@ -296,7 +289,6 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
 
     @Override
     Collection<Collection<V>> createValues() {
-      @WeakOuter
       class ValuesImpl extends Maps.Values<K, Collection<V>> {
         ValuesImpl() {
           super(AsMap.this);
@@ -345,7 +337,6 @@ class FilteredEntryMultimap<K extends @Nullable Object, V extends @Nullable Obje
     return new Keys();
   }
 
-  @WeakOuter
   class Keys extends Multimaps.Keys<K, V> {
     Keys() {
       super(FilteredEntryMultimap.this);
diff --git a/guava/src/com/google/common/collect/FilteredEntrySetMultimap.java b/guava/src/com/google/common/collect/FilteredEntrySetMultimap.java
index 20413f8..0f14d3a 100644
--- a/guava/src/com/google/common/collect/FilteredEntrySetMultimap.java
+++ b/guava/src/com/google/common/collect/FilteredEntrySetMultimap.java
@@ -16,21 +16,18 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Predicate;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimaps#filterEntries(SetMultimap, Predicate)}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class FilteredEntrySetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+final class FilteredEntrySetMultimap<K extends Object, V extends Object>
     extends FilteredEntryMultimap<K, V> implements FilteredSetMultimap<K, V> {
 
   FilteredEntrySetMultimap(SetMultimap<K, V> unfiltered, Predicate<? super Entry<K, V>> predicate) {
diff --git a/guava/src/com/google/common/collect/FilteredKeyListMultimap.java b/guava/src/com/google/common/collect/FilteredKeyListMultimap.java
index c82c8da..e4db0ec 100644
--- a/guava/src/com/google/common/collect/FilteredKeyListMultimap.java
+++ b/guava/src/com/google/common/collect/FilteredKeyListMultimap.java
@@ -16,20 +16,17 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Predicate;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimaps#filterKeys(ListMultimap, Predicate)}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class FilteredKeyListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+final class FilteredKeyListMultimap<K extends Object, V extends Object>
     extends FilteredKeyMultimap<K, V> implements ListMultimap<K, V> {
   FilteredKeyListMultimap(ListMultimap<K, V> unfiltered, Predicate<? super K> keyPredicate) {
     super(unfiltered, keyPredicate);
diff --git a/guava/src/com/google/common/collect/FilteredKeyMultimap.java b/guava/src/com/google/common/collect/FilteredKeyMultimap.java
index 68fad75..e3e81eb 100644
--- a/guava/src/com/google/common/collect/FilteredKeyMultimap.java
+++ b/guava/src/com/google/common/collect/FilteredKeyMultimap.java
@@ -19,10 +19,7 @@ import static com.google.common.base.Preconditions.checkPositionIndex;
 import static java.util.Collections.emptyList;
 import static java.util.Collections.emptySet;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Predicate;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
@@ -31,16 +28,14 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimaps#filterKeys(Multimap, Predicate)}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-class FilteredKeyMultimap<K extends @Nullable Object, V extends @Nullable Object>
+class FilteredKeyMultimap<K extends Object, V extends Object>
     extends AbstractMultimap<K, V> implements FilteredMultimap<K, V> {
   final Multimap<K, V> unfiltered;
   final Predicate<? super K> keyPredicate;
@@ -113,7 +108,7 @@ class FilteredKeyMultimap<K extends @Nullable Object, V extends @Nullable Object
     }
   }
 
-  static class AddRejectingSet<K extends @Nullable Object, V extends @Nullable Object>
+  static class AddRejectingSet<K extends Object, V extends Object>
       extends ForwardingSet<V> {
     @ParametricNullness final K key;
 
@@ -138,7 +133,7 @@ class FilteredKeyMultimap<K extends @Nullable Object, V extends @Nullable Object
     }
   }
 
-  static class AddRejectingList<K extends @Nullable Object, V extends @Nullable Object>
+  static class AddRejectingList<K extends Object, V extends Object>
       extends ForwardingList<V> {
     @ParametricNullness final K key;
 
@@ -164,7 +159,6 @@ class FilteredKeyMultimap<K extends @Nullable Object, V extends @Nullable Object
       return true;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public boolean addAll(int index, Collection<? extends V> elements) {
       checkNotNull(elements);
@@ -188,7 +182,6 @@ class FilteredKeyMultimap<K extends @Nullable Object, V extends @Nullable Object
     return new Entries();
   }
 
-  @WeakOuter
   class Entries extends ForwardingCollection<Entry<K, V>> {
     @Override
     protected Collection<Entry<K, V>> delegate() {
diff --git a/guava/src/com/google/common/collect/FilteredKeySetMultimap.java b/guava/src/com/google/common/collect/FilteredKeySetMultimap.java
index e492a5c..ae9c335 100644
--- a/guava/src/com/google/common/collect/FilteredKeySetMultimap.java
+++ b/guava/src/com/google/common/collect/FilteredKeySetMultimap.java
@@ -16,21 +16,18 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Predicate;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimaps#filterKeys(SetMultimap, Predicate)}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class FilteredKeySetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+final class FilteredKeySetMultimap<K extends Object, V extends Object>
     extends FilteredKeyMultimap<K, V> implements FilteredSetMultimap<K, V> {
 
   FilteredKeySetMultimap(SetMultimap<K, V> unfiltered, Predicate<? super K> keyPredicate) {
diff --git a/guava/src/com/google/common/collect/FilteredMultimap.java b/guava/src/com/google/common/collect/FilteredMultimap.java
index 4e1fa06..cd5d07c 100644
--- a/guava/src/com/google/common/collect/FilteredMultimap.java
+++ b/guava/src/com/google/common/collect/FilteredMultimap.java
@@ -16,19 +16,16 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Predicate;
 import java.util.Map.Entry;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An interface for all filtered multimap types.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-interface FilteredMultimap<K extends @Nullable Object, V extends @Nullable Object>
+interface FilteredMultimap<K extends Object, V extends Object>
     extends Multimap<K, V> {
   Multimap<K, V> unfiltered();
 
diff --git a/guava/src/com/google/common/collect/FilteredMultimapValues.java b/guava/src/com/google/common/collect/FilteredMultimapValues.java
index ecbfab2..73db1ea 100644
--- a/guava/src/com/google/common/collect/FilteredMultimapValues.java
+++ b/guava/src/com/google/common/collect/FilteredMultimapValues.java
@@ -16,28 +16,24 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
-import com.google.j2objc.annotations.Weak;
 import java.util.AbstractCollection;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation for {@link FilteredMultimap#values()}.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class FilteredMultimapValues<K extends @Nullable Object, V extends @Nullable Object>
+final class FilteredMultimapValues<K extends Object, V extends Object>
     extends AbstractCollection<V> {
-  @Weak private final FilteredMultimap<K, V> multimap;
+  private final FilteredMultimap<K, V> multimap;
 
   FilteredMultimapValues(FilteredMultimap<K, V> multimap) {
     this.multimap = checkNotNull(multimap);
diff --git a/guava/src/com/google/common/collect/FilteredSetMultimap.java b/guava/src/com/google/common/collect/FilteredSetMultimap.java
index 8e2ff7c..2f03d1d 100644
--- a/guava/src/com/google/common/collect/FilteredSetMultimap.java
+++ b/guava/src/com/google/common/collect/FilteredSetMultimap.java
@@ -16,17 +16,14 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A supertype for filtered {@link SetMultimap} implementations.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-interface FilteredSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+interface FilteredSetMultimap<K extends Object, V extends Object>
     extends FilteredMultimap<K, V>, SetMultimap<K, V> {
   @Override
   SetMultimap<K, V> unfiltered();
diff --git a/guava/src/com/google/common/collect/FluentIterable.java b/guava/src/com/google/common/collect/FluentIterable.java
index 11bda3b..08cf185 100644
--- a/guava/src/com/google/common/collect/FluentIterable.java
+++ b/guava/src/com/google/common/collect/FluentIterable.java
@@ -16,15 +16,10 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.InlineMe;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -34,7 +29,6 @@ import java.util.List;
 import java.util.SortedSet;
 import java.util.stream.Stream;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A discouraged (but not deprecated) precursor to Java's superior {@link Stream} library.
@@ -108,9 +102,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Marcin Mikosik
  * @since 12.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public abstract class FluentIterable<E extends @Nullable Object> implements Iterable<E> {
+public abstract class FluentIterable<E extends Object> implements Iterable<E> {
   // We store 'iterable' and use it instead of 'this' to allow Iterables to perform instanceof
   // checks on the _original_ iterable when FluentIterable.from is used.
   // To avoid a self retain cycle under j2objc, we store Optional.absent() instead of
@@ -138,7 +131,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    * <p><b>{@code Stream} equivalent:</b> {@link Collection#stream} if {@code iterable} is a {@link
    * Collection}; {@link Streams#stream(Iterable)} otherwise.
    */
-  public static <E extends @Nullable Object> FluentIterable<E> from(final Iterable<E> iterable) {
+  public static <E extends Object> FluentIterable<E> from(final Iterable<E> iterable) {
     return (iterable instanceof FluentIterable)
         ? (FluentIterable<E>) iterable
         : new FluentIterable<E>(iterable) {
@@ -159,8 +152,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0 (since 18.0 as an overload of {@code of})
    */
-  @Beta
-  public static <E extends @Nullable Object> FluentIterable<E> from(E[] elements) {
+  public static <E extends Object> FluentIterable<E> from(E[] elements) {
     return from(Arrays.asList(elements));
   }
 
@@ -173,10 +165,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *     FluentIterable}
    */
   @Deprecated
-  @InlineMe(
-      replacement = "checkNotNull(iterable)",
-      staticImports = {"com.google.common.base.Preconditions.checkNotNull"})
-  public static <E extends @Nullable Object> FluentIterable<E> from(FluentIterable<E> iterable) {
+  public static <E extends Object> FluentIterable<E> from(FluentIterable<E> iterable) {
     return checkNotNull(iterable);
   }
 
@@ -192,8 +181,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <T extends @Nullable Object> FluentIterable<T> concat(
+  public static <T extends Object> FluentIterable<T> concat(
       Iterable<? extends T> a, Iterable<? extends T> b) {
     return concatNoDefensiveCopy(a, b);
   }
@@ -211,8 +199,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <T extends @Nullable Object> FluentIterable<T> concat(
+  public static <T extends Object> FluentIterable<T> concat(
       Iterable<? extends T> a, Iterable<? extends T> b, Iterable<? extends T> c) {
     return concatNoDefensiveCopy(a, b, c);
   }
@@ -231,8 +218,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <T extends @Nullable Object> FluentIterable<T> concat(
+  public static <T extends Object> FluentIterable<T> concat(
       Iterable<? extends T> a,
       Iterable<? extends T> b,
       Iterable<? extends T> c,
@@ -255,8 +241,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    * @throws NullPointerException if any of the provided iterables is {@code null}
    * @since 20.0
    */
-  @Beta
-  public static <T extends @Nullable Object> FluentIterable<T> concat(
+  public static <T extends Object> FluentIterable<T> concat(
       Iterable<? extends T>... inputs) {
     return concatNoDefensiveCopy(Arrays.copyOf(inputs, inputs.length));
   }
@@ -275,8 +260,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <T extends @Nullable Object> FluentIterable<T> concat(
+  public static <T extends Object> FluentIterable<T> concat(
       final Iterable<? extends Iterable<? extends T>> inputs) {
     checkNotNull(inputs);
     return new FluentIterable<T>() {
@@ -288,7 +272,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
   }
 
   /** Concatenates a varargs array of iterables without making a defensive copy of the array. */
-  private static <T extends @Nullable Object> FluentIterable<T> concatNoDefensiveCopy(
+  private static <T extends Object> FluentIterable<T> concatNoDefensiveCopy(
       final Iterable<? extends T>... inputs) {
     for (Iterable<? extends T> input : inputs) {
       checkNotNull(input);
@@ -315,8 +299,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <E extends @Nullable Object> FluentIterable<E> of() {
+  public static <E extends Object> FluentIterable<E> of() {
     return FluentIterable.from(Collections.<E>emptyList());
   }
 
@@ -328,8 +311,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 20.0
    */
-  @Beta
-  public static <E extends @Nullable Object> FluentIterable<E> of(
+  public static <E extends Object> FluentIterable<E> of(
       @ParametricNullness E element, E... elements) {
     return from(Lists.asList(element, elements));
   }
@@ -397,7 +379,6 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 18.0
    */
-  @Beta
   public final FluentIterable<E> append(Iterable<? extends E> other) {
     return FluentIterable.concat(getDelegate(), other);
   }
@@ -410,7 +391,6 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 18.0
    */
-  @Beta
   public final FluentIterable<E> append(E... elements) {
     return FluentIterable.concat(getDelegate(), Arrays.asList(elements));
   }
@@ -438,7 +418,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *     (ImmutableList) stream.filter(NewType.class::isInstance).collect(toImmutableList());}
    * </pre>
    */
-  @GwtIncompatible // Class.isInstance
+  // Class.isInstance
   public final <T> FluentIterable<T> filter(Class<T> type) {
     return from(Iterables.filter(getDelegate(), type));
   }
@@ -486,7 +466,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * <p><b>{@code Stream} equivalent:</b> {@link Stream#map}.
    */
-  public final <T extends @Nullable Object> FluentIterable<T> transform(
+  public final <T extends Object> FluentIterable<T> transform(
       Function<? super E, T> function) {
     return from(Iterables.transform(getDelegate(), function));
   }
@@ -504,7 +484,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 13.0 (required {@code Function<E, Iterable<T>>} until 14.0)
    */
-  public <T extends @Nullable Object> FluentIterable<T> transformAndConcat(
+  public <T extends Object> FluentIterable<T> transformAndConcat(
       Function<? super E, ? extends Iterable<? extends T>> function) {
     return FluentIterable.concat(transform(function));
   }
@@ -786,7 +766,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    * @return a newly-allocated array into which all the elements of this fluent iterable have been
    *     copied
    */
-  @GwtIncompatible // Array.newArray(Class, int)
+  // Array.newArray(Class, int)
   /*
    * Both the declaration of our Class<E> parameter and its usage in a call to Iterables.toArray
    * produce a nullness error: E may be a nullable type, and our nullness checker has Class's type
@@ -795,7 +775,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    * FluentIterable support null elements, and most of the other produce outright unsoundness.)
    */
   @SuppressWarnings("nullness")
-  public final @Nullable E[] toArray(Class<E> type) {
+  public final E[] toArray(Class<E> type) {
     return Iterables.toArray(getDelegate(), type);
   }
 
@@ -810,7 +790,6 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    * @return {@code collection}, for convenience
    * @since 14.0
    */
-  @CanIgnoreReturnValue
   public final <C extends Collection<? super E>> C copyInto(C collection) {
     checkNotNull(collection);
     Iterable<E> iterable = getDelegate();
@@ -834,7 +813,6 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
    *
    * @since 18.0
    */
-  @Beta
   public final String join(Joiner joiner) {
     return joiner.join(this);
   }
@@ -871,7 +849,7 @@ public abstract class FluentIterable<E extends @Nullable Object> implements Iter
   }
 
   /** Function that transforms {@code Iterable<E>} into a fluent iterable. */
-  private static class FromIterableFunction<E extends @Nullable Object>
+  private static class FromIterableFunction<E extends Object>
       implements Function<Iterable<E>, FluentIterable<E>> {
     @Override
     public FluentIterable<E> apply(Iterable<E> fromObject) {
diff --git a/guava/src/com/google/common/collect/ForwardingBlockingDeque.java b/guava/src/com/google/common/collect/ForwardingBlockingDeque.java
index 49d4bcf..b2fada9 100644
--- a/guava/src/com/google/common/collect/ForwardingBlockingDeque.java
+++ b/guava/src/com/google/common/collect/ForwardingBlockingDeque.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Collection;
 import java.util.concurrent.BlockingDeque;
 import java.util.concurrent.TimeUnit;
@@ -46,7 +45,6 @@ import javax.annotation.CheckForNull;
  *     com.google.common.util.concurrent.ForwardingBlockingDeque} instead.
  */
 @Deprecated
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingBlockingDeque<E> extends ForwardingDeque<E>
     implements BlockingDeque<E> {
diff --git a/guava/src/com/google/common/collect/ForwardingCollection.java b/guava/src/com/google/common/collect/ForwardingCollection.java
index ca1edc1..38881ac 100644
--- a/guava/src/com/google/common/collect/ForwardingCollection.java
+++ b/guava/src/com/google/common/collect/ForwardingCollection.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A collection which forwards all its method calls to another collection. Subclasses should
@@ -46,9 +43,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingCollection<E extends @Nullable Object> extends ForwardingObject
+public abstract class ForwardingCollection<E extends Object> extends ForwardingObject
     implements Collection<E> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
@@ -68,7 +64,6 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
     return delegate().size();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean removeAll(Collection<?> collection) {
     return delegate().removeAll(collection);
@@ -84,13 +79,11 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
     return delegate().contains(object);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean add(@ParametricNullness E element) {
     return delegate().add(element);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@CheckForNull Object object) {
     return delegate().remove(object);
@@ -101,13 +94,11 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
     return delegate().containsAll(collection);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean addAll(Collection<? extends E> collection) {
     return delegate().addAll(collection);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean retainAll(Collection<?> collection) {
     return delegate().retainAll(collection);
@@ -119,14 +110,13 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
   }
 
   @Override
-  public @Nullable Object[] toArray() {
+  public Object[] toArray() {
     return delegate().toArray();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-  public <T extends @Nullable Object> T[] toArray(T[] array) {
+  public <T extends Object> T[] toArray(T[] array) {
     return delegate().toArray(array);
   }
 
@@ -242,8 +232,8 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
    *
    * @since 7.0
    */
-  protected @Nullable Object[] standardToArray() {
-    @Nullable Object[] newArray = new @Nullable Object[size()];
+  protected Object[] standardToArray() {
+    Object[] newArray = new Object[size()];
     return toArray(newArray);
   }
 
@@ -254,7 +244,7 @@ public abstract class ForwardingCollection<E extends @Nullable Object> extends F
    *
    * @since 7.0
    */
-  protected <T extends @Nullable Object> T[] standardToArray(T[] array) {
+  protected <T extends Object> T[] standardToArray(T[] array) {
     return ObjectArrays.toArrayImpl(this, array);
   }
 }
diff --git a/guava/src/com/google/common/collect/ForwardingConcurrentMap.java b/guava/src/com/google/common/collect/ForwardingConcurrentMap.java
index b662b07..0aed837 100644
--- a/guava/src/com/google/common/collect/ForwardingConcurrentMap.java
+++ b/guava/src/com/google/common/collect/ForwardingConcurrentMap.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.ConcurrentMap;
 import javax.annotation.CheckForNull;
 
@@ -36,7 +34,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingConcurrentMap<K, V> extends ForwardingMap<K, V>
     implements ConcurrentMap<K, V> {
@@ -47,27 +44,23 @@ public abstract class ForwardingConcurrentMap<K, V> extends ForwardingMap<K, V>
   @Override
   protected abstract ConcurrentMap<K, V> delegate();
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V putIfAbsent(K key, V value) {
     return delegate().putIfAbsent(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@CheckForNull Object key, @CheckForNull Object value) {
     return delegate().remove(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V replace(K key, V value) {
     return delegate().replace(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean replace(K key, V oldValue, V newValue) {
     return delegate().replace(key, oldValue, newValue);
diff --git a/guava/src/com/google/common/collect/ForwardingDeque.java b/guava/src/com/google/common/collect/ForwardingDeque.java
index 571535c..6f0a56b 100644
--- a/guava/src/com/google/common/collect/ForwardingDeque.java
+++ b/guava/src/com/google/common/collect/ForwardingDeque.java
@@ -16,12 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Deque;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A deque which forwards all its method calls to another deque. Subclasses should override one or
@@ -40,9 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 12.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingDeque<E extends @Nullable Object> extends ForwardingQueue<E>
+public abstract class ForwardingDeque<E extends Object> extends ForwardingQueue<E>
     implements Deque<E> {
 
   /** Constructor for use by subclasses. */
@@ -78,13 +74,13 @@ public abstract class ForwardingDeque<E extends @Nullable Object> extends Forwar
     return delegate().getLast();
   }
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   public boolean offerFirst(@ParametricNullness E e) {
     return delegate().offerFirst(e);
   }
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   public boolean offerLast(@ParametricNullness E e) {
     return delegate().offerLast(e);
@@ -102,21 +98,20 @@ public abstract class ForwardingDeque<E extends @Nullable Object> extends Forwar
     return delegate().peekLast();
   }
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   @CheckForNull
   public E pollFirst() {
     return delegate().pollFirst();
   }
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   @CheckForNull
   public E pollLast() {
     return delegate().pollLast();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E pop() {
@@ -128,27 +123,23 @@ public abstract class ForwardingDeque<E extends @Nullable Object> extends Forwar
     delegate().push(e);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E removeFirst() {
     return delegate().removeFirst();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E removeLast() {
     return delegate().removeLast();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean removeFirstOccurrence(@CheckForNull Object o) {
     return delegate().removeFirstOccurrence(o);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean removeLastOccurrence(@CheckForNull Object o) {
     return delegate().removeLastOccurrence(o);
diff --git a/guava/src/com/google/common/collect/ForwardingImmutableCollection.java b/guava/src/com/google/common/collect/ForwardingImmutableCollection.java
index 043fe58..df64ca2 100644
--- a/guava/src/com/google/common/collect/ForwardingImmutableCollection.java
+++ b/guava/src/com/google/common/collect/ForwardingImmutableCollection.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Dummy class that makes the GWT serialization policy happy. It isn't used on the server-side.
  *
  * @author Hayward Chan
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 class ForwardingImmutableCollection {
   private ForwardingImmutableCollection() {}
diff --git a/guava/src/com/google/common/collect/ForwardingImmutableList.java b/guava/src/com/google/common/collect/ForwardingImmutableList.java
index bd5480d..f1aeba7 100644
--- a/guava/src/com/google/common/collect/ForwardingImmutableList.java
+++ b/guava/src/com/google/common/collect/ForwardingImmutableList.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Unused stub class, unreferenced under Java and manually emulated under GWT.
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ForwardingImmutableList<E> {
   private ForwardingImmutableList() {}
diff --git a/guava/src/com/google/common/collect/ForwardingImmutableMap.java b/guava/src/com/google/common/collect/ForwardingImmutableMap.java
index 22cc9ff..84c4fb8 100644
--- a/guava/src/com/google/common/collect/ForwardingImmutableMap.java
+++ b/guava/src/com/google/common/collect/ForwardingImmutableMap.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Unused stub class, unreferenced under Java and manually emulated under GWT.
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ForwardingImmutableMap<K, V> {
   private ForwardingImmutableMap() {}
diff --git a/guava/src/com/google/common/collect/ForwardingImmutableSet.java b/guava/src/com/google/common/collect/ForwardingImmutableSet.java
index 047d5fd..e4ae397 100644
--- a/guava/src/com/google/common/collect/ForwardingImmutableSet.java
+++ b/guava/src/com/google/common/collect/ForwardingImmutableSet.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Unused stub class, unreferenced under Java and manually emulated under GWT.
  *
  * @author Chris Povirk
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ForwardingImmutableSet<E> {
   private ForwardingImmutableSet() {}
diff --git a/guava/src/com/google/common/collect/ForwardingIterator.java b/guava/src/com/google/common/collect/ForwardingIterator.java
index 1f5a8f1..a063f8e 100644
--- a/guava/src/com/google/common/collect/ForwardingIterator.java
+++ b/guava/src/com/google/common/collect/ForwardingIterator.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An iterator which forwards all its method calls to another iterator. Subclasses should override
@@ -36,9 +33,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingIterator<T extends @Nullable Object> extends ForwardingObject
+public abstract class ForwardingIterator<T extends Object> extends ForwardingObject
     implements Iterator<T> {
 
   /** Constructor for use by subclasses. */
@@ -52,7 +48,6 @@ public abstract class ForwardingIterator<T extends @Nullable Object> extends For
     return delegate().hasNext();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public T next() {
diff --git a/guava/src/com/google/common/collect/ForwardingList.java b/guava/src/com/google/common/collect/ForwardingList.java
index 4b4551e..5e51833 100644
--- a/guava/src/com/google/common/collect/ForwardingList.java
+++ b/guava/src/com/google/common/collect/ForwardingList.java
@@ -16,15 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A list which forwards all its method calls to another list. Subclasses should override one or
@@ -51,9 +47,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingList<E extends @Nullable Object> extends ForwardingCollection<E>
+public abstract class ForwardingList<E extends Object> extends ForwardingCollection<E>
     implements List<E> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
@@ -68,7 +63,6 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
     delegate().add(index, element);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean addAll(int index, Collection<? extends E> elements) {
     return delegate().addAll(index, elements);
@@ -100,14 +94,12 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
     return delegate().listIterator(index);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E remove(int index) {
     return delegate().remove(index);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E set(int index, @ParametricNullness E element) {
@@ -204,7 +196,6 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
    *
    * @since 7.0
    */
-  @Beta
   protected ListIterator<E> standardListIterator(int start) {
     return Lists.listIteratorImpl(this, start);
   }
@@ -215,7 +206,6 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
    *
    * @since 7.0
    */
-  @Beta
   protected List<E> standardSubList(int fromIndex, int toIndex) {
     return Lists.subListImpl(this, fromIndex, toIndex);
   }
@@ -227,7 +217,6 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
    *
    * @since 7.0
    */
-  @Beta
   protected boolean standardEquals(@CheckForNull Object object) {
     return Lists.equalsImpl(this, object);
   }
@@ -239,7 +228,6 @@ public abstract class ForwardingList<E extends @Nullable Object> extends Forward
    *
    * @since 7.0
    */
-  @Beta
   protected int standardHashCode() {
     return Lists.hashCodeImpl(this);
   }
diff --git a/guava/src/com/google/common/collect/ForwardingListIterator.java b/guava/src/com/google/common/collect/ForwardingListIterator.java
index a2ac32b..6f440c6 100644
--- a/guava/src/com/google/common/collect/ForwardingListIterator.java
+++ b/guava/src/com/google/common/collect/ForwardingListIterator.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ListIterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A list iterator which forwards all its method calls to another list iterator. Subclasses should
@@ -36,9 +33,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingListIterator<E extends @Nullable Object>
+public abstract class ForwardingListIterator<E extends Object>
     extends ForwardingIterator<E> implements ListIterator<E> {
 
   /** Constructor for use by subclasses. */
@@ -62,7 +58,6 @@ public abstract class ForwardingListIterator<E extends @Nullable Object>
     return delegate().nextIndex();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E previous() {
diff --git a/guava/src/com/google/common/collect/ForwardingListMultimap.java b/guava/src/com/google/common/collect/ForwardingListMultimap.java
index 11779c0..4ebcdc3 100644
--- a/guava/src/com/google/common/collect/ForwardingListMultimap.java
+++ b/guava/src/com/google/common/collect/ForwardingListMultimap.java
@@ -16,11 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A list multimap which forwards all its method calls to another list multimap. Subclasses should
@@ -34,9 +31,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 3.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingListMultimap<K extends Object, V extends Object>
     extends ForwardingMultimap<K, V> implements ListMultimap<K, V> {
 
   /** Constructor for use by subclasses. */
@@ -50,13 +46,11 @@ public abstract class ForwardingListMultimap<K extends @Nullable Object, V exten
     return delegate().get(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public List<V> removeAll(@CheckForNull Object key) {
     return delegate().removeAll(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return delegate().replaceValues(key, values);
diff --git a/guava/src/com/google/common/collect/ForwardingMap.java b/guava/src/com/google/common/collect/ForwardingMap.java
index 315a4fa..58449f5 100644
--- a/guava/src/com/google/common/collect/ForwardingMap.java
+++ b/guava/src/com/google/common/collect/ForwardingMap.java
@@ -16,16 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A map which forwards all its method calls to another map. Subclasses should override one or more
@@ -55,9 +51,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingMap<K extends Object, V extends Object>
     extends ForwardingObject implements Map<K, V> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
@@ -77,7 +72,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
     return delegate().isEmpty();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V remove(@CheckForNull Object key) {
@@ -105,7 +99,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
     return delegate().get(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(@ParametricNullness K key, @ParametricNullness V value) {
@@ -163,7 +156,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
    *
    * @since 7.0
    */
-  @Beta
   @CheckForNull
   protected V standardRemove(@CheckForNull Object key) {
     Iterator<Entry<K, V>> entryIterator = entrySet().iterator();
@@ -198,7 +190,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
    *
    * @since 10.0
    */
-  @Beta
   protected class StandardKeySet extends Maps.KeySet<K, V> {
     /** Constructor for use by subclasses. */
     public StandardKeySet() {
@@ -213,7 +204,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
    *
    * @since 7.0
    */
-  @Beta
   protected boolean standardContainsKey(@CheckForNull Object key) {
     return Maps.containsKeyImpl(this, key);
   }
@@ -227,7 +217,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
    *
    * @since 10.0
    */
-  @Beta
   protected class StandardValues extends Maps.Values<K, V> {
     /** Constructor for use by subclasses. */
     public StandardValues() {
@@ -255,7 +244,6 @@ public abstract class ForwardingMap<K extends @Nullable Object, V extends @Nulla
    *
    * @since 10.0
    */
-  @Beta
   protected abstract class StandardEntrySet extends Maps.EntrySet<K, V> {
     /** Constructor for use by subclasses. */
     public StandardEntrySet() {}
diff --git a/guava/src/com/google/common/collect/ForwardingMapEntry.java b/guava/src/com/google/common/collect/ForwardingMapEntry.java
index 6816ccb..475a982 100644
--- a/guava/src/com/google/common/collect/ForwardingMapEntry.java
+++ b/guava/src/com/google/common/collect/ForwardingMapEntry.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
 import java.util.Map;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A map entry which forwards all its method calls to another map entry. Subclasses should override
@@ -47,9 +44,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingMapEntry<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingMapEntry<K extends Object, V extends Object>
     extends ForwardingObject implements Map.Entry<K, V> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
@@ -123,7 +119,6 @@ public abstract class ForwardingMapEntry<K extends @Nullable Object, V extends @
    *
    * @since 7.0
    */
-  @Beta
   protected String standardToString() {
     return getKey() + "=" + getValue();
   }
diff --git a/guava/src/com/google/common/collect/ForwardingMultimap.java b/guava/src/com/google/common/collect/ForwardingMultimap.java
index a3db061..e48c317 100644
--- a/guava/src/com/google/common/collect/ForwardingMultimap.java
+++ b/guava/src/com/google/common/collect/ForwardingMultimap.java
@@ -16,14 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A multimap which forwards all its method calls to another multimap. Subclasses should override
@@ -37,9 +34,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Robert Konigsberg
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingMultimap<K extends Object, V extends Object>
     extends ForwardingObject implements Multimap<K, V> {
 
   /** Constructor for use by subclasses. */
@@ -98,37 +94,31 @@ public abstract class ForwardingMultimap<K extends @Nullable Object, V extends @
     return delegate().keySet();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean put(@ParametricNullness K key, @ParametricNullness V value) {
     return delegate().put(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean putAll(@ParametricNullness K key, Iterable<? extends V> values) {
     return delegate().putAll(key, values);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean putAll(Multimap<? extends K, ? extends V> multimap) {
     return delegate().putAll(multimap);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@CheckForNull Object key, @CheckForNull Object value) {
     return delegate().remove(key, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public Collection<V> removeAll(@CheckForNull Object key) {
     return delegate().removeAll(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public Collection<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return delegate().replaceValues(key, values);
diff --git a/guava/src/com/google/common/collect/ForwardingMultiset.java b/guava/src/com/google/common/collect/ForwardingMultiset.java
index 857b9ae..987b051 100644
--- a/guava/src/com/google/common/collect/ForwardingMultiset.java
+++ b/guava/src/com/google/common/collect/ForwardingMultiset.java
@@ -16,15 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A multiset which forwards all its method calls to another multiset. Subclasses should override
@@ -48,9 +44,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingMultiset<E extends @Nullable Object> extends ForwardingCollection<E>
+public abstract class ForwardingMultiset<E extends Object> extends ForwardingCollection<E>
     implements Multiset<E> {
 
   /** Constructor for use by subclasses. */
@@ -64,13 +59,11 @@ public abstract class ForwardingMultiset<E extends @Nullable Object> extends For
     return delegate().count(element);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int add(@ParametricNullness E element, int occurrences) {
     return delegate().add(element, occurrences);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int remove(@CheckForNull Object element, int occurrences) {
     return delegate().remove(element, occurrences);
@@ -96,13 +89,11 @@ public abstract class ForwardingMultiset<E extends @Nullable Object> extends For
     return delegate().hashCode();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int setCount(@ParametricNullness E element, int count) {
     return delegate().setCount(element, count);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean setCount(@ParametricNullness E element, int oldCount, int newCount) {
     return delegate().setCount(element, oldCount, newCount);
@@ -138,7 +129,6 @@ public abstract class ForwardingMultiset<E extends @Nullable Object> extends For
    *
    * @since 7.0
    */
-  @Beta
   protected int standardCount(@CheckForNull Object object) {
     for (Entry<?> entry : this.entrySet()) {
       if (Objects.equal(entry.getElement(), object)) {
@@ -167,7 +157,6 @@ public abstract class ForwardingMultiset<E extends @Nullable Object> extends For
    *
    * @since 7.0
    */
-  @Beta
   @Override
   protected boolean standardAddAll(Collection<? extends E> elementsToAdd) {
     return Multisets.addAllImpl(this, elementsToAdd);
@@ -243,7 +232,6 @@ public abstract class ForwardingMultiset<E extends @Nullable Object> extends For
    *
    * @since 10.0
    */
-  @Beta
   protected class StandardElementSet extends Multisets.ElementSet<E> {
     /** Constructor for use by subclasses. */
     public StandardElementSet() {}
diff --git a/guava/src/com/google/common/collect/ForwardingNavigableMap.java b/guava/src/com/google/common/collect/ForwardingNavigableMap.java
index c32468d..ee4b127 100644
--- a/guava/src/com/google/common/collect/ForwardingNavigableMap.java
+++ b/guava/src/com/google/common/collect/ForwardingNavigableMap.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.collect.Maps.keyOrNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Iterator;
 import java.util.NavigableMap;
 import java.util.NavigableSet;
@@ -27,7 +25,6 @@ import java.util.NoSuchElementException;
 import java.util.SortedMap;
 import java.util.function.BiFunction;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A navigable map which forwards all its method calls to another navigable map. Subclasses should
@@ -55,9 +52,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 12.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingNavigableMap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingNavigableMap<K extends Object, V extends Object>
     extends ForwardingSortedMap<K, V> implements NavigableMap<K, V> {
 
   /** Constructor for use by subclasses. */
@@ -301,7 +297,6 @@ public abstract class ForwardingNavigableMap<K extends @Nullable Object, V exten
    *
    * @since 12.0
    */
-  @Beta
   protected class StandardDescendingMap extends Maps.DescendingMap<K, V> {
     /** Constructor for use by subclasses. */
     public StandardDescendingMap() {}
@@ -365,7 +360,6 @@ public abstract class ForwardingNavigableMap<K extends @Nullable Object, V exten
    *
    * @since 12.0
    */
-  @Beta
   protected class StandardNavigableKeySet extends Maps.NavigableKeySet<K, V> {
     /** Constructor for use by subclasses. */
     public StandardNavigableKeySet() {
@@ -385,7 +379,6 @@ public abstract class ForwardingNavigableMap<K extends @Nullable Object, V exten
    * descendingMap}, you may wish to override {@code descendingKeySet} to forward to this
    * implementation.
    */
-  @Beta
   protected NavigableSet<K> standardDescendingKeySet() {
     return descendingMap().navigableKeySet();
   }
diff --git a/guava/src/com/google/common/collect/ForwardingNavigableSet.java b/guava/src/com/google/common/collect/ForwardingNavigableSet.java
index 6822aa8..a72b0a3 100644
--- a/guava/src/com/google/common/collect/ForwardingNavigableSet.java
+++ b/guava/src/com/google/common/collect/ForwardingNavigableSet.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A navigable set which forwards all its method calls to another navigable set. Subclasses should
@@ -50,9 +47,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 12.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingNavigableSet<E extends @Nullable Object>
+public abstract class ForwardingNavigableSet<E extends Object>
     extends ForwardingSortedSet<E> implements NavigableSet<E> {
 
   /** Constructor for use by subclasses. */
@@ -181,7 +177,6 @@ public abstract class ForwardingNavigableSet<E extends @Nullable Object>
    *
    * @since 12.0
    */
-  @Beta
   protected class StandardDescendingSet extends Sets.DescendingSet<E> {
     /** Constructor for use by subclasses. */
     public StandardDescendingSet() {
@@ -208,7 +203,6 @@ public abstract class ForwardingNavigableSet<E extends @Nullable Object>
    * {@code headSet} and {@code tailSet} methods. In many cases, you may wish to override {@link
    * #subSet(Object, boolean, Object, boolean)} to forward to this implementation.
    */
-  @Beta
   protected NavigableSet<E> standardSubSet(
       @ParametricNullness E fromElement,
       boolean fromInclusive,
diff --git a/guava/src/com/google/common/collect/ForwardingObject.java b/guava/src/com/google/common/collect/ForwardingObject.java
index 64af908..e9195b3 100644
--- a/guava/src/com/google/common/collect/ForwardingObject.java
+++ b/guava/src/com/google/common/collect/ForwardingObject.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 
 /**
@@ -43,7 +42,6 @@ import java.io.Serializable;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingObject {
 
diff --git a/guava/src/com/google/common/collect/ForwardingQueue.java b/guava/src/com/google/common/collect/ForwardingQueue.java
index 43c2eaa..a16cc4b 100644
--- a/guava/src/com/google/common/collect/ForwardingQueue.java
+++ b/guava/src/com/google/common/collect/ForwardingQueue.java
@@ -16,12 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.NoSuchElementException;
 import java.util.Queue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A queue which forwards all its method calls to another queue. Subclasses should override one or
@@ -45,9 +42,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingQueue<E extends @Nullable Object> extends ForwardingCollection<E>
+public abstract class ForwardingQueue<E extends Object> extends ForwardingCollection<E>
     implements Queue<E> {
 
   /** Constructor for use by subclasses. */
@@ -56,20 +52,19 @@ public abstract class ForwardingQueue<E extends @Nullable Object> extends Forwar
   @Override
   protected abstract Queue<E> delegate();
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   public boolean offer(@ParametricNullness E o) {
     return delegate().offer(o);
   }
 
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   @Override
   @CheckForNull
   public E poll() {
     return delegate().poll();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public E remove() {
diff --git a/guava/src/com/google/common/collect/ForwardingSet.java b/guava/src/com/google/common/collect/ForwardingSet.java
index bc27272..2aa78c5 100644
--- a/guava/src/com/google/common/collect/ForwardingSet.java
+++ b/guava/src/com/google/common/collect/ForwardingSet.java
@@ -18,11 +18,9 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A set which forwards all its method calls to another set. Subclasses should override one or more
@@ -46,9 +44,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingSet<E extends @Nullable Object> extends ForwardingCollection<E>
+public abstract class ForwardingSet<E extends Object> extends ForwardingCollection<E>
     implements Set<E> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
diff --git a/guava/src/com/google/common/collect/ForwardingSetMultimap.java b/guava/src/com/google/common/collect/ForwardingSetMultimap.java
index 5077c68..4f5d1b6 100644
--- a/guava/src/com/google/common/collect/ForwardingSetMultimap.java
+++ b/guava/src/com/google/common/collect/ForwardingSetMultimap.java
@@ -16,12 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A set multimap which forwards all its method calls to another set multimap. Subclasses should
@@ -35,9 +32,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 3.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingSetMultimap<K extends Object, V extends Object>
     extends ForwardingMultimap<K, V> implements SetMultimap<K, V> {
 
   @Override
@@ -53,13 +49,11 @@ public abstract class ForwardingSetMultimap<K extends @Nullable Object, V extend
     return delegate().get(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public Set<V> removeAll(@CheckForNull Object key) {
     return delegate().removeAll(key);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public Set<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return delegate().replaceValues(key, values);
diff --git a/guava/src/com/google/common/collect/ForwardingSortedMap.java b/guava/src/com/google/common/collect/ForwardingSortedMap.java
index e0882ab..df2bc00 100644
--- a/guava/src/com/google/common/collect/ForwardingSortedMap.java
+++ b/guava/src/com/google/common/collect/ForwardingSortedMap.java
@@ -18,13 +18,10 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.NoSuchElementException;
 import java.util.SortedMap;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A sorted map which forwards all its method calls to another sorted map. Subclasses should
@@ -51,9 +48,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingSortedMap<K extends @Nullable Object, V extends @Nullable Object>
+public abstract class ForwardingSortedMap<K extends Object, V extends Object>
     extends ForwardingMap<K, V> implements SortedMap<K, V> {
   // TODO(lowasser): identify places where thread safety is actually lost
 
@@ -103,7 +99,6 @@ public abstract class ForwardingSortedMap<K extends @Nullable Object, V extends
    *
    * @since 15.0
    */
-  @Beta
   protected class StandardKeySet extends Maps.SortedKeySet<K, V> {
     /** Constructor for use by subclasses. */
     public StandardKeySet() {
@@ -130,12 +125,11 @@ public abstract class ForwardingSortedMap<K extends @Nullable Object, V extends
    * @since 7.0
    */
   @Override
-  @Beta
   protected boolean standardContainsKey(@CheckForNull Object key) {
     try {
       // any CCE or NPE will be caught
       @SuppressWarnings({"unchecked", "nullness"})
-      SortedMap<@Nullable Object, V> self = (SortedMap<@Nullable Object, V>) this;
+      SortedMap<Object, V> self = (SortedMap<@Nullable Object, V>) this;
       Object ceilingKey = self.tailMap(key).firstKey();
       return unsafeCompare(comparator(), ceilingKey, key) == 0;
     } catch (ClassCastException | NoSuchElementException | NullPointerException e) {
@@ -150,7 +144,6 @@ public abstract class ForwardingSortedMap<K extends @Nullable Object, V extends
    *
    * @since 7.0
    */
-  @Beta
   protected SortedMap<K, V> standardSubMap(K fromKey, K toKey) {
     checkArgument(unsafeCompare(comparator(), fromKey, toKey) <= 0, "fromKey must be <= toKey");
     return tailMap(fromKey).headMap(toKey);
diff --git a/guava/src/com/google/common/collect/ForwardingSortedMultiset.java b/guava/src/com/google/common/collect/ForwardingSortedMultiset.java
index 4626d31..d7b4adb 100644
--- a/guava/src/com/google/common/collect/ForwardingSortedMultiset.java
+++ b/guava/src/com/google/common/collect/ForwardingSortedMultiset.java
@@ -14,13 +14,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A sorted multiset which forwards all its method calls to another sorted multiset. Subclasses
@@ -44,10 +41,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 15.0
  */
-@Beta
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingSortedMultiset<E extends @Nullable Object>
+public abstract class ForwardingSortedMultiset<E extends Object>
     extends ForwardingMultiset<E> implements SortedMultiset<E> {
   /** Constructor for use by subclasses. */
   protected ForwardingSortedMultiset() {}
diff --git a/guava/src/com/google/common/collect/ForwardingSortedSet.java b/guava/src/com/google/common/collect/ForwardingSortedSet.java
index 32625af..383ef1a 100644
--- a/guava/src/com/google/common/collect/ForwardingSortedSet.java
+++ b/guava/src/com/google/common/collect/ForwardingSortedSet.java
@@ -18,14 +18,11 @@ package com.google.common.collect;
 
 import static com.google.common.collect.ForwardingSortedMap.unsafeCompare;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A sorted set which forwards all its method calls to another sorted set. Subclasses should
@@ -54,9 +51,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingSortedSet<E extends @Nullable Object> extends ForwardingSet<E>
+public abstract class ForwardingSortedSet<E extends Object> extends ForwardingSet<E>
     implements SortedSet<E> {
 
   /** Constructor for use by subclasses. */
@@ -106,12 +102,11 @@ public abstract class ForwardingSortedSet<E extends @Nullable Object> extends Fo
    * @since 7.0
    */
   @Override
-  @Beta
   protected boolean standardContains(@CheckForNull Object object) {
     try {
       // any ClassCastExceptions and NullPointerExceptions are caught
       @SuppressWarnings({"unchecked", "nullness"})
-      SortedSet<@Nullable Object> self = (SortedSet<@Nullable Object>) this;
+      SortedSet<Object> self = (SortedSet<@Nullable Object>) this;
       Object ceiling = self.tailSet(object).first();
       return unsafeCompare(comparator(), ceiling, object) == 0;
     } catch (ClassCastException | NoSuchElementException | NullPointerException e) {
@@ -127,12 +122,11 @@ public abstract class ForwardingSortedSet<E extends @Nullable Object> extends Fo
    * @since 7.0
    */
   @Override
-  @Beta
   protected boolean standardRemove(@CheckForNull Object object) {
     try {
       // any ClassCastExceptions and NullPointerExceptions are caught
       @SuppressWarnings({"unchecked", "nullness"})
-      SortedSet<@Nullable Object> self = (SortedSet<@Nullable Object>) this;
+      SortedSet<Object> self = (SortedSet<@Nullable Object>) this;
       Iterator<?> iterator = self.tailSet(object).iterator();
       if (iterator.hasNext()) {
         Object ceiling = iterator.next();
@@ -154,7 +148,6 @@ public abstract class ForwardingSortedSet<E extends @Nullable Object> extends Fo
    *
    * @since 7.0
    */
-  @Beta
   protected SortedSet<E> standardSubSet(
       @ParametricNullness E fromElement, @ParametricNullness E toElement) {
     return tailSet(fromElement).headSet(toElement);
diff --git a/guava/src/com/google/common/collect/ForwardingSortedSetMultimap.java b/guava/src/com/google/common/collect/ForwardingSortedSetMultimap.java
index b91a68b..9df7a46 100644
--- a/guava/src/com/google/common/collect/ForwardingSortedSetMultimap.java
+++ b/guava/src/com/google/common/collect/ForwardingSortedSetMultimap.java
@@ -16,11 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A sorted set multimap which forwards all its method calls to another sorted set multimap.
@@ -34,10 +32,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 3.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingSortedSetMultimap<
-        K extends @Nullable Object, V extends @Nullable Object>
+        K extends Object, V extends Object>
     extends ForwardingSetMultimap<K, V> implements SortedSetMultimap<K, V> {
 
   /** Constructor for use by subclasses. */
diff --git a/guava/src/com/google/common/collect/ForwardingTable.java b/guava/src/com/google/common/collect/ForwardingTable.java
index 4fcb858..4b67ed6 100644
--- a/guava/src/com/google/common/collect/ForwardingTable.java
+++ b/guava/src/com/google/common/collect/ForwardingTable.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A table which forwards all its method calls to another table. Subclasses should override one or
@@ -32,10 +29,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Gregory Kick
  * @since 7.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingTable<
-        R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+        R extends Object, C extends Object, V extends Object>
     extends ForwardingObject implements Table<R, C, V> {
   /** Constructor for use by subclasses. */
   protected ForwardingTable() {}
@@ -99,7 +95,6 @@ public abstract class ForwardingTable<
     return delegate().isEmpty();
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(
@@ -112,7 +107,6 @@ public abstract class ForwardingTable<
     delegate().putAll(table);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V remove(@CheckForNull Object rowKey, @CheckForNull Object columnKey) {
diff --git a/guava/src/com/google/common/collect/GeneralRange.java b/guava/src/com/google/common/collect/GeneralRange.java
index 20cf4fb..6d34842 100644
--- a/guava/src/com/google/common/collect/GeneralRange.java
+++ b/guava/src/com/google/common/collect/GeneralRange.java
@@ -18,14 +18,11 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.BoundType.CLOSED;
 import static com.google.common.collect.BoundType.OPEN;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
 import java.io.Serializable;
 import java.util.Comparator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A generalized interval on any ordering, for internal use. Supports {@code null}. Unlike {@link
@@ -36,9 +33,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class GeneralRange<T extends @Nullable Object> implements Serializable {
+final class GeneralRange<T extends Object> implements Serializable {
   /** Converts a Range to a GeneralRange. */
   static <T extends Comparable> GeneralRange<T> from(Range<T> range) {
     T lowerEndpoint = range.hasLowerBound() ? range.lowerEndpoint() : null;
@@ -57,7 +53,7 @@ final class GeneralRange<T extends @Nullable Object> implements Serializable {
   }
 
   /** Returns the whole range relative to the specified comparator. */
-  static <T extends @Nullable Object> GeneralRange<T> all(Comparator<? super T> comparator) {
+  static <T extends Object> GeneralRange<T> all(Comparator<? super T> comparator) {
     return new GeneralRange<T>(comparator, false, null, OPEN, false, null, OPEN);
   }
 
@@ -65,7 +61,7 @@ final class GeneralRange<T extends @Nullable Object> implements Serializable {
    * Returns everything above the endpoint relative to the specified comparator, with the specified
    * endpoint behavior.
    */
-  static <T extends @Nullable Object> GeneralRange<T> downTo(
+  static <T extends Object> GeneralRange<T> downTo(
       Comparator<? super T> comparator, @ParametricNullness T endpoint, BoundType boundType) {
     return new GeneralRange<T>(comparator, true, endpoint, boundType, false, null, OPEN);
   }
@@ -74,7 +70,7 @@ final class GeneralRange<T extends @Nullable Object> implements Serializable {
    * Returns everything below the endpoint relative to the specified comparator, with the specified
    * endpoint behavior.
    */
-  static <T extends @Nullable Object> GeneralRange<T> upTo(
+  static <T extends Object> GeneralRange<T> upTo(
       Comparator<? super T> comparator, @ParametricNullness T endpoint, BoundType boundType) {
     return new GeneralRange<T>(comparator, false, null, OPEN, true, endpoint, boundType);
   }
@@ -83,7 +79,7 @@ final class GeneralRange<T extends @Nullable Object> implements Serializable {
    * Returns everything between the endpoints relative to the specified comparator, with the
    * specified endpoint behavior.
    */
-  static <T extends @Nullable Object> GeneralRange<T> range(
+  static <T extends Object> GeneralRange<T> range(
       Comparator<? super T> comparator,
       @ParametricNullness T lower,
       BoundType lowerType,
diff --git a/guava/src/com/google/common/collect/GwtTransient.java b/guava/src/com/google/common/collect/GwtTransient.java
index ce5ea48..1f5d2ce 100644
--- a/guava/src/com/google/common/collect/GwtTransient.java
+++ b/guava/src/com/google/common/collect/GwtTransient.java
@@ -19,7 +19,6 @@ package com.google.common.collect;
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
@@ -30,7 +29,6 @@ import java.lang.annotation.Target;
  * com.google.common.collect}.
  */
 @Documented
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(FIELD)
 @ElementTypesAreNonnullByDefault
diff --git a/guava/src/com/google/common/collect/HashBasedTable.java b/guava/src/com/google/common/collect/HashBasedTable.java
index c8ba50f..cfc0822 100644
--- a/guava/src/com/google/common/collect/HashBasedTable.java
+++ b/guava/src/com/google/common/collect/HashBasedTable.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Supplier;
 import java.io.Serializable;
 import java.util.LinkedHashMap;
@@ -46,7 +45,6 @@ import java.util.Map;
  * @author Jared Levy
  * @since 7.0
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 public class HashBasedTable<R, C, V> extends StandardTable<R, C, V> {
   private static class Factory<C, V> implements Supplier<Map<C, V>>, Serializable {
diff --git a/guava/src/com/google/common/collect/HashBiMap.java b/guava/src/com/google/common/collect/HashBiMap.java
index b6e2042..11ab416 100644
--- a/guava/src/com/google/common/collect/HashBiMap.java
+++ b/guava/src/com/google/common/collect/HashBiMap.java
@@ -18,16 +18,9 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.Hashing.smearedHash;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Objects;
 import com.google.common.collect.Maps.IteratorBasedAbstractMap;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.Weak;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -41,7 +34,6 @@ import java.util.Set;
 import java.util.function.BiConsumer;
 import java.util.function.BiFunction;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link BiMap} backed by two hash tables. This implementation allows null keys and values. A
@@ -56,13 +48,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Object>
+public final class HashBiMap<K extends Object, V extends Object>
     extends IteratorBasedAbstractMap<K, V> implements BiMap<K, V>, Serializable {
 
   /** Returns a new, empty {@code HashBiMap} with the default initial capacity (16). */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashBiMap<K, V> create() {
+  public static <K extends Object, V extends Object> HashBiMap<K, V> create() {
     return create(16);
   }
 
@@ -72,7 +63,7 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
    * @param expectedSize the expected number of entries
    * @throws IllegalArgumentException if the specified expected size is negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashBiMap<K, V> create(
+  public static <K extends Object, V extends Object> HashBiMap<K, V> create(
       int expectedSize) {
     return new HashBiMap<>(expectedSize);
   }
@@ -81,14 +72,14 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
    * Constructs a new bimap containing initial values from {@code map}. The bimap is created with an
    * initial capacity sufficient to hold the mappings in the specified map.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashBiMap<K, V> create(
+  public static <K extends Object, V extends Object> HashBiMap<K, V> create(
       Map<? extends K, ? extends V> map) {
     HashBiMap<K, V> bimap = create(map.size());
     bimap.putAll(map);
     return bimap;
   }
 
-  private static final class BiEntry<K extends @Nullable Object, V extends @Nullable Object>
+  private static final class BiEntry<K extends Object, V extends Object>
       extends ImmutableEntry<K, V> {
     final int keyHash;
     final int valueHash;
@@ -100,10 +91,10 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
     // which would cause memory leaks when non-empty HashBiMap with cyclic BiEntry
     // instances is deallocated.
     @CheckForNull BiEntry<K, V> nextInKToVBucket;
-    @Weak @CheckForNull BiEntry<K, V> nextInVToKBucket;
+    @CheckForNull BiEntry<K, V> nextInVToKBucket;
 
-    @Weak @CheckForNull BiEntry<K, V> nextInKeyInsertionOrder;
-    @Weak @CheckForNull BiEntry<K, V> prevInKeyInsertionOrder;
+    @CheckForNull BiEntry<K, V> nextInKeyInsertionOrder;
+    @CheckForNull BiEntry<K, V> prevInKeyInsertionOrder;
 
     BiEntry(@ParametricNullness K key, int keyHash, @ParametricNullness V value, int valueHash) {
       super(key, value);
@@ -119,10 +110,10 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
    * they are not initialized inline in the constructor, they are initialized from init(), which the
    * constructor calls (as does readObject()).
    */
-  private transient @Nullable BiEntry<K, V>[] hashTableKToV;
-  private transient @Nullable BiEntry<K, V>[] hashTableVToK;
-  @Weak @CheckForNull private transient BiEntry<K, V> firstInKeyInsertionOrder;
-  @Weak @CheckForNull private transient BiEntry<K, V> lastInKeyInsertionOrder;
+  private transient BiEntry<K, V>[] hashTableKToV;
+  private transient BiEntry<K, V>[] hashTableVToK;
+  @CheckForNull private transient BiEntry<K, V> firstInKeyInsertionOrder;
+  @CheckForNull private transient BiEntry<K, V> lastInKeyInsertionOrder;
   private transient int size;
   private transient int mask;
   private transient int modCount;
@@ -283,7 +274,6 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
     return Maps.valueOrNull(seekByKey(key, smearedHash(key)));
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(@ParametricNullness K key, @ParametricNullness V value) {
@@ -325,7 +315,6 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
     }
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V forcePut(@ParametricNullness K key, @ParametricNullness V value) {
@@ -378,7 +367,7 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
   }
 
   private void rehashIfNecessary() {
-    @Nullable BiEntry<K, V>[] oldKToV = hashTableKToV;
+    BiEntry<K, V>[] oldKToV = hashTableKToV;
     if (Hashing.needsResizing(size, oldKToV.length, LOAD_FACTOR)) {
       int newTableSize = oldKToV.length * 2;
 
@@ -397,11 +386,10 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
   }
 
   @SuppressWarnings({"unchecked", "rawtypes"})
-  private @Nullable BiEntry<K, V>[] createTable(int length) {
-    return new @Nullable BiEntry[length];
+  private BiEntry<K, V>[] createTable(int length) {
+    return new BiEntry[length];
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V remove(@CheckForNull Object key) {
@@ -431,7 +419,7 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
     return size;
   }
 
-  abstract class Itr<T extends @Nullable Object> implements Iterator<T> {
+  abstract class Itr<T extends Object> implements Iterator<T> {
     @CheckForNull BiEntry<K, V> next = firstInKeyInsertionOrder;
     @CheckForNull BiEntry<K, V> toRemove = null;
     int expectedModCount = modCount;
@@ -583,7 +571,7 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
     }
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient BiMap<V, K> inverse;
+  @CheckForNull private transient BiMap<V, K> inverse;
 
   @Override
   public BiMap<V, K> inverse() {
@@ -618,7 +606,6 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
       return Maps.keyOrNull(seekByValue(value, smearedHash(value)));
     }
 
-    @CanIgnoreReturnValue
     @Override
     @CheckForNull
     public K put(@ParametricNullness V value, @ParametricNullness K key) {
@@ -754,7 +741,7 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
   }
 
   private static final class InverseSerializedForm<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       implements Serializable {
     private final HashBiMap<K, V> bimap;
 
@@ -770,13 +757,13 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
   /**
    * @serialData the number of entries, first key, first value, second key, second value, and so on.
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     Serialization.writeMap(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     int size = Serialization.readCount(stream);
@@ -784,6 +771,6 @@ public final class HashBiMap<K extends @Nullable Object, V extends @Nullable Obj
     Serialization.populateMap(this, stream, size);
   }
 
-  @GwtIncompatible // Not needed in emulated source
+  // Not needed in emulated source
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/HashMultimap.java b/guava/src/com/google/common/collect/HashMultimap.java
index 9e4c1c2..22bad0e 100644
--- a/guava/src/com/google/common/collect/HashMultimap.java
+++ b/guava/src/com/google/common/collect/HashMultimap.java
@@ -16,9 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import java.io.IOException;
 import java.io.ObjectInputStream;
@@ -26,7 +23,6 @@ import java.io.ObjectOutputStream;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multimap} using hash tables.
@@ -48,13 +44,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class HashMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public final class HashMultimap<K extends Object, V extends Object>
     extends HashMultimapGwtSerializationDependencies<K, V> {
   private static final int DEFAULT_VALUES_PER_KEY = 2;
 
-  @VisibleForTesting transient int expectedValuesPerKey = DEFAULT_VALUES_PER_KEY;
+  transient int expectedValuesPerKey = DEFAULT_VALUES_PER_KEY;
 
   /**
    * Creates a new, empty {@code HashMultimap} with the default initial capacities.
@@ -62,7 +57,7 @@ public final class HashMultimap<K extends @Nullable Object, V extends @Nullable
    * <p>This method will soon be deprecated in favor of {@code
    * MultimapBuilder.hashKeys().hashSetValues().build()}.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       HashMultimap<K, V> create() {
     return new HashMultimap<>();
   }
@@ -79,7 +74,7 @@ public final class HashMultimap<K extends @Nullable Object, V extends @Nullable
    * @throws IllegalArgumentException if {@code expectedKeys} or {@code expectedValuesPerKey} is
    *     negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashMultimap<K, V> create(
+  public static <K extends Object, V extends Object> HashMultimap<K, V> create(
       int expectedKeys, int expectedValuesPerKey) {
     return new HashMultimap<>(expectedKeys, expectedValuesPerKey);
   }
@@ -94,7 +89,7 @@ public final class HashMultimap<K extends @Nullable Object, V extends @Nullable
    *
    * @param multimap the multimap whose contents are copied to this multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashMultimap<K, V> create(
+  public static <K extends Object, V extends Object> HashMultimap<K, V> create(
       Multimap<? extends K, ? extends V> multimap) {
     return new HashMultimap<>(multimap);
   }
@@ -130,13 +125,13 @@ public final class HashMultimap<K extends @Nullable Object, V extends @Nullable
    * @serialData expectedValuesPerKey, number of distinct keys, and then for each distinct key: the
    *     key, number of values for that key, and the key's values
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     Serialization.writeMultimap(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     expectedValuesPerKey = DEFAULT_VALUES_PER_KEY;
@@ -146,6 +141,6 @@ public final class HashMultimap<K extends @Nullable Object, V extends @Nullable
     Serialization.populateMultimap(this, stream, distinctKeys);
   }
 
-  @GwtIncompatible // Not needed in emulated source
+  // Not needed in emulated source
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/HashMultimapGwtSerializationDependencies.java b/guava/src/com/google/common/collect/HashMultimapGwtSerializationDependencies.java
index 0922c38..20a68ca 100644
--- a/guava/src/com/google/common/collect/HashMultimapGwtSerializationDependencies.java
+++ b/guava/src/com/google/common/collect/HashMultimapGwtSerializationDependencies.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Map;
 
@@ -29,7 +28,6 @@ import java.util.Map;
  *
  * <p>TODO(cpovirk): Consider applying this subclass approach to our other types.
  */
-@GwtCompatible(emulated = true)
 abstract class HashMultimapGwtSerializationDependencies<K, V> extends AbstractSetMultimap<K, V> {
   HashMultimapGwtSerializationDependencies(Map<K, Collection<V>> map) {
     super(map);
diff --git a/guava/src/com/google/common/collect/HashMultiset.java b/guava/src/com/google/common/collect/HashMultiset.java
index b916457..dbb67df 100644
--- a/guava/src/com/google/common/collect/HashMultiset.java
+++ b/guava/src/com/google/common/collect/HashMultiset.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.util.HashMap;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Multiset implementation backed by a {@link HashMap}.
@@ -31,12 +28,11 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class HashMultiset<E extends @Nullable Object> extends AbstractMapBasedMultiset<E> {
+public final class HashMultiset<E extends Object> extends AbstractMapBasedMultiset<E> {
 
   /** Creates a new, empty {@code HashMultiset} using the default initial capacity. */
-  public static <E extends @Nullable Object> HashMultiset<E> create() {
+  public static <E extends Object> HashMultiset<E> create() {
     return new HashMultiset<E>();
   }
 
@@ -47,7 +43,7 @@ public final class HashMultiset<E extends @Nullable Object> extends AbstractMapB
    * @param distinctElements the expected number of distinct elements
    * @throws IllegalArgumentException if {@code distinctElements} is negative
    */
-  public static <E extends @Nullable Object> HashMultiset<E> create(int distinctElements) {
+  public static <E extends Object> HashMultiset<E> create(int distinctElements) {
     return new HashMultiset<E>(distinctElements);
   }
 
@@ -58,7 +54,7 @@ public final class HashMultiset<E extends @Nullable Object> extends AbstractMapB
    *
    * @param elements the elements that the multiset should contain
    */
-  public static <E extends @Nullable Object> HashMultiset<E> create(
+  public static <E extends Object> HashMultiset<E> create(
       Iterable<? extends E> elements) {
     HashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));
     Iterables.addAll(multiset, elements);
@@ -77,13 +73,13 @@ public final class HashMultiset<E extends @Nullable Object> extends AbstractMapB
    * @serialData the number of distinct elements, the first element, its count, the second element,
    *     its count, and so on
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     Serialization.writeMultiset(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     int distinctElements = Serialization.readCount(stream);
@@ -91,6 +87,6 @@ public final class HashMultiset<E extends @Nullable Object> extends AbstractMapB
     Serialization.populateMultiset(this, stream, distinctElements);
   }
 
-  @GwtIncompatible // Not needed in emulated source.
+  // Not needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/Hashing.java b/guava/src/com/google/common/collect/Hashing.java
index 81ef67e..1a130f9 100644
--- a/guava/src/com/google/common/collect/Hashing.java
+++ b/guava/src/com/google/common/collect/Hashing.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.primitives.Ints;
 import javax.annotation.CheckForNull;
 
@@ -27,7 +26,6 @@ import javax.annotation.CheckForNull;
  * @author Jesse Wilson
  * @author Austin Appleby
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class Hashing {
   private Hashing() {}
diff --git a/guava/src/com/google/common/collect/ImmutableAsList.java b/guava/src/com/google/common/collect/ImmutableAsList.java
index c397479..aa1f821 100644
--- a/guava/src/com/google/common/collect/ImmutableAsList.java
+++ b/guava/src/com/google/common/collect/ImmutableAsList.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
 import java.io.Serializable;
@@ -30,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial")
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableAsList<E> extends ImmutableList<E> {
@@ -59,7 +56,7 @@ abstract class ImmutableAsList<E> extends ImmutableList<E> {
   }
 
   /** Serialized form that leads to the same performance as the original list. */
-  @GwtIncompatible // serialization
+  // serialization
   static class SerializedForm implements Serializable {
     final ImmutableCollection<?> collection;
 
@@ -74,12 +71,12 @@ abstract class ImmutableAsList<E> extends ImmutableList<E> {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private void readObject(ObjectInputStream stream) throws InvalidObjectException {
     throw new InvalidObjectException("Use SerializedForm");
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   @Override
   Object writeReplace() {
     return new SerializedForm(delegateCollection());
diff --git a/guava/src/com/google/common/collect/ImmutableBiMap.java b/guava/src/com/google/common/collect/ImmutableBiMap.java
index 2f2e9ab..4cde905 100644
--- a/guava/src/com/google/common/collect/ImmutableBiMap.java
+++ b/guava/src/com/google/common/collect/ImmutableBiMap.java
@@ -18,13 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.Map;
@@ -32,7 +26,6 @@ import java.util.function.Function;
 import java.util.stream.Collector;
 import java.util.stream.Collectors;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link BiMap} whose contents will never change, with many other important properties detailed
@@ -41,7 +34,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<K, V>
     implements BiMap<K, V> {
@@ -58,7 +50,7 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableBiMap<K, V>> toImmutableBiMap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction) {
@@ -300,7 +292,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<
    *
    * @since 23.1
    */
-  @Beta
   public static <K, V> Builder<K, V> builderWithExpectedSize(int expectedSize) {
     checkNonnegative(expectedSize, "expectedSize");
     return new Builder<>(expectedSize);
@@ -350,7 +341,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<
      * Associates {@code key} with {@code value} in the built bimap. Duplicate keys or values are
      * not allowed, and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(K key, V value) {
       super.put(key, value);
@@ -363,7 +353,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<
      *
      * @since 19.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       super.put(entry);
@@ -376,7 +365,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<
      *
      * @throws NullPointerException if any key or value in {@code map} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(Map<? extends K, ? extends V> map) {
       super.putAll(map);
@@ -390,8 +378,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<
      * @throws NullPointerException if any key, value, or entry is null
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       super.putAll(entries);
@@ -408,8 +394,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<
      * @throws IllegalStateException if this method was already called
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     public Builder<K, V> orderEntriesByValue(Comparator<? super V> valueComparator) {
       super.orderEntriesByValue(valueComparator);
@@ -417,7 +401,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<
     }
 
     @Override
-    @CanIgnoreReturnValue
     Builder<K, V> combine(ImmutableMap.Builder<K, V> builder) {
       super.combine(builder);
       return this;
@@ -481,7 +464,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<
     }
 
     @Override
-    @VisibleForTesting
     ImmutableBiMap<K, V> buildJdkBacked() {
       checkState(
           valueComparator == null,
@@ -538,7 +520,6 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<
    * @throws NullPointerException if any key, value, or entry is null
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableBiMap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     @SuppressWarnings("unchecked") // we'll only be using getKey and getValue, which are covariant
@@ -588,10 +569,8 @@ public abstract class ImmutableBiMap<K, V> extends ImmutableBiMapFauxverideShim<
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final V forcePut(K key, V value) {
     throw new UnsupportedOperationException();
diff --git a/guava/src/com/google/common/collect/ImmutableBiMapFauxverideShim.java b/guava/src/com/google/common/collect/ImmutableBiMapFauxverideShim.java
index 2f1f25c..763d9e7 100644
--- a/guava/src/com/google/common/collect/ImmutableBiMapFauxverideShim.java
+++ b/guava/src/com/google/common/collect/ImmutableBiMapFauxverideShim.java
@@ -16,12 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.function.BinaryOperator;
 import java.util.function.Function;
 import java.util.stream.Collector;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * "Overrides" the {@link ImmutableMap} static methods that lack {@link ImmutableBiMap} equivalents
@@ -30,7 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableBiMapFauxverideShim<K, V> extends ImmutableMap<K, V> {
   /**
@@ -42,8 +38,7 @@ abstract class ImmutableBiMapFauxverideShim<K, V> extends ImmutableMap<K, V> {
    * @deprecated Use {@link ImmutableBiMap#toImmutableBiMap}.
    */
   @Deprecated
-  @DoNotCall("Use toImmutableBiMap")
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableMap<K, V>> toImmutableMap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction) {
@@ -59,8 +54,7 @@ abstract class ImmutableBiMapFauxverideShim<K, V> extends ImmutableMap<K, V> {
    * @deprecated
    */
   @Deprecated
-  @DoNotCall("Use toImmutableBiMap")
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableMap<K, V>> toImmutableMap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction,
diff --git a/guava/src/com/google/common/collect/ImmutableClassToInstanceMap.java b/guava/src/com/google/common/collect/ImmutableClassToInstanceMap.java
index aeabe5d..897aa7e 100644
--- a/guava/src/com/google/common/collect/ImmutableClassToInstanceMap.java
+++ b/guava/src/com/google/common/collect/ImmutableClassToInstanceMap.java
@@ -18,11 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Primitives;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.util.Map;
 import javax.annotation.CheckForNull;
@@ -34,8 +30,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@Immutable(containerOf = "B")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ImmutableClassToInstanceMap<B> extends ForwardingMap<Class<? extends B>, B>
     implements ClassToInstanceMap<B>, Serializable {
@@ -97,7 +91,6 @@ public final class ImmutableClassToInstanceMap<B> extends ForwardingMap<Class<?
      * Associates {@code key} with {@code value} in the built map. Duplicate keys are not allowed,
      * and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public <T extends B> Builder<B> put(Class<T> key, T value) {
       mapBuilder.put(key, value);
       return this;
@@ -110,7 +103,6 @@ public final class ImmutableClassToInstanceMap<B> extends ForwardingMap<Class<?
      * @throws NullPointerException if any key or value in {@code map} is null
      * @throws ClassCastException if any value is not an instance of the type specified by its key
      */
-    @CanIgnoreReturnValue
     public <T extends B> Builder<B> putAll(Map<? extends Class<? extends T>, ? extends T> map) {
       for (Entry<? extends Class<? extends T>, ? extends T> entry : map.entrySet()) {
         Class<? extends T> type = entry.getKey();
@@ -185,10 +177,8 @@ public final class ImmutableClassToInstanceMap<B> extends ForwardingMap<Class<?
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public <T extends B> T putInstance(Class<T> type, T value) {
     throw new UnsupportedOperationException();
diff --git a/guava/src/com/google/common/collect/ImmutableCollection.java b/guava/src/com/google/common/collect/ImmutableCollection.java
index 80fefb6..0f8cad1 100644
--- a/guava/src/com/google/common/collect/ImmutableCollection.java
+++ b/guava/src/com/google/common/collect/ImmutableCollection.java
@@ -18,10 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.Serializable;
 import java.util.AbstractCollection;
 import java.util.Collection;
@@ -33,7 +29,6 @@ import java.util.Spliterator;
 import java.util.Spliterators;
 import java.util.function.Predicate;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Collection} whose contents will never change, and which offers a few additional
@@ -160,8 +155,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 2.0
  */
-@DoNotMock("Use ImmutableList.of or another implementation")
-@GwtCompatible(emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 // TODO(kevinb): I think we should push everything down to "BaseImmutableCollection" or something,
@@ -193,7 +186,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
     return toArray(EMPTY_ARRAY);
   }
 
-  @CanIgnoreReturnValue
   @Override
   /*
    * This suppression is here for two reasons:
@@ -208,7 +200,7 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * nullness perspective. The signature below at least has the virtue of being relatively simple.
    */
   @SuppressWarnings("nullness")
-  public final <T extends @Nullable Object> T[] toArray(T[] other) {
+  public final <T extends Object> T[] toArray(T[] other) {
     checkNotNull(other);
     int size = size();
 
@@ -256,10 +248,8 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean add(E e) {
     throw new UnsupportedOperationException();
   }
@@ -270,10 +260,8 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean remove(@CheckForNull Object object) {
     throw new UnsupportedOperationException();
   }
@@ -284,10 +272,8 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean addAll(Collection<? extends E> newElements) {
     throw new UnsupportedOperationException();
   }
@@ -298,10 +284,8 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean removeAll(Collection<?> oldElements) {
     throw new UnsupportedOperationException();
   }
@@ -312,10 +296,8 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean removeIf(Predicate<? super E> filter) {
     throw new UnsupportedOperationException();
   }
@@ -328,7 +310,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean retainAll(Collection<?> elementsToKeep) {
     throw new UnsupportedOperationException();
   }
@@ -341,7 +322,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void clear() {
     throw new UnsupportedOperationException();
   }
@@ -379,7 +359,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    * Copies the contents of this immutable collection into the specified array at the specified
    * offset. Returns {@code offset + size()}.
    */
-  @CanIgnoreReturnValue
   int copyIntoArray(@Nullable Object[] dst, int offset) {
     for (E e : this) {
       dst[offset++] = e;
@@ -397,7 +376,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
    *
    * @since 10.0
    */
-  @DoNotMock
   public abstract static class Builder<E> {
     static final int DEFAULT_INITIAL_CAPACITY = 4;
 
@@ -428,7 +406,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
      * @return this {@code Builder} instance
      * @throws NullPointerException if {@code element} is null
      */
-    @CanIgnoreReturnValue
     public abstract Builder<E> add(E element);
 
     /**
@@ -441,7 +418,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
      * @return this {@code Builder} instance
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     public Builder<E> add(E... elements) {
       for (E element : elements) {
         add(element);
@@ -459,7 +435,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
      * @return this {@code Builder} instance
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     public Builder<E> addAll(Iterable<? extends E> elements) {
       for (E element : elements) {
         add(element);
@@ -477,7 +452,6 @@ public abstract class ImmutableCollection<E> extends AbstractCollection<E> imple
      * @return this {@code Builder} instance
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     public Builder<E> addAll(Iterator<? extends E> elements) {
       while (elements.hasNext()) {
         add(elements.next());
diff --git a/guava/src/com/google/common/collect/ImmutableEntry.java b/guava/src/com/google/common/collect/ImmutableEntry.java
index edc25f4..a844223 100644
--- a/guava/src/com/google/common/collect/ImmutableEntry.java
+++ b/guava/src/com/google/common/collect/ImmutableEntry.java
@@ -16,14 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** @see com.google.common.collect.Maps#immutableEntry(Object, Object) */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-class ImmutableEntry<K extends @Nullable Object, V extends @Nullable Object>
+class ImmutableEntry<K extends Object, V extends Object>
     extends AbstractMapEntry<K, V> implements Serializable {
   @ParametricNullness final K key;
   @ParametricNullness final V value;
diff --git a/guava/src/com/google/common/collect/ImmutableEnumMap.java b/guava/src/com/google/common/collect/ImmutableEnumMap.java
index d1e10f9..0073114 100644
--- a/guava/src/com/google/common/collect/ImmutableEnumMap.java
+++ b/guava/src/com/google/common/collect/ImmutableEnumMap.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap.IteratorBasedImmutableMap;
 import java.io.Serializable;
 import java.util.EnumMap;
 import java.util.Spliterator;
@@ -31,7 +29,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 final class ImmutableEnumMap<K extends Enum<K>, V> extends IteratorBasedImmutableMap<K, V> {
diff --git a/guava/src/com/google/common/collect/ImmutableEnumSet.java b/guava/src/com/google/common/collect/ImmutableEnumSet.java
index 32287bd..40b113f 100644
--- a/guava/src/com/google/common/collect/ImmutableEnumSet.java
+++ b/guava/src/com/google/common/collect/ImmutableEnumSet.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.EnumSet;
@@ -30,7 +28,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Jared Levy
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 final class ImmutableEnumSet<E extends Enum<E>> extends ImmutableSet<E> {
@@ -119,7 +116,7 @@ final class ImmutableEnumSet<E extends Enum<E>> extends ImmutableSet<E> {
     return true;
   }
 
-  @LazyInit private transient int hashCode;
+  private transient int hashCode;
 
   @Override
   public int hashCode() {
diff --git a/guava/src/com/google/common/collect/ImmutableList.java b/guava/src/com/google/common/collect/ImmutableList.java
index 115c022..a2282eb 100644
--- a/guava/src/com/google/common/collect/ImmutableList.java
+++ b/guava/src/com/google/common/collect/ImmutableList.java
@@ -22,15 +22,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.ObjectArrays.checkElementsNotNull;
-import static com.google.common.collect.RegularImmutableList.EMPTY;
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.InlineMe;
+
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
 import java.io.Serializable;
@@ -46,7 +38,6 @@ import java.util.function.Consumer;
 import java.util.function.UnaryOperator;
 import java.util.stream.Collector;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link List} whose contents will never change, with many other important properties detailed at
@@ -60,7 +51,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableList<E> extends ImmutableCollection<E>
@@ -506,10 +496,8 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean addAll(int index, Collection<? extends E> newElements) {
     throw new UnsupportedOperationException();
   }
@@ -520,10 +508,8 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final E set(int index, E element) {
     throw new UnsupportedOperationException();
   }
@@ -536,7 +522,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void add(int index, E element) {
     throw new UnsupportedOperationException();
   }
@@ -547,10 +532,8 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final E remove(int index) {
     throw new UnsupportedOperationException();
   }
@@ -563,7 +546,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void replaceAll(UnaryOperator<E> operator) {
     throw new UnsupportedOperationException();
   }
@@ -576,7 +558,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void sort(Comparator<? super E> c) {
     throw new UnsupportedOperationException();
   }
@@ -587,7 +568,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    * @since 2.0
    * @deprecated There is no reason to use this; it always returns {@code this}.
    */
-  @InlineMe(replacement = "this")
   @Deprecated
   @Override
   public final ImmutableList<E> asList() {
@@ -745,7 +725,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    *
    * @since 23.1
    */
-  @Beta
   public static <E> Builder<E> builderWithExpectedSize(int expectedSize) {
     checkNonnegative(expectedSize, "expectedSize");
     return new ImmutableList.Builder<E>(expectedSize);
@@ -773,7 +752,7 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
    */
   public static final class Builder<E> extends ImmutableCollection.Builder<E> {
     // The first `size` elements are non-null.
-    @VisibleForTesting @Nullable Object[] contents;
+    Object[] contents;
     private int size;
     private boolean forceCopy;
 
@@ -786,7 +765,7 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
     }
 
     Builder(int capacity) {
-      this.contents = new @Nullable Object[capacity];
+      this.contents = new Object[capacity];
       this.size = 0;
     }
 
@@ -807,7 +786,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code element} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E element) {
       checkNotNull(element);
@@ -823,7 +801,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E... elements) {
       checkElementsNotNull(elements);
@@ -852,7 +829,6 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterable<? extends E> elements) {
       checkNotNull(elements);
@@ -876,14 +852,12 @@ public abstract class ImmutableList<E> extends ImmutableCollection<E>
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterator<? extends E> elements) {
       super.addAll(elements);
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<E> combine(Builder<E> builder) {
       checkNotNull(builder);
       add(builder.contents, builder.size);
diff --git a/guava/src/com/google/common/collect/ImmutableListMultimap.java b/guava/src/com/google/common/collect/ImmutableListMultimap.java
index f847016..f40fff6 100644
--- a/guava/src/com/google/common/collect/ImmutableListMultimap.java
+++ b/guava/src/com/google/common/collect/ImmutableListMultimap.java
@@ -17,13 +17,6 @@
 package com.google.common.collect;
 
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
@@ -36,7 +29,6 @@ import java.util.function.Function;
 import java.util.stream.Collector;
 import java.util.stream.Stream;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link ListMultimap} whose contents will never change, with many other important properties
@@ -48,7 +40,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
 public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
     implements ListMultimap<K, V> {
@@ -80,7 +71,7 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableListMultimap<K, V>> toImmutableListMultimap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction) {
@@ -118,7 +109,7 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableListMultimap<K, V>> flatteningToImmutableListMultimap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends Stream<? extends V>> valuesFunction) {
@@ -219,7 +210,6 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
      */
     public Builder() {}
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(K key, V value) {
       super.put(key, value);
@@ -231,7 +221,6 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 11.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       super.put(entry);
@@ -243,36 +232,30 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       super.putAll(entries);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(K key, Iterable<? extends V> values) {
       super.putAll(key, values);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(K key, V... values) {
       super.putAll(key, values);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(Multimap<? extends K, ? extends V> multimap) {
       super.putAll(multimap);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     Builder<K, V> combine(ImmutableMultimap.Builder<K, V> other) {
       super.combine(other);
@@ -284,7 +267,6 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 8.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> orderKeysBy(Comparator<? super K> keyComparator) {
       super.orderKeysBy(keyComparator);
@@ -296,7 +278,6 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 8.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> orderValuesBy(Comparator<? super V> valueComparator) {
       super.orderValuesBy(valueComparator);
@@ -347,7 +328,6 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws NullPointerException if any key, value, or entry is null
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableListMultimap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     return new Builder<K, V>().putAll(entries).build();
@@ -398,7 +378,7 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
     return (list == null) ? ImmutableList.<V>of() : list;
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableListMultimap<V, K> inverse;
+  @CheckForNull private transient ImmutableListMultimap<V, K> inverse;
 
   /**
    * {@inheritDoc}
@@ -431,10 +411,8 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final ImmutableList<V> removeAll(@CheckForNull Object key) {
     throw new UnsupportedOperationException();
   }
@@ -445,10 +423,8 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final ImmutableList<V> replaceValues(K key, Iterable<? extends V> values) {
     throw new UnsupportedOperationException();
   }
@@ -457,13 +433,13 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
    * @serialData number of distinct keys, and then for each distinct key: the key, the number of
    *     values for that key, and the key's values
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     Serialization.writeMultimap(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     int keyCount = stream.readInt();
@@ -499,6 +475,6 @@ public class ImmutableListMultimap<K, V> extends ImmutableMultimap<K, V>
     FieldSettersHolder.SIZE_FIELD_SETTER.set(this, tmpSize);
   }
 
-  @GwtIncompatible // Not needed in emulated source
+  // Not needed in emulated source
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/ImmutableMap.java b/guava/src/com/google/common/collect/ImmutableMap.java
index 23335b2..98bd451 100644
--- a/guava/src/com/google/common/collect/ImmutableMap.java
+++ b/guava/src/com/google/common/collect/ImmutableMap.java
@@ -20,17 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.DoNotMock;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.WeakOuter;
+
 import java.io.Serializable;
 import java.util.AbstractMap;
 import java.util.Arrays;
@@ -49,7 +39,6 @@ import java.util.function.Function;
 import java.util.stream.Collector;
 import java.util.stream.Collectors;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Map} whose contents will never change, with many other important properties detailed at
@@ -62,8 +51,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@DoNotMock("Use ImmutableMap.of or another implementation")
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
@@ -80,7 +67,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableMap<K, V>> toImmutableMap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction) {
@@ -97,7 +84,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableMap<K, V>> toImmutableMap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction,
@@ -358,7 +345,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    *
    * @since 23.1
    */
-  @Beta
   public static <K, V> Builder<K, V> builderWithExpectedSize(int expectedSize) {
     checkNonnegative(expectedSize, "expectedSize");
     return new Builder<>(expectedSize);
@@ -406,10 +392,9 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    *
    * @since 2.0
    */
-  @DoNotMock
   public static class Builder<K, V> {
     @CheckForNull Comparator<? super V> valueComparator;
-    @Nullable Entry<K, V>[] entries;
+    Entry<K, V>[] entries;
     int size;
     boolean entriesUsed;
 
@@ -423,7 +408,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
 
     @SuppressWarnings({"unchecked", "rawtypes"})
     Builder(int initialCapacity) {
-      this.entries = new @Nullable Entry[initialCapacity];
+      this.entries = new Entry[initialCapacity];
       this.size = 0;
       this.entriesUsed = false;
     }
@@ -441,7 +426,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
      * Associates {@code key} with {@code value} in the built map. Duplicate keys are not allowed,
      * and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> put(K key, V value) {
       ensureCapacity(size + 1);
       Entry<K, V> entry = entryOf(key, value);
@@ -456,7 +440,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
      *
      * @since 11.0
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       return put(entry.getKey(), entry.getValue());
     }
@@ -467,7 +450,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
      *
      * @throws NullPointerException if any key or value in {@code map} is null
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> putAll(Map<? extends K, ? extends V> map) {
       return putAll(map.entrySet());
     }
@@ -479,8 +461,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
      * @throws NullPointerException if any key, value, or entry is null
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       if (entries instanceof Collection) {
         ensureCapacity(size + ((Collection<?>) entries).size());
@@ -501,15 +481,12 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
      * @throws IllegalStateException if this method was already called
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     public Builder<K, V> orderEntriesByValue(Comparator<? super V> valueComparator) {
       checkState(this.valueComparator == null, "valueComparator was already set");
       this.valueComparator = checkNotNull(valueComparator, "valueComparator");
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<K, V> combine(Builder<K, V> other) {
       checkNotNull(other);
       ensureCapacity(this.size + other.size);
@@ -575,7 +552,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
       }
     }
 
-    @VisibleForTesting // only for testing JDK backed implementation
+    // only for testing JDK backed implementation
     ImmutableMap<K, V> buildJdkBacked() {
       checkState(
           valueComparator == null, "buildJdkBacked is only for testing; can't use valueComparator");
@@ -628,7 +605,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    * @throws IllegalArgumentException if two entries have the same key
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableMap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     @SuppressWarnings("unchecked") // we'll only be using getKey and getValue, which are covariant
@@ -705,10 +681,8 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final V put(K k, V v) {
     throw new UnsupportedOperationException();
@@ -720,10 +694,8 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final V putIfAbsent(K key, V value) {
     throw new UnsupportedOperationException();
@@ -737,7 +709,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean replace(K key, V oldValue, V newValue) {
     throw new UnsupportedOperationException();
   }
@@ -751,7 +722,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
   @Deprecated
   @Override
   @CheckForNull
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final V replace(K key, V value) {
     throw new UnsupportedOperationException();
   }
@@ -764,7 +734,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
     throw new UnsupportedOperationException();
   }
@@ -777,7 +746,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final V computeIfPresent(
       K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
     throw new UnsupportedOperationException();
@@ -791,7 +759,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final V compute(
       K key, BiFunction<? super K, ? super @Nullable V, ? extends V> remappingFunction) {
     throw new UnsupportedOperationException();
@@ -805,7 +772,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final V merge(
       K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
     throw new UnsupportedOperationException();
@@ -819,7 +785,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void putAll(Map<? extends K, ? extends V> map) {
     throw new UnsupportedOperationException();
   }
@@ -832,7 +797,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {
     throw new UnsupportedOperationException();
   }
@@ -845,7 +809,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final V remove(@CheckForNull Object o) {
     throw new UnsupportedOperationException();
@@ -859,7 +822,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean remove(@CheckForNull Object key, @CheckForNull Object value) {
     throw new UnsupportedOperationException();
   }
@@ -872,7 +834,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void clear() {
     throw new UnsupportedOperationException();
   }
@@ -914,7 +875,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
     }
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableSet<Entry<K, V>> entrySet;
+  @CheckForNull private transient ImmutableSet<Entry<K, V>> entrySet;
 
   /**
    * Returns an immutable set of the mappings in this map. The iteration order is specified by the
@@ -928,7 +889,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
 
   abstract ImmutableSet<Entry<K, V>> createEntrySet();
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableSet<K> keySet;
+  @CheckForNull private transient ImmutableSet<K> keySet;
 
   /**
    * Returns an immutable set of the keys in this map, in the same order that they appear in {@link
@@ -966,7 +927,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
     return CollectSpliterators.map(entrySet().spliterator(), Entry::getKey);
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableCollection<V> values;
+  @CheckForNull private transient ImmutableCollection<V> values;
 
   /**
    * Returns an immutable collection of the values in this map, in the same order that they appear
@@ -986,7 +947,7 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
   abstract ImmutableCollection<V> createValues();
 
   // cached so that this.multimapView().inverse() only computes inverse once
-  @LazyInit @CheckForNull private transient ImmutableSetMultimap<K, V> multimapView;
+  @CheckForNull private transient ImmutableSetMultimap<K, V> multimapView;
 
   /**
    * Returns a multimap view of the map.
@@ -1004,7 +965,6 @@ public abstract class ImmutableMap<K, V> implements Map<K, V>, Serializable {
         : result;
   }
 
-  @WeakOuter
   private final class MapViewOfValuesAsSingletonSets
       extends IteratorBasedImmutableMap<K, ImmutableSet<V>> {
 
diff --git a/guava/src/com/google/common/collect/ImmutableMapEntry.java b/guava/src/com/google/common/collect/ImmutableMapEntry.java
index ac483d8..b33d524 100644
--- a/guava/src/com/google/common/collect/ImmutableMapEntry.java
+++ b/guava/src/com/google/common/collect/ImmutableMapEntry.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -32,7 +31,7 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible // unnecessary
+// unnecessary
 @ElementTypesAreNonnullByDefault
 class ImmutableMapEntry<K, V> extends ImmutableEntry<K, V> {
   /**
diff --git a/guava/src/com/google/common/collect/ImmutableMapEntrySet.java b/guava/src/com/google/common/collect/ImmutableMapEntrySet.java
index 6f5503a..c622177 100644
--- a/guava/src/com/google/common/collect/ImmutableMapEntrySet.java
+++ b/guava/src/com/google/common/collect/ImmutableMapEntrySet.java
@@ -16,14 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.Map.Entry;
 import java.util.Spliterator;
 import java.util.function.Consumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * {@code entrySet()} implementation for {@link ImmutableMap}.
@@ -31,7 +28,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jesse Wilson
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableMapEntrySet<K, V> extends ImmutableSet.CachingAsList<Entry<K, V>> {
   static final class RegularEntrySet<K, V> extends ImmutableMapEntrySet<K, V> {
@@ -53,7 +49,6 @@ abstract class ImmutableMapEntrySet<K, V> extends ImmutableSet.CachingAsList<Ent
     }
 
     @Override
-    @GwtIncompatible("not used in GWT")
     int copyIntoArray(@Nullable Object[] dst, int offset) {
       return entries.copyIntoArray(dst, offset);
     }
@@ -104,7 +99,7 @@ abstract class ImmutableMapEntrySet<K, V> extends ImmutableSet.CachingAsList<Ent
   }
 
   @Override
-  @GwtIncompatible // not used in GWT
+  // not used in GWT
   boolean isHashCodeFast() {
     return map().isHashCodeFast();
   }
@@ -114,13 +109,13 @@ abstract class ImmutableMapEntrySet<K, V> extends ImmutableSet.CachingAsList<Ent
     return map().hashCode();
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   @Override
   Object writeReplace() {
     return new EntrySetSerializedForm<>(map());
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static class EntrySetSerializedForm<K, V> implements Serializable {
     final ImmutableMap<K, V> map;
 
diff --git a/guava/src/com/google/common/collect/ImmutableMapKeySet.java b/guava/src/com/google/common/collect/ImmutableMapKeySet.java
index d10ee10..01e7e38 100644
--- a/guava/src/com/google/common/collect/ImmutableMapKeySet.java
+++ b/guava/src/com/google/common/collect/ImmutableMapKeySet.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.Spliterator;
 import java.util.function.Consumer;
@@ -31,7 +29,6 @@ import javax.annotation.CheckForNull;
  * @author Jesse Wilson
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class ImmutableMapKeySet<K, V> extends IndexedImmutableSet<K> {
   private final ImmutableMap<K, V> map;
@@ -77,7 +74,7 @@ final class ImmutableMapKeySet<K, V> extends IndexedImmutableSet<K> {
   }
 
   // No longer used for new writes, but kept so that old data can still be read.
-  @GwtIncompatible // serialization
+  // serialization
   @SuppressWarnings("unused")
   private static class KeySetSerializedForm<K> implements Serializable {
     final ImmutableMap<K, ?> map;
diff --git a/guava/src/com/google/common/collect/ImmutableMapValues.java b/guava/src/com/google/common/collect/ImmutableMapValues.java
index 702191c..531aaa4 100644
--- a/guava/src/com/google/common/collect/ImmutableMapValues.java
+++ b/guava/src/com/google/common/collect/ImmutableMapValues.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.Map.Entry;
 import java.util.Spliterator;
@@ -32,7 +30,6 @@ import javax.annotation.CheckForNull;
  * @author Jesse Wilson
  * @author Kevin Bourrillion
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class ImmutableMapValues<K, V> extends ImmutableCollection<V> {
   private final ImmutableMap<K, V> map;
@@ -94,7 +91,7 @@ final class ImmutableMapValues<K, V> extends ImmutableCollection<V> {
     };
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   @Override
   public void forEach(Consumer<? super V> action) {
     checkNotNull(action);
@@ -102,7 +99,7 @@ final class ImmutableMapValues<K, V> extends ImmutableCollection<V> {
   }
 
   // No longer used for new writes, but kept so that old data can still be read.
-  @GwtIncompatible // serialization
+  // serialization
   @SuppressWarnings("unused")
   private static class SerializedForm<V> implements Serializable {
     final ImmutableMap<?, V> map;
diff --git a/guava/src/com/google/common/collect/ImmutableMultimap.java b/guava/src/com/google/common/collect/ImmutableMultimap.java
index 5dfbb9b..b158a6c 100644
--- a/guava/src/com/google/common/collect/ImmutableMultimap.java
+++ b/guava/src/com/google/common/collect/ImmutableMultimap.java
@@ -19,16 +19,7 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
 import static com.google.common.collect.Maps.immutableEntry;
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.DoNotMock;
-import com.google.j2objc.annotations.Weak;
-import com.google.j2objc.annotations.WeakOuter;
+
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -41,7 +32,6 @@ import java.util.Set;
 import java.util.Spliterator;
 import java.util.function.BiConsumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Multimap} whose contents will never change, with many other important properties
@@ -69,7 +59,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V>
     implements Serializable {
@@ -147,7 +136,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    *
    * @since 2.0
    */
-  @DoNotMock
   public static class Builder<K, V> {
     final Map<K, Collection<V>> builderMap;
     @CheckForNull Comparator<? super K> keyComparator;
@@ -166,7 +154,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
     }
 
     /** Adds a key-value mapping to the built multimap. */
-    @CanIgnoreReturnValue
     public Builder<K, V> put(K key, V value) {
       checkEntryNotNull(key, value);
       Collection<V> valueCollection = builderMap.get(key);
@@ -182,7 +169,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      *
      * @since 11.0
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       return put(entry.getKey(), entry.getValue());
     }
@@ -192,8 +178,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      *
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       for (Entry<? extends K, ? extends V> entry : entries) {
         put(entry);
@@ -207,7 +191,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      * @throws NullPointerException if {@code key}, {@code values}, or any element in {@code values}
      *     is null. The builder is left in an invalid state.
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> putAll(K key, Iterable<? extends V> values) {
       if (key == null) {
         throw new NullPointerException("null key in entry: null=" + Iterables.toString(values));
@@ -240,7 +223,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      * @throws NullPointerException if the key or any value is null. The builder is left in an
      *     invalid state.
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> putAll(K key, V... values) {
       return putAll(key, Arrays.asList(values));
     }
@@ -253,7 +235,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      * @throws NullPointerException if any key or value in {@code multimap} is null. The builder is
      *     left in an invalid state.
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> putAll(Multimap<? extends K, ? extends V> multimap) {
       for (Entry<? extends K, ? extends Collection<? extends V>> entry :
           multimap.asMap().entrySet()) {
@@ -267,7 +248,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      *
      * @since 8.0
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> orderKeysBy(Comparator<? super K> keyComparator) {
       this.keyComparator = checkNotNull(keyComparator);
       return this;
@@ -278,13 +258,11 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
      *
      * @since 8.0
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> orderValuesBy(Comparator<? super V> valueComparator) {
       this.valueComparator = checkNotNull(valueComparator);
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<K, V> combine(Builder<K, V> other) {
       for (Map.Entry<K, Collection<V>> entry : other.builderMap.entrySet()) {
         putAll(entry.getKey(), entry.getValue());
@@ -331,7 +309,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws NullPointerException if any key, value, or entry is null
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableMultimap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     return ImmutableListMultimap.copyOf(entries);
@@ -343,7 +320,7 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
   // These constants allow the deserialization code to set final fields. This
   // holder class makes sure they are not initialized unless an instance is
   // deserialized.
-  @GwtIncompatible // java serialization is not supported
+  // java serialization is not supported
   static class FieldSettersHolder {
     static final Serialization.FieldSetter<ImmutableMultimap> MAP_FIELD_SETTER =
         Serialization.getFieldSetter(ImmutableMultimap.class, "map");
@@ -364,10 +341,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   // DoNotCall wants this to be final, but we want to override it to return more specific types.
   // Inheritance is closed, and all subtypes are @DoNotCall, so this is safe to suppress.
   @SuppressWarnings("DoNotCall")
@@ -381,10 +356,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   // DoNotCall wants this to be final, but we want to override it to return more specific types.
   // Inheritance is closed, and all subtypes are @DoNotCall, so this is safe to suppress.
   @SuppressWarnings("DoNotCall")
@@ -400,7 +373,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void clear() {
     throw new UnsupportedOperationException();
   }
@@ -427,10 +399,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean put(K key, V value) {
     throw new UnsupportedOperationException();
   }
@@ -441,10 +411,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean putAll(K key, Iterable<? extends V> values) {
     throw new UnsupportedOperationException();
   }
@@ -455,10 +423,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean putAll(Multimap<? extends K, ? extends V> multimap) {
     throw new UnsupportedOperationException();
   }
@@ -469,10 +435,8 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean remove(@CheckForNull Object key, @CheckForNull Object value) {
     throw new UnsupportedOperationException();
   }
@@ -547,7 +511,7 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
   }
 
   private static class EntryCollection<K, V> extends ImmutableCollection<Entry<K, V>> {
-    @Weak final ImmutableMultimap<K, V> multimap;
+    final ImmutableMultimap<K, V> multimap;
 
     EntryCollection(ImmutableMultimap<K, V> multimap) {
       this.multimap = multimap;
@@ -647,7 +611,6 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
   }
 
   @SuppressWarnings("serial") // Uses writeReplace, not default serialization
-  @WeakOuter
   class Keys extends ImmutableMultiset<K> {
     @Override
     public boolean contains(@CheckForNull Object object) {
@@ -681,14 +644,12 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
       return true;
     }
 
-    @GwtIncompatible
     @Override
     Object writeReplace() {
       return new KeysSerializedForm(ImmutableMultimap.this);
     }
   }
 
-  @GwtIncompatible
   private static final class KeysSerializedForm implements Serializable {
     final ImmutableMultimap<?, ?> multimap;
 
@@ -737,7 +698,7 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
   }
 
   private static final class Values<K, V> extends ImmutableCollection<V> {
-    @Weak private final transient ImmutableMultimap<K, V> multimap;
+    private final transient ImmutableMultimap<K, V> multimap;
 
     Values(ImmutableMultimap<K, V> multimap) {
       this.multimap = multimap;
@@ -753,7 +714,7 @@ public abstract class ImmutableMultimap<K, V> extends BaseImmutableMultimap<K, V
       return multimap.valueIterator();
     }
 
-    @GwtIncompatible // not present in emulated superclass
+    // not present in emulated superclass
     @Override
     int copyIntoArray(@Nullable Object[] dst, int offset) {
       for (ImmutableCollection<V> valueCollection : multimap.map.values()) {
diff --git a/guava/src/com/google/common/collect/ImmutableMultiset.java b/guava/src/com/google/common/collect/ImmutableMultiset.java
index f397a49..a63bb97 100644
--- a/guava/src/com/google/common/collect/ImmutableMultiset.java
+++ b/guava/src/com/google/common/collect/ImmutableMultiset.java
@@ -17,15 +17,7 @@
 package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.WeakOuter;
+
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Collection;
@@ -36,7 +28,6 @@ import java.util.function.Function;
 import java.util.function.ToIntFunction;
 import java.util.stream.Collector;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Multiset} whose contents will never change, with many other important properties
@@ -53,7 +44,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializationDependencies<E>
@@ -81,7 +71,7 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
    *
    * @since 22.0
    */
-  public static <T extends @Nullable Object, E>
+  public static <T extends Object, E>
       Collector<T, ?, ImmutableMultiset<E>> toImmutableMultiset(
           Function<? super T, ? extends E> elementFunction,
           ToIntFunction<? super T> countFunction) {
@@ -254,7 +244,7 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
     };
   }
 
-  @LazyInit @CheckForNull private transient ImmutableList<E> asList;
+  @CheckForNull private transient ImmutableList<E> asList;
 
   @Override
   public ImmutableList<E> asList() {
@@ -273,10 +263,8 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final int add(E element, int occurrences) {
     throw new UnsupportedOperationException();
   }
@@ -287,10 +275,8 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final int remove(@CheckForNull Object element, int occurrences) {
     throw new UnsupportedOperationException();
   }
@@ -301,10 +287,8 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final int setCount(E element, int count) {
     throw new UnsupportedOperationException();
   }
@@ -315,15 +299,13 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final boolean setCount(E element, int oldCount, int newCount) {
     throw new UnsupportedOperationException();
   }
 
-  @GwtIncompatible // not present in emulated superclass
+  // not present in emulated superclass
   @Override
   int copyIntoArray(Object[] dst, int offset) {
     for (Multiset.Entry<E> entry : entrySet()) {
@@ -352,7 +334,7 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
   @Override
   public abstract ImmutableSet<E> elementSet();
 
-  @LazyInit @CheckForNull private transient ImmutableSet<Entry<E>> entrySet;
+  @CheckForNull private transient ImmutableSet<Entry<E>> entrySet;
 
   @Override
   public ImmutableSet<Entry<E>> entrySet() {
@@ -366,7 +348,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
 
   abstract Entry<E> getEntry(int index);
 
-  @WeakOuter
   private final class EntrySet extends IndexedImmutableSet<Entry<E>> {
     @Override
     boolean isPartialView() {
@@ -401,7 +382,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
       return ImmutableMultiset.this.hashCode();
     }
 
-    @GwtIncompatible
     @Override
     Object writeReplace() {
       return new EntrySetSerializedForm<E>(ImmutableMultiset.this);
@@ -410,7 +390,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible
   static class EntrySetSerializedForm<E> implements Serializable {
     final ImmutableMultiset<E> multiset;
 
@@ -423,7 +402,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
     }
   }
 
-  @GwtIncompatible
   @Override
   Object writeReplace() {
     return new SerializedForm(this);
@@ -478,7 +456,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code element} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E element) {
       contents.add(checkNotNull(element));
@@ -492,7 +469,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E... elements) {
       super.add(elements);
@@ -510,7 +486,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @throws IllegalArgumentException if {@code occurrences} is negative, or if this operation
      *     would result in more than {@link Integer#MAX_VALUE} occurrences of the element
      */
-    @CanIgnoreReturnValue
     public Builder<E> addCopies(E element, int occurrences) {
       contents.add(checkNotNull(element), occurrences);
       return this;
@@ -526,7 +501,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @throws NullPointerException if {@code element} is null
      * @throws IllegalArgumentException if {@code count} is negative
      */
-    @CanIgnoreReturnValue
     public Builder<E> setCount(E element, int count) {
       contents.setCount(checkNotNull(element), count);
       return this;
@@ -539,7 +513,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterable<? extends E> elements) {
       if (elements instanceof Multiset) {
@@ -558,7 +531,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterator<? extends E> elements) {
       super.addAll(elements);
@@ -574,7 +546,6 @@ public abstract class ImmutableMultiset<E> extends ImmutableMultisetGwtSerializa
       return copyOf(contents);
     }
 
-    @VisibleForTesting
     ImmutableMultiset<E> buildJdkBacked() {
       if (contents.isEmpty()) {
         return of();
diff --git a/guava/src/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java b/guava/src/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java
index 2469a18..3eb8232 100644
--- a/guava/src/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java
+++ b/guava/src/com/google/common/collect/ImmutableMultisetGwtSerializationDependencies.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * A dummy superclass to support GWT serialization of the element type of an {@link
@@ -36,6 +35,5 @@ import com.google.common.annotations.GwtCompatible;
  * anyway, since it doesn't require us to declare dummy methods (though occasionally constructors)
  * and make types non-final.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableMultisetGwtSerializationDependencies<E> extends ImmutableCollection<E> {}
diff --git a/guava/src/com/google/common/collect/ImmutableRangeMap.java b/guava/src/com/google/common/collect/ImmutableRangeMap.java
index e1979ab..4f80db7 100644
--- a/guava/src/com/google/common/collect/ImmutableRangeMap.java
+++ b/guava/src/com/google/common/collect/ImmutableRangeMap.java
@@ -18,13 +18,8 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.SortedLists.KeyAbsentBehavior;
 import com.google.common.collect.SortedLists.KeyPresentBehavior;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.Serializable;
 import java.util.Collections;
 import java.util.List;
@@ -35,7 +30,6 @@ import java.util.function.BiFunction;
 import java.util.function.Function;
 import java.util.stream.Collector;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link RangeMap} whose contents will never change, with many other important properties
@@ -44,8 +38,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@GwtIncompatible // NavigableMap
+// NavigableMap
 @ElementTypesAreNonnullByDefault
 public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K, V>, Serializable {
 
@@ -58,7 +51,7 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    *
    * @since 23.1
    */
-  public static <T extends @Nullable Object, K extends Comparable<? super K>, V>
+  public static <T extends Object, K extends Comparable<? super K>, V>
       Collector<T, ?, ImmutableRangeMap<K, V>> toImmutableRangeMap(
           Function<? super T, Range<K>> keyFunction,
           Function<? super T, ? extends V> valueFunction) {
@@ -106,7 +99,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    *
    * @since 14.0
    */
-  @DoNotMock
   public static final class Builder<K extends Comparable<?>, V> {
     private final List<Entry<Range<K>, V>> entries;
 
@@ -119,7 +111,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
      *
      * @throws IllegalArgumentException if {@code range} is empty
      */
-    @CanIgnoreReturnValue
     public Builder<K, V> put(Range<K> range, V value) {
       checkNotNull(range);
       checkNotNull(value);
@@ -129,7 +120,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
     }
 
     /** Copies all associations from the specified range map into this builder. */
-    @CanIgnoreReturnValue
     public Builder<K, V> putAll(RangeMap<K, ? extends V> rangeMap) {
       for (Entry<Range<K>, ? extends V> entry : rangeMap.asMapOfRanges().entrySet()) {
         put(entry.getKey(), entry.getValue());
@@ -137,7 +127,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<K, V> combine(Builder<K, V> builder) {
       entries.addAll(builder.entries);
       return this;
@@ -231,7 +220,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void put(Range<K> range, V value) {
     throw new UnsupportedOperationException();
   }
@@ -244,7 +232,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void putCoalescing(Range<K> range, V value) {
     throw new UnsupportedOperationException();
   }
@@ -257,7 +244,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void putAll(RangeMap<K, V> rangeMap) {
     throw new UnsupportedOperationException();
   }
@@ -270,7 +256,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void clear() {
     throw new UnsupportedOperationException();
   }
@@ -283,7 +268,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void remove(Range<K> range) {
     throw new UnsupportedOperationException();
   }
@@ -296,7 +280,6 @@ public class ImmutableRangeMap<K extends Comparable<?>, V> implements RangeMap<K
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void merge(
       Range<K> range,
       @CheckForNull V value,
diff --git a/guava/src/com/google/common/collect/ImmutableRangeSet.java b/guava/src/com/google/common/collect/ImmutableRangeSet.java
index f279aae..1bcd9a7 100644
--- a/guava/src/com/google/common/collect/ImmutableRangeSet.java
+++ b/guava/src/com/google/common/collect/ImmutableRangeSet.java
@@ -20,16 +20,10 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.SortedLists.KeyAbsentBehavior.NEXT_HIGHER;
 import static com.google.common.collect.SortedLists.KeyAbsentBehavior.NEXT_LOWER;
 import static com.google.common.collect.SortedLists.KeyPresentBehavior.ANY_PRESENT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.SortedLists.KeyAbsentBehavior;
 import com.google.common.collect.SortedLists.KeyPresentBehavior;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.io.Serializable;
 import java.util.Collections;
 import java.util.Iterator;
@@ -46,8 +40,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ImmutableRangeSet<C extends Comparable> extends AbstractRangeSet<C>
     implements Serializable {
@@ -226,7 +218,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void add(Range<C> range) {
     throw new UnsupportedOperationException();
   }
@@ -239,7 +230,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void addAll(RangeSet<C> other) {
     throw new UnsupportedOperationException();
   }
@@ -252,7 +242,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void addAll(Iterable<Range<C>> other) {
     throw new UnsupportedOperationException();
   }
@@ -265,7 +254,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void remove(Range<C> range) {
     throw new UnsupportedOperationException();
   }
@@ -278,7 +266,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void removeAll(RangeSet<C> other) {
     throw new UnsupportedOperationException();
   }
@@ -291,7 +278,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void removeAll(Iterable<Range<C>> other) {
     throw new UnsupportedOperationException();
   }
@@ -312,7 +298,7 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
     return new RegularImmutableSortedSet<>(ranges.reverse(), Range.<C>rangeLexOrdering().reverse());
   }
 
-  @LazyInit @CheckForNull private transient ImmutableRangeSet<C> complement;
+  @CheckForNull private transient ImmutableRangeSet<C> complement;
 
   private final class ComplementRanges extends ImmutableList<Range<C>> {
     // True if the "positive" range set is empty or bounded below.
@@ -595,7 +581,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
     }
 
     @Override
-    @GwtIncompatible("NavigableSet")
     public UnmodifiableIterator<C> descendingIterator() {
       return new AbstractIterator<C>() {
         final Iterator<Range<C>> rangeItr = ranges.reverse().iterator();
@@ -744,7 +729,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
      *
      * @throws IllegalArgumentException if {@code range} is empty
      */
-    @CanIgnoreReturnValue
     public Builder<C> add(Range<C> range) {
       checkArgument(!range.isEmpty(), "range must not be empty, but was %s", range);
       ranges.add(range);
@@ -756,7 +740,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
      * and will be merged, but overlapping ranges will cause an exception when {@link #build()} is
      * called.
      */
-    @CanIgnoreReturnValue
     public Builder<C> addAll(RangeSet<C> ranges) {
       return addAll(ranges.asRanges());
     }
@@ -768,7 +751,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
      * @throws IllegalArgumentException if any inserted ranges are empty
      * @since 21.0
      */
-    @CanIgnoreReturnValue
     public Builder<C> addAll(Iterable<Range<C>> ranges) {
       for (Range<C> range : ranges) {
         add(range);
@@ -776,7 +758,6 @@ public final class ImmutableRangeSet<C extends Comparable> extends AbstractRange
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<C> combine(Builder<C> builder) {
       addAll(builder.ranges);
       return this;
diff --git a/guava/src/com/google/common/collect/ImmutableSet.java b/guava/src/com/google/common/collect/ImmutableSet.java
index 73d5b09..00c7dcf 100644
--- a/guava/src/com/google/common/collect/ImmutableSet.java
+++ b/guava/src/com/google/common/collect/ImmutableSet.java
@@ -19,16 +19,9 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.math.IntMath;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
 import java.io.Serializable;
 import java.math.RoundingMode;
 import java.util.Arrays;
@@ -42,7 +35,6 @@ import java.util.Spliterator;
 import java.util.function.Consumer;
 import java.util.stream.Collector;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Set} whose contents will never change, with many other important properties detailed at
@@ -50,7 +42,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements Set<E> {
@@ -335,9 +326,8 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
   @Override
   public abstract UnmodifiableIterator<E> iterator();
 
-  @GwtCompatible
   abstract static class CachingAsList<E> extends ImmutableSet<E> {
-    @LazyInit @RetainedWith @CheckForNull private transient ImmutableList<E> asList;
+    @CheckForNull private transient ImmutableList<E> asList;
 
     @Override
     public ImmutableList<E> asList() {
@@ -443,7 +433,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
    *
    * @since 23.1
    */
-  @Beta
   public static <E> Builder<E> builderWithExpectedSize(int expectedSize) {
     checkNonnegative(expectedSize, "expectedSize");
     return new Builder<E>(expectedSize);
@@ -492,7 +481,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
       this.impl = null; // unused
     }
 
-    @VisibleForTesting
     void forceJdk() {
       requireNonNull(impl); // see the comment on the field
       this.impl = new JdkBackedSetBuilderImpl<E>(impl);
@@ -511,7 +499,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
     }
 
     @Override
-    @CanIgnoreReturnValue
     public Builder<E> add(E element) {
       requireNonNull(impl); // see the comment on the field
       checkNotNull(element);
@@ -521,7 +508,6 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
     }
 
     @Override
-    @CanIgnoreReturnValue
     public Builder<E> add(E... elements) {
       super.add(elements);
       return this;
@@ -536,14 +522,12 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
     @Override
-    @CanIgnoreReturnValue
     public Builder<E> addAll(Iterable<? extends E> elements) {
       super.addAll(elements);
       return this;
     }
 
     @Override
-    @CanIgnoreReturnValue
     public Builder<E> addAll(Iterator<? extends E> elements) {
       super.addAll(elements);
       return this;
@@ -717,7 +701,7 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
    */
   private static final class RegularSetBuilderImpl<E> extends SetBuilderImpl<E> {
     // null until at least two elements are present
-    private @Nullable Object @Nullable [] hashTable;
+    private Object [] hashTable;
     private int maxRunBeforeFallback;
     private int expandTableThreshold;
     private int hashCode;
@@ -822,8 +806,8 @@ public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements
     }
 
     /** Builds a new open-addressed hash table from the first n objects in elements. */
-    static @Nullable Object[] rebuildHashTable(int newTableSize, Object[] elements, int n) {
-      @Nullable Object[] hashTable = new @Nullable Object[newTableSize];
+    static Object[] rebuildHashTable(int newTableSize, Object[] elements, int n) {
+      Object[] hashTable = new Object[newTableSize];
       int mask = hashTable.length - 1;
       for (int i = 0; i < n; i++) {
         // requireNonNull is safe because we ensure that the first n elements have been populated.
diff --git a/guava/src/com/google/common/collect/ImmutableSetMultimap.java b/guava/src/com/google/common/collect/ImmutableSetMultimap.java
index 007c16b..4e87350 100644
--- a/guava/src/com/google/common/collect/ImmutableSetMultimap.java
+++ b/guava/src/com/google/common/collect/ImmutableSetMultimap.java
@@ -18,15 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.MoreObjects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.Weak;
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
@@ -40,7 +32,6 @@ import java.util.function.Function;
 import java.util.stream.Collector;
 import java.util.stream.Stream;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link SetMultimap} whose contents will never change, with many other important properties
@@ -56,7 +47,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mike Ward
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
 public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
     implements SetMultimap<K, V> {
@@ -88,7 +78,7 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableSetMultimap<K, V>> toImmutableSetMultimap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction) {
@@ -135,7 +125,7 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableSetMultimap<K, V>> flatteningToImmutableSetMultimap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends Stream<? extends V>> valuesFunction) {
@@ -253,7 +243,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
     }
 
     /** Adds a key-value mapping to the built multimap if it is not already present. */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(K key, V value) {
       super.put(key, value);
@@ -265,7 +254,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 11.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       super.put(entry);
@@ -277,28 +265,23 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       super.putAll(entries);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(K key, Iterable<? extends V> values) {
       super.putAll(key, values);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(K key, V... values) {
       return putAll(key, Arrays.asList(values));
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(Multimap<? extends K, ? extends V> multimap) {
       for (Entry<? extends K, ? extends Collection<? extends V>> entry :
@@ -308,7 +291,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     Builder<K, V> combine(ImmutableMultimap.Builder<K, V> other) {
       super.combine(other);
@@ -320,7 +302,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
      *
      * @since 8.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> orderKeysBy(Comparator<? super K> keyComparator) {
       super.orderKeysBy(keyComparator);
@@ -338,7 +319,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
      * @since 8.0
      */
     // TODO: Make serialization behavior consistent.
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> orderValuesBy(Comparator<? super V> valueComparator) {
       super.orderValuesBy(valueComparator);
@@ -401,7 +381,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws NullPointerException if any key, value, or entry is null
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableSetMultimap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     return new Builder<K, V>().putAll(entries).build();
@@ -459,7 +438,7 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
     return MoreObjects.firstNonNull(set, emptySet);
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableSetMultimap<V, K> inverse;
+  @CheckForNull private transient ImmutableSetMultimap<V, K> inverse;
 
   /**
    * {@inheritDoc}
@@ -490,10 +469,8 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final ImmutableSet<V> removeAll(@CheckForNull Object key) {
     throw new UnsupportedOperationException();
   }
@@ -504,15 +481,13 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final ImmutableSet<V> replaceValues(K key, Iterable<? extends V> values) {
     throw new UnsupportedOperationException();
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableSet<Entry<K, V>> entries;
+  @CheckForNull private transient ImmutableSet<Entry<K, V>> entries;
 
   /**
    * Returns an immutable collection of all key-value pairs in the multimap. Its iterator traverses
@@ -525,7 +500,7 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
   }
 
   private static final class EntrySet<K, V> extends ImmutableSet<Entry<K, V>> {
-    @Weak private final transient ImmutableSetMultimap<K, V> multimap;
+    private final transient ImmutableSetMultimap<K, V> multimap;
 
     EntrySet(ImmutableSetMultimap<K, V> multimap) {
       this.multimap = multimap;
@@ -580,7 +555,7 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
    * @serialData number of distinct keys, and then for each distinct key: the key, the number of
    *     values for that key, and the key's values
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(valueComparator());
@@ -594,13 +569,13 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
         : null;
   }
 
-  @GwtIncompatible // java serialization
+  // java serialization
   private static final class SetFieldSettersHolder {
     static final Serialization.FieldSetter<ImmutableSetMultimap> EMPTY_SET_FIELD_SETTER =
         Serialization.getFieldSetter(ImmutableSetMultimap.class, "emptySet");
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   // Serialization type safety is at the caller's mercy.
   @SuppressWarnings("unchecked")
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
@@ -644,6 +619,6 @@ public class ImmutableSetMultimap<K, V> extends ImmutableMultimap<K, V>
     SetFieldSettersHolder.EMPTY_SET_FIELD_SETTER.set(this, emptySet(valueComparator));
   }
 
-  @GwtIncompatible // not needed in emulated source.
+  // not needed in emulated source.
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/ImmutableSortedAsList.java b/guava/src/com/google/common/collect/ImmutableSortedAsList.java
index 30f19a0..350f8f8 100644
--- a/guava/src/com/google/common/collect/ImmutableSortedAsList.java
+++ b/guava/src/com/google/common/collect/ImmutableSortedAsList.java
@@ -14,8 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Comparator;
 import java.util.Spliterator;
 import javax.annotation.CheckForNull;
@@ -26,7 +24,6 @@ import javax.annotation.CheckForNull;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("serial")
 @ElementTypesAreNonnullByDefault
 final class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>
@@ -47,7 +44,7 @@ final class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>
 
   // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).
 
-  @GwtIncompatible // ImmutableSortedSet.indexOf
+  // ImmutableSortedSet.indexOf
   // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup
   @Override
   public int indexOf(@CheckForNull Object target) {
@@ -61,7 +58,7 @@ final class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>
     return (index >= 0 && get(index).equals(target)) ? index : -1;
   }
 
-  @GwtIncompatible // ImmutableSortedSet.indexOf
+  // ImmutableSortedSet.indexOf
   @Override
   public int lastIndexOf(@CheckForNull Object target) {
     return indexOf(target);
@@ -73,7 +70,7 @@ final class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>
     return indexOf(target) >= 0;
   }
 
-  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow
+  // super.subListUnchecked does not exist; inherited subList is valid if slow
   /*
    * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to
    * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not
diff --git a/guava/src/com/google/common/collect/ImmutableSortedMap.java b/guava/src/com/google/common/collect/ImmutableSortedMap.java
index c4b59c8..1a3de75 100644
--- a/guava/src/com/google/common/collect/ImmutableSortedMap.java
+++ b/guava/src/com/google/common/collect/ImmutableSortedMap.java
@@ -20,12 +20,7 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
 import static com.google.common.collect.Maps.keyOrNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.AbstractMap;
 import java.util.Arrays;
 import java.util.Comparator;
@@ -41,7 +36,6 @@ import java.util.function.Function;
 import java.util.stream.Collector;
 import java.util.stream.Collectors;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link NavigableMap} whose contents will never change, with many other important properties
@@ -60,7 +54,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0 (implements {@code NavigableMap} since 12.0)
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxverideShim<K, V>
     implements NavigableMap<K, V> {
@@ -76,7 +69,7 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableSortedMap<K, V>> toImmutableSortedMap(
           Comparator<? super K> comparator,
           Function<? super T, ? extends K> keyFunction,
@@ -95,7 +88,7 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableSortedMap<K, V>> toImmutableSortedMap(
           Comparator<? super K> comparator,
           Function<? super T, ? extends K> keyFunction,
@@ -403,7 +396,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
    * @throws IllegalArgumentException if any two keys are equal according to the comparator
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableSortedMap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries) {
     // Hack around K not being a subtype of Comparable.
@@ -421,7 +413,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
    * @throws IllegalArgumentException if any two keys are equal according to the comparator
    * @since 19.0
    */
-  @Beta
   public static <K, V> ImmutableSortedMap<K, V> copyOf(
       Iterable<? extends Entry<? extends K, ? extends V>> entries,
       Comparator<? super K> comparator) {
@@ -635,7 +626,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
      * comparator (which might be the keys' natural order), are not allowed, and will cause {@link
      * #build} to fail.
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(K key, V value) {
       super.put(key, value);
@@ -649,7 +639,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
      *
      * @since 11.0
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> put(Entry<? extends K, ? extends V> entry) {
       super.put(entry);
@@ -663,7 +652,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
      *
      * @throws NullPointerException if any key or value in {@code map} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<K, V> putAll(Map<? extends K, ? extends V> map) {
       super.putAll(map);
@@ -678,8 +666,6 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
      * @throws NullPointerException if any key, value, or entry is null
      * @since 19.0
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     public Builder<K, V> putAll(Iterable<? extends Entry<? extends K, ? extends V>> entries) {
       super.putAll(entries);
@@ -692,11 +678,8 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
      * @since 19.0
      * @deprecated Unsupported by ImmutableSortedMap.Builder.
      */
-    @CanIgnoreReturnValue
-    @Beta
     @Override
     @Deprecated
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final Builder<K, V> orderEntriesByValue(Comparator<? super V> valueComparator) {
       throw new UnsupportedOperationException("Not available on ImmutableSortedMap.Builder");
     }
@@ -1065,10 +1048,8 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final Entry<K, V> pollFirstEntry() {
     throw new UnsupportedOperationException();
@@ -1080,10 +1061,8 @@ public final class ImmutableSortedMap<K, V> extends ImmutableSortedMapFauxveride
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final Entry<K, V> pollLastEntry() {
     throw new UnsupportedOperationException();
diff --git a/guava/src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java b/guava/src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java
index 7b2e4d7..f65f274 100644
--- a/guava/src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java
+++ b/guava/src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java
@@ -16,12 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.function.BinaryOperator;
 import java.util.function.Function;
 import java.util.stream.Collector;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * "Overrides" the {@link ImmutableMap} static methods that lack {@link ImmutableSortedMap}
@@ -30,7 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Chris Povirk
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V> {
   /**
@@ -41,9 +37,8 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link ImmutableSortedMap#toImmutableSortedMap}.
    */
-  @DoNotCall("Use toImmutableSortedMap")
   @Deprecated
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableMap<K, V>> toImmutableMap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction) {
@@ -58,9 +53,8 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link ImmutableSortedMap#toImmutableSortedMap}.
    */
-  @DoNotCall("Use toImmutableSortedMap")
   @Deprecated
-  public static <T extends @Nullable Object, K, V>
+  public static <T extends Object, K, V>
       Collector<T, ?, ImmutableMap<K, V>> toImmutableMap(
           Function<? super T, ? extends K> keyFunction,
           Function<? super T, ? extends V> valueFunction,
@@ -76,7 +70,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link ImmutableSortedMap#naturalOrder}, which offers better type-safety.
    */
-  @DoNotCall("Use naturalOrder")
   @Deprecated
   public static <K, V> ImmutableSortedMap.Builder<K, V> builder() {
     throw new UnsupportedOperationException();
@@ -88,7 +81,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @throws UnsupportedOperationException always
    * @deprecated Not supported for ImmutableSortedMap.
    */
-  @DoNotCall("Use naturalOrder (which does not accept an expected size)")
   @Deprecated
   public static <K, V> ImmutableSortedMap.Builder<K, V> builderWithExpectedSize(int expectedSize) {
     throw new UnsupportedOperationException();
@@ -103,7 +95,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @deprecated <b>Pass a key of type {@code Comparable} to use {@link
    *     ImmutableSortedMap#of(Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass a key of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(K k1, V v1) {
     throw new UnsupportedOperationException();
@@ -118,7 +109,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @deprecated <b>Pass keys of type {@code Comparable} to use {@link
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(K k1, V v1, K k2, V v2) {
     throw new UnsupportedOperationException();
@@ -133,7 +123,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    * @deprecated <b>Pass keys of type {@code Comparable} to use {@link
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3) {
     throw new UnsupportedOperationException();
@@ -149,7 +138,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) {
     throw new UnsupportedOperationException();
@@ -165,7 +153,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) {
@@ -182,7 +169,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6) {
@@ -199,7 +185,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7) {
@@ -216,7 +201,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1,
@@ -248,7 +232,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1,
@@ -282,7 +265,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *     ImmutableSortedMap#of(Comparable, Object, Comparable, Object, Comparable, Object,
    *     Comparable, Object, Comparable, Object)}.</b>
    */
-  @DoNotCall("Pass keys of type Comparable")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> of(
       K k1,
@@ -313,7 +295,6 @@ abstract class ImmutableSortedMapFauxverideShim<K, V> extends ImmutableMap<K, V>
    *
    * @deprecated Use {@code ImmutableSortedMap.copyOf(ImmutableMap.ofEntries(...))}.
    */
-  @DoNotCall("ImmutableSortedMap.ofEntries not currently available; use ImmutableSortedMap.copyOf")
   @Deprecated
   public static <K, V> ImmutableSortedMap<K, V> ofEntries(
       Entry<? extends K, ? extends V>... entries) {
diff --git a/guava/src/com/google/common/collect/ImmutableSortedMultiset.java b/guava/src/com/google/common/collect/ImmutableSortedMultiset.java
index bf5a2f4..4741e08 100644
--- a/guava/src/com/google/common/collect/ImmutableSortedMultiset.java
+++ b/guava/src/com/google/common/collect/ImmutableSortedMultiset.java
@@ -17,10 +17,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Collection;
@@ -32,7 +28,6 @@ import java.util.function.Function;
 import java.util.function.ToIntFunction;
 import java.util.stream.Collector;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link SortedMultiset} whose contents will never change, with many other important properties
@@ -50,7 +45,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 12.0
  */
-@GwtIncompatible // hasn't been tested yet
+// hasn't been tested yet
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultisetFauxverideShim<E>
     implements SortedMultiset<E> {
@@ -81,7 +76,7 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
    *
    * @since 22.0
    */
-  public static <T extends @Nullable Object, E>
+  public static <T extends Object, E>
       Collector<T, ?, ImmutableSortedMultiset<E>> toImmutableSortedMultiset(
           Comparator<? super E> comparator,
           Function<? super T, ? extends E> elementFunction,
@@ -331,7 +326,7 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
   @Override
   public abstract ImmutableSortedSet<E> elementSet();
 
-  @LazyInit @CheckForNull transient ImmutableSortedMultiset<E> descendingMultiset;
+  @CheckForNull transient ImmutableSortedMultiset<E> descendingMultiset;
 
   @Override
   public ImmutableSortedMultiset<E> descendingMultiset() {
@@ -353,10 +348,8 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final Entry<E> pollFirstEntry() {
     throw new UnsupportedOperationException();
@@ -370,10 +363,8 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final Entry<E> pollLastEntry() {
     throw new UnsupportedOperationException();
@@ -469,7 +460,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code element} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E element) {
       super.add(element);
@@ -483,7 +473,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E... elements) {
       super.add(elements);
@@ -501,7 +490,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @throws IllegalArgumentException if {@code occurrences} is negative, or if this operation
      *     would result in more than {@link Integer#MAX_VALUE} occurrences of the element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addCopies(E element, int occurrences) {
       super.addCopies(element, occurrences);
@@ -518,7 +506,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @throws NullPointerException if {@code element} is null
      * @throws IllegalArgumentException if {@code count} is negative
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> setCount(E element, int count) {
       super.setCount(element, count);
@@ -532,7 +519,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterable<? extends E> elements) {
       super.addAll(elements);
@@ -546,7 +532,6 @@ public abstract class ImmutableSortedMultiset<E> extends ImmutableSortedMultiset
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} is null or contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterator<? extends E> elements) {
       super.addAll(elements);
diff --git a/guava/src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java b/guava/src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java
index 94a2f56..36d4cb9 100644
--- a/guava/src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java
+++ b/guava/src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java
@@ -14,12 +14,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.function.Function;
 import java.util.function.ToIntFunction;
 import java.util.stream.Collector;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * "Overrides" the {@link ImmutableMultiset} static methods that lack {@link
@@ -38,7 +35,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultiset<E> {
   /**
@@ -50,7 +46,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated Use {@link ImmutableSortedMultiset#toImmutableSortedMultiset}.
    * @since 21.0
    */
-  @DoNotCall("Use toImmutableSortedMultiset.")
   @Deprecated
   public static <E> Collector<E, ?, ImmutableMultiset<E>> toImmutableMultiset() {
     throw new UnsupportedOperationException();
@@ -65,9 +60,8 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated Use {@link ImmutableSortedMultiset#toImmutableSortedMultiset}.
    * @since 22.0
    */
-  @DoNotCall("Use toImmutableSortedMultiset.")
   @Deprecated
-  public static <T extends @Nullable Object, E>
+  public static <T extends Object, E>
       Collector<T, ?, ImmutableMultiset<E>> toImmutableMultiset(
           Function<? super T, ? extends E> elementFunction,
           ToIntFunction<? super T> countFunction) {
@@ -82,7 +76,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link ImmutableSortedMultiset#naturalOrder}, which offers better type-safety.
    */
-  @DoNotCall("Use naturalOrder.")
   @Deprecated
   public static <E> ImmutableSortedMultiset.Builder<E> builder() {
     throw new UnsupportedOperationException();
@@ -97,7 +90,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated <b>Pass a parameter of type {@code Comparable} to use {@link
    *     ImmutableSortedMultiset#of(Comparable)}.</b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(E element) {
     throw new UnsupportedOperationException();
@@ -112,7 +104,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedMultiset#of(Comparable, Comparable)}.</b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(E e1, E e2) {
     throw new UnsupportedOperationException();
@@ -127,7 +118,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedMultiset#of(Comparable, Comparable, Comparable)}.</b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(E e1, E e2, E e3) {
     throw new UnsupportedOperationException();
@@ -142,7 +132,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedMultiset#of(Comparable, Comparable, Comparable, Comparable)}. </b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(E e1, E e2, E e3, E e4) {
     throw new UnsupportedOperationException();
@@ -158,7 +147,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    *     ImmutableSortedMultiset#of(Comparable, Comparable, Comparable, Comparable, Comparable)} .
    *     </b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(E e1, E e2, E e3, E e4, E e5) {
     throw new UnsupportedOperationException();
@@ -174,7 +162,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    *     ImmutableSortedMultiset#of(Comparable, Comparable, Comparable, Comparable, Comparable,
    *     Comparable, Comparable...)} . </b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> of(
       E e1, E e2, E e3, E e4, E e5, E e6, E... remaining) {
@@ -190,7 +177,6 @@ abstract class ImmutableSortedMultisetFauxverideShim<E> extends ImmutableMultise
    * @deprecated <b>Pass parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedMultiset#copyOf(Comparable[])}.</b>
    */
-  @DoNotCall("Elements must be Comparable. (Or, pass a Comparator to orderedBy or copyOf.)")
   @Deprecated
   public static <E> ImmutableSortedMultiset<E> copyOf(E[] elements) {
     throw new UnsupportedOperationException();
diff --git a/guava/src/com/google/common/collect/ImmutableSortedSet.java b/guava/src/com/google/common/collect/ImmutableSortedSet.java
index 8a7aec1..8062b1c 100644
--- a/guava/src/com/google/common/collect/ImmutableSortedSet.java
+++ b/guava/src/com/google/common/collect/ImmutableSortedSet.java
@@ -20,11 +20,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.ObjectArrays.checkElementsNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
 import java.io.Serializable;
@@ -40,7 +35,6 @@ import java.util.Spliterators;
 import java.util.function.Consumer;
 import java.util.stream.Collector;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link NavigableSet} whose contents will never change, with many other important properties
@@ -60,7 +54,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 2.0 (implements {@code NavigableSet} since 12.0)
  */
 // TODO(benyu): benchmark and optimize all creation paths, which are a mess now
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // we're overriding default serialization
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxverideShim<E>
@@ -480,7 +473,6 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code element} is null
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E element) {
       checkNotNull(element);
@@ -509,7 +501,6 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> add(E... elements) {
       checkElementsNotNull(elements);
@@ -527,7 +518,6 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterable<? extends E> elements) {
       super.addAll(elements);
@@ -542,14 +532,12 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
      * @return this {@code Builder} object
      * @throws NullPointerException if {@code elements} contains a null element
      */
-    @CanIgnoreReturnValue
     @Override
     public Builder<E> addAll(Iterator<? extends E> elements) {
       super.addAll(elements);
       return this;
     }
 
-    @CanIgnoreReturnValue
     @Override
     Builder<E> combine(ImmutableSet.Builder<E> builder) {
       copyIfNecessary();
@@ -586,7 +574,7 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
     // compare a and b, we should get a CCE or NPE on the subsequent line. Only methods
     // that are spec'd to throw CCE and NPE should call this.
     @SuppressWarnings({"unchecked", "nullness"})
-    Comparator<@Nullable Object> unsafeComparator = (Comparator<@Nullable Object>) comparator;
+    Comparator<Object> unsafeComparator = (Comparator<@Nullable Object>) comparator;
     return unsafeComparator.compare(a, b);
   }
 
@@ -648,7 +636,7 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
   }
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public ImmutableSortedSet<E> subSet(
       E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) {
@@ -691,7 +679,7 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
   abstract ImmutableSortedSet<E> tailSetImpl(E fromElement, boolean inclusive);
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   @CheckForNull
   public E lower(E e) {
@@ -713,7 +701,7 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
   }
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   @CheckForNull
   public E higher(E e) {
@@ -737,11 +725,9 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final E pollFirst() {
     throw new UnsupportedOperationException();
@@ -754,23 +740,20 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final E pollLast() {
     throw new UnsupportedOperationException();
   }
 
-  @GwtIncompatible // NavigableSet
-  @LazyInit
+  // NavigableSet
   @CheckForNull
   transient ImmutableSortedSet<E> descendingSet;
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public ImmutableSortedSet<E> descendingSet() {
     // racy single-check idiom
@@ -785,7 +768,7 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
   // Most classes should implement this as new DescendingImmutableSortedSet<E>(this),
   // but we push down that implementation because ProGuard can't eliminate it even when it's always
   // overridden.
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   abstract ImmutableSortedSet<E> createDescendingSet();
 
   @Override
@@ -812,7 +795,7 @@ public abstract class ImmutableSortedSet<E> extends ImmutableSortedSetFauxveride
   }
 
   /** @since 12.0 */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public abstract UnmodifiableIterator<E> descendingIterator();
 
diff --git a/guava/src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java b/guava/src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java
index ff3ac12..46a1c23 100644
--- a/guava/src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java
+++ b/guava/src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.stream.Collector;
 
 /**
@@ -37,7 +35,6 @@ import java.util.stream.Collector;
  *
  * @author Chris Povirk
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet.CachingAsList<E> {
   /**
@@ -48,7 +45,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet.CachingA
    * @deprecated Use {@link ImmutableSortedSet#toImmutableSortedSet}.
    * @since 21.0
    */
-  @DoNotCall("Use toImmutableSortedSet")
   @Deprecated
   public static <E> Collector<E, ?, ImmutableSet<E>> toImmutableSet() {
     throw new UnsupportedOperationException();
@@ -62,7 +58,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet.CachingA
    * @throws UnsupportedOperationException always
    * @deprecated Use {@link ImmutableSortedSet#naturalOrder}, which offers better type-safety.
    */
-  @DoNotCall("Use naturalOrder")
   @Deprecated
   public static <E> ImmutableSortedSet.Builder<E> builder() {
     throw new UnsupportedOperationException();
@@ -75,7 +70,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet.CachingA
    * @throws UnsupportedOperationException always
    * @deprecated Not supported by ImmutableSortedSet.
    */
-  @DoNotCall("Use naturalOrder (which does not accept an expected size)")
   @Deprecated
   public static <E> ImmutableSortedSet.Builder<E> builderWithExpectedSize(int expectedSize) {
     throw new UnsupportedOperationException();
@@ -90,7 +84,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet.CachingA
    * @deprecated <b>Pass a parameter of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#of(Comparable)}.</b>
    */
-  @DoNotCall("Pass a parameter of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E element) {
     throw new UnsupportedOperationException();
@@ -105,7 +98,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet.CachingA
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#of(Comparable, Comparable)}.</b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E e1, E e2) {
     throw new UnsupportedOperationException();
@@ -120,7 +112,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet.CachingA
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#of(Comparable, Comparable, Comparable)}.</b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E e1, E e2, E e3) {
     throw new UnsupportedOperationException();
@@ -135,7 +126,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet.CachingA
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#of(Comparable, Comparable, Comparable, Comparable)}. </b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E e1, E e2, E e3, E e4) {
     throw new UnsupportedOperationException();
@@ -150,7 +140,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet.CachingA
    * @deprecated <b>Pass the parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#of( Comparable, Comparable, Comparable, Comparable, Comparable)}. </b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E e1, E e2, E e3, E e4, E e5) {
     throw new UnsupportedOperationException();
@@ -166,7 +155,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet.CachingA
    *     ImmutableSortedSet#of(Comparable, Comparable, Comparable, Comparable, Comparable,
    *     Comparable, Comparable...)}. </b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E... remaining) {
     throw new UnsupportedOperationException();
@@ -181,7 +169,6 @@ abstract class ImmutableSortedSetFauxverideShim<E> extends ImmutableSet.CachingA
    * @deprecated <b>Pass parameters of type {@code Comparable} to use {@link
    *     ImmutableSortedSet#copyOf(Comparable[])}.</b>
    */
-  @DoNotCall("Pass parameters of type Comparable")
   @Deprecated
   public static <E> ImmutableSortedSet<E> copyOf(E[] elements) {
     throw new UnsupportedOperationException();
diff --git a/guava/src/com/google/common/collect/ImmutableTable.java b/guava/src/com/google/common/collect/ImmutableTable.java
index 6d15938..4e3a58a 100644
--- a/guava/src/com/google/common/collect/ImmutableTable.java
+++ b/guava/src/com/google/common/collect/ImmutableTable.java
@@ -18,11 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.MoreObjects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.Serializable;
 import java.util.Comparator;
 import java.util.Iterator;
@@ -33,7 +29,6 @@ import java.util.function.BinaryOperator;
 import java.util.function.Function;
 import java.util.stream.Collector;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Table} whose contents will never change, with many other important properties detailed
@@ -45,7 +40,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Gregory Kick
  * @since 11.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
     implements Serializable {
@@ -60,7 +54,7 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, R, C, V>
+  public static <T extends Object, R, C, V>
       Collector<T, ?, ImmutableTable<R, C, V>> toImmutableTable(
           Function<? super T, ? extends R> rowFunction,
           Function<? super T, ? extends C> columnFunction,
@@ -79,7 +73,7 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, R, C, V>
+  public static <T extends Object, R, C, V>
       Collector<T, ?, ImmutableTable<R, C, V>> toImmutableTable(
           Function<? super T, ? extends R> rowFunction,
           Function<? super T, ? extends C> columnFunction,
@@ -182,7 +176,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    *
    * @since 11.0
    */
-  @DoNotMock
   public static final class Builder<R, C, V> {
     private final List<Cell<R, C, V>> cells = Lists.newArrayList();
     @CheckForNull private Comparator<? super R> rowComparator;
@@ -195,14 +188,12 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
     public Builder() {}
 
     /** Specifies the ordering of the generated table's rows. */
-    @CanIgnoreReturnValue
     public Builder<R, C, V> orderRowsBy(Comparator<? super R> rowComparator) {
       this.rowComparator = checkNotNull(rowComparator, "rowComparator");
       return this;
     }
 
     /** Specifies the ordering of the generated table's columns. */
-    @CanIgnoreReturnValue
     public Builder<R, C, V> orderColumnsBy(Comparator<? super C> columnComparator) {
       this.columnComparator = checkNotNull(columnComparator, "columnComparator");
       return this;
@@ -212,7 +203,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
      * Associates the ({@code rowKey}, {@code columnKey}) pair with {@code value} in the built
      * table. Duplicate key pairs are not allowed and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public Builder<R, C, V> put(R rowKey, C columnKey, V value) {
       cells.add(cellOf(rowKey, columnKey, value));
       return this;
@@ -222,7 +212,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
      * Adds the given {@code cell} to the table, making it immutable if necessary. Duplicate key
      * pairs are not allowed and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public Builder<R, C, V> put(Cell<? extends R, ? extends C, ? extends V> cell) {
       if (cell instanceof Tables.ImmutableCell) {
         checkNotNull(cell.getRowKey(), "row");
@@ -243,7 +232,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
      *
      * @throws NullPointerException if any key or value in {@code table} is null
      */
-    @CanIgnoreReturnValue
     public Builder<R, C, V> putAll(Table<? extends R, ? extends C, ? extends V> table) {
       for (Cell<? extends R, ? extends C, ? extends V> cell : table.cellSet()) {
         put(cell);
@@ -251,7 +239,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
       return this;
     }
 
-    @CanIgnoreReturnValue
     Builder<R, C, V> combine(Builder<R, C, V> other) {
       this.cells.addAll(other.cells);
       return this;
@@ -393,7 +380,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void clear() {
     throw new UnsupportedOperationException();
   }
@@ -404,10 +390,8 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final V put(R rowKey, C columnKey, V value) {
     throw new UnsupportedOperationException();
@@ -421,7 +405,6 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void putAll(Table<? extends R, ? extends C, ? extends V> table) {
     throw new UnsupportedOperationException();
   }
@@ -432,10 +415,8 @@ public abstract class ImmutableTable<R, C, V> extends AbstractTable<R, C, V>
    * @throws UnsupportedOperationException always
    * @deprecated Unsupported operation.
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   @CheckForNull
   public final V remove(@CheckForNull Object rowKey, @CheckForNull Object columnKey) {
     throw new UnsupportedOperationException();
diff --git a/guava/src/com/google/common/collect/IndexedImmutableSet.java b/guava/src/com/google/common/collect/IndexedImmutableSet.java
index 20dfacb..8ebf46a 100644
--- a/guava/src/com/google/common/collect/IndexedImmutableSet.java
+++ b/guava/src/com/google/common/collect/IndexedImmutableSet.java
@@ -18,13 +18,9 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Spliterator;
 import java.util.function.Consumer;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class IndexedImmutableSet<E> extends ImmutableSet.CachingAsList<E> {
   abstract E get(int index);
@@ -49,7 +45,6 @@ abstract class IndexedImmutableSet<E> extends ImmutableSet.CachingAsList<E> {
   }
 
   @Override
-  @GwtIncompatible
   int copyIntoArray(@Nullable Object[] dst, int offset) {
     return asList().copyIntoArray(dst, offset);
   }
diff --git a/guava/src/com/google/common/collect/Interner.java b/guava/src/com/google/common/collect/Interner.java
index bfc2035..969fd64 100644
--- a/guava/src/com/google/common/collect/Interner.java
+++ b/guava/src/com/google/common/collect/Interner.java
@@ -16,9 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * Provides similar behavior to {@link String#intern} for any immutable type. Common implementations
@@ -31,8 +28,6 @@ import com.google.errorprone.annotations.DoNotMock;
  * @author Kevin Bourrillion
  * @since 3.0
  */
-@DoNotMock("Use Interners.new*Interner")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface Interner<E> {
   /**
@@ -47,6 +42,6 @@ public interface Interner<E> {
    *
    * @throws NullPointerException if {@code sample} is null
    */
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing this?
+  // TODO(cpovirk): Consider removing this?
   E intern(E sample);
 }
diff --git a/guava/src/com/google/common/collect/Interners.java b/guava/src/com/google/common/collect/Interners.java
index a3ae374..1e5bec4 100644
--- a/guava/src/com/google/common/collect/Interners.java
+++ b/guava/src/com/google/common/collect/Interners.java
@@ -16,8 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
 import com.google.common.collect.MapMaker.Dummy;
@@ -30,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 3.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Interners {
   private Interners() {}
@@ -61,7 +58,6 @@ public final class Interners {
      *
      * @see Interners#newWeakInterner()
      */
-    @GwtIncompatible("java.lang.ref.WeakReference")
     public InternerBuilder weak() {
       this.strong = false;
       return this;
@@ -105,15 +101,13 @@ public final class Interners {
    * likely does not perform as well as {@link #newStrongInterner}, but is the best alternative when
    * the memory usage of that implementation is unacceptable.
    */
-  @GwtIncompatible("java.lang.ref.WeakReference")
   public static <E> Interner<E> newWeakInterner() {
     return newBuilder().weak().build();
   }
 
-  @VisibleForTesting
   static final class InternerImpl<E> implements Interner<E> {
     // MapMaker is our friend, we know about this type
-    @VisibleForTesting final MapMakerInternalMap<E, Dummy, ?, ?> map;
+    final MapMakerInternalMap<E, Dummy, ?, ?> map;
 
     private InternerImpl(MapMaker mapMaker) {
       this.map =
diff --git a/guava/src/com/google/common/collect/Iterables.java b/guava/src/com/google/common/collect/Iterables.java
index fb2b543..2469882 100644
--- a/guava/src/com/google/common/collect/Iterables.java
+++ b/guava/src/com/google/common/collect/Iterables.java
@@ -20,14 +20,10 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.Iterator;
@@ -40,7 +36,6 @@ import java.util.Spliterator;
 import java.util.function.Consumer;
 import java.util.stream.Stream;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An assortment of mainly legacy static utility methods that operate on or return objects of type
@@ -64,13 +59,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Iterables {
   private Iterables() {}
 
   /** Returns an unmodifiable view of {@code iterable}. */
-  public static <T extends @Nullable Object> Iterable<T> unmodifiableIterable(
+  public static <T extends Object> Iterable<T> unmodifiableIterable(
       final Iterable<? extends T> iterable) {
     checkNotNull(iterable);
     if (iterable instanceof UnmodifiableIterable || iterable instanceof ImmutableCollection) {
@@ -92,7 +86,7 @@ public final class Iterables {
     return checkNotNull(iterable);
   }
 
-  private static final class UnmodifiableIterable<T extends @Nullable Object>
+  private static final class UnmodifiableIterable<T extends Object>
       extends FluentIterable<T> {
     private final Iterable<? extends T> iterable;
 
@@ -156,7 +150,6 @@ public final class Iterables {
    * @param elementsToRemove the elements to remove
    * @return {@code true} if any element was removed from {@code iterable}
    */
-  @CanIgnoreReturnValue
   public static boolean removeAll(Iterable<?> removeFrom, Collection<?> elementsToRemove) {
     return (removeFrom instanceof Collection)
         ? ((Collection<?>) removeFrom).removeAll(checkNotNull(elementsToRemove))
@@ -173,7 +166,6 @@ public final class Iterables {
    * @param elementsToRetain the elements to retain
    * @return {@code true} if any element was removed from {@code iterable}
    */
-  @CanIgnoreReturnValue
   public static boolean retainAll(Iterable<?> removeFrom, Collection<?> elementsToRetain) {
     return (removeFrom instanceof Collection)
         ? ((Collection<?>) removeFrom).retainAll(checkNotNull(elementsToRetain))
@@ -196,8 +188,7 @@ public final class Iterables {
    * @throws UnsupportedOperationException if the iterable does not support {@code remove()}.
    * @since 2.0
    */
-  @CanIgnoreReturnValue
-  public static <T extends @Nullable Object> boolean removeIf(
+  public static <T extends Object> boolean removeIf(
       Iterable<T> removeFrom, Predicate<? super T> predicate) {
     if (removeFrom instanceof Collection) {
       return ((Collection<T>) removeFrom).removeIf(predicate);
@@ -207,7 +198,7 @@ public final class Iterables {
 
   /** Removes and returns the first matching element, or returns {@code null} if there is none. */
   @CheckForNull
-  static <T extends @Nullable Object> T removeFirstMatching(
+  static <T extends Object> T removeFirstMatching(
       Iterable<T> removeFrom, Predicate<? super T> predicate) {
     checkNotNull(predicate);
     Iterator<T> iterator = removeFrom.iterator();
@@ -259,7 +250,7 @@ public final class Iterables {
    * @throws IllegalArgumentException if the iterable contains multiple elements
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getOnlyElement(Iterable<T> iterable) {
+  public static <T extends Object> T getOnlyElement(Iterable<T> iterable) {
     return Iterators.getOnlyElement(iterable.iterator());
   }
 
@@ -273,7 +264,7 @@ public final class Iterables {
    * @throws IllegalArgumentException if the iterator contains multiple elements
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getOnlyElement(
+  public static <T extends Object> T getOnlyElement(
       Iterable<? extends T> iterable, @ParametricNullness T defaultValue) {
     return Iterators.getOnlyElement(iterable.iterator(), defaultValue);
   }
@@ -285,17 +276,17 @@ public final class Iterables {
    * @param type the type of the elements
    * @return a newly-allocated array into which all the elements of the iterable have been copied
    */
-  @GwtIncompatible // Array.newInstance(Class, int)
+  // Array.newInstance(Class, int)
   /*
    * If we could express Class<@Nonnull T>, we could generalize the type parameter to <T extends
    * @Nullable Object>, and then we could accept an Iterable<? extends T> and return a plain T[]
    * instead of a @Nullable T[].
    */
-  public static <T> @Nullable T[] toArray(Iterable<? extends @Nullable T> iterable, Class<T> type) {
+  public static <T> T[] toArray(Iterable<? extends @Nullable T> iterable, Class<T> type) {
     return toArray(iterable, ObjectArrays.newArray(type, 0));
   }
 
-  static <T extends @Nullable Object> T[] toArray(Iterable<? extends T> iterable, T[] array) {
+  static <T extends Object> T[] toArray(Iterable<? extends T> iterable, T[] array) {
     Collection<? extends T> collection = castOrCopyToCollection(iterable);
     return collection.toArray(array);
   }
@@ -306,7 +297,7 @@ public final class Iterables {
    * @param iterable the iterable to copy
    * @return a newly-allocated array into which all the elements of the iterable have been copied
    */
-  static @Nullable Object[] toArray(Iterable<?> iterable) {
+  static Object[] toArray(Iterable<?> iterable) {
     return castOrCopyToCollection(iterable).toArray();
   }
 
@@ -315,7 +306,7 @@ public final class Iterables {
    * returned. Otherwise, an {@link java.util.ArrayList} is created with the contents of the
    * iterable in the same iteration order.
    */
-  private static <E extends @Nullable Object> Collection<E> castOrCopyToCollection(
+  private static <E extends Object> Collection<E> castOrCopyToCollection(
       Iterable<E> iterable) {
     return (iterable instanceof Collection)
         ? (Collection<E>) iterable
@@ -327,8 +318,7 @@ public final class Iterables {
    *
    * @return {@code true} if {@code collection} was modified as a result of this operation.
    */
-  @CanIgnoreReturnValue
-  public static <T extends @Nullable Object> boolean addAll(
+  public static <T extends Object> boolean addAll(
       Collection<T> addTo, Iterable<? extends T> elementsToAdd) {
     if (elementsToAdd instanceof Collection) {
       Collection<? extends T> c = (Collection<? extends T>) elementsToAdd;
@@ -375,7 +365,7 @@ public final class Iterables {
    * <p><b>Java 8 users:</b> The {@code Stream} equivalent of this method is {@code
    * Stream.generate(() -> iterable).flatMap(Streams::stream)}.
    */
-  public static <T extends @Nullable Object> Iterable<T> cycle(final Iterable<T> iterable) {
+  public static <T extends Object> Iterable<T> cycle(final Iterable<T> iterable) {
     checkNotNull(iterable);
     return new FluentIterable<T>() {
       @Override
@@ -416,7 +406,7 @@ public final class Iterables {
    * and use {@code Stream.generate(() -> collection).flatMap(Collection::stream)}.
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> Iterable<T> cycle(T... elements) {
+  public static <T extends Object> Iterable<T> cycle(T... elements) {
     return cycle(Lists.newArrayList(elements));
   }
 
@@ -431,7 +421,7 @@ public final class Iterables {
    * <p><b>Java 8 users:</b> The {@code Stream} equivalent of this method is {@code Stream.concat(a,
    * b)}.
    */
-  public static <T extends @Nullable Object> Iterable<T> concat(
+  public static <T extends Object> Iterable<T> concat(
       Iterable<? extends T> a, Iterable<? extends T> b) {
     return FluentIterable.concat(a, b);
   }
@@ -447,7 +437,7 @@ public final class Iterables {
    * <p><b>Java 8 users:</b> The {@code Stream} equivalent of this method is {@code
    * Streams.concat(a, b, c)}.
    */
-  public static <T extends @Nullable Object> Iterable<T> concat(
+  public static <T extends Object> Iterable<T> concat(
       Iterable<? extends T> a, Iterable<? extends T> b, Iterable<? extends T> c) {
     return FluentIterable.concat(a, b, c);
   }
@@ -464,7 +454,7 @@ public final class Iterables {
    * <p><b>Java 8 users:</b> The {@code Stream} equivalent of this method is {@code
    * Streams.concat(a, b, c, d)}.
    */
-  public static <T extends @Nullable Object> Iterable<T> concat(
+  public static <T extends Object> Iterable<T> concat(
       Iterable<? extends T> a,
       Iterable<? extends T> b,
       Iterable<? extends T> c,
@@ -486,7 +476,7 @@ public final class Iterables {
    * @throws NullPointerException if any of the provided iterables is null
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> Iterable<T> concat(Iterable<? extends T>... inputs) {
+  public static <T extends Object> Iterable<T> concat(Iterable<? extends T>... inputs) {
     return FluentIterable.concat(inputs);
   }
 
@@ -502,7 +492,7 @@ public final class Iterables {
    * <p><b>Java 8 users:</b> The {@code Stream} equivalent of this method is {@code
    * streamOfStreams.flatMap(s -> s)}.
    */
-  public static <T extends @Nullable Object> Iterable<T> concat(
+  public static <T extends Object> Iterable<T> concat(
       Iterable<? extends Iterable<? extends T>> inputs) {
     return FluentIterable.concat(inputs);
   }
@@ -525,7 +515,7 @@ public final class Iterables {
    *     into partitions
    * @throws IllegalArgumentException if {@code size} is nonpositive
    */
-  public static <T extends @Nullable Object> Iterable<List<T>> partition(
+  public static <T extends Object> Iterable<List<T>> partition(
       final Iterable<T> iterable, final int size) {
     checkNotNull(iterable);
     checkArgument(size > 0);
@@ -552,13 +542,13 @@ public final class Iterables {
    *     into partitions (the final iterable may have trailing null elements)
    * @throws IllegalArgumentException if {@code size} is nonpositive
    */
-  public static <T extends @Nullable Object> Iterable<List<@Nullable T>> paddedPartition(
+  public static <T extends Object> Iterable<List<T>> paddedPartition(
       final Iterable<T> iterable, final int size) {
     checkNotNull(iterable);
     checkArgument(size > 0);
-    return new FluentIterable<List<@Nullable T>>() {
+    return new FluentIterable<List<T>>() {
       @Override
-      public Iterator<List<@Nullable T>> iterator() {
+      public Iterator<List<T>> iterator() {
         return Iterators.paddedPartition(iterable.iterator(), size);
       }
     };
@@ -570,7 +560,7 @@ public final class Iterables {
    *
    * <p><b>{@code Stream} equivalent:</b> {@link Stream#filter}.
    */
-  public static <T extends @Nullable Object> Iterable<T> filter(
+  public static <T extends Object> Iterable<T> filter(
       final Iterable<T> unfiltered, final Predicate<? super T> retainIfTrue) {
     checkNotNull(unfiltered);
     checkNotNull(retainIfTrue);
@@ -613,7 +603,7 @@ public final class Iterables {
    * </pre>
    */
   @SuppressWarnings("unchecked")
-  @GwtIncompatible // Class.isInstance
+  // Class.isInstance
   public static <T> Iterable<T> filter(final Iterable<?> unfiltered, final Class<T> desiredType) {
     checkNotNull(unfiltered);
     checkNotNull(desiredType);
@@ -625,7 +615,7 @@ public final class Iterables {
    *
    * <p><b>{@code Stream} equivalent:</b> {@link Stream#anyMatch}.
    */
-  public static <T extends @Nullable Object> boolean any(
+  public static <T extends Object> boolean any(
       Iterable<T> iterable, Predicate<? super T> predicate) {
     return Iterators.any(iterable.iterator(), predicate);
   }
@@ -636,7 +626,7 @@ public final class Iterables {
    *
    * <p><b>{@code Stream} equivalent:</b> {@link Stream#allMatch}.
    */
-  public static <T extends @Nullable Object> boolean all(
+  public static <T extends Object> boolean all(
       Iterable<T> iterable, Predicate<? super T> predicate) {
     return Iterators.all(iterable.iterator(), predicate);
   }
@@ -651,7 +641,7 @@ public final class Iterables {
    * @throws NoSuchElementException if no element in {@code iterable} matches the given predicate
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T find(
+  public static <T extends Object> T find(
       Iterable<T> iterable, Predicate<? super T> predicate) {
     return Iterators.find(iterable.iterator(), predicate);
   }
@@ -682,7 +672,7 @@ public final class Iterables {
   //
   // - @JointlyNullable means "@Nullable or no annotation"
   @CheckForNull
-  public static <T extends @Nullable Object> T find(
+  public static <T extends Object> T find(
       Iterable<? extends T> iterable,
       Predicate<? super T> predicate,
       @CheckForNull T defaultValue) {
@@ -714,7 +704,7 @@ public final class Iterables {
    *
    * @since 2.0
    */
-  public static <T extends @Nullable Object> int indexOf(
+  public static <T extends Object> int indexOf(
       Iterable<T> iterable, Predicate<? super T> predicate) {
     return Iterators.indexOf(iterable.iterator(), predicate);
   }
@@ -732,7 +722,7 @@ public final class Iterables {
    *
    * <p><b>{@code Stream} equivalent:</b> {@link Stream#map}
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> Iterable<T> transform(
+  public static <F extends Object, T extends Object> Iterable<T> transform(
       final Iterable<F> fromIterable, final Function<? super F, ? extends T> function) {
     checkNotNull(fromIterable);
     checkNotNull(function);
@@ -767,7 +757,7 @@ public final class Iterables {
    *     the size of {@code iterable}
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T get(Iterable<T> iterable, int position) {
+  public static <T extends Object> T get(Iterable<T> iterable, int position) {
     checkNotNull(iterable);
     return (iterable instanceof List)
         ? ((List<T>) iterable).get(position)
@@ -790,7 +780,7 @@ public final class Iterables {
    * @since 4.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T get(
+  public static <T extends Object> T get(
       Iterable<? extends T> iterable, int position, @ParametricNullness T defaultValue) {
     checkNotNull(iterable);
     Iterators.checkNonnegative(position);
@@ -822,7 +812,7 @@ public final class Iterables {
    * @since 7.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getFirst(
+  public static <T extends Object> T getFirst(
       Iterable<? extends T> iterable, @ParametricNullness T defaultValue) {
     return Iterators.getNext(iterable.iterator(), defaultValue);
   }
@@ -837,7 +827,7 @@ public final class Iterables {
    * @throws NoSuchElementException if the iterable is empty
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getLast(Iterable<T> iterable) {
+  public static <T extends Object> T getLast(Iterable<T> iterable) {
     // TODO(kevinb): Support a concurrently modified collection?
     if (iterable instanceof List) {
       List<T> list = (List<T>) iterable;
@@ -862,7 +852,7 @@ public final class Iterables {
    * @since 3.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getLast(
+  public static <T extends Object> T getLast(
       Iterable<? extends T> iterable, @ParametricNullness T defaultValue) {
     if (iterable instanceof Collection) {
       Collection<? extends T> c = (Collection<? extends T>) iterable;
@@ -877,7 +867,7 @@ public final class Iterables {
   }
 
   @ParametricNullness
-  private static <T extends @Nullable Object> T getLastInNonemptyList(List<T> list) {
+  private static <T extends Object> T getLastInNonemptyList(List<T> list) {
     return list.get(list.size() - 1);
   }
 
@@ -900,7 +890,7 @@ public final class Iterables {
    *
    * @since 3.0
    */
-  public static <T extends @Nullable Object> Iterable<T> skip(
+  public static <T extends Object> Iterable<T> skip(
       final Iterable<T> iterable, final int numberToSkip) {
     checkNotNull(iterable);
     checkArgument(numberToSkip >= 0, "number to skip cannot be negative");
@@ -972,7 +962,7 @@ public final class Iterables {
    * @throws IllegalArgumentException if {@code limitSize} is negative
    * @since 3.0
    */
-  public static <T extends @Nullable Object> Iterable<T> limit(
+  public static <T extends Object> Iterable<T> limit(
       final Iterable<T> iterable, final int limitSize) {
     checkNotNull(iterable);
     checkArgument(limitSize >= 0, "limit is negative");
@@ -1005,7 +995,7 @@ public final class Iterables {
    * @see Iterators#consumingIterator(Iterator)
    * @since 2.0
    */
-  public static <T extends @Nullable Object> Iterable<T> consumingIterable(
+  public static <T extends Object> Iterable<T> consumingIterable(
       final Iterable<T> iterable) {
     checkNotNull(iterable);
 
@@ -1056,8 +1046,7 @@ public final class Iterables {
    *
    * @since 11.0
    */
-  @Beta
-  public static <T extends @Nullable Object> Iterable<T> mergeSorted(
+  public static <T extends Object> Iterable<T> mergeSorted(
       final Iterable<? extends Iterable<? extends T>> iterables,
       final Comparator<? super T> comparator) {
     checkNotNull(iterables, "iterables");
@@ -1075,7 +1064,7 @@ public final class Iterables {
 
   // TODO(user): Is this the best place for this? Move to fluent functions?
   // Useful as a public method?
-  static <T extends @Nullable Object>
+  static <T extends Object>
       Function<Iterable<? extends T>, Iterator<? extends T>> toIterator() {
     return new Function<Iterable<? extends T>, Iterator<? extends T>>() {
       @Override
diff --git a/guava/src/com/google/common/collect/Iterators.java b/guava/src/com/google/common/collect/Iterators.java
index 5ea2da9..6f3e2d6 100644
--- a/guava/src/com/google/common/collect/Iterators.java
+++ b/guava/src/com/google/common/collect/Iterators.java
@@ -21,19 +21,13 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.base.Predicates.instanceOf;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ArrayDeque;
 import java.util.Arrays;
 import java.util.Collection;
@@ -48,7 +42,6 @@ import java.util.NoSuchElementException;
 import java.util.PriorityQueue;
 import java.util.Queue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * This class contains static utility methods that operate on or return objects of type {@link
@@ -67,7 +60,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Iterators {
   private Iterators() {}
@@ -77,7 +69,7 @@ public final class Iterators {
    *
    * <p>The {@link Iterable} equivalent of this method is {@link ImmutableSet#of()}.
    */
-  static <T extends @Nullable Object> UnmodifiableIterator<T> emptyIterator() {
+  static <T extends Object> UnmodifiableIterator<T> emptyIterator() {
     return emptyListIterator();
   }
 
@@ -88,7 +80,7 @@ public final class Iterators {
    */
   // Casting to any type is safe since there are no actual elements.
   @SuppressWarnings("unchecked")
-  static <T extends @Nullable Object> UnmodifiableListIterator<T> emptyListIterator() {
+  static <T extends Object> UnmodifiableListIterator<T> emptyListIterator() {
     return (UnmodifiableListIterator<T>) ArrayItr.EMPTY;
   }
 
@@ -121,12 +113,12 @@ public final class Iterators {
    */
   // Casting to any type is safe since there are no actual elements.
   @SuppressWarnings("unchecked")
-  static <T extends @Nullable Object> Iterator<T> emptyModifiableIterator() {
+  static <T extends Object> Iterator<T> emptyModifiableIterator() {
     return (Iterator<T>) EmptyModifiableIterator.INSTANCE;
   }
 
   /** Returns an unmodifiable view of {@code iterator}. */
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> unmodifiableIterator(
+  public static <T extends Object> UnmodifiableIterator<T> unmodifiableIterator(
       final Iterator<? extends T> iterator) {
     checkNotNull(iterator);
     if (iterator instanceof UnmodifiableIterator) {
@@ -155,7 +147,7 @@ public final class Iterators {
    * @since 10.0
    */
   @Deprecated
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> unmodifiableIterator(
+  public static <T extends Object> UnmodifiableIterator<T> unmodifiableIterator(
       UnmodifiableIterator<T> iterator) {
     return checkNotNull(iterator);
   }
@@ -199,7 +191,6 @@ public final class Iterators {
    * @param elementsToRemove the elements to remove
    * @return {@code true} if any element was removed from {@code iterator}
    */
-  @CanIgnoreReturnValue
   public static boolean removeAll(Iterator<?> removeFrom, Collection<?> elementsToRemove) {
     checkNotNull(elementsToRemove);
     boolean result = false;
@@ -221,8 +212,7 @@ public final class Iterators {
    * @return {@code true} if any elements were removed from the iterator
    * @since 2.0
    */
-  @CanIgnoreReturnValue
-  public static <T extends @Nullable Object> boolean removeIf(
+  public static <T extends Object> boolean removeIf(
       Iterator<T> removeFrom, Predicate<? super T> predicate) {
     checkNotNull(predicate);
     boolean modified = false;
@@ -244,7 +234,6 @@ public final class Iterators {
    * @param elementsToRetain the elements to retain
    * @return {@code true} if any element was removed from {@code iterator}
    */
-  @CanIgnoreReturnValue
   public static boolean retainAll(Iterator<?> removeFrom, Collection<?> elementsToRetain) {
     checkNotNull(elementsToRetain);
     boolean result = false;
@@ -305,7 +294,7 @@ public final class Iterators {
    *     iterator is unspecified.
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getOnlyElement(Iterator<T> iterator) {
+  public static <T extends Object> T getOnlyElement(Iterator<T> iterator) {
     T first = iterator.next();
     if (!iterator.hasNext()) {
       return first;
@@ -331,7 +320,7 @@ public final class Iterators {
    *     iterator is unspecified.
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getOnlyElement(
+  public static <T extends Object> T getOnlyElement(
       Iterator<? extends T> iterator, @ParametricNullness T defaultValue) {
     return iterator.hasNext() ? getOnlyElement(iterator) : defaultValue;
   }
@@ -344,10 +333,10 @@ public final class Iterators {
    * @param type the type of the elements
    * @return a newly-allocated array into which all the elements of the iterator have been copied
    */
-  @GwtIncompatible // Array.newInstance(Class, int)
+  // Array.newInstance(Class, int)
   // For discussion of this signature, see the corresponding overload of *Iterables*.toArray.
-  public static <T> @Nullable T[] toArray(Iterator<? extends @Nullable T> iterator, Class<T> type) {
-    List<@Nullable T> list = Lists.newArrayList(iterator);
+  public static <T> T[] toArray(Iterator<? extends @Nullable T> iterator, Class<T> type) {
+    List<T> list = Lists.newArrayList(iterator);
     return Iterables.toArray(list, type);
   }
 
@@ -357,8 +346,7 @@ public final class Iterators {
    *
    * @return {@code true} if {@code collection} was modified as a result of this operation
    */
-  @CanIgnoreReturnValue
-  public static <T extends @Nullable Object> boolean addAll(
+  public static <T extends Object> boolean addAll(
       Collection<T> addTo, Iterator<? extends T> iterator) {
     checkNotNull(addTo);
     checkNotNull(iterator);
@@ -397,7 +385,7 @@ public final class Iterators {
    * should use an explicit {@code break} or be certain that you will eventually remove all the
    * elements.
    */
-  public static <T extends @Nullable Object> Iterator<T> cycle(final Iterable<T> iterable) {
+  public static <T extends Object> Iterator<T> cycle(final Iterable<T> iterable) {
     checkNotNull(iterable);
     return new Iterator<T>() {
       Iterator<T> iterator = emptyModifiableIterator();
@@ -448,7 +436,7 @@ public final class Iterators {
    * elements.
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> Iterator<T> cycle(T... elements) {
+  public static <T extends Object> Iterator<T> cycle(T... elements) {
     return cycle(Lists.newArrayList(elements));
   }
 
@@ -497,7 +485,7 @@ public final class Iterators {
    * <p>The returned iterator supports {@code remove()} when the corresponding input iterator
    * supports it.
    */
-  public static <T extends @Nullable Object> Iterator<T> concat(
+  public static <T extends Object> Iterator<T> concat(
       Iterator<? extends T> a, Iterator<? extends T> b) {
     checkNotNull(a);
     checkNotNull(b);
@@ -512,7 +500,7 @@ public final class Iterators {
    * <p>The returned iterator supports {@code remove()} when the corresponding input iterator
    * supports it.
    */
-  public static <T extends @Nullable Object> Iterator<T> concat(
+  public static <T extends Object> Iterator<T> concat(
       Iterator<? extends T> a, Iterator<? extends T> b, Iterator<? extends T> c) {
     checkNotNull(a);
     checkNotNull(b);
@@ -529,7 +517,7 @@ public final class Iterators {
    * <p>The returned iterator supports {@code remove()} when the corresponding input iterator
    * supports it.
    */
-  public static <T extends @Nullable Object> Iterator<T> concat(
+  public static <T extends Object> Iterator<T> concat(
       Iterator<? extends T> a,
       Iterator<? extends T> b,
       Iterator<? extends T> c,
@@ -551,7 +539,7 @@ public final class Iterators {
    *
    * @throws NullPointerException if any of the provided iterators is null
    */
-  public static <T extends @Nullable Object> Iterator<T> concat(Iterator<? extends T>... inputs) {
+  public static <T extends Object> Iterator<T> concat(Iterator<? extends T>... inputs) {
     return concatNoDefensiveCopy(Arrays.copyOf(inputs, inputs.length));
   }
 
@@ -564,13 +552,13 @@ public final class Iterators {
    * supports it. The methods of the returned iterator may throw {@code NullPointerException} if any
    * of the input iterators is null.
    */
-  public static <T extends @Nullable Object> Iterator<T> concat(
+  public static <T extends Object> Iterator<T> concat(
       Iterator<? extends Iterator<? extends T>> inputs) {
     return new ConcatenatedIterator<T>(inputs);
   }
 
   /** Concats a varargs array of iterators without making a defensive copy of the array. */
-  static <T extends @Nullable Object> Iterator<T> concatNoDefensiveCopy(
+  static <T extends Object> Iterator<T> concatNoDefensiveCopy(
       Iterator<? extends T>... inputs) {
     for (Iterator<? extends T> input : checkNotNull(inputs)) {
       checkNotNull(input);
@@ -592,7 +580,7 @@ public final class Iterators {
    *     partitions
    * @throws IllegalArgumentException if {@code size} is nonpositive
    */
-  public static <T extends @Nullable Object> UnmodifiableIterator<List<T>> partition(
+  public static <T extends Object> UnmodifiableIterator<List<T>> partition(
       Iterator<T> iterator, int size) {
     return partitionImpl(iterator, size, false);
   }
@@ -611,28 +599,27 @@ public final class Iterators {
    *     partitions (the final iterable may have trailing null elements)
    * @throws IllegalArgumentException if {@code size} is nonpositive
    */
-  public static <T extends @Nullable Object>
-      UnmodifiableIterator<List<@Nullable T>> paddedPartition(Iterator<T> iterator, int size) {
+  public static <T extends Object>
+      UnmodifiableIterator<List<T>> paddedPartition(Iterator<T> iterator, int size) {
     return partitionImpl(iterator, size, true);
   }
 
-  private static <T extends @Nullable Object> UnmodifiableIterator<List<@Nullable T>> partitionImpl(
+  private static <T extends Object> UnmodifiableIterator<List<T>> partitionImpl(
       final Iterator<T> iterator, final int size, final boolean pad) {
     checkNotNull(iterator);
     checkArgument(size > 0);
-    return new UnmodifiableIterator<List<@Nullable T>>() {
+    return new UnmodifiableIterator<List<T>>() {
       @Override
       public boolean hasNext() {
         return iterator.hasNext();
       }
 
       @Override
-      public List<@Nullable T> next() {
+      public List<T> next() {
         if (!hasNext()) {
           throw new NoSuchElementException();
         }
         @SuppressWarnings("unchecked") // we only put Ts in it
-        @Nullable
         T[] array = (@Nullable T[]) new Object[size];
         int count = 0;
         for (; count < size && iterator.hasNext(); count++) {
@@ -642,7 +629,7 @@ public final class Iterators {
           array[i] = null; // for GWT
         }
 
-        List<@Nullable T> list = Collections.unmodifiableList(Arrays.asList(array));
+        List<T> list = Collections.unmodifiableList(Arrays.asList(array));
         // TODO(b/192579700): Use a ternary once it no longer confuses our nullness checker.
         if (pad || count == size) {
           return list;
@@ -657,7 +644,7 @@ public final class Iterators {
    * Returns a view of {@code unfiltered} containing all elements that satisfy the input predicate
    * {@code retainIfTrue}.
    */
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> filter(
+  public static <T extends Object> UnmodifiableIterator<T> filter(
       final Iterator<T> unfiltered, final Predicate<? super T> retainIfTrue) {
     checkNotNull(unfiltered);
     checkNotNull(retainIfTrue);
@@ -681,7 +668,7 @@ public final class Iterators {
    * desiredType}.
    */
   @SuppressWarnings("unchecked") // can cast to <T> because non-Ts are removed
-  @GwtIncompatible // Class.isInstance
+  // Class.isInstance
   public static <T> UnmodifiableIterator<T> filter(Iterator<?> unfiltered, Class<T> desiredType) {
     return (UnmodifiableIterator<T>) filter(unfiltered, instanceOf(desiredType));
   }
@@ -690,7 +677,7 @@ public final class Iterators {
    * Returns {@code true} if one or more elements returned by {@code iterator} satisfy the given
    * predicate.
    */
-  public static <T extends @Nullable Object> boolean any(
+  public static <T extends Object> boolean any(
       Iterator<T> iterator, Predicate<? super T> predicate) {
     return indexOf(iterator, predicate) != -1;
   }
@@ -699,7 +686,7 @@ public final class Iterators {
    * Returns {@code true} if every element returned by {@code iterator} satisfies the given
    * predicate. If {@code iterator} is empty, {@code true} is returned.
    */
-  public static <T extends @Nullable Object> boolean all(
+  public static <T extends Object> boolean all(
       Iterator<T> iterator, Predicate<? super T> predicate) {
     checkNotNull(predicate);
     while (iterator.hasNext()) {
@@ -721,7 +708,7 @@ public final class Iterators {
    * @throws NoSuchElementException if no element in {@code iterator} matches the given predicate
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T find(
+  public static <T extends Object> T find(
       Iterator<T> iterator, Predicate<? super T> predicate) {
     checkNotNull(iterator);
     checkNotNull(predicate);
@@ -744,7 +731,7 @@ public final class Iterators {
    */
   // For discussion of this signature, see the corresponding overload of *Iterables*.find.
   @CheckForNull
-  public static <T extends @Nullable Object> T find(
+  public static <T extends Object> T find(
       Iterator<? extends T> iterator,
       Predicate<? super T> predicate,
       @CheckForNull T defaultValue) {
@@ -796,7 +783,7 @@ public final class Iterators {
    *
    * @since 2.0
    */
-  public static <T extends @Nullable Object> int indexOf(
+  public static <T extends Object> int indexOf(
       Iterator<T> iterator, Predicate<? super T> predicate) {
     checkNotNull(predicate, "predicate");
     for (int i = 0; iterator.hasNext(); i++) {
@@ -816,7 +803,7 @@ public final class Iterators {
    * successful {@code remove()} call, {@code fromIterator} no longer contains the corresponding
    * element.
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> Iterator<T> transform(
+  public static <F extends Object, T extends Object> Iterator<T> transform(
       final Iterator<F> fromIterator, final Function<? super F, ? extends T> function) {
     checkNotNull(function);
     return new TransformedIterator<F, T>(fromIterator) {
@@ -838,7 +825,7 @@ public final class Iterators {
    *     the number of elements remaining in {@code iterator}
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T get(Iterator<T> iterator, int position) {
+  public static <T extends Object> T get(Iterator<T> iterator, int position) {
     checkNonnegative(position);
     int skipped = advance(iterator, position);
     if (!iterator.hasNext()) {
@@ -865,7 +852,7 @@ public final class Iterators {
    * @since 4.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T get(
+  public static <T extends Object> T get(
       Iterator<? extends T> iterator, int position, @ParametricNullness T defaultValue) {
     checkNonnegative(position);
     advance(iterator, position);
@@ -887,7 +874,7 @@ public final class Iterators {
    * @since 7.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getNext(
+  public static <T extends Object> T getNext(
       Iterator<? extends T> iterator, @ParametricNullness T defaultValue) {
     return iterator.hasNext() ? iterator.next() : defaultValue;
   }
@@ -899,7 +886,7 @@ public final class Iterators {
    * @throws NoSuchElementException if the iterator is empty
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getLast(Iterator<T> iterator) {
+  public static <T extends Object> T getLast(Iterator<T> iterator) {
     while (true) {
       T current = iterator.next();
       if (!iterator.hasNext()) {
@@ -917,7 +904,7 @@ public final class Iterators {
    * @since 3.0
    */
   @ParametricNullness
-  public static <T extends @Nullable Object> T getLast(
+  public static <T extends Object> T getLast(
       Iterator<? extends T> iterator, @ParametricNullness T defaultValue) {
     return iterator.hasNext() ? getLast(iterator) : defaultValue;
   }
@@ -929,7 +916,6 @@ public final class Iterators {
    * @return the number of elements the iterator was advanced
    * @since 13.0 (since 3.0 as {@code Iterators.skip})
    */
-  @CanIgnoreReturnValue
   public static int advance(Iterator<?> iterator, int numberToAdvance) {
     checkNotNull(iterator);
     checkArgument(numberToAdvance >= 0, "numberToAdvance must be nonnegative");
@@ -951,7 +937,7 @@ public final class Iterators {
    * @throws IllegalArgumentException if {@code limitSize} is negative
    * @since 3.0
    */
-  public static <T extends @Nullable Object> Iterator<T> limit(
+  public static <T extends Object> Iterator<T> limit(
       final Iterator<T> iterator, final int limitSize) {
     checkNotNull(iterator);
     checkArgument(limitSize >= 0, "limit is negative");
@@ -991,7 +977,7 @@ public final class Iterators {
    * @return an iterator that removes and returns elements from the supplied iterator
    * @since 2.0
    */
-  public static <T extends @Nullable Object> Iterator<T> consumingIterator(
+  public static <T extends Object> Iterator<T> consumingIterator(
       final Iterator<T> iterator) {
     checkNotNull(iterator);
     return new UnmodifiableIterator<T>() {
@@ -1020,7 +1006,7 @@ public final class Iterators {
    * such value.
    */
   @CheckForNull
-  static <T extends @Nullable Object> T pollNext(Iterator<T> iterator) {
+  static <T extends Object> T pollNext(Iterator<T> iterator) {
     if (iterator.hasNext()) {
       T result = iterator.next();
       iterator.remove();
@@ -1052,7 +1038,7 @@ public final class Iterators {
    * {@link ImmutableList#copyOf(Object[])}}, or {@link ImmutableList#of}.
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> forArray(final T... array) {
+  public static <T extends Object> UnmodifiableIterator<T> forArray(final T... array) {
     return forArray(array, 0, array.length, 0);
   }
 
@@ -1063,7 +1049,7 @@ public final class Iterators {
    * <p>The {@code Iterable} equivalent of this method is {@code
    * Arrays.asList(array).subList(offset, offset + length).listIterator(index)}.
    */
-  static <T extends @Nullable Object> UnmodifiableListIterator<T> forArray(
+  static <T extends Object> UnmodifiableListIterator<T> forArray(
       final T[] array, final int offset, int length, int index) {
     checkArgument(length >= 0);
     int end = offset + length;
@@ -1077,7 +1063,7 @@ public final class Iterators {
     return new ArrayItr<T>(array, offset, length, index);
   }
 
-  private static final class ArrayItr<T extends @Nullable Object>
+  private static final class ArrayItr<T extends Object>
       extends AbstractIndexedListIterator<T> {
     static final UnmodifiableListIterator<Object> EMPTY = new ArrayItr<>(new Object[0], 0, 0, 0);
 
@@ -1102,7 +1088,7 @@ public final class Iterators {
    *
    * <p>The {@link Iterable} equivalent of this method is {@link Collections#singleton}.
    */
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> singletonIterator(
+  public static <T extends Object> UnmodifiableIterator<T> singletonIterator(
       @ParametricNullness final T value) {
     return new UnmodifiableIterator<T>() {
       boolean done;
@@ -1134,7 +1120,7 @@ public final class Iterators {
    * <p><b>Java 9 users:</b> use {@code enumeration.asIterator()} instead, unless it is important to
    * return an {@code UnmodifiableIterator} instead of a plain {@code Iterator}.
    */
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> forEnumeration(
+  public static <T extends Object> UnmodifiableIterator<T> forEnumeration(
       final Enumeration<T> enumeration) {
     checkNotNull(enumeration);
     return new UnmodifiableIterator<T>() {
@@ -1157,7 +1143,7 @@ public final class Iterators {
    * <p>The {@code Iterable} equivalent of this method is either {@link Collections#enumeration} (if
    * you have a {@link Collection}), or {@code Iterators.asEnumeration(collection.iterator())}.
    */
-  public static <T extends @Nullable Object> Enumeration<T> asEnumeration(
+  public static <T extends Object> Enumeration<T> asEnumeration(
       final Iterator<T> iterator) {
     checkNotNull(iterator);
     return new Enumeration<T>() {
@@ -1175,7 +1161,7 @@ public final class Iterators {
   }
 
   /** Implementation of PeekingIterator that avoids peeking unless necessary. */
-  private static class PeekingImpl<E extends @Nullable Object> implements PeekingIterator<E> {
+  private static class PeekingImpl<E extends Object> implements PeekingIterator<E> {
 
     private final Iterator<? extends E> iterator;
     private boolean hasPeeked;
@@ -1257,7 +1243,7 @@ public final class Iterators {
    * @return a peeking iterator backed by that iterator. Apart from the additional {@link
    *     PeekingIterator#peek()} method, this iterator behaves exactly the same as {@code iterator}.
    */
-  public static <T extends @Nullable Object> PeekingIterator<T> peekingIterator(
+  public static <T extends Object> PeekingIterator<T> peekingIterator(
       Iterator<? extends T> iterator) {
     if (iterator instanceof PeekingImpl) {
       // Safe to cast <? extends T> to <T> because PeekingImpl only uses T
@@ -1276,7 +1262,7 @@ public final class Iterators {
    * @since 10.0
    */
   @Deprecated
-  public static <T extends @Nullable Object> PeekingIterator<T> peekingIterator(
+  public static <T extends Object> PeekingIterator<T> peekingIterator(
       PeekingIterator<T> iterator) {
     return checkNotNull(iterator);
   }
@@ -1293,8 +1279,7 @@ public final class Iterators {
    *
    * @since 11.0
    */
-  @Beta
-  public static <T extends @Nullable Object> UnmodifiableIterator<T> mergeSorted(
+  public static <T extends Object> UnmodifiableIterator<T> mergeSorted(
       Iterable<? extends Iterator<? extends T>> iterators, Comparator<? super T> comparator) {
     checkNotNull(iterators, "iterators");
     checkNotNull(comparator, "comparator");
@@ -1311,7 +1296,7 @@ public final class Iterators {
    * iterators. (Retrieving all elements takes approximately O(N*log(M)) time, where N is the total
    * number of elements.)
    */
-  private static class MergingIterator<T extends @Nullable Object> extends UnmodifiableIterator<T> {
+  private static class MergingIterator<T extends Object> extends UnmodifiableIterator<T> {
     final Queue<PeekingIterator<T>> queue;
 
     public MergingIterator(
@@ -1353,7 +1338,7 @@ public final class Iterators {
     }
   }
 
-  private static class ConcatenatedIterator<T extends @Nullable Object> implements Iterator<T> {
+  private static class ConcatenatedIterator<T extends Object> implements Iterator<T> {
     /* The last iterator to return an element.  Calls to remove() go to this iterator. */
     @CheckForNull private Iterator<? extends T> toRemove;
 
@@ -1450,7 +1435,7 @@ public final class Iterators {
   }
 
   /** Used to avoid http://bugs.sun.com/view_bug.do?bug_id=6558557 */
-  static <T extends @Nullable Object> ListIterator<T> cast(Iterator<T> iterator) {
+  static <T extends Object> ListIterator<T> cast(Iterator<T> iterator) {
     return (ListIterator<T>) iterator;
   }
 }
diff --git a/guava/src/com/google/common/collect/JdkBackedImmutableBiMap.java b/guava/src/com/google/common/collect/JdkBackedImmutableBiMap.java
index 09f3135..c5bb3ad 100644
--- a/guava/src/com/google/common/collect/JdkBackedImmutableBiMap.java
+++ b/guava/src/com/google/common/collect/JdkBackedImmutableBiMap.java
@@ -15,25 +15,16 @@
  */
 package com.google.common.collect;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of ImmutableBiMap backed by a pair of JDK HashMaps, which have smartness
  * protecting against hash flooding.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class JdkBackedImmutableBiMap<K, V> extends ImmutableBiMap<K, V> {
-  @VisibleForTesting
   static <K, V> ImmutableBiMap<K, V> create(int n, @Nullable Entry<K, V>[] entryArray) {
     Map<K, V> forwardDelegate = Maps.newHashMapWithExpectedSize(n);
     Map<V, K> backwardDelegate = Maps.newHashMapWithExpectedSize(n);
@@ -70,7 +61,7 @@ final class JdkBackedImmutableBiMap<K, V> extends ImmutableBiMap<K, V> {
     return entries.size();
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient JdkBackedImmutableBiMap<V, K> inverse;
+  @CheckForNull private transient JdkBackedImmutableBiMap<V, K> inverse;
 
   @Override
   public ImmutableBiMap<V, K> inverse() {
@@ -85,7 +76,6 @@ final class JdkBackedImmutableBiMap<K, V> extends ImmutableBiMap<K, V> {
     return result;
   }
 
-  @WeakOuter
   private final class InverseEntries extends ImmutableList<Entry<V, K>> {
     @Override
     public Entry<V, K> get(int index) {
diff --git a/guava/src/com/google/common/collect/JdkBackedImmutableMap.java b/guava/src/com/google/common/collect/JdkBackedImmutableMap.java
index 5b323b9..aaa0d68 100644
--- a/guava/src/com/google/common/collect/JdkBackedImmutableMap.java
+++ b/guava/src/com/google/common/collect/JdkBackedImmutableMap.java
@@ -17,20 +17,15 @@
 package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.RegularImmutableMap.makeImmutable;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 import java.util.function.BiConsumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of ImmutableMap backed by a JDK HashMap, which has smartness protecting against
  * hash flooding.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class JdkBackedImmutableMap<K, V> extends ImmutableMap<K, V> {
   /**
diff --git a/guava/src/com/google/common/collect/JdkBackedImmutableMultiset.java b/guava/src/com/google/common/collect/JdkBackedImmutableMultiset.java
index 7bdd9e8..dbea8c5 100644
--- a/guava/src/com/google/common/collect/JdkBackedImmutableMultiset.java
+++ b/guava/src/com/google/common/collect/JdkBackedImmutableMultiset.java
@@ -16,7 +16,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.primitives.Ints;
 import java.util.Collection;
 import java.util.Map;
@@ -28,7 +27,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class JdkBackedImmutableMultiset<E> extends ImmutableMultiset<E> {
   private final Map<E, Integer> delegateMap;
diff --git a/guava/src/com/google/common/collect/JdkBackedImmutableSet.java b/guava/src/com/google/common/collect/JdkBackedImmutableSet.java
index c001677..a5df162 100644
--- a/guava/src/com/google/common/collect/JdkBackedImmutableSet.java
+++ b/guava/src/com/google/common/collect/JdkBackedImmutableSet.java
@@ -14,7 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Set;
 import javax.annotation.CheckForNull;
 
@@ -25,7 +24,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 final class JdkBackedImmutableSet<E> extends IndexedImmutableSet<E> {
   private final Set<?> delegate;
diff --git a/guava/src/com/google/common/collect/LexicographicalOrdering.java b/guava/src/com/google/common/collect/LexicographicalOrdering.java
index 91fc7bf..7cc4902 100644
--- a/guava/src/com/google/common/collect/LexicographicalOrdering.java
+++ b/guava/src/com/google/common/collect/LexicographicalOrdering.java
@@ -16,17 +16,14 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Comparator;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering which sorts iterables by comparing corresponding elements pairwise. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class LexicographicalOrdering<T extends @Nullable Object> extends Ordering<Iterable<T>>
+final class LexicographicalOrdering<T extends Object> extends Ordering<Iterable<T>>
     implements Serializable {
   final Comparator<? super T> elementOrder;
 
diff --git a/guava/src/com/google/common/collect/LinkedHashMultimap.java b/guava/src/com/google/common/collect/LinkedHashMultimap.java
index b4d2ab9..77b4b92 100644
--- a/guava/src/com/google/common/collect/LinkedHashMultimap.java
+++ b/guava/src/com/google/common/collect/LinkedHashMultimap.java
@@ -19,14 +19,8 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -42,7 +36,6 @@ import java.util.Spliterator;
 import java.util.Spliterators;
 import java.util.function.Consumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@code Multimap} that does not allow duplicate key-value entries and that
@@ -83,13 +76,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public final class LinkedHashMultimap<K extends Object, V extends Object>
     extends LinkedHashMultimapGwtSerializationDependencies<K, V> {
 
   /** Creates a new, empty {@code LinkedHashMultimap} with the default initial capacities. */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMultimap<K, V> create() {
     return new LinkedHashMultimap<>(DEFAULT_KEY_CAPACITY, DEFAULT_VALUE_SET_CAPACITY);
   }
@@ -103,7 +95,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
    * @throws IllegalArgumentException if {@code expectedKeys} or {@code expectedValuesPerKey} is
    *     negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMultimap<K, V> create(int expectedKeys, int expectedValuesPerKey) {
     return new LinkedHashMultimap<>(
         Maps.capacity(expectedKeys), Maps.capacity(expectedValuesPerKey));
@@ -117,14 +109,14 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
    *
    * @param multimap the multimap whose contents are copied to this multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMultimap<K, V> create(Multimap<? extends K, ? extends V> multimap) {
     LinkedHashMultimap<K, V> result = create(multimap.keySet().size(), DEFAULT_VALUE_SET_CAPACITY);
     result.putAll(multimap);
     return result;
   }
 
-  private interface ValueSetLink<K extends @Nullable Object, V extends @Nullable Object> {
+  private interface ValueSetLink<K extends Object, V extends Object> {
     ValueSetLink<K, V> getPredecessorInValueSet();
 
     ValueSetLink<K, V> getSuccessorInValueSet();
@@ -134,24 +126,24 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
     void setSuccessorInValueSet(ValueSetLink<K, V> entry);
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> void succeedsInValueSet(
+  private static <K extends Object, V extends Object> void succeedsInValueSet(
       ValueSetLink<K, V> pred, ValueSetLink<K, V> succ) {
     pred.setSuccessorInValueSet(succ);
     succ.setPredecessorInValueSet(pred);
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> void succeedsInMultimap(
+  private static <K extends Object, V extends Object> void succeedsInMultimap(
       ValueEntry<K, V> pred, ValueEntry<K, V> succ) {
     pred.setSuccessorInMultimap(succ);
     succ.setPredecessorInMultimap(pred);
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> void deleteFromValueSet(
+  private static <K extends Object, V extends Object> void deleteFromValueSet(
       ValueSetLink<K, V> entry) {
     succeedsInValueSet(entry.getPredecessorInValueSet(), entry.getSuccessorInValueSet());
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> void deleteFromMultimap(
+  private static <K extends Object, V extends Object> void deleteFromMultimap(
       ValueEntry<K, V> entry) {
     succeedsInMultimap(entry.getPredecessorInMultimap(), entry.getSuccessorInMultimap());
   }
@@ -162,8 +154,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
    * entries in that {@code Set<V>}, and the linked list of entries in the LinkedHashMultimap as a
    * whole.
    */
-  @VisibleForTesting
-  static final class ValueEntry<K extends @Nullable Object, V extends @Nullable Object>
+  static final class ValueEntry<K extends Object, V extends Object>
       extends ImmutableEntry<K, V> implements ValueSetLink<K, V> {
     final int smearedValueHash;
 
@@ -210,7 +201,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
     }
 
     @SuppressWarnings("nullness") // see the comment on the class fields, especially about newHeader
-    static <K extends @Nullable Object, V extends @Nullable Object> ValueEntry<K, V> newHeader() {
+    static <K extends Object, V extends Object> ValueEntry<K, V> newHeader() {
       return new ValueEntry<>(null, null, 0, null);
     }
 
@@ -257,9 +248,9 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
 
   private static final int DEFAULT_KEY_CAPACITY = 16;
   private static final int DEFAULT_VALUE_SET_CAPACITY = 2;
-  @VisibleForTesting static final double VALUE_SET_LOAD_FACTOR = 1.0;
+  static final double VALUE_SET_LOAD_FACTOR = 1.0;
 
-  @VisibleForTesting transient int valueSetCapacity = DEFAULT_VALUE_SET_CAPACITY;
+  transient int valueSetCapacity = DEFAULT_VALUE_SET_CAPACITY;
   private transient ValueEntry<K, V> multimapHeaderEntry;
 
   private LinkedHashMultimap(int keyCapacity, int valueSetCapacity) {
@@ -304,7 +295,6 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
    * the {@code keySet()} ordering is unchanged. However, the provided values always come last in
    * the {@link #entries()} and {@link #values()} iteration orderings.
    */
-  @CanIgnoreReturnValue
   @Override
   public Set<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     return super.replaceValues(key, values);
@@ -353,8 +343,6 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
     return super.values();
   }
 
-  @VisibleForTesting
-  @WeakOuter
   final class ValueSet extends Sets.ImprovedAbstractSet<V> implements ValueSetLink<K, V> {
     /*
      * We currently use a fixed load factor of 1.0, a bit higher than normal to reduce memory
@@ -362,7 +350,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
      */
 
     @ParametricNullness private final K key;
-    @VisibleForTesting @Nullable ValueEntry<K, V>[] hashTable;
+    ValueEntry<K, V>[] hashTable;
     private int size = 0;
     private int modCount = 0;
 
@@ -379,8 +367,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
       int tableSize = Hashing.closedTableSize(expectedValues, VALUE_SET_LOAD_FACTOR);
 
       @SuppressWarnings({"rawtypes", "unchecked"})
-      @Nullable
-      ValueEntry<K, V>[] hashTable = new @Nullable ValueEntry[tableSize];
+      ValueEntry<K, V>[] hashTable = new ValueEntry[tableSize];
       this.hashTable = hashTable;
     }
 
@@ -519,7 +506,6 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
       }
     }
 
-    @CanIgnoreReturnValue
     @Override
     public boolean remove(@CheckForNull Object o) {
       int smearedHash = Hashing.smearedHash(o);
@@ -616,7 +602,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
    * @serialData the expected values per key, the number of distinct keys, the number of entries,
    *     and the entries in order
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeInt(keySet().size());
@@ -630,7 +616,7 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
     }
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     multimapHeaderEntry = ValueEntry.newHeader();
@@ -658,6 +644,6 @@ public final class LinkedHashMultimap<K extends @Nullable Object, V extends @Nul
     setMap(map);
   }
 
-  @GwtIncompatible // java serialization not supported
+  // java serialization not supported
   private static final long serialVersionUID = 1;
 }
diff --git a/guava/src/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java b/guava/src/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java
index bb4a2e4..994ff54 100644
--- a/guava/src/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java
+++ b/guava/src/com/google/common/collect/LinkedHashMultimapGwtSerializationDependencies.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Map;
 
@@ -29,7 +28,6 @@ import java.util.Map;
  *
  * <p>TODO(cpovirk): Consider applying this subclass approach to our other types.
  */
-@GwtCompatible(emulated = true)
 abstract class LinkedHashMultimapGwtSerializationDependencies<K, V>
     extends AbstractSetMultimap<K, V> {
   LinkedHashMultimapGwtSerializationDependencies(Map<K, Collection<V>> map) {
diff --git a/guava/src/com/google/common/collect/LinkedHashMultiset.java b/guava/src/com/google/common/collect/LinkedHashMultiset.java
index 13f70a7..a978527 100644
--- a/guava/src/com/google/common/collect/LinkedHashMultiset.java
+++ b/guava/src/com/google/common/collect/LinkedHashMultiset.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.util.LinkedHashMap;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements
@@ -39,13 +36,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class LinkedHashMultiset<E extends @Nullable Object>
+public final class LinkedHashMultiset<E extends Object>
     extends AbstractMapBasedMultiset<E> {
 
   /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */
-  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {
+  public static <E extends Object> LinkedHashMultiset<E> create() {
     return new LinkedHashMultiset<E>();
   }
 
@@ -56,7 +52,7 @@ public final class LinkedHashMultiset<E extends @Nullable Object>
    * @param distinctElements the expected number of distinct elements
    * @throws IllegalArgumentException if {@code distinctElements} is negative
    */
-  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {
+  public static <E extends Object> LinkedHashMultiset<E> create(int distinctElements) {
     return new LinkedHashMultiset<E>(distinctElements);
   }
 
@@ -67,7 +63,7 @@ public final class LinkedHashMultiset<E extends @Nullable Object>
    *
    * @param elements the elements that the multiset should contain
    */
-  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(
+  public static <E extends Object> LinkedHashMultiset<E> create(
       Iterable<? extends E> elements) {
     LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));
     Iterables.addAll(multiset, elements);
@@ -86,13 +82,13 @@ public final class LinkedHashMultiset<E extends @Nullable Object>
    * @serialData the number of distinct elements, the first element, its count, the second element,
    *     its count, and so on
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     Serialization.writeMultiset(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     int distinctElements = Serialization.readCount(stream);
@@ -100,6 +96,6 @@ public final class LinkedHashMultiset<E extends @Nullable Object>
     Serialization.populateMultiset(this, stream, distinctElements);
   }
 
-  @GwtIncompatible // not needed in emulated source
+  // not needed in emulated source
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/LinkedListMultimap.java b/guava/src/com/google/common/collect/LinkedListMultimap.java
index a557870..6e19998 100644
--- a/guava/src/com/google/common/collect/LinkedListMultimap.java
+++ b/guava/src/com/google/common/collect/LinkedListMultimap.java
@@ -20,12 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndex;
 import static com.google.common.base.Preconditions.checkState;
 import static java.util.Collections.unmodifiableList;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -42,7 +37,6 @@ import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.function.Consumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An implementation of {@code ListMultimap} that supports deterministic iteration order for both
@@ -96,9 +90,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mike Bostock
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public class LinkedListMultimap<K extends Object, V extends Object>
     extends AbstractMultimap<K, V> implements ListMultimap<K, V>, Serializable {
   /*
    * Order is maintained using a linked list containing all key-value pairs. In
@@ -107,7 +100,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    * ValueForKeyIterator} in constant time.
    */
 
-  private static final class Node<K extends @Nullable Object, V extends @Nullable Object>
+  private static final class Node<K extends Object, V extends Object>
       extends AbstractMapEntry<K, V> {
     @ParametricNullness final K key;
     @ParametricNullness V value;
@@ -142,7 +135,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
     }
   }
 
-  private static class KeyList<K extends @Nullable Object, V extends @Nullable Object> {
+  private static class KeyList<K extends Object, V extends Object> {
     Node<K, V> head;
     Node<K, V> tail;
     int count;
@@ -169,7 +162,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
   private transient int modCount;
 
   /** Creates a new, empty {@code LinkedListMultimap} with the default initial capacity. */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedListMultimap<K, V> create() {
     return new LinkedListMultimap<>();
   }
@@ -181,7 +174,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    * @param expectedKeys the expected number of distinct keys
    * @throws IllegalArgumentException if {@code expectedKeys} is negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedListMultimap<K, V> create(int expectedKeys) {
     return new LinkedListMultimap<>(expectedKeys);
   }
@@ -193,7 +186,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    *
    * @param multimap the multimap whose contents are copied to this multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedListMultimap<K, V> create(Multimap<? extends K, ? extends V> multimap) {
     return new LinkedListMultimap<>(multimap);
   }
@@ -216,7 +209,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    * element, or at the end of the list if {@code nextSibling} is null. Note: if {@code nextSibling}
    * is specified, it MUST be for an node for the same {@code key}!
    */
-  @CanIgnoreReturnValue
   private Node<K, V> addNode(
       @ParametricNullness K key,
       @ParametricNullness V value,
@@ -360,7 +352,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
       return next != null;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Node<K, V> next() {
       checkForConcurrentModification();
@@ -394,7 +385,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
       return previous != null;
     }
 
-    @CanIgnoreReturnValue
     @Override
     public Node<K, V> previous() {
       checkForConcurrentModification();
@@ -525,7 +515,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
       return next != null;
     }
 
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public V next() {
@@ -543,7 +532,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
       return previous != null;
     }
 
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public V previous() {
@@ -624,7 +612,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    * @param value value to store in the multimap
    * @return {@code true} always
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean put(@ParametricNullness K key, @ParametricNullness V value) {
     addNode(key, value, null);
@@ -641,7 +628,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    *
    * <p>The returned list is immutable and implements {@link java.util.RandomAccess}.
    */
-  @CanIgnoreReturnValue
   @Override
   public List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values) {
     List<V> oldValues = getCopy(key);
@@ -677,7 +663,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    *
    * <p>The returned list is immutable and implements {@link java.util.RandomAccess}.
    */
-  @CanIgnoreReturnValue
   @Override
   public List<V> removeAll(@Nullable Object key) {
     /*
@@ -730,7 +715,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
 
   @Override
   Set<K> createKeySet() {
-    @WeakOuter
     class KeySetImpl extends Sets.ImprovedAbstractSet<K> {
       @Override
       public int size() {
@@ -775,7 +759,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
 
   @Override
   List<V> createValues() {
-    @WeakOuter
     class ValuesImpl extends AbstractSequentialList<V> {
       @Override
       public int size() {
@@ -825,7 +808,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
 
   @Override
   List<Entry<K, V>> createEntries() {
-    @WeakOuter
     class EntriesImpl extends AbstractSequentialList<Entry<K, V>> {
       @Override
       public int size() {
@@ -863,7 +845,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
    *     number of values for that key, and the key's values, followed by successive keys and values
    *     from the entries() ordering
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeInt(size());
@@ -873,7 +855,7 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
     }
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     keyToKeyList = Maps.newLinkedHashMap();
@@ -887,6 +869,6 @@ public class LinkedListMultimap<K extends @Nullable Object, V extends @Nullable
     }
   }
 
-  @GwtIncompatible // java serialization not supported
+  // java serialization not supported
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/ListMultimap.java b/guava/src/com/google/common/collect/ListMultimap.java
index 1686068..117c3bc 100644
--- a/guava/src/com/google/common/collect/ListMultimap.java
+++ b/guava/src/com/google/common/collect/ListMultimap.java
@@ -16,13 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion
@@ -40,9 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public interface ListMultimap<K extends Object, V extends Object>
     extends Multimap<K, V> {
   /**
    * {@inheritDoc}
@@ -61,7 +57,6 @@ public interface ListMultimap<K extends @Nullable Object, V extends @Nullable Ob
    * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in
    * the {@link Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   List<V> removeAll(@CheckForNull Object key);
 
@@ -72,7 +67,6 @@ public interface ListMultimap<K extends @Nullable Object, V extends @Nullable Ob
    * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in
    * the {@link Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);
 
diff --git a/guava/src/com/google/common/collect/Lists.java b/guava/src/com/google/common/collect/Lists.java
index 31d6e2a..aee5635 100644
--- a/guava/src/com/google/common/collect/Lists.java
+++ b/guava/src/com/google/common/collect/Lists.java
@@ -25,10 +25,6 @@ import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import com.google.common.math.IntMath;
@@ -50,7 +46,6 @@ import java.util.RandomAccess;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.function.Predicate;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@link List} instances. Also see this class's counterparts
@@ -64,7 +59,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Lists {
   private Lists() {}
@@ -80,8 +74,7 @@ public final class Lists {
    * deprecated. Instead, use the {@code ArrayList} {@linkplain ArrayList#ArrayList() constructor}
    * directly, taking advantage of the new <a href="http://goo.gl/iz2Wi">"diamond" syntax</a>.
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayList() {
+  public static <E extends Object> ArrayList<E> newArrayList() {
     return new ArrayList<>();
   }
 
@@ -100,8 +93,7 @@ public final class Lists {
    * not actually very useful and will likely be deprecated in the future.
    */
   @SafeVarargs
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayList(E... elements) {
+  public static <E extends Object> ArrayList<E> newArrayList(E... elements) {
     checkNotNull(elements); // for GWT
     // Avoid integer overflow when a large array is passed in
     int capacity = computeArrayListCapacity(elements.length);
@@ -123,8 +115,7 @@ public final class Lists {
    * constructor} directly, taking advantage of the new <a href="http://goo.gl/iz2Wi">"diamond"
    * syntax</a>.
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayList(
+  public static <E extends Object> ArrayList<E> newArrayList(
       Iterable<? extends E> elements) {
     checkNotNull(elements); // for GWT
     // Let ArrayList's sizing logic work, if possible
@@ -140,15 +131,13 @@ public final class Lists {
    * <p><b>Note:</b> if mutability is not required and the elements are non-null, use {@link
    * ImmutableList#copyOf(Iterator)} instead.
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayList(
+  public static <E extends Object> ArrayList<E> newArrayList(
       Iterator<? extends E> elements) {
     ArrayList<E> list = newArrayList();
     Iterators.addAll(list, elements);
     return list;
   }
 
-  @VisibleForTesting
   static int computeArrayListCapacity(int arraySize) {
     checkNonnegative(arraySize, "arraySize");
 
@@ -172,8 +161,7 @@ public final class Lists {
    *     reaches {@code initialArraySize + 1}
    * @throws IllegalArgumentException if {@code initialArraySize} is negative
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayListWithCapacity(
+  public static <E extends Object> ArrayList<E> newArrayListWithCapacity(
       int initialArraySize) {
     checkNonnegative(initialArraySize, "initialArraySize"); // for GWT.
     return new ArrayList<>(initialArraySize);
@@ -192,8 +180,7 @@ public final class Lists {
    *     elements
    * @throws IllegalArgumentException if {@code estimatedSize} is negative
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> ArrayList<E> newArrayListWithExpectedSize(
+  public static <E extends Object> ArrayList<E> newArrayListWithExpectedSize(
       int estimatedSize) {
     return new ArrayList<>(computeArrayListCapacity(estimatedSize));
   }
@@ -215,8 +202,7 @@ public final class Lists {
    * constructor} directly, taking advantage of the new <a href="http://goo.gl/iz2Wi">"diamond"
    * syntax</a>.
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> LinkedList<E> newLinkedList() {
+  public static <E extends Object> LinkedList<E> newLinkedList() {
     return new LinkedList<>();
   }
 
@@ -237,8 +223,7 @@ public final class Lists {
    * constructor} directly, taking advantage of the new <a href="http://goo.gl/iz2Wi">"diamond"
    * syntax</a>.
    */
-  @GwtCompatible(serializable = true)
-  public static <E extends @Nullable Object> LinkedList<E> newLinkedList(
+  public static <E extends Object> LinkedList<E> newLinkedList(
       Iterable<? extends E> elements) {
     LinkedList<E> list = newLinkedList();
     Iterables.addAll(list, elements);
@@ -254,8 +239,8 @@ public final class Lists {
    * @return a new, empty {@code CopyOnWriteArrayList}
    * @since 12.0
    */
-  @GwtIncompatible // CopyOnWriteArrayList
-  public static <E extends @Nullable Object> CopyOnWriteArrayList<E> newCopyOnWriteArrayList() {
+  // CopyOnWriteArrayList
+  public static <E extends Object> CopyOnWriteArrayList<E> newCopyOnWriteArrayList() {
     return new CopyOnWriteArrayList<>();
   }
 
@@ -266,8 +251,8 @@ public final class Lists {
    * @return a new {@code CopyOnWriteArrayList} containing those elements
    * @since 12.0
    */
-  @GwtIncompatible // CopyOnWriteArrayList
-  public static <E extends @Nullable Object> CopyOnWriteArrayList<E> newCopyOnWriteArrayList(
+  // CopyOnWriteArrayList
+  public static <E extends Object> CopyOnWriteArrayList<E> newCopyOnWriteArrayList(
       Iterable<? extends E> elements) {
     // We copy elements to an ArrayList first, rather than incurring the
     // quadratic cost of adding them to the COWAL directly.
@@ -292,7 +277,7 @@ public final class Lists {
    * @param rest an array of additional elements, possibly empty
    * @return an unmodifiable list containing the specified elements
    */
-  public static <E extends @Nullable Object> List<E> asList(@ParametricNullness E first, E[] rest) {
+  public static <E extends Object> List<E> asList(@ParametricNullness E first, E[] rest) {
     return new OnePlusArrayList<>(first, rest);
   }
 
@@ -312,13 +297,13 @@ public final class Lists {
    * @param rest an array of additional elements, possibly empty
    * @return an unmodifiable list containing the specified elements
    */
-  public static <E extends @Nullable Object> List<E> asList(
+  public static <E extends Object> List<E> asList(
       @ParametricNullness E first, @ParametricNullness E second, E[] rest) {
     return new TwoPlusArrayList<>(first, second, rest);
   }
 
   /** @see Lists#asList(Object, Object[]) */
-  private static class OnePlusArrayList<E extends @Nullable Object> extends AbstractList<E>
+  private static class OnePlusArrayList<E extends Object> extends AbstractList<E>
       implements Serializable, RandomAccess {
     @ParametricNullness final E first;
     final E[] rest;
@@ -345,7 +330,7 @@ public final class Lists {
   }
 
   /** @see Lists#asList(Object, Object, Object[]) */
-  private static class TwoPlusArrayList<E extends @Nullable Object> extends AbstractList<E>
+  private static class TwoPlusArrayList<E extends Object> extends AbstractList<E>
       implements Serializable, RandomAccess {
     @ParametricNullness final E first;
     @ParametricNullness final E second;
@@ -529,7 +514,7 @@ public final class Lists {
    * java.util.stream.Stream#map}. This method is not being deprecated, but we gently encourage you
    * to migrate to streams.
    */
-  public static <F extends @Nullable Object, T extends @Nullable Object> List<T> transform(
+  public static <F extends Object, T extends Object> List<T> transform(
       List<F> fromList, Function<? super F, ? extends T> function) {
     return (fromList instanceof RandomAccess)
         ? new TransformingRandomAccessList<>(fromList, function)
@@ -542,7 +527,7 @@ public final class Lists {
    * @see Lists#transform
    */
   private static class TransformingSequentialList<
-          F extends @Nullable Object, T extends @Nullable Object>
+          F extends Object, T extends Object>
       extends AbstractSequentialList<T> implements Serializable {
     final List<F> fromList;
     final Function<? super F, ? extends T> function;
@@ -594,7 +579,7 @@ public final class Lists {
    * @see Lists#transform
    */
   private static class TransformingRandomAccessList<
-          F extends @Nullable Object, T extends @Nullable Object>
+          F extends Object, T extends Object>
       extends AbstractList<T> implements RandomAccess, Serializable {
     final List<F> fromList;
     final Function<? super F, ? extends T> function;
@@ -670,7 +655,7 @@ public final class Lists {
    * @return a list of consecutive sublists
    * @throws IllegalArgumentException if {@code partitionSize} is nonpositive
    */
-  public static <T extends @Nullable Object> List<List<T>> partition(List<T> list, int size) {
+  public static <T extends Object> List<List<T>> partition(List<T> list, int size) {
     checkNotNull(list);
     checkArgument(size > 0);
     return (list instanceof RandomAccess)
@@ -678,7 +663,7 @@ public final class Lists {
         : new Partition<>(list, size);
   }
 
-  private static class Partition<T extends @Nullable Object> extends AbstractList<List<T>> {
+  private static class Partition<T extends Object> extends AbstractList<List<T>> {
     final List<T> list;
     final int size;
 
@@ -706,7 +691,7 @@ public final class Lists {
     }
   }
 
-  private static class RandomAccessPartition<T extends @Nullable Object> extends Partition<T>
+  private static class RandomAccessPartition<T extends Object> extends Partition<T>
       implements RandomAccess {
     RandomAccessPartition(List<T> list, int size) {
       super(list, size);
@@ -731,7 +716,6 @@ public final class Lists {
    * @return an {@code List<Character>} view of the character sequence
    * @since 7.0
    */
-  @Beta
   public static List<Character> charactersOf(CharSequence sequence) {
     return new CharSequenceAsList(checkNotNull(sequence));
   }
@@ -808,7 +792,7 @@ public final class Lists {
    *
    * @since 7.0
    */
-  public static <T extends @Nullable Object> List<T> reverse(List<T> list) {
+  public static <T extends Object> List<T> reverse(List<T> list) {
     if (list instanceof ImmutableList) {
       // Avoid nullness warnings.
       List<?> reversed = ((ImmutableList<?>) list).reverse();
@@ -824,7 +808,7 @@ public final class Lists {
     }
   }
 
-  private static class ReverseList<T extends @Nullable Object> extends AbstractList<T> {
+  private static class ReverseList<T extends Object> extends AbstractList<T> {
     private final List<T> forwardList;
 
     ReverseList(List<T> forwardList) {
@@ -967,7 +951,7 @@ public final class Lists {
     }
   }
 
-  private static class RandomAccessReverseList<T extends @Nullable Object> extends ReverseList<T>
+  private static class RandomAccessReverseList<T extends Object> extends ReverseList<T>
       implements RandomAccess {
     RandomAccessReverseList(List<T> forwardList) {
       super(forwardList);
@@ -1014,7 +998,7 @@ public final class Lists {
   }
 
   /** An implementation of {@link List#addAll(int, Collection)}. */
-  static <E extends @Nullable Object> boolean addAllImpl(
+  static <E extends Object> boolean addAllImpl(
       List<E> list, int index, Iterable<? extends E> elements) {
     boolean changed = false;
     ListIterator<E> listIterator = list.listIterator(index);
@@ -1091,12 +1075,12 @@ public final class Lists {
   }
 
   /** Returns an implementation of {@link List#listIterator(int)}. */
-  static <E extends @Nullable Object> ListIterator<E> listIteratorImpl(List<E> list, int index) {
+  static <E extends Object> ListIterator<E> listIteratorImpl(List<E> list, int index) {
     return new AbstractListWrapper<>(list).listIterator(index);
   }
 
   /** An implementation of {@link List#subList(int, int)}. */
-  static <E extends @Nullable Object> List<E> subListImpl(
+  static <E extends Object> List<E> subListImpl(
       final List<E> list, int fromIndex, int toIndex) {
     List<E> wrapper;
     if (list instanceof RandomAccess) {
@@ -1123,7 +1107,7 @@ public final class Lists {
     return wrapper.subList(fromIndex, toIndex);
   }
 
-  private static class AbstractListWrapper<E extends @Nullable Object> extends AbstractList<E> {
+  private static class AbstractListWrapper<E extends Object> extends AbstractList<E> {
     final List<E> backingList;
 
     AbstractListWrapper(List<E> backingList) {
@@ -1169,7 +1153,7 @@ public final class Lists {
     }
   }
 
-  private static class RandomAccessListWrapper<E extends @Nullable Object>
+  private static class RandomAccessListWrapper<E extends Object>
       extends AbstractListWrapper<E> implements RandomAccess {
     RandomAccessListWrapper(List<E> backingList) {
       super(backingList);
@@ -1177,7 +1161,7 @@ public final class Lists {
   }
 
   /** Used to avoid http://bugs.sun.com/view_bug.do?bug_id=6558557 */
-  static <T extends @Nullable Object> List<T> cast(Iterable<T> iterable) {
+  static <T extends Object> List<T> cast(Iterable<T> iterable) {
     return (List<T>) iterable;
   }
 }
diff --git a/guava/src/com/google/common/collect/MapDifference.java b/guava/src/com/google/common/collect/MapDifference.java
index 5000e4b..4df988a 100644
--- a/guava/src/com/google/common/collect/MapDifference.java
+++ b/guava/src/com/google/common/collect/MapDifference.java
@@ -16,11 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An object representing the differences between two maps.
@@ -28,10 +25,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@DoNotMock("Use Maps.difference")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface MapDifference<K extends @Nullable Object, V extends @Nullable Object> {
+public interface MapDifference<K extends Object, V extends Object> {
   /**
    * Returns {@code true} if there are no differences between the two maps; that is, if the maps are
    * equal.
@@ -88,8 +83,7 @@ public interface MapDifference<K extends @Nullable Object, V extends @Nullable O
    *
    * @since 2.0
    */
-  @DoNotMock("Use Maps.difference")
-  interface ValueDifference<V extends @Nullable Object> {
+  interface ValueDifference<V extends Object> {
     /** Returns the value from the left map (possibly null). */
     @ParametricNullness
     V leftValue();
diff --git a/guava/src/com/google/common/collect/MapMaker.java b/guava/src/com/google/common/collect/MapMaker.java
index a2612c1..0c8d24a 100644
--- a/guava/src/com/google/common/collect/MapMaker.java
+++ b/guava/src/com/google/common/collect/MapMaker.java
@@ -18,14 +18,10 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Equivalence;
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.MapMakerInternalMap.Strength;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import java.lang.ref.WeakReference;
 import java.util.ConcurrentModificationException;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -85,7 +81,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class MapMaker {
   private static final int DEFAULT_INITIAL_CAPACITY = 16;
@@ -117,8 +112,7 @@ public final class MapMaker {
    * #weakKeys} is specified, and {@link Equivalence#equals()} otherwise. The only place this is
    * used is in {@link Interners.WeakInterner}.
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // To be supported
+  // To be supported
   MapMaker keyEquivalence(Equivalence<Object> equivalence) {
     checkState(keyEquivalence == null, "key equivalence was already set to %s", keyEquivalence);
     keyEquivalence = checkNotNull(equivalence);
@@ -140,7 +134,6 @@ public final class MapMaker {
    * @throws IllegalArgumentException if {@code initialCapacity} is negative
    * @throws IllegalStateException if an initial capacity was already set
    */
-  @CanIgnoreReturnValue
   public MapMaker initialCapacity(int initialCapacity) {
     checkState(
         this.initialCapacity == UNSET_INT,
@@ -174,7 +167,6 @@ public final class MapMaker {
    * @throws IllegalArgumentException if {@code concurrencyLevel} is nonpositive
    * @throws IllegalStateException if a concurrency level was already set
    */
-  @CanIgnoreReturnValue
   public MapMaker concurrencyLevel(int concurrencyLevel) {
     checkState(
         this.concurrencyLevel == UNSET_INT,
@@ -200,8 +192,7 @@ public final class MapMaker {
    * @throws IllegalStateException if the key strength was already set
    * @see WeakReference
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   public MapMaker weakKeys() {
     return setKeyStrength(Strength.WEAK);
   }
@@ -236,8 +227,7 @@ public final class MapMaker {
    * @throws IllegalStateException if the value strength was already set
    * @see WeakReference
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // java.lang.ref.WeakReference
+  // java.lang.ref.WeakReference
   public MapMaker weakValues() {
     return setValueStrength(Strength.WEAK);
   }
diff --git a/guava/src/com/google/common/collect/MapMakerInternalMap.java b/guava/src/com/google/common/collect/MapMakerInternalMap.java
index 3725d97..3d71fcc 100644
--- a/guava/src/com/google/common/collect/MapMakerInternalMap.java
+++ b/guava/src/com/google/common/collect/MapMakerInternalMap.java
@@ -17,22 +17,15 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Equivalence;
 import com.google.common.collect.MapMaker.Dummy;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.Weak;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
 import java.util.AbstractCollection;
 import java.util.AbstractMap;
 import java.util.AbstractSet;
@@ -47,7 +40,6 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReferenceArray;
 import java.util.concurrent.locks.ReentrantLock;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * The concurrent hash map implementation built by {@link MapMaker}.
@@ -64,7 +56,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Doug Lea ({@code ConcurrentHashMap})
  */
 // TODO(kak): Consider removing @CanIgnoreReturnValue from this class.
-@GwtIncompatible
 @SuppressWarnings({
   "GuardedBy", // TODO(b/35466881): Fix or suppress.
   "nullness", // too much trouble for the payoff
@@ -343,7 +334,7 @@ class MapMakerInternalMap<
       implements InternalEntry<K, V, E> {
     final K key;
     final int hash;
-    final @Nullable E next;
+    final E next;
 
     AbstractStrongKeyEntry(K key, int hash, @Nullable E next) {
       this.key = key;
@@ -393,14 +384,14 @@ class MapMakerInternalMap<
   static final class StrongKeyStrongValueEntry<K, V>
       extends AbstractStrongKeyEntry<K, V, StrongKeyStrongValueEntry<K, V>>
       implements StrongValueEntry<K, V, StrongKeyStrongValueEntry<K, V>> {
-    private volatile @Nullable V value = null;
+    private volatile V value = null;
 
     StrongKeyStrongValueEntry(K key, int hash, @Nullable StrongKeyStrongValueEntry<K, V> next) {
       super(key, hash, next);
     }
 
     @Override
-    public @Nullable V getValue() {
+    public V getValue() {
       return value;
     }
 
@@ -649,7 +640,7 @@ class MapMakerInternalMap<
   abstract static class AbstractWeakKeyEntry<K, V, E extends InternalEntry<K, V, E>>
       extends WeakReference<K> implements InternalEntry<K, V, E> {
     final int hash;
-    final @Nullable E next;
+    final E next;
 
     AbstractWeakKeyEntry(ReferenceQueue<K> queue, K key, int hash, @Nullable E next) {
       super(key, queue);
@@ -757,7 +748,7 @@ class MapMakerInternalMap<
   static final class WeakKeyStrongValueEntry<K, V>
       extends AbstractWeakKeyEntry<K, V, WeakKeyStrongValueEntry<K, V>>
       implements StrongValueEntry<K, V, WeakKeyStrongValueEntry<K, V>> {
-    private volatile @Nullable V value = null;
+    private volatile V value = null;
 
     WeakKeyStrongValueEntry(
         ReferenceQueue<K> queue, K key, int hash, @Nullable WeakKeyStrongValueEntry<K, V> next) {
@@ -765,7 +756,7 @@ class MapMakerInternalMap<
     }
 
     @Override
-    public @Nullable V getValue() {
+    public V getValue() {
       return value;
     }
 
@@ -950,7 +941,6 @@ class MapMakerInternalMap<
      * Returns the current value being referenced, or {@code null} if there is none (e.g. because
      * either it got collected, or {@link #clear} was called, or it wasn't set in the first place).
      */
-    @Nullable
     V get();
 
     /** Returns the entry which contains this {@link WeakValueReference}. */
@@ -1026,7 +1016,7 @@ class MapMakerInternalMap<
   /** Concrete implementation of {@link WeakValueReference}. */
   static final class WeakValueReferenceImpl<K, V, E extends InternalEntry<K, V, E>>
       extends WeakReference<V> implements WeakValueReference<K, V, E> {
-    @Weak final E entry;
+    final E entry;
 
     WeakValueReferenceImpl(ReferenceQueue<V> queue, V referent, E entry) {
       super(referent, queue);
@@ -1068,7 +1058,6 @@ class MapMakerInternalMap<
    * This method is a convenience for testing. Code should call {@link Segment#copyEntry} directly.
    */
   // Guarded By Segment.this
-  @VisibleForTesting
   E copyEntry(E original, E newNext) {
     int hash = original.getHash();
     return segmentFor(hash).copyEntry(original, newNext);
@@ -1094,7 +1083,6 @@ class MapMakerInternalMap<
    * This method is a convenience for testing. Code should call {@link Segment#getLiveValue}
    * instead.
    */
-  @VisibleForTesting
   boolean isLiveForTesting(InternalEntry<K, V, ?> entry) {
     return segmentFor(entry.getHash()).getLiveValueForTesting(entry) != null;
   }
@@ -1169,7 +1157,7 @@ class MapMakerInternalMap<
      * comments.
      */
 
-    @Weak final MapMakerInternalMap<K, V, E, S> map;
+    final MapMakerInternalMap<K, V, E, S> map;
 
     /**
      * The number of live elements in this segment's region. This does not include unset elements
@@ -1192,7 +1180,7 @@ class MapMakerInternalMap<
     int threshold;
 
     /** The per-segment table. */
-    volatile @Nullable AtomicReferenceArray<E> table;
+    volatile AtomicReferenceArray<E> table;
 
     /** The maximum size of this map. MapMaker.UNSET_INT if there is no maximum. */
     final int maxSegmentSize;
@@ -1218,7 +1206,6 @@ class MapMakerInternalMap<
     abstract S self();
 
     /** Drains the reference queues used by this segment, if any. */
-    @GuardedBy("this")
     void maybeDrainReferenceQueues() {}
 
     /** Clears the reference queues used by this segment, if any. */
@@ -1315,7 +1302,6 @@ class MapMakerInternalMap<
     }
 
     /** Unsafely removes the given entry from this segment's hash table. */
-    @CanIgnoreReturnValue
     boolean removeTableEntryForTesting(InternalEntry<K, V, ?> entry) {
       return removeEntryForTesting(castForTesting(entry));
     }
@@ -1328,7 +1314,6 @@ class MapMakerInternalMap<
     /**
      * Unsafely returns the value of the given entry if it's still live, or {@code null} otherwise.
      */
-    @Nullable
     V getLiveValueForTesting(InternalEntry<K, V, ?> entry) {
       return getLiveValue(castForTesting(entry));
     }
@@ -1346,7 +1331,6 @@ class MapMakerInternalMap<
       }
     }
 
-    @GuardedBy("this")
     void drainKeyReferenceQueue(ReferenceQueue<K> keyReferenceQueue) {
       Reference<? extends K> ref;
       int i = 0;
@@ -1360,7 +1344,6 @@ class MapMakerInternalMap<
       }
     }
 
-    @GuardedBy("this")
     void drainValueReferenceQueue(ReferenceQueue<V> valueReferenceQueue) {
       Reference<? extends V> ref;
       int i = 0;
@@ -1447,7 +1430,6 @@ class MapMakerInternalMap<
      * This method is a convenience for testing. Code should call {@link
      * MapMakerInternalMap#containsValue} directly.
      */
-    @VisibleForTesting
     boolean containsValue(Object value) {
       try {
         if (count != 0) { // read-volatile
@@ -1530,7 +1512,6 @@ class MapMakerInternalMap<
     }
 
     /** Expands the table if possible. */
-    @GuardedBy("this")
     void expand() {
       AtomicReferenceArray<E> oldTable = table;
       int oldCapacity = oldTable.length();
@@ -1686,7 +1667,6 @@ class MapMakerInternalMap<
       }
     }
 
-    @CanIgnoreReturnValue
     V remove(Object key, int hash) {
       lock();
       try {
@@ -1799,7 +1779,6 @@ class MapMakerInternalMap<
      * @param entry the entry being removed from the table
      * @return the new first entry for the table
      */
-    @GuardedBy("this")
     E removeFromChain(E first, E entry) {
       int newCount = count;
       E newFirst = entry.getNext();
@@ -1816,7 +1795,6 @@ class MapMakerInternalMap<
     }
 
     /** Removes an entry whose key has been garbage collected. */
-    @CanIgnoreReturnValue
     boolean reclaimKey(E entry, int hash) {
       lock();
       try {
@@ -1843,7 +1821,6 @@ class MapMakerInternalMap<
     }
 
     /** Removes an entry whose value has been garbage collected. */
-    @CanIgnoreReturnValue
     boolean reclaimValue(K key, int hash, WeakValueReference<K, V, E> valueReference) {
       lock();
       try {
@@ -1877,7 +1854,6 @@ class MapMakerInternalMap<
     }
 
     /** Clears a value that has not yet been set, and thus does not require count to be modified. */
-    @CanIgnoreReturnValue
     boolean clearValueForTesting(
         K key,
         int hash,
@@ -1909,7 +1885,6 @@ class MapMakerInternalMap<
       }
     }
 
-    @GuardedBy("this")
     boolean removeEntryForTesting(E entry) {
       int hash = entry.getHash();
       int newCount = this.count - 1;
@@ -1943,7 +1918,6 @@ class MapMakerInternalMap<
      * Gets the value from an entry. Returns {@code null} if the entry is invalid or
      * partially-collected.
      */
-    @Nullable
     V getLiveValue(E entry) {
       if (entry.getKey() == null) {
         tryDrainReferenceQueues();
@@ -1973,7 +1947,6 @@ class MapMakerInternalMap<
      * Performs routine cleanup prior to executing a write. This should be called every time a write
      * thread acquires the segment lock, immediately after acquiring the lock.
      */
-    @GuardedBy("this")
     void preWriteCleanup() {
       runLockedCleanup();
     }
@@ -2276,17 +2249,14 @@ class MapMakerInternalMap<
     }
   }
 
-  @VisibleForTesting
   Strength keyStrength() {
     return entryHelper.keyStrength();
   }
 
-  @VisibleForTesting
   Strength valueStrength() {
     return entryHelper.valueStrength();
   }
 
-  @VisibleForTesting
   Equivalence<Object> valueEquivalence() {
     return entryHelper.valueStrength().defaultEquivalence();
   }
@@ -2401,7 +2371,6 @@ class MapMakerInternalMap<
     return false;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public V put(K key, V value) {
     checkNotNull(key);
@@ -2410,7 +2379,6 @@ class MapMakerInternalMap<
     return segmentFor(hash).put(key, hash, value, false);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public V putIfAbsent(K key, V value) {
     checkNotNull(key);
@@ -2426,7 +2394,6 @@ class MapMakerInternalMap<
     }
   }
 
-  @CanIgnoreReturnValue
   @Override
   public V remove(@Nullable Object key) {
     if (key == null) {
@@ -2436,7 +2403,6 @@ class MapMakerInternalMap<
     return segmentFor(hash).remove(key, hash);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean remove(@Nullable Object key, @Nullable Object value) {
     if (key == null || value == null) {
@@ -2446,7 +2412,6 @@ class MapMakerInternalMap<
     return segmentFor(hash).remove(key, hash, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean replace(K key, @Nullable V oldValue, V newValue) {
     checkNotNull(key);
@@ -2458,7 +2423,6 @@ class MapMakerInternalMap<
     return segmentFor(hash).replace(key, hash, oldValue, newValue);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public V replace(K key, V value) {
     checkNotNull(key);
@@ -2474,7 +2438,7 @@ class MapMakerInternalMap<
     }
   }
 
-  transient @Nullable Set<K> keySet;
+  transient Set<K> keySet;
 
   @Override
   public Set<K> keySet() {
@@ -2482,7 +2446,7 @@ class MapMakerInternalMap<
     return (ks != null) ? ks : (keySet = new KeySet());
   }
 
-  transient @Nullable Collection<V> values;
+  transient Collection<V> values;
 
   @Override
   public Collection<V> values() {
@@ -2490,7 +2454,7 @@ class MapMakerInternalMap<
     return (vs != null) ? vs : (values = new Values());
   }
 
-  transient @Nullable Set<Entry<K, V>> entrySet;
+  transient Set<Entry<K, V>> entrySet;
 
   @Override
   public Set<Entry<K, V>> entrySet() {
@@ -2504,11 +2468,11 @@ class MapMakerInternalMap<
 
     int nextSegmentIndex;
     int nextTableIndex;
-    @Nullable Segment<K, V, E, S> currentSegment;
-    @Nullable AtomicReferenceArray<E> currentTable;
-    @Nullable E nextEntry;
-    @Nullable WriteThroughEntry nextExternal;
-    @Nullable WriteThroughEntry lastReturned;
+    Segment<K, V, E, S> currentSegment;
+    AtomicReferenceArray<E> currentTable;
+    E nextEntry;
+    WriteThroughEntry nextExternal;
+    WriteThroughEntry lastReturned;
 
     HashIterator() {
       nextSegmentIndex = segments.length - 1;
@@ -2679,7 +2643,6 @@ class MapMakerInternalMap<
     }
   }
 
-  @WeakOuter
   final class KeySet extends SafeToArraySet<K> {
 
     @Override
@@ -2713,7 +2676,6 @@ class MapMakerInternalMap<
     }
   }
 
-  @WeakOuter
   final class Values extends AbstractCollection<V> {
 
     @Override
@@ -2755,7 +2717,6 @@ class MapMakerInternalMap<
     }
   }
 
-  @WeakOuter
   final class EntrySet extends SafeToArraySet<Entry<K, V>> {
 
     @Override
diff --git a/guava/src/com/google/common/collect/Maps.java b/guava/src/com/google/common/collect/Maps.java
index c892557..cd091ba 100644
--- a/guava/src/com/google/common/collect/Maps.java
+++ b/guava/src/com/google/common/collect/Maps.java
@@ -21,12 +21,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Predicates.compose;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
@@ -36,10 +31,6 @@ import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.collect.MapDifference.ValueDifference;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.RetainedWith;
-import com.google.j2objc.annotations.Weak;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.Serializable;
 import java.util.AbstractCollection;
 import java.util.AbstractMap;
@@ -71,7 +62,6 @@ import java.util.function.BinaryOperator;
 import java.util.function.Consumer;
 import java.util.stream.Collector;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@link Map} instances (including instances of {@link
@@ -87,12 +77,11 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Maps {
   private Maps() {}
 
-  private enum EntryFunction implements Function<Entry<?, ?>, @Nullable Object> {
+  private enum EntryFunction implements Function<Entry<?, ?>, Object> {
     KEY {
       @Override
       @CheckForNull
@@ -110,16 +99,16 @@ public final class Maps {
   }
 
   @SuppressWarnings("unchecked")
-  static <K extends @Nullable Object> Function<Entry<K, ?>, K> keyFunction() {
+  static <K extends Object> Function<Entry<K, ?>, K> keyFunction() {
     return (Function) EntryFunction.KEY;
   }
 
   @SuppressWarnings("unchecked")
-  static <V extends @Nullable Object> Function<Entry<?, V>, V> valueFunction() {
+  static <V extends Object> Function<Entry<?, V>, V> valueFunction() {
     return (Function) EntryFunction.VALUE;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> Iterator<K> keyIterator(
+  static <K extends Object, V extends Object> Iterator<K> keyIterator(
       Iterator<Entry<K, V>> entryIterator) {
     return new TransformedIterator<Entry<K, V>, K>(entryIterator) {
       @Override
@@ -130,7 +119,7 @@ public final class Maps {
     };
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> Iterator<V> valueIterator(
+  static <K extends Object, V extends Object> Iterator<V> valueIterator(
       Iterator<Entry<K, V>> entryIterator) {
     return new TransformedIterator<Entry<K, V>, V>(entryIterator) {
       @Override
@@ -152,7 +141,6 @@ public final class Maps {
    * @return an immutable map containing those entries
    * @since 14.0
    */
-  @GwtCompatible(serializable = true)
   public static <K extends Enum<K>, V> ImmutableMap<K, V> immutableEnumMap(
       Map<K, ? extends V> map) {
     if (map instanceof ImmutableEnumMap) {
@@ -195,7 +183,7 @@ public final class Maps {
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, K extends Enum<K>, V>
+  public static <T extends Object, K extends Enum<K>, V>
       Collector<T, ?, ImmutableMap<K, V>> toImmutableEnumMap(
           java.util.function.Function<? super T, ? extends K> keyFunction,
           java.util.function.Function<? super T, ? extends V> valueFunction) {
@@ -213,7 +201,7 @@ public final class Maps {
    *
    * @since 21.0
    */
-  public static <T extends @Nullable Object, K extends Enum<K>, V>
+  public static <T extends Object, K extends Enum<K>, V>
       Collector<T, ?, ImmutableMap<K, V>> toImmutableEnumMap(
           java.util.function.Function<? super T, ? extends K> keyFunction,
           java.util.function.Function<? super T, ? extends V> valueFunction,
@@ -234,7 +222,7 @@ public final class Maps {
    *
    * @return a new, empty {@code HashMap}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       HashMap<K, V> newHashMap() {
     return new HashMap<>();
   }
@@ -253,7 +241,7 @@ public final class Maps {
    * @param map the mappings to be placed in the new map
    * @return a new {@code HashMap} initialized with the mappings from {@code map}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> HashMap<K, V> newHashMap(
+  public static <K extends Object, V extends Object> HashMap<K, V> newHashMap(
       Map<? extends K, ? extends V> map) {
     return new HashMap<>(map);
   }
@@ -269,7 +257,7 @@ public final class Maps {
    *     without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       HashMap<K, V> newHashMapWithExpectedSize(int expectedSize) {
     return new HashMap<>(capacity(expectedSize));
   }
@@ -303,7 +291,7 @@ public final class Maps {
    *
    * @return a new, empty {@code LinkedHashMap}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMap<K, V> newLinkedHashMap() {
     return new LinkedHashMap<>();
   }
@@ -321,7 +309,7 @@ public final class Maps {
    * @param map the mappings to be placed in the new map
    * @return a new, {@code LinkedHashMap} initialized with the mappings from {@code map}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMap<K, V> newLinkedHashMap(Map<? extends K, ? extends V> map) {
     return new LinkedHashMap<>(map);
   }
@@ -338,7 +326,7 @@ public final class Maps {
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    * @since 19.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       LinkedHashMap<K, V> newLinkedHashMapWithExpectedSize(int expectedSize) {
     return new LinkedHashMap<>(capacity(expectedSize));
   }
@@ -364,7 +352,7 @@ public final class Maps {
    *
    * @return a new, empty {@code TreeMap}
    */
-  public static <K extends Comparable, V extends @Nullable Object> TreeMap<K, V> newTreeMap() {
+  public static <K extends Comparable, V extends Object> TreeMap<K, V> newTreeMap() {
     return new TreeMap<>();
   }
 
@@ -384,7 +372,7 @@ public final class Maps {
    * @return a new {@code TreeMap} initialized with the mappings from {@code map} and using the
    *     comparator of {@code map}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> TreeMap<K, V> newTreeMap(
+  public static <K extends Object, V extends Object> TreeMap<K, V> newTreeMap(
       SortedMap<K, ? extends V> map) {
     return new TreeMap<>(map);
   }
@@ -402,7 +390,7 @@ public final class Maps {
    * @param comparator the comparator to sort the keys with
    * @return a new, empty {@code TreeMap}
    */
-  public static <C extends @Nullable Object, K extends C, V extends @Nullable Object>
+  public static <C extends Object, K extends C, V extends Object>
       TreeMap<K, V> newTreeMap(@CheckForNull Comparator<C> comparator) {
     // Ideally, the extra type parameter "C" shouldn't be necessary. It is a
     // work-around of a compiler type inference quirk that prevents the
@@ -418,7 +406,7 @@ public final class Maps {
    * @param type the key type for this map
    * @return a new, empty {@code EnumMap}
    */
-  public static <K extends Enum<K>, V extends @Nullable Object> EnumMap<K, V> newEnumMap(
+  public static <K extends Enum<K>, V extends Object> EnumMap<K, V> newEnumMap(
       Class<K> type) {
     return new EnumMap<>(checkNotNull(type));
   }
@@ -435,7 +423,7 @@ public final class Maps {
    * @throws IllegalArgumentException if {@code m} is not an {@code EnumMap} instance and contains
    *     no mappings
    */
-  public static <K extends Enum<K>, V extends @Nullable Object> EnumMap<K, V> newEnumMap(
+  public static <K extends Enum<K>, V extends Object> EnumMap<K, V> newEnumMap(
       Map<K, ? extends V> map) {
     return new EnumMap<>(map);
   }
@@ -449,7 +437,7 @@ public final class Maps {
    *
    * @return a new, empty {@code IdentityHashMap}
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       IdentityHashMap<K, V> newIdentityHashMap() {
     return new IdentityHashMap<>();
   }
@@ -470,7 +458,7 @@ public final class Maps {
    * @return the difference between the two maps
    */
   @SuppressWarnings("unchecked")
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       MapDifference<K, V> difference(
           Map<? extends K, ? extends V> left, Map<? extends K, ? extends V> right) {
     if (left instanceof SortedMap) {
@@ -533,7 +521,7 @@ public final class Maps {
    * (Vaguely related: Another thing we could consider is an overload that accepts a BiPredicate:
    * https://github.com/google/guava/issues/3913)
    */
-  public static <K extends @Nullable Object, V> MapDifference<K, V> difference(
+  public static <K extends Object, V> MapDifference<K, V> difference(
       Map<? extends K, ? extends V> left,
       Map<? extends K, ? extends V> right,
       Equivalence<? super V> valueEquivalence) {
@@ -564,7 +552,7 @@ public final class Maps {
    * @return the difference between the two maps
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedMapDifference<K, V> difference(
           SortedMap<K, ? extends V> left, Map<? extends K, ? extends V> right) {
     checkNotNull(left);
@@ -579,7 +567,7 @@ public final class Maps {
     return new SortedMapDifferenceImpl<>(onlyOnLeft, onlyOnRight, onBoth, differences);
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> void doDifference(
+  private static <K extends Object, V extends Object> void doDifference(
       Map<? extends K, ? extends V> left,
       Map<? extends K, ? extends V> right,
       Equivalence<? super V> valueEquivalence,
@@ -613,7 +601,7 @@ public final class Maps {
     }
   }
 
-  private static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> unmodifiableMap(
+  private static <K extends Object, V extends Object> Map<K, V> unmodifiableMap(
       Map<K, ? extends V> map) {
     if (map instanceof SortedMap) {
       return Collections.unmodifiableSortedMap((SortedMap<K, ? extends V>) map);
@@ -622,7 +610,7 @@ public final class Maps {
     }
   }
 
-  static class MapDifferenceImpl<K extends @Nullable Object, V extends @Nullable Object>
+  static class MapDifferenceImpl<K extends Object, V extends Object>
       implements MapDifference<K, V> {
     final Map<K, V> onlyOnLeft;
     final Map<K, V> onlyOnRight;
@@ -706,12 +694,12 @@ public final class Maps {
     }
   }
 
-  static class ValueDifferenceImpl<V extends @Nullable Object>
+  static class ValueDifferenceImpl<V extends Object>
       implements MapDifference.ValueDifference<V> {
     @ParametricNullness private final V left;
     @ParametricNullness private final V right;
 
-    static <V extends @Nullable Object> ValueDifference<V> create(
+    static <V extends Object> ValueDifference<V> create(
         @ParametricNullness V left, @ParametricNullness V right) {
       return new ValueDifferenceImpl<V>(left, right);
     }
@@ -754,7 +742,7 @@ public final class Maps {
     }
   }
 
-  static class SortedMapDifferenceImpl<K extends @Nullable Object, V extends @Nullable Object>
+  static class SortedMapDifferenceImpl<K extends Object, V extends Object>
       extends MapDifferenceImpl<K, V> implements SortedMapDifference<K, V> {
     SortedMapDifferenceImpl(
         SortedMap<K, V> onlyOnLeft,
@@ -791,7 +779,7 @@ public final class Maps {
    * ugly type-casting in one place.
    */
   @SuppressWarnings("unchecked")
-  static <E extends @Nullable Object> Comparator<? super E> orNaturalOrder(
+  static <E extends Object> Comparator<? super E> orNaturalOrder(
       @CheckForNull Comparator<? super E> comparator) {
     if (comparator != null) { // can't use ? : because of javac bug 5080917
       return comparator;
@@ -823,7 +811,7 @@ public final class Maps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> asMap(
+  public static <K extends Object, V extends Object> Map<K, V> asMap(
       Set<K> set, Function<? super K, V> function) {
     return new AsMapView<>(set, function);
   }
@@ -851,7 +839,7 @@ public final class Maps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> SortedMap<K, V> asMap(
+  public static <K extends Object, V extends Object> SortedMap<K, V> asMap(
       SortedSet<K> set, Function<? super K, V> function) {
     return new SortedAsMapView<>(set, function);
   }
@@ -879,13 +867,13 @@ public final class Maps {
    *
    * @since 14.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object> NavigableMap<K, V> asMap(
+  // NavigableMap
+  public static <K extends Object, V extends Object> NavigableMap<K, V> asMap(
       NavigableSet<K> set, Function<? super K, V> function) {
     return new NavigableAsMapView<>(set, function);
   }
 
-  private static class AsMapView<K extends @Nullable Object, V extends @Nullable Object>
+  private static class AsMapView<K extends Object, V extends Object>
       extends ViewCachingAbstractMap<K, V> {
 
     private final Set<K> set;
@@ -957,7 +945,6 @@ public final class Maps {
 
     @Override
     protected Set<Entry<K, V>> createEntrySet() {
-      @WeakOuter
       class EntrySetImpl extends EntrySet<K, V> {
         @Override
         Map<K, V> map() {
@@ -980,7 +967,7 @@ public final class Maps {
     }
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       Iterator<Entry<K, V>> asMapEntryIterator(Set<K> set, final Function<? super K, V> function) {
     return new TransformedIterator<K, Entry<K, V>>(set.iterator()) {
       @Override
@@ -990,7 +977,7 @@ public final class Maps {
     };
   }
 
-  private static class SortedAsMapView<K extends @Nullable Object, V extends @Nullable Object>
+  private static class SortedAsMapView<K extends Object, V extends Object>
       extends AsMapView<K, V> implements SortedMap<K, V> {
 
     SortedAsMapView(SortedSet<K> set, Function<? super K, V> function) {
@@ -1041,9 +1028,9 @@ public final class Maps {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   private static final class NavigableAsMapView<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends AbstractNavigableMap<K, V> {
     /*
      * Using AbstractNavigableMap is simpler than extending SortedAsMapView and rewriting all the
@@ -1142,7 +1129,7 @@ public final class Maps {
     }
   }
 
-  private static <E extends @Nullable Object> Set<E> removeOnlySet(final Set<E> set) {
+  private static <E extends Object> Set<E> removeOnlySet(final Set<E> set) {
     return new ForwardingSet<E>() {
       @Override
       protected Set<E> delegate() {
@@ -1161,7 +1148,7 @@ public final class Maps {
     };
   }
 
-  private static <E extends @Nullable Object> SortedSet<E> removeOnlySortedSet(
+  private static <E extends Object> SortedSet<E> removeOnlySortedSet(
       final SortedSet<E> set) {
     return new ForwardingSortedSet<E>() {
       @Override
@@ -1197,8 +1184,8 @@ public final class Maps {
     };
   }
 
-  @GwtIncompatible // NavigableSet
-  private static <E extends @Nullable Object> NavigableSet<E> removeOnlyNavigableSet(
+  // NavigableSet
+  private static <E extends Object> NavigableSet<E> removeOnlyNavigableSet(
       final NavigableSet<E> set) {
     return new ForwardingNavigableSet<E>() {
       @Override
@@ -1333,7 +1320,6 @@ public final class Maps {
    * @throws NullPointerException if any element of {@code values} is {@code null}, or if {@code
    *     keyFunction} produces {@code null} for any value
    */
-  @CanIgnoreReturnValue
   public static <K, V> ImmutableMap<K, V> uniqueIndex(
       Iterable<V> values, Function<? super V, K> keyFunction) {
     // TODO(lowasser): consider presizing the builder if values is a Collection
@@ -1369,7 +1355,6 @@ public final class Maps {
    *     keyFunction} produces {@code null} for any value
    * @since 10.0
    */
-  @CanIgnoreReturnValue
   public static <K, V> ImmutableMap<K, V> uniqueIndex(
       Iterator<V> values, Function<? super V, K> keyFunction) {
     checkNotNull(keyFunction);
@@ -1397,7 +1382,7 @@ public final class Maps {
    * @throws ClassCastException if any key in {@code properties} is not a {@code String}
    * @throws NullPointerException if any key or value in {@code properties} is null
    */
-  @GwtIncompatible // java.util.Properties
+  // java.util.Properties
   public static ImmutableMap<String, String> fromProperties(Properties properties) {
     ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
 
@@ -1447,8 +1432,7 @@ public final class Maps {
    * @param key the key to be associated with the returned entry
    * @param value the value to be associated with the returned entry
    */
-  @GwtCompatible(serializable = true)
-  public static <K extends @Nullable Object, V extends @Nullable Object> Entry<K, V> immutableEntry(
+  public static <K extends Object, V extends Object> Entry<K, V> immutableEntry(
       @ParametricNullness K key, @ParametricNullness V value) {
     return new ImmutableEntry<>(key, value);
   }
@@ -1461,7 +1445,7 @@ public final class Maps {
    * @param entrySet the entries for which to return an unmodifiable view
    * @return an unmodifiable view of the entries
    */
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       Set<Entry<K, V>> unmodifiableEntrySet(Set<Entry<K, V>> entrySet) {
     return new UnmodifiableEntrySet<>(Collections.unmodifiableSet(entrySet));
   }
@@ -1475,7 +1459,7 @@ public final class Maps {
    * @param entry the entry for which to return an unmodifiable view
    * @return an unmodifiable view of the entry
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> Entry<K, V> unmodifiableEntry(
+  static <K extends Object, V extends Object> Entry<K, V> unmodifiableEntry(
       final Entry<? extends K, ? extends V> entry) {
     checkNotNull(entry);
     return new AbstractMapEntry<K, V>() {
@@ -1493,7 +1477,7 @@ public final class Maps {
     };
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       UnmodifiableIterator<Entry<K, V>> unmodifiableEntryIterator(
           final Iterator<Entry<K, V>> entryIterator) {
     return new UnmodifiableIterator<Entry<K, V>>() {
@@ -1510,7 +1494,7 @@ public final class Maps {
   }
 
   /** @see Multimaps#unmodifiableEntries */
-  static class UnmodifiableEntries<K extends @Nullable Object, V extends @Nullable Object>
+  static class UnmodifiableEntries<K extends Object, V extends Object>
       extends ForwardingCollection<Entry<K, V>> {
     private final Collection<Entry<K, V>> entries;
 
@@ -1544,13 +1528,13 @@ public final class Maps {
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return standardToArray(array);
     }
   }
 
   /** @see Maps#unmodifiableEntrySet(Set) */
-  static class UnmodifiableEntrySet<K extends @Nullable Object, V extends @Nullable Object>
+  static class UnmodifiableEntrySet<K extends Object, V extends Object>
       extends UnmodifiableEntries<K, V> implements Set<Entry<K, V>> {
     UnmodifiableEntrySet(Set<Entry<K, V>> entries) {
       super(entries);
@@ -1658,7 +1642,7 @@ public final class Maps {
    * @param bimap the bimap to be wrapped in a synchronized view
    * @return a synchronized view of the specified bimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       BiMap<K, V> synchronizedBiMap(BiMap<K, V> bimap) {
     return Synchronized.biMap(bimap, null);
   }
@@ -1674,17 +1658,17 @@ public final class Maps {
    * @param bimap the bimap for which an unmodifiable view is to be returned
    * @return an unmodifiable view of the specified bimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       BiMap<K, V> unmodifiableBiMap(BiMap<? extends K, ? extends V> bimap) {
     return new UnmodifiableBiMap<>(bimap, null);
   }
 
   /** @see Maps#unmodifiableBiMap(BiMap) */
-  private static class UnmodifiableBiMap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class UnmodifiableBiMap<K extends Object, V extends Object>
       extends ForwardingMap<K, V> implements BiMap<K, V>, Serializable {
     final Map<K, V> unmodifiableMap;
     final BiMap<? extends K, ? extends V> delegate;
-    @RetainedWith @CheckForNull BiMap<V, K> inverse;
+    @CheckForNull BiMap<V, K> inverse;
     @CheckForNull transient Set<V> values;
 
     UnmodifiableBiMap(BiMap<? extends K, ? extends V> delegate, @CheckForNull BiMap<V, K> inverse) {
@@ -1755,7 +1739,7 @@ public final class Maps {
    * view, copy the returned map into a new map of your choosing.
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       Map<K, V2> transformValues(Map<K, V1> fromMap, Function<? super V1, V2> function) {
     return transformEntries(fromMap, asEntryTransformer(function));
   }
@@ -1797,7 +1781,7 @@ public final class Maps {
    * @since 11.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       SortedMap<K, V2> transformValues(
           SortedMap<K, V1> fromMap, Function<? super V1, V2> function) {
     return transformEntries(fromMap, asEntryTransformer(function));
@@ -1841,9 +1825,9 @@ public final class Maps {
    *
    * @since 13.0
    */
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       NavigableMap<K, V2> transformValues(
           NavigableMap<K, V1> fromMap, Function<? super V1, V2> function) {
     return transformEntries(fromMap, asEntryTransformer(function));
@@ -1897,7 +1881,7 @@ public final class Maps {
    * @since 7.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       Map<K, V2> transformEntries(
           Map<K, V1> fromMap, EntryTransformer<? super K, ? super V1, V2> transformer) {
     return new TransformedEntriesMap<>(fromMap, transformer);
@@ -1951,7 +1935,7 @@ public final class Maps {
    * @since 11.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       SortedMap<K, V2> transformEntries(
           SortedMap<K, V1> fromMap, EntryTransformer<? super K, ? super V1, V2> transformer) {
     return new TransformedEntriesSortedMap<>(fromMap, transformer);
@@ -2005,9 +1989,9 @@ public final class Maps {
    *
    * @since 13.0
    */
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       NavigableMap<K, V2> transformEntries(
           NavigableMap<K, V1> fromMap, EntryTransformer<? super K, ? super V1, V2> transformer) {
     return new TransformedEntriesNavigableMap<>(fromMap, transformer);
@@ -2024,7 +2008,7 @@ public final class Maps {
    */
   @FunctionalInterface
   public interface EntryTransformer<
-      K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object> {
+      K extends Object, V1 extends Object, V2 extends Object> {
     /**
      * Determines an output value based on a key-value pair. This method is <i>generally
      * expected</i>, but not absolutely required, to have the following properties:
@@ -2043,7 +2027,7 @@ public final class Maps {
   }
 
   /** Views a function as an entry transformer that ignores the entry key. */
-  static <K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+  static <K extends Object, V1 extends Object, V2 extends Object>
       EntryTransformer<K, V1, V2> asEntryTransformer(final Function<? super V1, V2> function) {
     checkNotNull(function);
     return new EntryTransformer<K, V1, V2>() {
@@ -2055,7 +2039,7 @@ public final class Maps {
     };
   }
 
-  static <K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+  static <K extends Object, V1 extends Object, V2 extends Object>
       Function<V1, V2> asValueToValueFunction(
           final EntryTransformer<? super K, V1, V2> transformer, @ParametricNullness final K key) {
     checkNotNull(transformer);
@@ -2069,7 +2053,7 @@ public final class Maps {
   }
 
   /** Views an entry transformer as a function from {@code Entry} to values. */
-  static <K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+  static <K extends Object, V1 extends Object, V2 extends Object>
       Function<Entry<K, V1>, V2> asEntryToValueFunction(
           final EntryTransformer<? super K, ? super V1, V2> transformer) {
     checkNotNull(transformer);
@@ -2083,7 +2067,7 @@ public final class Maps {
   }
 
   /** Returns a view of an entry transformed by the specified transformer. */
-  static <V2 extends @Nullable Object, K extends @Nullable Object, V1 extends @Nullable Object>
+  static <V2 extends Object, K extends Object, V1 extends Object>
       Entry<K, V2> transformEntry(
           final EntryTransformer<? super K, ? super V1, V2> transformer, final Entry<K, V1> entry) {
     checkNotNull(transformer);
@@ -2104,7 +2088,7 @@ public final class Maps {
   }
 
   /** Views an entry transformer as a function from entries to entries. */
-  static <K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+  static <K extends Object, V1 extends Object, V2 extends Object>
       Function<Entry<K, V1>, Entry<K, V2>> asEntryToEntryFunction(
           final EntryTransformer<? super K, ? super V1, V2> transformer) {
     checkNotNull(transformer);
@@ -2117,7 +2101,7 @@ public final class Maps {
   }
 
   static class TransformedEntriesMap<
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       extends IteratorBasedAbstractMap<K, V2> {
     final Map<K, V1> fromMap;
     final EntryTransformer<? super K, ? super V1, V2> transformer;
@@ -2204,7 +2188,7 @@ public final class Maps {
   }
 
   static class TransformedEntriesSortedMap<
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       extends TransformedEntriesMap<K, V1, V2> implements SortedMap<K, V2> {
 
     protected SortedMap<K, V1> fromMap() {
@@ -2250,9 +2234,9 @@ public final class Maps {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   private static class TransformedEntriesNavigableMap<
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       extends TransformedEntriesSortedMap<K, V1, V2> implements NavigableMap<K, V2> {
 
     TransformedEntriesNavigableMap(
@@ -2393,12 +2377,12 @@ public final class Maps {
     }
   }
 
-  static <K extends @Nullable Object> Predicate<Entry<K, ?>> keyPredicateOnEntries(
+  static <K extends Object> Predicate<Entry<K, ?>> keyPredicateOnEntries(
       Predicate<? super K> keyPredicate) {
     return compose(keyPredicate, Maps.<K>keyFunction());
   }
 
-  static <V extends @Nullable Object> Predicate<Entry<?, V>> valuePredicateOnEntries(
+  static <V extends Object> Predicate<Entry<?, V>> valuePredicateOnEntries(
       Predicate<? super V> valuePredicate) {
     return compose(valuePredicate, Maps.<V>valueFunction());
   }
@@ -2426,7 +2410,7 @@ public final class Maps {
    * {@link Predicate#apply}. Do not provide a predicate such as {@code
    * Predicates.instanceOf(ArrayList.class)}, which is inconsistent with equals.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> filterKeys(
+  public static <K extends Object, V extends Object> Map<K, V> filterKeys(
       Map<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     checkNotNull(keyPredicate);
     Predicate<Entry<K, ?>> entryPredicate = keyPredicateOnEntries(keyPredicate);
@@ -2461,7 +2445,7 @@ public final class Maps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> SortedMap<K, V> filterKeys(
+  public static <K extends Object, V extends Object> SortedMap<K, V> filterKeys(
       SortedMap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     // TODO(lowasser): Return a subclass of Maps.FilteredKeyMap for slightly better
     // performance.
@@ -2494,8 +2478,8 @@ public final class Maps {
    *
    * @since 14.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Object, V extends Object>
       NavigableMap<K, V> filterKeys(
           NavigableMap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     // TODO(lowasser): Return a subclass of Maps.FilteredKeyMap for slightly better
@@ -2527,7 +2511,7 @@ public final class Maps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> BiMap<K, V> filterKeys(
+  public static <K extends Object, V extends Object> BiMap<K, V> filterKeys(
       BiMap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     checkNotNull(keyPredicate);
     return filterEntries(unfiltered, Maps.<K>keyPredicateOnEntries(keyPredicate));
@@ -2556,7 +2540,7 @@ public final class Maps {
    * at {@link Predicate#apply}. Do not provide a predicate such as {@code
    * Predicates.instanceOf(ArrayList.class)}, which is inconsistent with equals.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> filterValues(
+  public static <K extends Object, V extends Object> Map<K, V> filterValues(
       Map<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
   }
@@ -2587,7 +2571,7 @@ public final class Maps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedMap<K, V> filterValues(
           SortedMap<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
@@ -2619,8 +2603,8 @@ public final class Maps {
    *
    * @since 14.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Object, V extends Object>
       NavigableMap<K, V> filterValues(
           NavigableMap<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
@@ -2653,7 +2637,7 @@ public final class Maps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> BiMap<K, V> filterValues(
+  public static <K extends Object, V extends Object> BiMap<K, V> filterValues(
       BiMap<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
   }
@@ -2682,7 +2666,7 @@ public final class Maps {
    * <p><b>Warning:</b> {@code entryPredicate} must be <i>consistent with equals</i>, as documented
    * at {@link Predicate#apply}.
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> filterEntries(
+  public static <K extends Object, V extends Object> Map<K, V> filterEntries(
       Map<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(entryPredicate);
     return (unfiltered instanceof AbstractFilteredMap)
@@ -2716,7 +2700,7 @@ public final class Maps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedMap<K, V> filterEntries(
           SortedMap<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(entryPredicate);
@@ -2751,8 +2735,8 @@ public final class Maps {
    *
    * @since 14.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Object, V extends Object>
       NavigableMap<K, V> filterEntries(
           NavigableMap<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(entryPredicate);
@@ -2788,7 +2772,7 @@ public final class Maps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> BiMap<K, V> filterEntries(
+  public static <K extends Object, V extends Object> BiMap<K, V> filterEntries(
       BiMap<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(unfiltered);
     checkNotNull(entryPredicate);
@@ -2801,7 +2785,7 @@ public final class Maps {
    * Support {@code clear()}, {@code removeAll()}, and {@code retainAll()} when filtering a filtered
    * map.
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> filterFiltered(
+  private static <K extends Object, V extends Object> Map<K, V> filterFiltered(
       AbstractFilteredMap<K, V> map, Predicate<? super Entry<K, V>> entryPredicate) {
     return new FilteredEntryMap<>(
         map.unfiltered, Predicates.<Entry<K, V>>and(map.predicate, entryPredicate));
@@ -2811,7 +2795,7 @@ public final class Maps {
    * Support {@code clear()}, {@code removeAll()}, and {@code retainAll()} when filtering a filtered
    * sorted map.
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       SortedMap<K, V> filterFiltered(
           FilteredEntrySortedMap<K, V> map, Predicate<? super Entry<K, V>> entryPredicate) {
     Predicate<Entry<K, V>> predicate = Predicates.<Entry<K, V>>and(map.predicate, entryPredicate);
@@ -2822,8 +2806,8 @@ public final class Maps {
    * Support {@code clear()}, {@code removeAll()}, and {@code retainAll()} when filtering a filtered
    * navigable map.
    */
-  @GwtIncompatible // NavigableMap
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  private static <K extends Object, V extends Object>
       NavigableMap<K, V> filterFiltered(
           FilteredEntryNavigableMap<K, V> map, Predicate<? super Entry<K, V>> entryPredicate) {
     Predicate<Entry<K, V>> predicate =
@@ -2835,7 +2819,7 @@ public final class Maps {
    * Support {@code clear()}, {@code removeAll()}, and {@code retainAll()} when filtering a filtered
    * map.
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       BiMap<K, V> filterFiltered(
           FilteredEntryBiMap<K, V> map, Predicate<? super Entry<K, V>> entryPredicate) {
     Predicate<Entry<K, V>> predicate = Predicates.<Entry<K, V>>and(map.predicate, entryPredicate);
@@ -2843,7 +2827,7 @@ public final class Maps {
   }
 
   private abstract static class AbstractFilteredMap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends ViewCachingAbstractMap<K, V> {
     final Map<K, V> unfiltered;
     final Predicate<? super Entry<K, V>> predicate;
@@ -2906,7 +2890,7 @@ public final class Maps {
   }
 
   private static final class FilteredMapValues<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends Maps.Values<K, V> {
     final Map<K, V> unfiltered;
     final Predicate<? super Entry<K, V>> predicate;
@@ -2960,19 +2944,19 @@ public final class Maps {
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       // creating an ArrayList so filtering happens once
       return Lists.newArrayList(iterator()).toArray();
     }
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return Lists.newArrayList(iterator()).toArray(array);
     }
   }
 
-  private static class FilteredKeyMap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class FilteredKeyMap<K extends Object, V extends Object>
       extends AbstractFilteredMap<K, V> {
     final Predicate<? super K> keyPredicate;
 
@@ -3003,7 +2987,7 @@ public final class Maps {
     }
   }
 
-  static class FilteredEntryMap<K extends @Nullable Object, V extends @Nullable Object>
+  static class FilteredEntryMap<K extends Object, V extends Object>
       extends AbstractFilteredMap<K, V> {
     /**
      * Entries in this set satisfy the predicate, but they don't validate the input to {@code
@@ -3021,7 +3005,6 @@ public final class Maps {
       return new EntrySet();
     }
 
-    @WeakOuter
     private class EntrySet extends ForwardingSet<Entry<K, V>> {
       @Override
       protected Set<Entry<K, V>> delegate() {
@@ -3056,7 +3039,7 @@ public final class Maps {
       return new KeySet();
     }
 
-    static <K extends @Nullable Object, V extends @Nullable Object> boolean removeAllKeys(
+    static <K extends Object, V extends Object> boolean removeAllKeys(
         Map<K, V> map, Predicate<? super Entry<K, V>> entryPredicate, Collection<?> keyCollection) {
       Iterator<Entry<K, V>> entryItr = map.entrySet().iterator();
       boolean result = false;
@@ -3070,7 +3053,7 @@ public final class Maps {
       return result;
     }
 
-    static <K extends @Nullable Object, V extends @Nullable Object> boolean retainAllKeys(
+    static <K extends Object, V extends Object> boolean retainAllKeys(
         Map<K, V> map, Predicate<? super Entry<K, V>> entryPredicate, Collection<?> keyCollection) {
       Iterator<Entry<K, V>> entryItr = map.entrySet().iterator();
       boolean result = false;
@@ -3084,7 +3067,6 @@ public final class Maps {
       return result;
     }
 
-    @WeakOuter
     class KeySet extends Maps.KeySet<K, V> {
       KeySet() {
         super(FilteredEntryMap.this);
@@ -3110,21 +3092,21 @@ public final class Maps {
       }
 
       @Override
-      public @Nullable Object[] toArray() {
+      public Object[] toArray() {
         // creating an ArrayList so filtering happens once
         return Lists.newArrayList(iterator()).toArray();
       }
 
       @Override
       @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-      public <T extends @Nullable Object> T[] toArray(T[] array) {
+      public <T extends Object> T[] toArray(T[] array) {
         return Lists.newArrayList(iterator()).toArray(array);
       }
     }
   }
 
   private static class FilteredEntrySortedMap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends FilteredEntryMap<K, V> implements SortedMap<K, V> {
 
     FilteredEntrySortedMap(
@@ -3146,7 +3128,6 @@ public final class Maps {
       return new SortedKeySet();
     }
 
-    @WeakOuter
     class SortedKeySet extends KeySet implements SortedSet<K> {
       @Override
       @CheckForNull
@@ -3227,9 +3208,9 @@ public final class Maps {
     }
   }
 
-  @GwtIncompatible // NavigableMap
+  // NavigableMap
   private static class FilteredEntryNavigableMap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends AbstractNavigableMap<K, V> {
     /*
      * It's less code to extend AbstractNavigableMap and forward the filtering logic to
@@ -3370,11 +3351,11 @@ public final class Maps {
     }
   }
 
-  static final class FilteredEntryBiMap<K extends @Nullable Object, V extends @Nullable Object>
+  static final class FilteredEntryBiMap<K extends Object, V extends Object>
       extends FilteredEntryMap<K, V> implements BiMap<K, V> {
-    @RetainedWith private final BiMap<V, K> inverse;
+    private final BiMap<V, K> inverse;
 
-    private static <K extends @Nullable Object, V extends @Nullable Object>
+    private static <K extends Object, V extends Object>
         Predicate<Entry<V, K>> inversePredicate(
             final Predicate<? super Entry<K, V>> forwardPredicate) {
       return new Predicate<Entry<V, K>>() {
@@ -3447,8 +3428,8 @@ public final class Maps {
    * @return an unmodifiable view of the specified navigable map
    * @since 12.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Object, V extends Object>
       NavigableMap<K, V> unmodifiableNavigableMap(NavigableMap<K, ? extends V> map) {
     checkNotNull(map);
     if (map instanceof UnmodifiableNavigableMap) {
@@ -3461,13 +3442,13 @@ public final class Maps {
   }
 
   @CheckForNull
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       Entry<K, V> unmodifiableOrNull(@CheckForNull Entry<K, ? extends V> entry) {
     return (entry == null) ? null : Maps.unmodifiableEntry(entry);
   }
 
-  @GwtIncompatible // NavigableMap
-  static class UnmodifiableNavigableMap<K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  static class UnmodifiableNavigableMap<K extends Object, V extends Object>
       extends ForwardingSortedMap<K, V> implements NavigableMap<K, V>, Serializable {
     private final NavigableMap<K, ? extends V> delegate;
 
@@ -3668,8 +3649,8 @@ public final class Maps {
    * @return a synchronized view of the specified navigable map.
    * @since 13.0
    */
-  @GwtIncompatible // NavigableMap
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Object, V extends Object>
       NavigableMap<K, V> synchronizedNavigableMap(NavigableMap<K, V> navigableMap) {
     return Synchronized.navigableMap(navigableMap);
   }
@@ -3678,9 +3659,8 @@ public final class Maps {
    * {@code AbstractMap} extension that makes it easy to cache customized keySet, values, and
    * entrySet views.
    */
-  @GwtCompatible
   abstract static class ViewCachingAbstractMap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends AbstractMap<K, V> {
     /**
      * Creates the entry set to be returned by {@link #entrySet()}. This method is invoked at most
@@ -3722,7 +3702,7 @@ public final class Maps {
   }
 
   abstract static class IteratorBasedAbstractMap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends AbstractMap<K, V> {
     @Override
     public abstract int size();
@@ -3774,7 +3754,7 @@ public final class Maps {
    * NullPointerException}.
    */
   @CheckForNull
-  static <V extends @Nullable Object> V safeGet(Map<?, V> map, @CheckForNull Object key) {
+  static <V extends Object> V safeGet(Map<?, V> map, @CheckForNull Object key) {
     checkNotNull(map);
     try {
       return map.get(key);
@@ -3801,7 +3781,7 @@ public final class Maps {
    * NullPointerException}.
    */
   @CheckForNull
-  static <V extends @Nullable Object> V safeRemove(Map<?, V> map, @CheckForNull Object key) {
+  static <V extends Object> V safeRemove(Map<?, V> map, @CheckForNull Object key) {
     checkNotNull(map);
     try {
       return map.remove(key);
@@ -3832,7 +3812,7 @@ public final class Maps {
    * @param o the object that might be contained in {@code c}
    * @return {@code true} if {@code c} contains {@code o}
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> boolean containsEntryImpl(
+  static <K extends Object, V extends Object> boolean containsEntryImpl(
       Collection<Entry<K, V>> c, @CheckForNull Object o) {
     if (!(o instanceof Entry)) {
       return false;
@@ -3851,7 +3831,7 @@ public final class Maps {
    * @param o the object to remove from {@code c}
    * @return {@code true} if {@code c} was changed
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> boolean removeEntryImpl(
+  static <K extends Object, V extends Object> boolean removeEntryImpl(
       Collection<Entry<K, V>> c, @CheckForNull Object o) {
     if (!(o instanceof Entry)) {
       return false;
@@ -3885,16 +3865,16 @@ public final class Maps {
   }
 
   /** An implementation of {@link Map#putAll}. */
-  static <K extends @Nullable Object, V extends @Nullable Object> void putAllImpl(
+  static <K extends Object, V extends Object> void putAllImpl(
       Map<K, V> self, Map<? extends K, ? extends V> map) {
     for (Entry<? extends K, ? extends V> entry : map.entrySet()) {
       self.put(entry.getKey(), entry.getValue());
     }
   }
 
-  static class KeySet<K extends @Nullable Object, V extends @Nullable Object>
+  static class KeySet<K extends Object, V extends Object>
       extends Sets.ImprovedAbstractSet<K> {
-    @Weak final Map<K, V> map;
+    final Map<K, V> map;
 
     KeySet(Map<K, V> map) {
       this.map = checkNotNull(map);
@@ -3947,16 +3927,16 @@ public final class Maps {
   }
 
   @CheckForNull
-  static <K extends @Nullable Object> K keyOrNull(@CheckForNull Entry<K, ?> entry) {
+  static <K extends Object> K keyOrNull(@CheckForNull Entry<K, ?> entry) {
     return (entry == null) ? null : entry.getKey();
   }
 
   @CheckForNull
-  static <V extends @Nullable Object> V valueOrNull(@CheckForNull Entry<?, V> entry) {
+  static <V extends Object> V valueOrNull(@CheckForNull Entry<?, V> entry) {
     return (entry == null) ? null : entry.getValue();
   }
 
-  static class SortedKeySet<K extends @Nullable Object, V extends @Nullable Object>
+  static class SortedKeySet<K extends Object, V extends Object>
       extends KeySet<K, V> implements SortedSet<K> {
     SortedKeySet(SortedMap<K, V> map) {
       super(map);
@@ -4001,8 +3981,8 @@ public final class Maps {
     }
   }
 
-  @GwtIncompatible // NavigableMap
-  static class NavigableKeySet<K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  static class NavigableKeySet<K extends Object, V extends Object>
       extends SortedKeySet<K, V> implements NavigableSet<K> {
     NavigableKeySet(NavigableMap<K, V> map) {
       super(map);
@@ -4094,9 +4074,9 @@ public final class Maps {
     }
   }
 
-  static class Values<K extends @Nullable Object, V extends @Nullable Object>
+  static class Values<K extends Object, V extends Object>
       extends AbstractCollection<V> {
-    @Weak final Map<K, V> map;
+    final Map<K, V> map;
 
     Values(Map<K, V> map) {
       this.map = checkNotNull(map);
@@ -4184,7 +4164,7 @@ public final class Maps {
     }
   }
 
-  abstract static class EntrySet<K extends @Nullable Object, V extends @Nullable Object>
+  abstract static class EntrySet<K extends Object, V extends Object>
       extends Sets.ImprovedAbstractSet<Entry<K, V>> {
     abstract Map<K, V> map();
 
@@ -4243,7 +4223,7 @@ public final class Maps {
         return super.retainAll(checkNotNull(c));
       } catch (UnsupportedOperationException e) {
         // if the iterators don't support remove
-        Set<@Nullable Object> keys = Sets.newHashSetWithExpectedSize(c.size());
+        Set<Object> keys = Sets.newHashSetWithExpectedSize(c.size());
         for (Object o : c) {
           /*
            * `o instanceof Entry` is guaranteed by `contains`, but we check it here to satisfy our
@@ -4259,8 +4239,8 @@ public final class Maps {
     }
   }
 
-  @GwtIncompatible // NavigableMap
-  abstract static class DescendingMap<K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  abstract static class DescendingMap<K extends Object, V extends Object>
       extends ForwardingMap<K, V> implements NavigableMap<K, V> {
 
     abstract NavigableMap<K, V> forward();
@@ -4287,7 +4267,7 @@ public final class Maps {
     }
 
     // If we inline this, we get a javac error.
-    private static <T extends @Nullable Object> Ordering<T> reverse(Comparator<T> forward) {
+    private static <T extends Object> Ordering<T> reverse(Comparator<T> forward) {
       return Ordering.from(forward).reverse();
     }
 
@@ -4391,7 +4371,6 @@ public final class Maps {
     abstract Iterator<Entry<K, V>> entryIterator();
 
     Set<Entry<K, V>> createEntrySet() {
-      @WeakOuter
       class EntrySetImpl extends EntrySet<K, V> {
         @Override
         Map<K, V> map() {
@@ -4495,9 +4474,8 @@ public final class Maps {
    *
    * @since 20.0
    */
-  @Beta
-  @GwtIncompatible // NavigableMap
-  public static <K extends Comparable<? super K>, V extends @Nullable Object>
+  // NavigableMap
+  public static <K extends Comparable<? super K>, V extends Object>
       NavigableMap<K, V> subMap(NavigableMap<K, V> map, Range<K> range) {
     if (map.comparator() != null
         && map.comparator() != Ordering.natural()
diff --git a/guava/src/com/google/common/collect/MinMaxPriorityQueue.java b/guava/src/com/google/common/collect/MinMaxPriorityQueue.java
index cd01279..cbea6f5 100644
--- a/guava/src/com/google/common/collect/MinMaxPriorityQueue.java
+++ b/guava/src/com/google/common/collect/MinMaxPriorityQueue.java
@@ -21,15 +21,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndex;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.math.IntMath;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.Weak;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.AbstractQueue;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
@@ -43,7 +36,6 @@ import java.util.NoSuchElementException;
 import java.util.PriorityQueue;
 import java.util.Queue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A double-ended priority queue, which provides constant-time access to both its least element and
@@ -98,8 +90,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Torbjorn Gannholm
  * @since 8.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
 
@@ -162,7 +152,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    *     Queue<Integer>} but not a {@code Queue<Object>}).
    * @since 8.0
    */
-  @Beta
   public static final class Builder<B> {
     /*
      * TODO(kevinb): when the dust settles, see if we still need this or can
@@ -182,7 +171,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
      * Configures this builder to build min-max priority queues with an initial expected size of
      * {@code expectedSize}.
      */
-    @CanIgnoreReturnValue
     public Builder<B> expectedSize(int expectedSize) {
       checkArgument(expectedSize >= 0);
       this.expectedSize = expectedSize;
@@ -195,7 +183,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
      * removes its greatest element (according to its comparator), which might be the element that
      * was just added.
      */
-    @CanIgnoreReturnValue
     public Builder<B> maximumSize(int maximumSize) {
       checkArgument(maximumSize > 0);
       this.maximumSize = maximumSize;
@@ -232,8 +219,8 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
 
   private final Heap minHeap;
   private final Heap maxHeap;
-  @VisibleForTesting final int maximumSize;
-  private @Nullable Object[] queue;
+  final int maximumSize;
+  private Object[] queue;
   private int size;
   private int modCount;
 
@@ -261,14 +248,12 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    *
    * @return {@code true} always
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean add(E element) {
     offer(element);
     return true;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean addAll(Collection<? extends E> newElements) {
     boolean modified = false;
@@ -284,7 +269,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    * element} the queue will automatically evict its greatest element (according to its comparator),
    * which may be {@code element} itself.
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean offer(E element) {
     checkNotNull(element);
@@ -299,7 +283,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
     return size <= maximumSize || pollLast() != element;
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public E poll() {
@@ -339,7 +322,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    * Removes and returns the least element of this queue, or returns {@code null} if the queue is
    * empty.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   public E pollFirst() {
     return poll();
@@ -350,7 +332,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    *
    * @throws NoSuchElementException if the queue is empty
    */
-  @CanIgnoreReturnValue
   public E removeFirst() {
     return remove();
   }
@@ -368,7 +349,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    * Removes and returns the greatest element of this queue, or returns {@code null} if the queue is
    * empty.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   public E pollLast() {
     return isEmpty() ? null : removeAndGet(getMaxElementIndex());
@@ -379,7 +359,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    *
    * @throws NoSuchElementException if the queue is empty
    */
-  @CanIgnoreReturnValue
   public E removeLast() {
     if (isEmpty()) {
       throw new NoSuchElementException();
@@ -409,8 +388,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    * down to replace the element at {@code index}. This fact is used by iterator.remove so as to
    * visit elements during a traversal once and only once.
    */
-  @VisibleForTesting
-  @CanIgnoreReturnValue
   @CheckForNull
   MoveDesc<E> removeAt(int index) {
     checkPositionIndex(index, size);
@@ -495,7 +472,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
   private static final int EVEN_POWERS_OF_TWO = 0x55555555;
   private static final int ODD_POWERS_OF_TWO = 0xaaaaaaaa;
 
-  @VisibleForTesting
   static boolean isEvenLevel(int index) {
     int oneBased = ~~(index + 1); // for GWT
     checkState(oneBased > 0, "negative index");
@@ -507,7 +483,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    *
    * <p>TODO(kevinb): move to the test class?
    */
-  @VisibleForTesting
   boolean isIntact() {
     for (int i = 1; i < size; i++) {
       if (!heapForIndex(i).verifyIndex(i)) {
@@ -522,10 +497,9 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
    * max-heap. Conceptually, these might each have their own array for storage, but for efficiency's
    * sake they are stored interleaved on alternate heap levels in the same array (MMPQ.queue).
    */
-  @WeakOuter
   private class Heap {
     final Ordering<E> ordering;
-    @Weak Heap otherHeap; // always initialized immediately after construction
+    Heap otherHeap; // always initialized immediately after construction
 
     Heap(Ordering<E> ordering) {
       this.ordering = ordering;
@@ -584,7 +558,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
      * Bubbles a value from {@code index} up the levels of this heap, and returns the index the
      * element ended up at.
      */
-    @CanIgnoreReturnValue
     int bubbleUpAlternatingLevels(int index, E x) {
       while (index > 2) {
         int grandParentIndex = getGrandparentIndex(index);
@@ -926,7 +899,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
     return minHeap.ordering;
   }
 
-  @VisibleForTesting
   int capacity() {
     return queue.length;
   }
@@ -935,7 +907,6 @@ public final class MinMaxPriorityQueue<E> extends AbstractQueue<E> {
 
   private static final int DEFAULT_CAPACITY = 11;
 
-  @VisibleForTesting
   static int initialQueueSize(
       int configuredExpectedSize, int maximumSize, Iterable<?> initialContents) {
     // Start with what they said, if they said it, otherwise DEFAULT_CAPACITY
diff --git a/guava/src/com/google/common/collect/MoreCollectors.java b/guava/src/com/google/common/collect/MoreCollectors.java
index 5a84a46..cb0b002 100644
--- a/guava/src/com/google/common/collect/MoreCollectors.java
+++ b/guava/src/com/google/common/collect/MoreCollectors.java
@@ -19,13 +19,11 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.util.Collections.emptyList;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Optional;
 import java.util.stream.Collector;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Collectors not present in {@code java.util.stream.Collectors} that are not otherwise associated
@@ -34,7 +32,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 21.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class MoreCollectors {
 
@@ -65,8 +62,8 @@ public final class MoreCollectors {
 
   private static final Object NULL_PLACEHOLDER = new Object();
 
-  private static final Collector<@Nullable Object, ?, @Nullable Object> ONLY_ELEMENT =
-      Collector.<@Nullable Object, ToOptionalState, @Nullable Object>of(
+  private static final Collector<Object, ?, Object> ONLY_ELEMENT =
+      Collector.<Object, ToOptionalState, Object>of(
           ToOptionalState::new,
           (state, o) -> state.add((o == null) ? NULL_PLACEHOLDER : o),
           ToOptionalState::combine,
@@ -82,7 +79,7 @@ public final class MoreCollectors {
    * more elements, and a {@code NoSuchElementException} if the stream is empty.
    */
   @SuppressWarnings("unchecked")
-  public static <T extends @Nullable Object> Collector<T, ?, T> onlyElement() {
+  public static <T extends Object> Collector<T, ?, T> onlyElement() {
     return (Collector) ONLY_ELEMENT;
   }
 
@@ -93,7 +90,7 @@ public final class MoreCollectors {
   private static final class ToOptionalState {
     static final int MAX_EXTRAS = 4;
 
-    @Nullable Object element;
+    Object element;
     List<Object> extras;
 
     ToOptionalState() {
diff --git a/guava/src/com/google/common/collect/Multimap.java b/guava/src/com/google/common/collect/Multimap.java
index e1a0a8e..ac3ac75 100644
--- a/guava/src/com/google/common/collect/Multimap.java
+++ b/guava/src/com/google/common/collect/Multimap.java
@@ -18,10 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CompatibleWith;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -29,7 +25,6 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.function.BiConsumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A collection that maps keys to values, similar to {@link Map}, but in which each key may be
@@ -160,10 +155,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@DoNotMock("Use ImmutableMultimap, HashMultimap, or another implementation")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface Multimap<K extends @Nullable Object, V extends @Nullable Object> {
+public interface Multimap<K extends Object, V extends Object> {
   // Query Operations
 
   /**
@@ -213,7 +206,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    * @return {@code true} if the method increased the size of the multimap, or {@code false} if the
    *     multimap already contained the key-value pair and doesn't allow duplicates
    */
-  @CanIgnoreReturnValue
   boolean put(@ParametricNullness K key, @ParametricNullness V value);
 
   /**
@@ -223,7 +215,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    *
    * @return {@code true} if the multimap changed
    */
-  @CanIgnoreReturnValue
   boolean remove(
       @CompatibleWith("K") @CheckForNull Object key,
       @CompatibleWith("V") @CheckForNull Object value);
@@ -244,7 +235,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    *
    * @return {@code true} if the multimap changed
    */
-  @CanIgnoreReturnValue
   boolean putAll(@ParametricNullness K key, Iterable<? extends V> values);
 
   /**
@@ -253,7 +243,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    *
    * @return {@code true} if the multimap changed
    */
-  @CanIgnoreReturnValue
   boolean putAll(Multimap<? extends K, ? extends V> multimap);
 
   /**
@@ -265,7 +254,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    *     associated with the key. The collection <i>may</i> be modifiable, but updating it will have
    *     no effect on the multimap.
    */
-  @CanIgnoreReturnValue
   Collection<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);
 
   /**
@@ -277,7 +265,6 @@ public interface Multimap<K extends @Nullable Object, V extends @Nullable Object
    * @return the values that were removed (possibly empty). The returned collection <i>may</i> be
    *     modifiable, but updating it will have no effect on the multimap.
    */
-  @CanIgnoreReturnValue
   Collection<V> removeAll(@CompatibleWith("K") @CheckForNull Object key);
 
   /** Removes all key-value pairs from the multimap, leaving it {@linkplain #isEmpty empty}. */
diff --git a/guava/src/com/google/common/collect/MultimapBuilder.java b/guava/src/com/google/common/collect/MultimapBuilder.java
index dddae28..2feebde 100644
--- a/guava/src/com/google/common/collect/MultimapBuilder.java
+++ b/guava/src/com/google/common/collect/MultimapBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Supplier;
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -34,7 +33,6 @@ import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeMap;
 import java.util.TreeSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A builder for a multimap implementation that allows customization of the backing map and value
@@ -61,9 +59,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @param <V0> An upper bound on the value type of the generated multimap.
  * @since 16.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @Nullable Object> {
+public abstract class MultimapBuilder<K0 extends Object, V0 extends Object> {
   /*
    * Leaving K and V as upper bounds rather than the actual key and value types allows type
    * parameters to be left implicit more often. CacheBuilder uses the same technique.
@@ -74,7 +71,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
   private static final int DEFAULT_EXPECTED_KEYS = 8;
 
   /** Uses a hash table to map keys to value collections. */
-  public static MultimapBuilderWithKeys<@Nullable Object> hashKeys() {
+  public static MultimapBuilderWithKeys<Object> hashKeys() {
     return hashKeys(DEFAULT_EXPECTED_KEYS);
   }
 
@@ -84,11 +81,11 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    *
    * @throws IllegalArgumentException if {@code expectedKeys < 0}
    */
-  public static MultimapBuilderWithKeys<@Nullable Object> hashKeys(final int expectedKeys) {
+  public static MultimapBuilderWithKeys<Object> hashKeys(final int expectedKeys) {
     checkNonnegative(expectedKeys, "expectedKeys");
-    return new MultimapBuilderWithKeys<@Nullable Object>() {
+    return new MultimapBuilderWithKeys<Object>() {
       @Override
-      <K extends @Nullable Object, V extends @Nullable Object> Map<K, Collection<V>> createMap() {
+      <K extends Object, V extends Object> Map<K, Collection<V>> createMap() {
         return Platform.newHashMapWithExpectedSize(expectedKeys);
       }
     };
@@ -102,7 +99,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * multimap, save that if all values associated with a key are removed and then the key is added
    * back into the multimap, that key will come last in the key iteration order.
    */
-  public static MultimapBuilderWithKeys<@Nullable Object> linkedHashKeys() {
+  public static MultimapBuilderWithKeys<Object> linkedHashKeys() {
     return linkedHashKeys(DEFAULT_EXPECTED_KEYS);
   }
 
@@ -115,11 +112,11 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * multimap, save that if all values associated with a key are removed and then the key is added
    * back into the multimap, that key will come last in the key iteration order.
    */
-  public static MultimapBuilderWithKeys<@Nullable Object> linkedHashKeys(final int expectedKeys) {
+  public static MultimapBuilderWithKeys<Object> linkedHashKeys(final int expectedKeys) {
     checkNonnegative(expectedKeys, "expectedKeys");
-    return new MultimapBuilderWithKeys<@Nullable Object>() {
+    return new MultimapBuilderWithKeys<Object>() {
       @Override
-      <K extends @Nullable Object, V extends @Nullable Object> Map<K, Collection<V>> createMap() {
+      <K extends Object, V extends Object> Map<K, Collection<V>> createMap() {
         return Platform.newLinkedHashMapWithExpectedSize(expectedKeys);
       }
     };
@@ -153,12 +150,12 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * <p>Multimaps generated by the resulting builder will not be serializable if {@code comparator}
    * is not serializable.
    */
-  public static <K0 extends @Nullable Object> MultimapBuilderWithKeys<K0> treeKeys(
+  public static <K0 extends Object> MultimapBuilderWithKeys<K0> treeKeys(
       final Comparator<K0> comparator) {
     checkNotNull(comparator);
     return new MultimapBuilderWithKeys<K0>() {
       @Override
-      <K extends K0, V extends @Nullable Object> Map<K, Collection<V>> createMap() {
+      <K extends K0, V extends Object> Map<K, Collection<V>> createMap() {
         return new TreeMap<>(comparator);
       }
     };
@@ -175,7 +172,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     return new MultimapBuilderWithKeys<K0>() {
       @SuppressWarnings("unchecked")
       @Override
-      <K extends K0, V extends @Nullable Object> Map<K, Collection<V>> createMap() {
+      <K extends K0, V extends Object> Map<K, Collection<V>> createMap() {
         // K must actually be K0, since enums are effectively final
         // (their subclasses are inaccessible)
         return (Map<K, Collection<V>>) new EnumMap<K0, Collection<V>>(keyClass);
@@ -183,7 +180,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     };
   }
 
-  private static final class ArrayListSupplier<V extends @Nullable Object>
+  private static final class ArrayListSupplier<V extends Object>
       implements Supplier<List<V>>, Serializable {
     private final int expectedValuesPerKey;
 
@@ -200,7 +197,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
   private enum LinkedListSupplier implements Supplier<List<?>> {
     INSTANCE;
 
-    public static <V extends @Nullable Object> Supplier<List<V>> instance() {
+    public static <V extends Object> Supplier<List<V>> instance() {
       // Each call generates a fresh LinkedList, which can serve as a List<V> for any V.
       @SuppressWarnings({"rawtypes", "unchecked"})
       Supplier<List<V>> result = (Supplier) INSTANCE;
@@ -213,7 +210,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
   }
 
-  private static final class HashSetSupplier<V extends @Nullable Object>
+  private static final class HashSetSupplier<V extends Object>
       implements Supplier<Set<V>>, Serializable {
     private final int expectedValuesPerKey;
 
@@ -227,7 +224,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
   }
 
-  private static final class LinkedHashSetSupplier<V extends @Nullable Object>
+  private static final class LinkedHashSetSupplier<V extends Object>
       implements Supplier<Set<V>>, Serializable {
     private final int expectedValuesPerKey;
 
@@ -241,7 +238,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
   }
 
-  private static final class TreeSetSupplier<V extends @Nullable Object>
+  private static final class TreeSetSupplier<V extends Object>
       implements Supplier<SortedSet<V>>, Serializable {
     private final Comparator<? super V> comparator;
 
@@ -276,16 +273,16 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * @param <K0> The upper bound on the key type of the generated multimap.
    * @since 16.0
    */
-  public abstract static class MultimapBuilderWithKeys<K0 extends @Nullable Object> {
+  public abstract static class MultimapBuilderWithKeys<K0 extends Object> {
 
     private static final int DEFAULT_EXPECTED_VALUES_PER_KEY = 2;
 
     MultimapBuilderWithKeys() {}
 
-    abstract <K extends K0, V extends @Nullable Object> Map<K, Collection<V>> createMap();
+    abstract <K extends K0, V extends Object> Map<K, Collection<V>> createMap();
 
     /** Uses an {@link ArrayList} to store value collections. */
-    public ListMultimapBuilder<K0, @Nullable Object> arrayListValues() {
+    public ListMultimapBuilder<K0, Object> arrayListValues() {
       return arrayListValues(DEFAULT_EXPECTED_VALUES_PER_KEY);
     }
 
@@ -295,12 +292,12 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
      *
      * @throws IllegalArgumentException if {@code expectedValuesPerKey < 0}
      */
-    public ListMultimapBuilder<K0, @Nullable Object> arrayListValues(
+    public ListMultimapBuilder<K0, Object> arrayListValues(
         final int expectedValuesPerKey) {
       checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey");
-      return new ListMultimapBuilder<K0, @Nullable Object>() {
+      return new ListMultimapBuilder<K0, Object>() {
         @Override
-        public <K extends K0, V extends @Nullable Object> ListMultimap<K, V> build() {
+        public <K extends K0, V extends Object> ListMultimap<K, V> build() {
           return Multimaps.newListMultimap(
               MultimapBuilderWithKeys.this.<K, V>createMap(),
               new ArrayListSupplier<V>(expectedValuesPerKey));
@@ -309,10 +306,10 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
 
     /** Uses a {@link LinkedList} to store value collections. */
-    public ListMultimapBuilder<K0, @Nullable Object> linkedListValues() {
-      return new ListMultimapBuilder<K0, @Nullable Object>() {
+    public ListMultimapBuilder<K0, Object> linkedListValues() {
+      return new ListMultimapBuilder<K0, Object>() {
         @Override
-        public <K extends K0, V extends @Nullable Object> ListMultimap<K, V> build() {
+        public <K extends K0, V extends Object> ListMultimap<K, V> build() {
           return Multimaps.newListMultimap(
               MultimapBuilderWithKeys.this.<K, V>createMap(), LinkedListSupplier.<V>instance());
         }
@@ -320,7 +317,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
 
     /** Uses a hash-based {@code Set} to store value collections. */
-    public SetMultimapBuilder<K0, @Nullable Object> hashSetValues() {
+    public SetMultimapBuilder<K0, Object> hashSetValues() {
       return hashSetValues(DEFAULT_EXPECTED_VALUES_PER_KEY);
     }
 
@@ -330,11 +327,11 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
      *
      * @throws IllegalArgumentException if {@code expectedValuesPerKey < 0}
      */
-    public SetMultimapBuilder<K0, @Nullable Object> hashSetValues(final int expectedValuesPerKey) {
+    public SetMultimapBuilder<K0, Object> hashSetValues(final int expectedValuesPerKey) {
       checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey");
-      return new SetMultimapBuilder<K0, @Nullable Object>() {
+      return new SetMultimapBuilder<K0, Object>() {
         @Override
-        public <K extends K0, V extends @Nullable Object> SetMultimap<K, V> build() {
+        public <K extends K0, V extends Object> SetMultimap<K, V> build() {
           return Multimaps.newSetMultimap(
               MultimapBuilderWithKeys.this.<K, V>createMap(),
               new HashSetSupplier<V>(expectedValuesPerKey));
@@ -343,7 +340,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
     }
 
     /** Uses an insertion-ordered hash-based {@code Set} to store value collections. */
-    public SetMultimapBuilder<K0, @Nullable Object> linkedHashSetValues() {
+    public SetMultimapBuilder<K0, Object> linkedHashSetValues() {
       return linkedHashSetValues(DEFAULT_EXPECTED_VALUES_PER_KEY);
     }
 
@@ -353,12 +350,12 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
      *
      * @throws IllegalArgumentException if {@code expectedValuesPerKey < 0}
      */
-    public SetMultimapBuilder<K0, @Nullable Object> linkedHashSetValues(
+    public SetMultimapBuilder<K0, Object> linkedHashSetValues(
         final int expectedValuesPerKey) {
       checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey");
-      return new SetMultimapBuilder<K0, @Nullable Object>() {
+      return new SetMultimapBuilder<K0, Object>() {
         @Override
-        public <K extends K0, V extends @Nullable Object> SetMultimap<K, V> build() {
+        public <K extends K0, V extends Object> SetMultimap<K, V> build() {
           return Multimaps.newSetMultimap(
               MultimapBuilderWithKeys.this.<K, V>createMap(),
               new LinkedHashSetSupplier<V>(expectedValuesPerKey));
@@ -378,7 +375,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
      * <p>Multimaps generated by the resulting builder will not be serializable if {@code
      * comparator} is not serializable.
      */
-    public <V0 extends @Nullable Object> SortedSetMultimapBuilder<K0, V0> treeSetValues(
+    public <V0 extends Object> SortedSetMultimapBuilder<K0, V0> treeSetValues(
         final Comparator<V0> comparator) {
       checkNotNull(comparator, "comparator");
       return new SortedSetMultimapBuilder<K0, V0>() {
@@ -427,7 +424,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * @since 16.0
    */
   public abstract static class ListMultimapBuilder<
-          K0 extends @Nullable Object, V0 extends @Nullable Object>
+          K0 extends Object, V0 extends Object>
       extends MultimapBuilder<K0, V0> {
     ListMultimapBuilder() {}
 
@@ -447,7 +444,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * @since 16.0
    */
   public abstract static class SetMultimapBuilder<
-          K0 extends @Nullable Object, V0 extends @Nullable Object>
+          K0 extends Object, V0 extends Object>
       extends MultimapBuilder<K0, V0> {
     SetMultimapBuilder() {}
 
@@ -467,7 +464,7 @@ public abstract class MultimapBuilder<K0 extends @Nullable Object, V0 extends @N
    * @since 16.0
    */
   public abstract static class SortedSetMultimapBuilder<
-          K0 extends @Nullable Object, V0 extends @Nullable Object>
+          K0 extends Object, V0 extends Object>
       extends SetMultimapBuilder<K0, V0> {
     SortedSetMultimapBuilder() {}
 
diff --git a/guava/src/com/google/common/collect/Multimaps.java b/guava/src/com/google/common/collect/Multimaps.java
index 9bc9e98..265b05e 100644
--- a/guava/src/com/google/common/collect/Multimaps.java
+++ b/guava/src/com/google/common/collect/Multimaps.java
@@ -19,21 +19,12 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.base.Supplier;
 import com.google.common.collect.Maps.EntryTransformer;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.Weak;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -57,7 +48,6 @@ import java.util.function.Consumer;
 import java.util.stream.Collector;
 import java.util.stream.Stream;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static methods acting on or generating a {@code Multimap}.
@@ -72,7 +62,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Multimaps {
   private Multimaps() {}
@@ -114,9 +103,9 @@ public final class Multimaps {
    * @since 21.0
    */
   public static <
-          T extends @Nullable Object,
-          K extends @Nullable Object,
-          V extends @Nullable Object,
+          T extends Object,
+          K extends Object,
+          V extends Object,
           M extends Multimap<K, V>>
       Collector<T, ?, M> toMultimap(
           java.util.function.Function<? super T, ? extends K> keyFunction,
@@ -158,11 +147,10 @@ public final class Multimaps {
    *
    * @since 21.0
    */
-  @Beta
   public static <
-          T extends @Nullable Object,
-          K extends @Nullable Object,
-          V extends @Nullable Object,
+          T extends Object,
+          K extends Object,
+          V extends Object,
           M extends Multimap<K, V>>
       Collector<T, ?, M> flatteningToMultimap(
           java.util.function.Function<? super T, ? extends K> keyFunction,
@@ -207,12 +195,12 @@ public final class Multimaps {
    *     key
    * @throws IllegalArgumentException if {@code map} is not empty
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Multimap<K, V> newMultimap(
+  public static <K extends Object, V extends Object> Multimap<K, V> newMultimap(
       Map<K, Collection<V>> map, final Supplier<? extends Collection<V>> factory) {
     return new CustomMultimap<>(map, factory);
   }
 
-  private static class CustomMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class CustomMultimap<K extends Object, V extends Object>
       extends AbstractMapBasedMultimap<K, V> {
     transient Supplier<? extends Collection<V>> factory;
 
@@ -237,7 +225,7 @@ public final class Multimaps {
     }
 
     @Override
-    <E extends @Nullable Object> Collection<E> unmodifiableCollectionSubclass(
+    <E extends Object> Collection<E> unmodifiableCollectionSubclass(
         Collection<E> collection) {
       if (collection instanceof NavigableSet) {
         return Sets.unmodifiableNavigableSet((NavigableSet<E>) collection);
@@ -271,14 +259,14 @@ public final class Multimaps {
     // there's no way to generate the empty backing map.
 
     /** @serialData the factory and the backing map */
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       stream.defaultWriteObject();
       stream.writeObject(factory);
       stream.writeObject(backingMap());
     }
 
-    @GwtIncompatible // java.io.ObjectInputStream
+    // java.io.ObjectInputStream
     @SuppressWarnings("unchecked") // reading data stored by writeObject
     private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
       stream.defaultReadObject();
@@ -287,7 +275,7 @@ public final class Multimaps {
       setMap(map);
     }
 
-    @GwtIncompatible // java serialization not supported
+    // java serialization not supported
     private static final long serialVersionUID = 0;
   }
 
@@ -321,13 +309,13 @@ public final class Multimaps {
    * @param factory supplier of new, empty lists that will each hold all values for a given key
    * @throws IllegalArgumentException if {@code map} is not empty
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ListMultimap<K, V> newListMultimap(
           Map<K, Collection<V>> map, final Supplier<? extends List<V>> factory) {
     return new CustomListMultimap<>(map, factory);
   }
 
-  private static class CustomListMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class CustomListMultimap<K extends Object, V extends Object>
       extends AbstractListMultimap<K, V> {
     transient Supplier<? extends List<V>> factory;
 
@@ -352,14 +340,14 @@ public final class Multimaps {
     }
 
     /** @serialData the factory and the backing map */
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       stream.defaultWriteObject();
       stream.writeObject(factory);
       stream.writeObject(backingMap());
     }
 
-    @GwtIncompatible // java.io.ObjectInputStream
+    // java.io.ObjectInputStream
     @SuppressWarnings("unchecked") // reading data stored by writeObject
     private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
       stream.defaultReadObject();
@@ -368,7 +356,7 @@ public final class Multimaps {
       setMap(map);
     }
 
-    @GwtIncompatible // java serialization not supported
+    // java serialization not supported
     private static final long serialVersionUID = 0;
   }
 
@@ -401,13 +389,13 @@ public final class Multimaps {
    * @param factory supplier of new, empty sets that will each hold all values for a given key
    * @throws IllegalArgumentException if {@code map} is not empty
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> newSetMultimap(
           Map<K, Collection<V>> map, final Supplier<? extends Set<V>> factory) {
     return new CustomSetMultimap<>(map, factory);
   }
 
-  private static class CustomSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class CustomSetMultimap<K extends Object, V extends Object>
       extends AbstractSetMultimap<K, V> {
     transient Supplier<? extends Set<V>> factory;
 
@@ -432,7 +420,7 @@ public final class Multimaps {
     }
 
     @Override
-    <E extends @Nullable Object> Collection<E> unmodifiableCollectionSubclass(
+    <E extends Object> Collection<E> unmodifiableCollectionSubclass(
         Collection<E> collection) {
       if (collection instanceof NavigableSet) {
         return Sets.unmodifiableNavigableSet((NavigableSet<E>) collection);
@@ -455,14 +443,14 @@ public final class Multimaps {
     }
 
     /** @serialData the factory and the backing map */
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       stream.defaultWriteObject();
       stream.writeObject(factory);
       stream.writeObject(backingMap());
     }
 
-    @GwtIncompatible // java.io.ObjectInputStream
+    // java.io.ObjectInputStream
     @SuppressWarnings("unchecked") // reading data stored by writeObject
     private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
       stream.defaultReadObject();
@@ -471,7 +459,7 @@ public final class Multimaps {
       setMap(map);
     }
 
-    @GwtIncompatible // not needed in emulated source
+    // not needed in emulated source
     private static final long serialVersionUID = 0;
   }
 
@@ -504,14 +492,14 @@ public final class Multimaps {
    *     key
    * @throws IllegalArgumentException if {@code map} is not empty
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedSetMultimap<K, V> newSortedSetMultimap(
           Map<K, Collection<V>> map, final Supplier<? extends SortedSet<V>> factory) {
     return new CustomSortedSetMultimap<>(map, factory);
   }
 
   private static class CustomSortedSetMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends AbstractSortedSetMultimap<K, V> {
     transient Supplier<? extends SortedSet<V>> factory;
     @CheckForNull transient Comparator<? super V> valueComparator;
@@ -544,14 +532,14 @@ public final class Multimaps {
     }
 
     /** @serialData the factory and the backing map */
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       stream.defaultWriteObject();
       stream.writeObject(factory);
       stream.writeObject(backingMap());
     }
 
-    @GwtIncompatible // java.io.ObjectInputStream
+    // java.io.ObjectInputStream
     @SuppressWarnings("unchecked") // reading data stored by writeObject
     private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
       stream.defaultReadObject();
@@ -561,7 +549,7 @@ public final class Multimaps {
       setMap(map);
     }
 
-    @GwtIncompatible // not needed in emulated source
+    // not needed in emulated source
     private static final long serialVersionUID = 0;
   }
 
@@ -576,8 +564,7 @@ public final class Multimaps {
    * @param dest the multimap to copy into; usually empty
    * @return {@code dest}
    */
-  @CanIgnoreReturnValue
-  public static <K extends @Nullable Object, V extends @Nullable Object, M extends Multimap<K, V>>
+  public static <K extends Object, V extends Object, M extends Multimap<K, V>>
       M invertFrom(Multimap<? extends V, ? extends K> source, M dest) {
     checkNotNull(dest);
     for (Map.Entry<? extends V, ? extends K> entry : source.entries()) {
@@ -618,7 +605,7 @@ public final class Multimaps {
    * @param multimap the multimap to be wrapped in a synchronized view
    * @return a synchronized view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       Multimap<K, V> synchronizedMultimap(Multimap<K, V> multimap) {
     return Synchronized.multimap(multimap, null);
   }
@@ -634,7 +621,7 @@ public final class Multimaps {
    * @param delegate the multimap for which an unmodifiable view is to be returned
    * @return an unmodifiable view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       Multimap<K, V> unmodifiableMultimap(Multimap<K, V> delegate) {
     if (delegate instanceof UnmodifiableMultimap || delegate instanceof ImmutableMultimap) {
       return delegate;
@@ -653,14 +640,14 @@ public final class Multimaps {
     return checkNotNull(delegate);
   }
 
-  private static class UnmodifiableMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class UnmodifiableMultimap<K extends Object, V extends Object>
       extends ForwardingMultimap<K, V> implements Serializable {
     final Multimap<K, V> delegate;
-    @LazyInit @CheckForNull transient Collection<Entry<K, V>> entries;
-    @LazyInit @CheckForNull transient Multiset<K> keys;
-    @LazyInit @CheckForNull transient Set<K> keySet;
-    @LazyInit @CheckForNull transient Collection<V> values;
-    @LazyInit @CheckForNull transient Map<K, Collection<V>> map;
+    @CheckForNull transient Collection<Entry<K, V>> entries;
+    @CheckForNull transient Multiset<K> keys;
+    @CheckForNull transient Set<K> keySet;
+    @CheckForNull transient Collection<V> values;
+    @CheckForNull transient Map<K, Collection<V>> map;
 
     UnmodifiableMultimap(final Multimap<K, V> delegate) {
       this.delegate = checkNotNull(delegate);
@@ -775,7 +762,7 @@ public final class Multimaps {
   }
 
   private static class UnmodifiableListMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends UnmodifiableMultimap<K, V> implements ListMultimap<K, V> {
     UnmodifiableListMultimap(ListMultimap<K, V> delegate) {
       super(delegate);
@@ -805,7 +792,7 @@ public final class Multimaps {
   }
 
   private static class UnmodifiableSetMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends UnmodifiableMultimap<K, V> implements SetMultimap<K, V> {
     UnmodifiableSetMultimap(SetMultimap<K, V> delegate) {
       super(delegate);
@@ -844,7 +831,7 @@ public final class Multimaps {
   }
 
   private static class UnmodifiableSortedSetMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends UnmodifiableSetMultimap<K, V> implements SortedSetMultimap<K, V> {
     UnmodifiableSortedSetMultimap(SortedSetMultimap<K, V> delegate) {
       super(delegate);
@@ -889,7 +876,7 @@ public final class Multimaps {
    * @param multimap the multimap to be wrapped
    * @return a synchronized view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> synchronizedSetMultimap(SetMultimap<K, V> multimap) {
     return Synchronized.setMultimap(multimap, null);
   }
@@ -905,7 +892,7 @@ public final class Multimaps {
    * @param delegate the multimap for which an unmodifiable view is to be returned
    * @return an unmodifiable view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> unmodifiableSetMultimap(SetMultimap<K, V> delegate) {
     if (delegate instanceof UnmodifiableSetMultimap || delegate instanceof ImmutableSetMultimap) {
       return delegate;
@@ -936,7 +923,7 @@ public final class Multimaps {
    * @param multimap the multimap to be wrapped
    * @return a synchronized view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedSetMultimap<K, V> synchronizedSortedSetMultimap(SortedSetMultimap<K, V> multimap) {
     return Synchronized.sortedSetMultimap(multimap, null);
   }
@@ -952,7 +939,7 @@ public final class Multimaps {
    * @param delegate the multimap for which an unmodifiable view is to be returned
    * @return an unmodifiable view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SortedSetMultimap<K, V> unmodifiableSortedSetMultimap(SortedSetMultimap<K, V> delegate) {
     if (delegate instanceof UnmodifiableSortedSetMultimap) {
       return delegate;
@@ -968,7 +955,7 @@ public final class Multimaps {
    * @param multimap the multimap to be wrapped
    * @return a synchronized view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ListMultimap<K, V> synchronizedListMultimap(ListMultimap<K, V> multimap) {
     return Synchronized.listMultimap(multimap, null);
   }
@@ -984,7 +971,7 @@ public final class Multimaps {
    * @param delegate the multimap for which an unmodifiable view is to be returned
    * @return an unmodifiable view of the specified multimap
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ListMultimap<K, V> unmodifiableListMultimap(ListMultimap<K, V> delegate) {
     if (delegate instanceof UnmodifiableListMultimap || delegate instanceof ImmutableListMultimap) {
       return delegate;
@@ -1012,7 +999,7 @@ public final class Multimaps {
    * @param collection the collection for which to return an unmodifiable view
    * @return an unmodifiable view of the collection
    */
-  private static <V extends @Nullable Object> Collection<V> unmodifiableValueCollection(
+  private static <V extends Object> Collection<V> unmodifiableValueCollection(
       Collection<V> collection) {
     if (collection instanceof SortedSet) {
       return Collections.unmodifiableSortedSet((SortedSet<V>) collection);
@@ -1032,7 +1019,7 @@ public final class Multimaps {
    * @param entries the entries for which to return an unmodifiable view
    * @return an unmodifiable view of the entries
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       Collection<Entry<K, V>> unmodifiableEntries(Collection<Entry<K, V>> entries) {
     if (entries instanceof Set) {
       return Maps.unmodifiableEntrySet((Set<Entry<K, V>>) entries);
@@ -1046,10 +1033,9 @@ public final class Multimaps {
    *
    * @since 15.0
    */
-  @Beta
   @SuppressWarnings("unchecked")
   // safe by specification of ListMultimap.asMap()
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, List<V>> asMap(
+  public static <K extends Object, V extends Object> Map<K, List<V>> asMap(
       ListMultimap<K, V> multimap) {
     return (Map<K, List<V>>) (Map<K, ?>) multimap.asMap();
   }
@@ -1060,10 +1046,9 @@ public final class Multimaps {
    *
    * @since 15.0
    */
-  @Beta
   @SuppressWarnings("unchecked")
   // safe by specification of SetMultimap.asMap()
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, Set<V>> asMap(
+  public static <K extends Object, V extends Object> Map<K, Set<V>> asMap(
       SetMultimap<K, V> multimap) {
     return (Map<K, Set<V>>) (Map<K, ?>) multimap.asMap();
   }
@@ -1074,10 +1059,9 @@ public final class Multimaps {
    *
    * @since 15.0
    */
-  @Beta
   @SuppressWarnings("unchecked")
   // safe by specification of SortedSetMultimap.asMap()
-  public static <K extends @Nullable Object, V extends @Nullable Object> Map<K, SortedSet<V>> asMap(
+  public static <K extends Object, V extends Object> Map<K, SortedSet<V>> asMap(
       SortedSetMultimap<K, V> multimap) {
     return (Map<K, SortedSet<V>>) (Map<K, ?>) multimap.asMap();
   }
@@ -1088,8 +1072,7 @@ public final class Multimaps {
    *
    * @since 15.0
    */
-  @Beta
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       Map<K, Collection<V>> asMap(Multimap<K, V> multimap) {
     return multimap.asMap();
   }
@@ -1109,13 +1092,13 @@ public final class Multimaps {
    *
    * @param map the backing map for the returned multimap view
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> SetMultimap<K, V> forMap(
+  public static <K extends Object, V extends Object> SetMultimap<K, V> forMap(
       Map<K, V> map) {
     return new MapMultimap<>(map);
   }
 
   /** @see Multimaps#forMap */
-  private static class MapMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class MapMultimap<K extends Object, V extends Object>
       extends AbstractMultimap<K, V> implements SetMultimap<K, V>, Serializable {
     final Map<K, V> map;
 
@@ -1311,7 +1294,7 @@ public final class Multimaps {
    * @since 7.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       Multimap<K, V2> transformValues(
           Multimap<K, V1> fromMultimap, final Function<? super V1, V2> function) {
     checkNotNull(function);
@@ -1360,7 +1343,7 @@ public final class Multimaps {
    * @since 7.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       ListMultimap<K, V2> transformValues(
           ListMultimap<K, V1> fromMultimap, final Function<? super V1, V2> function) {
     checkNotNull(function);
@@ -1420,7 +1403,7 @@ public final class Multimaps {
    * @since 7.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       Multimap<K, V2> transformEntries(
           Multimap<K, V1> fromMap, EntryTransformer<? super K, ? super V1, V2> transformer) {
     return new TransformedEntriesMultimap<>(fromMap, transformer);
@@ -1475,14 +1458,14 @@ public final class Multimaps {
    * @since 7.0
    */
   public static <
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       ListMultimap<K, V2> transformEntries(
           ListMultimap<K, V1> fromMap, EntryTransformer<? super K, ? super V1, V2> transformer) {
     return new TransformedEntriesListMultimap<>(fromMap, transformer);
   }
 
   private static class TransformedEntriesMultimap<
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       extends AbstractMultimap<K, V2> {
     final Multimap<K, V1> fromMultimap;
     final EntryTransformer<? super K, ? super V1, V2> transformer;
@@ -1601,7 +1584,7 @@ public final class Multimaps {
   }
 
   private static final class TransformedEntriesListMultimap<
-          K extends @Nullable Object, V1 extends @Nullable Object, V2 extends @Nullable Object>
+          K extends Object, V1 extends Object, V2 extends Object>
       extends TransformedEntriesMultimap<K, V1, V2> implements ListMultimap<K, V2> {
 
     TransformedEntriesListMultimap(
@@ -1719,9 +1702,9 @@ public final class Multimaps {
     return builder.build();
   }
 
-  static class Keys<K extends @Nullable Object, V extends @Nullable Object>
+  static class Keys<K extends Object, V extends Object>
       extends AbstractMultiset<K> {
-    @Weak final Multimap<K, V> multimap;
+    final Multimap<K, V> multimap;
 
     Keys(Multimap<K, V> multimap) {
       this.multimap = multimap;
@@ -1829,7 +1812,7 @@ public final class Multimaps {
   }
 
   /** A skeleton implementation of {@link Multimap#entries()}. */
-  abstract static class Entries<K extends @Nullable Object, V extends @Nullable Object>
+  abstract static class Entries<K extends Object, V extends Object>
       extends AbstractCollection<Map.Entry<K, V>> {
     abstract Multimap<K, V> multimap();
 
@@ -1863,9 +1846,9 @@ public final class Multimaps {
   }
 
   /** A skeleton implementation of {@link Multimap#asMap()}. */
-  static final class AsMap<K extends @Nullable Object, V extends @Nullable Object>
+  static final class AsMap<K extends Object, V extends Object>
       extends Maps.ViewCachingAbstractMap<K, Collection<V>> {
-    @Weak private final Multimap<K, V> multimap;
+    private final Multimap<K, V> multimap;
 
     AsMap(Multimap<K, V> multimap) {
       this.multimap = checkNotNull(multimap);
@@ -1885,7 +1868,6 @@ public final class Multimaps {
       multimap.keySet().remove(key);
     }
 
-    @WeakOuter
     class EntrySet extends Maps.EntrySet<K, Collection<V>> {
       @Override
       Map<K, Collection<V>> map() {
@@ -1977,7 +1959,7 @@ public final class Multimaps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> Multimap<K, V> filterKeys(
+  public static <K extends Object, V extends Object> Multimap<K, V> filterKeys(
       Multimap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     if (unfiltered instanceof SetMultimap) {
       return filterKeys((SetMultimap<K, V>) unfiltered, keyPredicate);
@@ -2022,7 +2004,7 @@ public final class Multimaps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> filterKeys(
           SetMultimap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     if (unfiltered instanceof FilteredKeySetMultimap) {
@@ -2064,7 +2046,7 @@ public final class Multimaps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       ListMultimap<K, V> filterKeys(
           ListMultimap<K, V> unfiltered, final Predicate<? super K> keyPredicate) {
     if (unfiltered instanceof FilteredKeyListMultimap) {
@@ -2103,7 +2085,7 @@ public final class Multimaps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       Multimap<K, V> filterValues(
           Multimap<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
@@ -2136,7 +2118,7 @@ public final class Multimaps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> filterValues(
           SetMultimap<K, V> unfiltered, final Predicate<? super V> valuePredicate) {
     return filterEntries(unfiltered, Maps.<V>valuePredicateOnEntries(valuePredicate));
@@ -2167,7 +2149,7 @@ public final class Multimaps {
    *
    * @since 11.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       Multimap<K, V> filterEntries(
           Multimap<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(entryPredicate);
@@ -2204,7 +2186,7 @@ public final class Multimaps {
    *
    * @since 14.0
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object>
+  public static <K extends Object, V extends Object>
       SetMultimap<K, V> filterEntries(
           SetMultimap<K, V> unfiltered, Predicate<? super Entry<K, V>> entryPredicate) {
     checkNotNull(entryPredicate);
@@ -2219,7 +2201,7 @@ public final class Multimaps {
    * lead to a multimap whose removal operations would fail. This method combines the predicates to
    * avoid that problem.
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       Multimap<K, V> filterFiltered(
           FilteredMultimap<K, V> multimap, Predicate<? super Entry<K, V>> entryPredicate) {
     Predicate<Entry<K, V>> predicate =
@@ -2233,7 +2215,7 @@ public final class Multimaps {
    * lead to a multimap whose removal operations would fail. This method combines the predicates to
    * avoid that problem.
    */
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       SetMultimap<K, V> filterFiltered(
           FilteredSetMultimap<K, V> multimap, Predicate<? super Entry<K, V>> entryPredicate) {
     Predicate<Entry<K, V>> predicate =
diff --git a/guava/src/com/google/common/collect/Multiset.java b/guava/src/com/google/common/collect/Multiset.java
index e7c7d62..dd932e9 100644
--- a/guava/src/com/google/common/collect/Multiset.java
+++ b/guava/src/com/google/common/collect/Multiset.java
@@ -18,10 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CompatibleWith;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
@@ -31,7 +27,6 @@ import java.util.Spliterator;
 import java.util.function.Consumer;
 import java.util.function.ObjIntConsumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A collection that supports order-independent equality, like {@link Set}, but may have duplicate
@@ -86,9 +81,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface Multiset<E extends @Nullable Object> extends Collection<E> {
+public interface Multiset<E extends Object> extends Collection<E> {
   // Query Operations
 
   /**
@@ -135,7 +129,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    *     null elements. Note that if {@code occurrences} is zero, the implementation may opt to
    *     return normally.
    */
-  @CanIgnoreReturnValue
   int add(@ParametricNullness E element, int occurrences);
 
   /**
@@ -157,7 +150,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    * @throws IllegalArgumentException if {@link Integer#MAX_VALUE} occurrences of {@code element}
    *     are already contained in this multiset
    */
-  @CanIgnoreReturnValue
   @Override
   boolean add(@ParametricNullness E element);
 
@@ -173,7 +165,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    * @return the count of the element before the operation; possibly zero
    * @throws IllegalArgumentException if {@code occurrences} is negative
    */
-  @CanIgnoreReturnValue
   int remove(@CompatibleWith("E") @CheckForNull Object element, int occurrences);
 
   /**
@@ -188,7 +179,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    * @param element the element to remove one occurrence of
    * @return {@code true} if an occurrence was found and removed
    */
-  @CanIgnoreReturnValue
   @Override
   boolean remove(@CheckForNull Object element);
 
@@ -205,7 +195,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    *     null elements. Note that if {@code count} is zero, the implementor may optionally return
    *     zero instead.
    */
-  @CanIgnoreReturnValue
   int setCount(@ParametricNullness E element, int count);
 
   /**
@@ -224,7 +213,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    *     null elements. Note that if {@code oldCount} and {@code newCount} are both zero, the
    *     implementor may optionally return {@code true} instead.
    */
-  @CanIgnoreReturnValue
   boolean setCount(@ParametricNullness E element, int oldCount, int newCount);
 
   // Views
@@ -271,7 +259,7 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    *
    * @since 2.0
    */
-  interface Entry<E extends @Nullable Object> {
+  interface Entry<E extends Object> {
 
     /**
      * Returns the multiset element corresponding to this entry. Multiple calls to this method
@@ -340,7 +328,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    *
    * @since 21.0
    */
-  @Beta
   default void forEachEntry(ObjIntConsumer<? super E> action) {
     checkNotNull(action);
     entrySet().forEach(entry -> action.accept(entry.getElement(), entry.getCount()));
@@ -434,7 +421,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    * <p>This method refines {@link Collection#removeAll} to further specify that it <b>may not</b>
    * throw an exception in response to any of {@code elements} being null or of the wrong type.
    */
-  @CanIgnoreReturnValue
   @Override
   boolean removeAll(Collection<?> c);
 
@@ -451,7 +437,6 @@ public interface Multiset<E extends @Nullable Object> extends Collection<E> {
    *
    * @see Multisets#retainOccurrences(Multiset, Multiset)
    */
-  @CanIgnoreReturnValue
   @Override
   boolean retainAll(Collection<?> c);
 
diff --git a/guava/src/com/google/common/collect/Multisets.java b/guava/src/com/google/common/collect/Multisets.java
index e3203d2..06fafc2 100644
--- a/guava/src/com/google/common/collect/Multisets.java
+++ b/guava/src/com/google/common/collect/Multisets.java
@@ -20,17 +20,13 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 import static com.google.common.collect.CollectPreconditions.checkRemove;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.collect.Multiset.Entry;
 import com.google.common.math.IntMath;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Collection;
@@ -45,7 +41,6 @@ import java.util.function.Supplier;
 import java.util.function.ToIntFunction;
 import java.util.stream.Collector;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static utility methods for creating and working with {@link Multiset} instances.
@@ -59,7 +54,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Multisets {
   private Multisets() {}
@@ -81,7 +75,7 @@ public final class Multisets {
    *
    * @since 22.0
    */
-  public static <T extends @Nullable Object, E extends @Nullable Object, M extends Multiset<E>>
+  public static <T extends Object, E extends Object, M extends Multiset<E>>
       Collector<T, ?, M> toMultiset(
           Function<? super T, E> elementFunction,
           ToIntFunction<? super T> countFunction,
@@ -99,7 +93,7 @@ public final class Multisets {
    * @param multiset the multiset for which an unmodifiable view is to be generated
    * @return an unmodifiable view of the multiset
    */
-  public static <E extends @Nullable Object> Multiset<E> unmodifiableMultiset(
+  public static <E extends Object> Multiset<E> unmodifiableMultiset(
       Multiset<? extends E> multiset) {
     if (multiset instanceof UnmodifiableMultiset || multiset instanceof ImmutableMultiset) {
       @SuppressWarnings("unchecked") // Since it's unmodifiable, the covariant cast is safe
@@ -120,7 +114,7 @@ public final class Multisets {
     return checkNotNull(multiset);
   }
 
-  static class UnmodifiableMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>
+  static class UnmodifiableMultiset<E extends Object> extends ForwardingMultiset<E>
       implements Serializable {
     final Multiset<? extends E> delegate;
 
@@ -229,8 +223,7 @@ public final class Multisets {
    * @return an unmodifiable view of the multiset
    * @since 11.0
    */
-  @Beta
-  public static <E extends @Nullable Object> SortedMultiset<E> unmodifiableSortedMultiset(
+  public static <E extends Object> SortedMultiset<E> unmodifiableSortedMultiset(
       SortedMultiset<E> sortedMultiset) {
     // it's in its own file so it can be emulated for GWT
     return new UnmodifiableSortedMultiset<E>(checkNotNull(sortedMultiset));
@@ -244,12 +237,12 @@ public final class Multisets {
    * @param n the count to be associated with the returned entry
    * @throws IllegalArgumentException if {@code n} is negative
    */
-  public static <E extends @Nullable Object> Multiset.Entry<E> immutableEntry(
+  public static <E extends Object> Multiset.Entry<E> immutableEntry(
       @ParametricNullness E e, int n) {
     return new ImmutableEntry<E>(e, n);
   }
 
-  static class ImmutableEntry<E extends @Nullable Object> extends AbstractEntry<E>
+  static class ImmutableEntry<E extends Object> extends AbstractEntry<E>
       implements Serializable {
     @ParametricNullness private final E element;
     private final int count;
@@ -304,8 +297,7 @@ public final class Multisets {
    *
    * @since 14.0
    */
-  @Beta
-  public static <E extends @Nullable Object> Multiset<E> filter(
+  public static <E extends Object> Multiset<E> filter(
       Multiset<E> unfiltered, Predicate<? super E> predicate) {
     if (unfiltered instanceof FilteredMultiset) {
       // Support clear(), removeAll(), and retainAll() when filtering a filtered
@@ -317,7 +309,7 @@ public final class Multisets {
     return new FilteredMultiset<E>(unfiltered, predicate);
   }
 
-  private static final class FilteredMultiset<E extends @Nullable Object> extends ViewMultiset<E> {
+  private static final class FilteredMultiset<E extends Object> extends ViewMultiset<E> {
     final Multiset<E> unfiltered;
     final Predicate<? super E> predicate;
 
@@ -411,8 +403,7 @@ public final class Multisets {
    *
    * @since 14.0
    */
-  @Beta
-  public static <E extends @Nullable Object> Multiset<E> union(
+  public static <E extends Object> Multiset<E> union(
       final Multiset<? extends E> multiset1, final Multiset<? extends E> multiset2) {
     checkNotNull(multiset1);
     checkNotNull(multiset2);
@@ -484,7 +475,7 @@ public final class Multisets {
    *
    * @since 2.0
    */
-  public static <E extends @Nullable Object> Multiset<E> intersection(
+  public static <E extends Object> Multiset<E> intersection(
       final Multiset<E> multiset1, final Multiset<?> multiset2) {
     checkNotNull(multiset1);
     checkNotNull(multiset2);
@@ -541,8 +532,7 @@ public final class Multisets {
    *
    * @since 14.0
    */
-  @Beta
-  public static <E extends @Nullable Object> Multiset<E> sum(
+  public static <E extends Object> Multiset<E> sum(
       final Multiset<? extends E> multiset1, final Multiset<? extends E> multiset2) {
     checkNotNull(multiset1);
     checkNotNull(multiset2);
@@ -619,8 +609,7 @@ public final class Multisets {
    *
    * @since 14.0
    */
-  @Beta
-  public static <E extends @Nullable Object> Multiset<E> difference(
+  public static <E extends Object> Multiset<E> difference(
       final Multiset<E> multiset1, final Multiset<?> multiset2) {
     checkNotNull(multiset1);
     checkNotNull(multiset2);
@@ -690,7 +679,6 @@ public final class Multisets {
    *
    * @since 10.0
    */
-  @CanIgnoreReturnValue
   public static boolean containsOccurrences(Multiset<?> superMultiset, Multiset<?> subMultiset) {
     checkNotNull(superMultiset);
     checkNotNull(subMultiset);
@@ -719,14 +707,13 @@ public final class Multisets {
    * @return {@code true} if {@code multisetToModify} was changed as a result of this operation
    * @since 10.0
    */
-  @CanIgnoreReturnValue
   public static boolean retainOccurrences(
       Multiset<?> multisetToModify, Multiset<?> multisetToRetain) {
     return retainOccurrencesImpl(multisetToModify, multisetToRetain);
   }
 
   /** Delegate implementation which cares about the element type. */
-  private static <E extends @Nullable Object> boolean retainOccurrencesImpl(
+  private static <E extends Object> boolean retainOccurrencesImpl(
       Multiset<E> multisetToModify, Multiset<?> occurrencesToRetain) {
     checkNotNull(multisetToModify);
     checkNotNull(occurrencesToRetain);
@@ -770,7 +757,6 @@ public final class Multisets {
    * @since 18.0 (present in 10.0 with a requirement that the second parameter be a {@code
    *     Multiset})
    */
-  @CanIgnoreReturnValue
   public static boolean removeOccurrences(
       Multiset<?> multisetToModify, Iterable<?> occurrencesToRemove) {
     if (occurrencesToRemove instanceof Multiset) {
@@ -808,7 +794,6 @@ public final class Multisets {
    * @return {@code true} if {@code multisetToModify} was changed as a result of this operation
    * @since 10.0 (missing in 18.0 when only the overload taking an {@code Iterable} was present)
    */
-  @CanIgnoreReturnValue
   public static boolean removeOccurrences(
       Multiset<?> multisetToModify, Multiset<?> occurrencesToRemove) {
     checkNotNull(multisetToModify);
@@ -834,7 +819,7 @@ public final class Multisets {
    * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@link
    * Multiset.Entry}.
    */
-  abstract static class AbstractEntry<E extends @Nullable Object> implements Multiset.Entry<E> {
+  abstract static class AbstractEntry<E extends Object> implements Multiset.Entry<E> {
     /**
      * Indicates whether an object equals this entry, following the behavior specified in {@link
      * Multiset.Entry#equals}.
@@ -900,7 +885,7 @@ public final class Multisets {
   }
 
   /** An implementation of {@link Multiset#addAll}. */
-  static <E extends @Nullable Object> boolean addAllImpl(
+  static <E extends Object> boolean addAllImpl(
       Multiset<E> self, Collection<? extends E> elements) {
     checkNotNull(self);
     checkNotNull(elements);
@@ -914,7 +899,7 @@ public final class Multisets {
   }
 
   /** A specialization of {@code addAllImpl} for when {@code elements} is itself a Multiset. */
-  private static <E extends @Nullable Object> boolean addAllImpl(
+  private static <E extends Object> boolean addAllImpl(
       Multiset<E> self, Multiset<? extends E> elements) {
     if (elements.isEmpty()) {
       return false;
@@ -945,7 +930,7 @@ public final class Multisets {
   }
 
   /** An implementation of {@link Multiset#setCount(Object, int)}. */
-  static <E extends @Nullable Object> int setCountImpl(
+  static <E extends Object> int setCountImpl(
       Multiset<E> self, @ParametricNullness E element, int count) {
     checkNonnegative(count, "count");
 
@@ -962,7 +947,7 @@ public final class Multisets {
   }
 
   /** An implementation of {@link Multiset#setCount(Object, int, int)}. */
-  static <E extends @Nullable Object> boolean setCountImpl(
+  static <E extends Object> boolean setCountImpl(
       Multiset<E> self, @ParametricNullness E element, int oldCount, int newCount) {
     checkNonnegative(oldCount, "oldCount");
     checkNonnegative(newCount, "newCount");
@@ -975,7 +960,7 @@ public final class Multisets {
     }
   }
 
-  static <E extends @Nullable Object> Iterator<E> elementIterator(
+  static <E extends Object> Iterator<E> elementIterator(
       Iterator<Entry<E>> entryIterator) {
     return new TransformedIterator<Entry<E>, E>(entryIterator) {
       @Override
@@ -986,7 +971,7 @@ public final class Multisets {
     };
   }
 
-  abstract static class ElementSet<E extends @Nullable Object> extends Sets.ImprovedAbstractSet<E> {
+  abstract static class ElementSet<E extends Object> extends Sets.ImprovedAbstractSet<E> {
     abstract Multiset<E> multiset();
 
     @Override
@@ -1023,7 +1008,7 @@ public final class Multisets {
     }
   }
 
-  abstract static class EntrySet<E extends @Nullable Object>
+  abstract static class EntrySet<E extends Object>
       extends Sets.ImprovedAbstractSet<Entry<E>> {
     abstract Multiset<E> multiset();
 
@@ -1056,7 +1041,7 @@ public final class Multisets {
           // Safe as long as we never add a new entry, which we won't.
           // (Presumably it can still throw CCE/NPE but only if the underlying Multiset does.)
           @SuppressWarnings({"unchecked", "nullness"})
-          Multiset<@Nullable Object> multiset = (Multiset<@Nullable Object>) multiset();
+          Multiset<Object> multiset = (Multiset<@Nullable Object>) multiset();
           return multiset.setCount(element, entryCount, 0);
         }
       }
@@ -1070,11 +1055,11 @@ public final class Multisets {
   }
 
   /** An implementation of {@link Multiset#iterator}. */
-  static <E extends @Nullable Object> Iterator<E> iteratorImpl(Multiset<E> multiset) {
+  static <E extends Object> Iterator<E> iteratorImpl(Multiset<E> multiset) {
     return new MultisetIteratorImpl<E>(multiset, multiset.entrySet().iterator());
   }
 
-  static final class MultisetIteratorImpl<E extends @Nullable Object> implements Iterator<E> {
+  static final class MultisetIteratorImpl<E extends Object> implements Iterator<E> {
     private final Multiset<E> multiset;
     private final Iterator<Entry<E>> entryIterator;
     @CheckForNull private Entry<E> currentEntry;
@@ -1133,7 +1118,7 @@ public final class Multisets {
     }
   }
 
-  static <E extends @Nullable Object> Spliterator<E> spliteratorImpl(Multiset<E> multiset) {
+  static <E extends Object> Spliterator<E> spliteratorImpl(Multiset<E> multiset) {
     Spliterator<Entry<E>> entrySpliterator = multiset.entrySet().spliterator();
     return CollectSpliterators.flatMap(
         entrySpliterator,
@@ -1154,7 +1139,7 @@ public final class Multisets {
   }
 
   /** Used to avoid http://bugs.sun.com/view_bug.do?bug_id=6558557 */
-  static <T extends @Nullable Object> Multiset<T> cast(Iterable<T> iterable) {
+  static <T extends Object> Multiset<T> cast(Iterable<T> iterable) {
     return (Multiset<T>) iterable;
   }
 
@@ -1164,7 +1149,6 @@ public final class Multisets {
    *
    * @since 11.0
    */
-  @Beta
   public static <E> ImmutableMultiset<E> copyHighestCountFirst(Multiset<E> multiset) {
     Entry<E>[] entries = (Entry<E>[]) multiset.entrySet().toArray(new Entry[0]);
     Arrays.sort(entries, DecreasingCount.INSTANCE);
@@ -1184,7 +1168,7 @@ public final class Multisets {
    * An {@link AbstractMultiset} with additional default implementations, some of them linear-time
    * implementations in terms of {@code elementSet} and {@code entrySet}.
    */
-  private abstract static class ViewMultiset<E extends @Nullable Object>
+  private abstract static class ViewMultiset<E extends Object>
       extends AbstractMultiset<E> {
     @Override
     public int size() {
diff --git a/guava/src/com/google/common/collect/MutableClassToInstanceMap.java b/guava/src/com/google/common/collect/MutableClassToInstanceMap.java
index 83fbe94..ddad406 100644
--- a/guava/src/com/google/common/collect/MutableClassToInstanceMap.java
+++ b/guava/src/com/google/common/collect/MutableClassToInstanceMap.java
@@ -18,9 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Primitives;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -29,7 +27,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.Spliterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A mutable class-to-instance map backed by an arbitrary user-provided map. See also {@link
@@ -45,7 +42,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtIncompatible
 @SuppressWarnings("serial") // using writeReplace instead of standard serialization
 @ElementTypesAreNonnullByDefault
 public final class MutableClassToInstanceMap<B> extends ForwardingMap<Class<? extends B>, B>
@@ -138,14 +134,13 @@ public final class MutableClassToInstanceMap<B> extends ForwardingMap<Class<? ex
 
       @Override
       @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-      public <T extends @Nullable Object> T[] toArray(T[] array) {
+      public <T extends Object> T[] toArray(T[] array) {
         return standardToArray(array);
       }
     };
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public B put(Class<? extends B> key, B value) {
     return super.put(key, cast(key, value));
@@ -160,7 +155,6 @@ public final class MutableClassToInstanceMap<B> extends ForwardingMap<Class<? ex
     super.putAll(copy);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public <T extends B> T putInstance(Class<T> type, T value) {
@@ -173,7 +167,6 @@ public final class MutableClassToInstanceMap<B> extends ForwardingMap<Class<? ex
     return cast(type, get(type));
   }
 
-  @CanIgnoreReturnValue
   @CheckForNull
   private static <B, T extends B> T cast(Class<T> type, @CheckForNull B value) {
     return Primitives.wrap(type).cast(value);
diff --git a/guava/src/com/google/common/collect/NaturalOrdering.java b/guava/src/com/google/common/collect/NaturalOrdering.java
index 8cb8aef..836452a 100644
--- a/guava/src/com/google/common/collect/NaturalOrdering.java
+++ b/guava/src/com/google/common/collect/NaturalOrdering.java
@@ -18,20 +18,17 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering that uses the natural order of the values. */
-@GwtCompatible(serializable = true)
 @SuppressWarnings({"unchecked", "rawtypes"}) // TODO(kevinb): the right way to explain this??
 @ElementTypesAreNonnullByDefault
 final class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {
   static final NaturalOrdering INSTANCE = new NaturalOrdering();
 
-  @CheckForNull private transient Ordering<@Nullable Comparable<?>> nullsFirst;
-  @CheckForNull private transient Ordering<@Nullable Comparable<?>> nullsLast;
+  @CheckForNull private transient Ordering<Comparable<?>> nullsFirst;
+  @CheckForNull private transient Ordering<Comparable<?>> nullsLast;
 
   @Override
   public int compare(Comparable<?> left, Comparable<?> right) {
@@ -41,8 +38,8 @@ final class NaturalOrdering extends Ordering<Comparable<?>> implements Serializa
   }
 
   @Override
-  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {
-    Ordering<@Nullable Comparable<?>> result = nullsFirst;
+  public <S extends Comparable<?>> Ordering<S> nullsFirst() {
+    Ordering<Comparable<?>> result = nullsFirst;
     if (result == null) {
       result = nullsFirst = super.<Comparable<?>>nullsFirst();
     }
@@ -50,8 +47,8 @@ final class NaturalOrdering extends Ordering<Comparable<?>> implements Serializa
   }
 
   @Override
-  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {
-    Ordering<@Nullable Comparable<?>> result = nullsLast;
+  public <S extends Comparable<?>> Ordering<S> nullsLast() {
+    Ordering<Comparable<?>> result = nullsLast;
     if (result == null) {
       result = nullsLast = super.<Comparable<?>>nullsLast();
     }
diff --git a/guava/src/com/google/common/collect/NullnessCasts.java b/guava/src/com/google/common/collect/NullnessCasts.java
index 6ceeda7..448e182 100644
--- a/guava/src/com/google/common/collect/NullnessCasts.java
+++ b/guava/src/com/google/common/collect/NullnessCasts.java
@@ -14,12 +14,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** A utility method to perform unchecked casts to suppress errors produced by nullness analyses. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class NullnessCasts {
   /**
@@ -52,7 +49,7 @@ final class NullnessCasts {
    */
   @ParametricNullness
   @SuppressWarnings("nullness")
-  static <T extends @Nullable Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
+  static <T extends Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
     return t;
   }
 
@@ -60,7 +57,7 @@ final class NullnessCasts {
   @SuppressWarnings({"nullness", "TypeParameterUnusedInFormals"})
   // The warnings are legitimate. Each time we use this method, we document why.
   @ParametricNullness
-  static <T extends @Nullable Object> T unsafeNull() {
+  static <T extends Object> T unsafeNull() {
     return null;
   }
 
diff --git a/guava/src/com/google/common/collect/NullsFirstOrdering.java b/guava/src/com/google/common/collect/NullsFirstOrdering.java
index ce8be2f..aeed9c1 100644
--- a/guava/src/com/google/common/collect/NullsFirstOrdering.java
+++ b/guava/src/com/google/common/collect/NullsFirstOrdering.java
@@ -16,15 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering that treats {@code null} as less than all other values. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class NullsFirstOrdering<T extends @Nullable Object> extends Ordering<@Nullable T>
+final class NullsFirstOrdering<T extends Object> extends Ordering<T>
     implements Serializable {
   final Ordering<? super T> ordering;
 
@@ -48,19 +45,19 @@ final class NullsFirstOrdering<T extends @Nullable Object> extends Ordering<@Nul
 
   @Override
   @SuppressWarnings("nullness") // should be safe, but not sure if we can avoid the warning
-  public <S extends @Nullable T> Ordering<S> reverse() {
+  public <S extends T> Ordering<S> reverse() {
     // ordering.reverse() might be optimized, so let it do its thing
     return ordering.reverse().nullsLast();
   }
 
   @SuppressWarnings("unchecked") // still need the right way to explain this
   @Override
-  public <S extends T> Ordering<@Nullable S> nullsFirst() {
+  public <S extends T> Ordering<S> nullsFirst() {
     return (Ordering<@Nullable S>) this;
   }
 
   @Override
-  public <S extends T> Ordering<@Nullable S> nullsLast() {
+  public <S extends T> Ordering<S> nullsLast() {
     return ordering.<S>nullsLast();
   }
 
diff --git a/guava/src/com/google/common/collect/NullsLastOrdering.java b/guava/src/com/google/common/collect/NullsLastOrdering.java
index 6f8f74c..58f3e8a 100644
--- a/guava/src/com/google/common/collect/NullsLastOrdering.java
+++ b/guava/src/com/google/common/collect/NullsLastOrdering.java
@@ -16,15 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering that treats {@code null} as greater than all other values. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class NullsLastOrdering<T extends @Nullable Object> extends Ordering<@Nullable T>
+final class NullsLastOrdering<T extends Object> extends Ordering<T>
     implements Serializable {
   final Ordering<? super T> ordering;
 
@@ -48,19 +45,19 @@ final class NullsLastOrdering<T extends @Nullable Object> extends Ordering<@Null
 
   @Override
   @SuppressWarnings("nullness") // should be safe, but not sure if we can avoid the warning
-  public <S extends @Nullable T> Ordering<S> reverse() {
+  public <S extends T> Ordering<S> reverse() {
     // ordering.reverse() might be optimized, so let it do its thing
     return ordering.reverse().nullsFirst();
   }
 
   @Override
-  public <S extends T> Ordering<@Nullable S> nullsFirst() {
+  public <S extends T> Ordering<S> nullsFirst() {
     return ordering.<S>nullsFirst();
   }
 
   @SuppressWarnings("unchecked") // still need the right way to explain this
   @Override
-  public <S extends T> Ordering<@Nullable S> nullsLast() {
+  public <S extends T> Ordering<S> nullsLast() {
     return (Ordering<@Nullable S>) this;
   }
 
diff --git a/guava/src/com/google/common/collect/ObjectArrays.java b/guava/src/com/google/common/collect/ObjectArrays.java
index d3b048d..9b1ba53 100644
--- a/guava/src/com/google/common/collect/ObjectArrays.java
+++ b/guava/src/com/google/common/collect/ObjectArrays.java
@@ -18,13 +18,9 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.lang.reflect.Array;
 import java.util.Arrays;
 import java.util.Collection;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to object arrays.
@@ -32,7 +28,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class ObjectArrays {
 
@@ -44,7 +39,7 @@ public final class ObjectArrays {
    * @param type the component type
    * @param length the length of the new array
    */
-  @GwtIncompatible // Array.newInstance(Class, int)
+  // Array.newInstance(Class, int)
   @SuppressWarnings("unchecked")
   public static <T> T[] newArray(Class<T> type, int length) {
     return (T[]) Array.newInstance(type, length);
@@ -56,7 +51,7 @@ public final class ObjectArrays {
    * @param reference any array of the desired type
    * @param length the length of the new array
    */
-  public static <T extends @Nullable Object> T[] newArray(T[] reference, int length) {
+  public static <T extends Object> T[] newArray(T[] reference, int length) {
     return Platform.newArray(reference, length);
   }
 
@@ -67,7 +62,7 @@ public final class ObjectArrays {
    * @param second the second array of elements to concatenate
    * @param type the component type of the returned array
    */
-  @GwtIncompatible // Array.newInstance(Class, int)
+  // Array.newInstance(Class, int)
   public static <T> T[] concat(T[] first, T[] second, Class<T> type) {
     T[] result = newArray(type, first.length + second.length);
     System.arraycopy(first, 0, result, 0, first.length);
@@ -83,7 +78,7 @@ public final class ObjectArrays {
    * @return an array whose size is one larger than {@code array}, with {@code element} occupying
    *     the first position, and the elements of {@code array} occupying the remaining elements.
    */
-  public static <T extends @Nullable Object> T[] concat(@ParametricNullness T element, T[] array) {
+  public static <T extends Object> T[] concat(@ParametricNullness T element, T[] array) {
     T[] result = newArray(array, array.length + 1);
     result[0] = element;
     System.arraycopy(array, 0, result, 1, array.length);
@@ -98,7 +93,7 @@ public final class ObjectArrays {
    * @return an array whose size is one larger than {@code array}, with the same contents as {@code
    *     array}, plus {@code element} occupying the last position.
    */
-  public static <T extends @Nullable Object> T[] concat(T[] array, @ParametricNullness T element) {
+  public static <T extends Object> T[] concat(T[] array, @ParametricNullness T element) {
     T[] result = Arrays.copyOf(array, array.length + 1);
     result[array.length] = element;
     return result;
@@ -125,14 +120,14 @@ public final class ObjectArrays {
    * @throws ArrayStoreException if the runtime type of the specified array is not a supertype of
    *     the runtime type of every element in the specified collection
    */
-  static <T extends @Nullable Object> T[] toArrayImpl(Collection<?> c, T[] array) {
+  static <T extends Object> T[] toArrayImpl(Collection<?> c, T[] array) {
     int size = c.size();
     if (array.length < size) {
       array = newArray(array, size);
     }
     fillArray(c, array);
     if (array.length > size) {
-      @Nullable Object[] unsoundlyCovariantArray = array;
+      Object[] unsoundlyCovariantArray = array;
       unsoundlyCovariantArray[size] = null;
     }
     return array;
@@ -149,13 +144,13 @@ public final class ObjectArrays {
    * collection is set to {@code null}. This is useful in determining the length of the collection
    * <i>only</i> if the caller knows that the collection does not contain any null elements.
    */
-  static <T extends @Nullable Object> T[] toArrayImpl(
+  static <T extends Object> T[] toArrayImpl(
       @Nullable Object[] src, int offset, int len, T[] dst) {
     checkPositionIndexes(offset, offset + len, src.length);
     if (dst.length < len) {
       dst = newArray(dst, len);
     } else if (dst.length > len) {
-      @Nullable Object[] unsoundlyCovariantArray = dst;
+      Object[] unsoundlyCovariantArray = dst;
       unsoundlyCovariantArray[len] = null;
     }
     System.arraycopy(src, offset, dst, 0, len);
@@ -174,7 +169,7 @@ public final class ObjectArrays {
    *
    * @param c the collection for which to return an array of elements
    */
-  static @Nullable Object[] toArrayImpl(Collection<?> c) {
+  static Object[] toArrayImpl(Collection<?> c) {
     return fillArray(c, new Object[c.size()]);
   }
 
@@ -182,18 +177,17 @@ public final class ObjectArrays {
    * Returns a copy of the specified subrange of the specified array that is literally an Object[],
    * and not e.g. a {@code String[]}.
    */
-  static @Nullable Object[] copyAsObjectArray(@Nullable Object[] elements, int offset, int length) {
+  static Object[] copyAsObjectArray(@Nullable Object[] elements, int offset, int length) {
     checkPositionIndexes(offset, offset + length, elements.length);
     if (length == 0) {
       return new Object[0];
     }
-    @Nullable Object[] result = new Object[length];
+    Object[] result = new Object[length];
     System.arraycopy(elements, offset, result, 0, length);
     return result;
   }
 
-  @CanIgnoreReturnValue
-  private static @Nullable Object[] fillArray(Iterable<?> elements, @Nullable Object[] array) {
+  private static Object[] fillArray(Iterable<?> elements, @Nullable Object[] array) {
     int i = 0;
     for (Object element : elements) {
       array[i++] = element;
@@ -208,12 +202,10 @@ public final class ObjectArrays {
     array[j] = temp;
   }
 
-  @CanIgnoreReturnValue
   static Object[] checkElementsNotNull(Object... array) {
     return checkElementsNotNull(array, array.length);
   }
 
-  @CanIgnoreReturnValue
   static Object[] checkElementsNotNull(Object[] array, int length) {
     for (int i = 0; i < length; i++) {
       checkElementNotNull(array[i], i);
@@ -223,7 +215,6 @@ public final class ObjectArrays {
 
   // We do this instead of Preconditions.checkNotNull to save boxing and array
   // creation cost.
-  @CanIgnoreReturnValue
   static Object checkElementNotNull(Object element, int index) {
     if (element == null) {
       throw new NullPointerException("at index " + index);
diff --git a/guava/src/com/google/common/collect/Ordering.java b/guava/src/com/google/common/collect/Ordering.java
index 9bf180f..aab0ac9 100644
--- a/guava/src/com/google/common/collect/Ordering.java
+++ b/guava/src/com/google/common/collect/Ordering.java
@@ -19,10 +19,7 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -39,7 +36,6 @@ import java.util.TreeSet;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A comparator, with additional methods to support common operations. This is an "enriched" version
@@ -144,9 +140,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class Ordering<T extends @Nullable Object> implements Comparator<T> {
+public abstract class Ordering<T extends Object> implements Comparator<T> {
   // Natural order
 
   /**
@@ -158,7 +153,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * <p><b>Java 8 users:</b> use {@link Comparator#naturalOrder} instead.
    */
-  @GwtCompatible(serializable = true)
   @SuppressWarnings("unchecked") // TODO(kevinb): right way to explain this??
   public static <C extends Comparable> Ordering<C> natural() {
     return (Ordering<C>) NaturalOrdering.INSTANCE;
@@ -179,8 +173,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    * @return comparator itself if it is already an {@code Ordering}; otherwise an ordering that
    *     wraps that comparator
    */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Ordering<T> from(Comparator<T> comparator) {
+  public static <T extends Object> Ordering<T> from(Comparator<T> comparator) {
     return (comparator instanceof Ordering)
         ? (Ordering<T>) comparator
         : new ComparatorOrdering<T>(comparator);
@@ -191,9 +184,8 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * @deprecated no need to use this
    */
-  @GwtCompatible(serializable = true)
   @Deprecated
-  public static <T extends @Nullable Object> Ordering<T> from(Ordering<T> ordering) {
+  public static <T extends Object> Ordering<T> from(Ordering<T> ordering) {
     return checkNotNull(ordering);
   }
 
@@ -217,7 +209,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *     (according to {@link Object#equals})
    */
   // TODO(kevinb): provide replacement
-  @GwtCompatible(serializable = true)
   public static <T> Ordering<T> explicit(List<T> valuesInOrder) {
     return new ExplicitOrdering<T>(valuesInOrder);
   }
@@ -243,7 +234,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *     Object#equals(Object)}) are present among the method arguments
    */
   // TODO(kevinb): provide replacement
-  @GwtCompatible(serializable = true)
   public static <T> Ordering<T> explicit(T leastValue, T... remainingValuesInOrder) {
     return explicit(Lists.asList(leastValue, remainingValuesInOrder));
   }
@@ -278,9 +268,8 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * @since 13.0
    */
-  @GwtCompatible(serializable = true)
   @SuppressWarnings("unchecked")
-  public static Ordering<@Nullable Object> allEqual() {
+  public static Ordering<Object> allEqual() {
     return AllEqualOrdering.INSTANCE;
   }
 
@@ -292,7 +281,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * <p><b>Java 8 users:</b> Use {@code Comparator.comparing(Object::toString)} instead.
    */
-  @GwtCompatible(serializable = true)
   public static Ordering<Object> usingToString() {
     return UsingToStringOrdering.INSTANCE;
   }
@@ -313,16 +301,15 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    * @since 2.0
    */
   // TODO(kevinb): copy to Comparators, etc.
-  public static Ordering<@Nullable Object> arbitrary() {
+  public static Ordering<Object> arbitrary() {
     return ArbitraryOrderingHolder.ARBITRARY_ORDERING;
   }
 
   private static class ArbitraryOrderingHolder {
-    static final Ordering<@Nullable Object> ARBITRARY_ORDERING = new ArbitraryOrdering();
+    static final Ordering<Object> ARBITRARY_ORDERING = new ArbitraryOrdering();
   }
 
-  @VisibleForTesting
-  static class ArbitraryOrdering extends Ordering<@Nullable Object> {
+  static class ArbitraryOrdering extends Ordering<Object> {
 
     private final AtomicInteger counter = new AtomicInteger(0);
     private final ConcurrentMap<Object, Integer> uids =
@@ -402,7 +389,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    */
   // type parameter <S> lets us avoid the extra <String> in statements like:
   // Ordering<String> o = Ordering.<String>natural().reverse();
-  @GwtCompatible(serializable = true)
   public <S extends T> Ordering<S> reverse() {
     return new ReverseOrdering<S>(this);
   }
@@ -415,8 +401,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    */
   // type parameter <S> lets us avoid the extra <String> in statements like:
   // Ordering<String> o = Ordering.<String>natural().nullsFirst();
-  @GwtCompatible(serializable = true)
-  public <S extends T> Ordering<@Nullable S> nullsFirst() {
+  public <S extends T> Ordering<S> nullsFirst() {
     return new NullsFirstOrdering<S>(this);
   }
 
@@ -428,8 +413,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    */
   // type parameter <S> lets us avoid the extra <String> in statements like:
   // Ordering<String> o = Ordering.<String>natural().nullsLast();
-  @GwtCompatible(serializable = true)
-  public <S extends T> Ordering<@Nullable S> nullsLast() {
+  public <S extends T> Ordering<S> nullsLast() {
     return new NullsLastOrdering<S>(this);
   }
 
@@ -446,8 +430,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    * <p><b>Java 8 users:</b> Use {@code Comparator.comparing(function, thisComparator)} instead (you
    * can omit the comparator if it is the natural order).
    */
-  @GwtCompatible(serializable = true)
-  public <F extends @Nullable Object> Ordering<F> onResultOf(Function<F, ? extends T> function) {
+  public <F extends Object> Ordering<F> onResultOf(Function<F, ? extends T> function) {
     return new ByFunctionOrdering<>(function, this);
   }
 
@@ -468,7 +451,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    * Depending on what {@code secondaryComparator} is, one of the other overloads of {@code
    * thenComparing} may be even more useful.
    */
-  @GwtCompatible(serializable = true)
   public <U extends T> Ordering<U> compound(Comparator<? super U> secondaryComparator) {
     return new CompoundOrdering<U>(this, checkNotNull(secondaryComparator));
   }
@@ -492,8 +474,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * @param comparators the comparators to try in order
    */
-  @GwtCompatible(serializable = true)
-  public static <T extends @Nullable Object> Ordering<T> compound(
+  public static <T extends Object> Ordering<T> compound(
       Iterable<? extends Comparator<? super T>> comparators) {
     return new CompoundOrdering<T>(comparators);
   }
@@ -513,7 +494,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    *
    * @since 2.0
    */
-  @GwtCompatible(serializable = true)
   // type parameter <S> lets us avoid the extra <String> in statements like:
   // Ordering<Iterable<String>> o =
   //     Ordering.<String>natural().lexicographical();
@@ -530,7 +510,7 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
 
   // Regular instance methods
 
-  @CanIgnoreReturnValue // TODO(kak): Consider removing this
+  // TODO(kak): Consider removing this
   @Override
   public abstract int compare(@ParametricNullness T left, @ParametricNullness T right);
 
@@ -943,7 +923,6 @@ public abstract class Ordering<T extends @Nullable Object> implements Comparator
    * Object[])} comparator when comparing a value outside the set of values it can compare.
    * Extending {@link ClassCastException} may seem odd, but it is required.
    */
-  @VisibleForTesting
   static class IncomparableValueException extends ClassCastException {
     final Object value;
 
diff --git a/guava/src/com/google/common/collect/ParametricNullness.java b/guava/src/com/google/common/collect/ParametricNullness.java
index b1cda48..cc82d5c 100644
--- a/guava/src/com/google/common/collect/ParametricNullness.java
+++ b/guava/src/com/google/common/collect/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/collect/PeekingIterator.java b/guava/src/com/google/common/collect/PeekingIterator.java
index a274fe4..9ce5773 100644
--- a/guava/src/com/google/common/collect/PeekingIterator.java
+++ b/guava/src/com/google/common/collect/PeekingIterator.java
@@ -16,12 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An iterator that supports a one-element lookahead while iterating.
@@ -33,10 +29,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mick Killianey
  * @since 2.0
  */
-@DoNotMock("Use Iterators.peekingIterator")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {
+public interface PeekingIterator<E extends Object> extends Iterator<E> {
   /**
    * Returns the next element in the iteration, without advancing the iteration.
    *
@@ -55,7 +49,6 @@ public interface PeekingIterator<E extends @Nullable Object> extends Iterator<E>
    * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are
    * guaranteed to be equal to each other.
    */
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   E next();
diff --git a/guava/src/com/google/common/collect/Platform.java b/guava/src/com/google/common/collect/Platform.java
index b1d6b2f..ba3bd8b 100644
--- a/guava/src/com/google/common/collect/Platform.java
+++ b/guava/src/com/google/common/collect/Platform.java
@@ -16,27 +16,24 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.reflect.Array;
 import java.util.Arrays;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Methods factored out so that they can be emulated differently in GWT.
  *
  * @author Hayward Chan
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class Platform {
   private static final java.util.logging.Logger logger =
       java.util.logging.Logger.getLogger(Platform.class.getName());
 
   /** Returns the platform preferred implementation of a map based on a hash table. */
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       Map<K, V> newHashMapWithExpectedSize(int expectedSize) {
     return Maps.newHashMapWithExpectedSize(expectedSize);
   }
@@ -45,13 +42,13 @@ final class Platform {
    * Returns the platform preferred implementation of an insertion ordered map based on a hash
    * table.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       Map<K, V> newLinkedHashMapWithExpectedSize(int expectedSize) {
     return Maps.newLinkedHashMapWithExpectedSize(expectedSize);
   }
 
   /** Returns the platform preferred implementation of a set based on a hash table. */
-  static <E extends @Nullable Object> Set<E> newHashSetWithExpectedSize(int expectedSize) {
+  static <E extends Object> Set<E> newHashSetWithExpectedSize(int expectedSize) {
     return Sets.newHashSetWithExpectedSize(expectedSize);
   }
 
@@ -64,7 +61,7 @@ final class Platform {
    * Returns the platform preferred implementation of an insertion ordered set based on a hash
    * table.
    */
-  static <E extends @Nullable Object> Set<E> newLinkedHashSetWithExpectedSize(int expectedSize) {
+  static <E extends Object> Set<E> newLinkedHashSetWithExpectedSize(int expectedSize) {
     return Sets.newLinkedHashSetWithExpectedSize(expectedSize);
   }
 
@@ -72,7 +69,7 @@ final class Platform {
    * Returns the platform preferred map implementation that preserves insertion order when used only
    * for insertions.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       Map<K, V> preservesInsertionOrderOnPutsMap() {
     return Maps.newLinkedHashMap();
   }
@@ -81,7 +78,7 @@ final class Platform {
    * Returns the platform preferred set implementation that preserves insertion order when used only
    * for insertions.
    */
-  static <E extends @Nullable Object> Set<E> preservesInsertionOrderOnAddsSet() {
+  static <E extends Object> Set<E> preservesInsertionOrderOnAddsSet() {
     return Sets.newLinkedHashSet();
   }
 
@@ -97,7 +94,7 @@ final class Platform {
    * about arrays for now, as they're a mess. (We previously discussed this in the review of
    * ObjectArrays, which is the main caller of this method.)
    */
-  static <T extends @Nullable Object> T[] newArray(T[] reference, int length) {
+  static <T extends Object> T[] newArray(T[] reference, int length) {
     Class<?> type = reference.getClass().getComponentType();
 
     // the cast is safe because
@@ -117,7 +114,7 @@ final class Platform {
    * - https://github.com/jspecify/jdk/commit/71d826792b8c7ef95d492c50a274deab938f2552
    */
   @SuppressWarnings("nullness")
-  static <T extends @Nullable Object> T[] copy(Object[] source, int from, int to, T[] arrayOfType) {
+  static <T extends Object> T[] copy(Object[] source, int from, int to, T[] arrayOfType) {
     return Arrays.copyOfRange(source, from, to, (Class<? extends T[]>) arrayOfType.getClass());
   }
 
diff --git a/guava/src/com/google/common/collect/Queues.java b/guava/src/com/google/common/collect/Queues.java
index a140102..2e31130 100644
--- a/guava/src/com/google/common/collect/Queues.java
+++ b/guava/src/com/google/common/collect/Queues.java
@@ -14,11 +14,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.ArrayDeque;
 import java.util.Collection;
 import java.util.Deque;
@@ -32,7 +28,6 @@ import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.PriorityBlockingQueue;
 import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@link Queue} and {@link Deque} instances. Also see this
@@ -41,7 +36,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Queues {
   private Queues() {}
@@ -52,7 +46,7 @@ public final class Queues {
    * Creates an empty {@code ArrayBlockingQueue} with the given (fixed) capacity and nonfair access
    * policy.
    */
-  @GwtIncompatible // ArrayBlockingQueue
+  // ArrayBlockingQueue
   public static <E> ArrayBlockingQueue<E> newArrayBlockingQueue(int capacity) {
     return new ArrayBlockingQueue<E>(capacity);
   }
@@ -86,7 +80,7 @@ public final class Queues {
   // ConcurrentLinkedQueue
 
   /** Creates an empty {@code ConcurrentLinkedQueue}. */
-  @GwtIncompatible // ConcurrentLinkedQueue
+  // ConcurrentLinkedQueue
   public static <E> ConcurrentLinkedQueue<E> newConcurrentLinkedQueue() {
     return new ConcurrentLinkedQueue<E>();
   }
@@ -95,7 +89,7 @@ public final class Queues {
    * Creates a {@code ConcurrentLinkedQueue} containing the elements of the specified iterable, in
    * the order they are returned by the iterable's iterator.
    */
-  @GwtIncompatible // ConcurrentLinkedQueue
+  // ConcurrentLinkedQueue
   public static <E> ConcurrentLinkedQueue<E> newConcurrentLinkedQueue(
       Iterable<? extends E> elements) {
     if (elements instanceof Collection) {
@@ -113,7 +107,7 @@ public final class Queues {
    *
    * @since 12.0
    */
-  @GwtIncompatible // LinkedBlockingDeque
+  // LinkedBlockingDeque
   public static <E> LinkedBlockingDeque<E> newLinkedBlockingDeque() {
     return new LinkedBlockingDeque<E>();
   }
@@ -124,7 +118,7 @@ public final class Queues {
    * @throws IllegalArgumentException if {@code capacity} is less than 1
    * @since 12.0
    */
-  @GwtIncompatible // LinkedBlockingDeque
+  // LinkedBlockingDeque
   public static <E> LinkedBlockingDeque<E> newLinkedBlockingDeque(int capacity) {
     return new LinkedBlockingDeque<E>(capacity);
   }
@@ -136,7 +130,7 @@ public final class Queues {
    *
    * @since 12.0
    */
-  @GwtIncompatible // LinkedBlockingDeque
+  // LinkedBlockingDeque
   public static <E> LinkedBlockingDeque<E> newLinkedBlockingDeque(Iterable<? extends E> elements) {
     if (elements instanceof Collection) {
       return new LinkedBlockingDeque<E>((Collection<? extends E>) elements);
@@ -149,7 +143,7 @@ public final class Queues {
   // LinkedBlockingQueue
 
   /** Creates an empty {@code LinkedBlockingQueue} with a capacity of {@link Integer#MAX_VALUE}. */
-  @GwtIncompatible // LinkedBlockingQueue
+  // LinkedBlockingQueue
   public static <E> LinkedBlockingQueue<E> newLinkedBlockingQueue() {
     return new LinkedBlockingQueue<E>();
   }
@@ -159,7 +153,7 @@ public final class Queues {
    *
    * @throws IllegalArgumentException if {@code capacity} is less than 1
    */
-  @GwtIncompatible // LinkedBlockingQueue
+  // LinkedBlockingQueue
   public static <E> LinkedBlockingQueue<E> newLinkedBlockingQueue(int capacity) {
     return new LinkedBlockingQueue<E>(capacity);
   }
@@ -172,7 +166,7 @@ public final class Queues {
    * @param elements the elements that the queue should contain, in order
    * @return a new {@code LinkedBlockingQueue} containing those elements
    */
-  @GwtIncompatible // LinkedBlockingQueue
+  // LinkedBlockingQueue
   public static <E> LinkedBlockingQueue<E> newLinkedBlockingQueue(Iterable<? extends E> elements) {
     if (elements instanceof Collection) {
       return new LinkedBlockingQueue<E>((Collection<? extends E>) elements);
@@ -193,7 +187,7 @@ public final class Queues {
    * @since 11.0 (but the bound of {@code E} was changed from {@code Object} to {@code Comparable}
    *     in 15.0)
    */
-  @GwtIncompatible // PriorityBlockingQueue
+  // PriorityBlockingQueue
   public static <E extends Comparable> PriorityBlockingQueue<E> newPriorityBlockingQueue() {
     return new PriorityBlockingQueue<E>();
   }
@@ -207,7 +201,7 @@ public final class Queues {
    * @since 11.0 (but the bound of {@code E} was changed from {@code Object} to {@code Comparable}
    *     in 15.0)
    */
-  @GwtIncompatible // PriorityBlockingQueue
+  // PriorityBlockingQueue
   public static <E extends Comparable> PriorityBlockingQueue<E> newPriorityBlockingQueue(
       Iterable<? extends E> elements) {
     if (elements instanceof Collection) {
@@ -253,7 +247,7 @@ public final class Queues {
   // SynchronousQueue
 
   /** Creates an empty {@code SynchronousQueue} with nonfair access policy. */
-  @GwtIncompatible // SynchronousQueue
+  // SynchronousQueue
   public static <E> SynchronousQueue<E> newSynchronousQueue() {
     return new SynchronousQueue<E>();
   }
@@ -270,9 +264,7 @@ public final class Queues {
    * @throws InterruptedException if interrupted while waiting
    * @since 28.0
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // BlockingQueue
+  // BlockingQueue
   public static <E> int drain(
       BlockingQueue<E> q, Collection<? super E> buffer, int numElements, java.time.Duration timeout)
       throws InterruptedException {
@@ -292,9 +284,7 @@ public final class Queues {
    * @return the number of elements transferred
    * @throws InterruptedException if interrupted while waiting
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // BlockingQueue
+  // BlockingQueue
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static <E> int drain(
       BlockingQueue<E> q,
@@ -340,9 +330,7 @@ public final class Queues {
    * @return the number of elements transferred
    * @since 28.0
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // BlockingQueue
+  // BlockingQueue
   public static <E> int drainUninterruptibly(
       BlockingQueue<E> q,
       Collection<? super E> buffer,
@@ -365,9 +353,7 @@ public final class Queues {
    * @param unit a {@code TimeUnit} determining how to interpret the timeout parameter
    * @return the number of elements transferred
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // BlockingQueue
+  // BlockingQueue
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static <E> int drainUninterruptibly(
       BlockingQueue<E> q,
@@ -438,7 +424,7 @@ public final class Queues {
    * @return a synchronized view of the specified queue
    * @since 14.0
    */
-  public static <E extends @Nullable Object> Queue<E> synchronizedQueue(Queue<E> queue) {
+  public static <E extends Object> Queue<E> synchronizedQueue(Queue<E> queue) {
     return Synchronized.queue(queue, null);
   }
 
@@ -471,7 +457,7 @@ public final class Queues {
    * @return a synchronized view of the specified deque
    * @since 15.0
    */
-  public static <E extends @Nullable Object> Deque<E> synchronizedDeque(Deque<E> deque) {
+  public static <E extends Object> Deque<E> synchronizedDeque(Deque<E> deque) {
     return Synchronized.deque(deque, null);
   }
 }
diff --git a/guava/src/com/google/common/collect/Range.java b/guava/src/com/google/common/collect/Range.java
index ab5c077..4bab6ad 100644
--- a/guava/src/com/google/common/collect/Range.java
+++ b/guava/src/com/google/common/collect/Range.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
@@ -115,7 +114,6 @@ import javax.annotation.CheckForNull;
  * @author Gregory Kick
  * @since 10.0
  */
-@GwtCompatible
 @SuppressWarnings("rawtypes")
 @ElementTypesAreNonnullByDefault
 public final class Range<C extends Comparable> extends RangeGwtSerializationDependencies
diff --git a/guava/src/com/google/common/collect/RangeGwtSerializationDependencies.java b/guava/src/com/google/common/collect/RangeGwtSerializationDependencies.java
index 222c128..1b22630 100644
--- a/guava/src/com/google/common/collect/RangeGwtSerializationDependencies.java
+++ b/guava/src/com/google/common/collect/RangeGwtSerializationDependencies.java
@@ -16,7 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 
 /**
@@ -28,5 +27,4 @@ import java.io.Serializable;
  *
  * <p>TODO(cpovirk): Consider applying this subclass approach to our other types.
  */
-@GwtCompatible(emulated = true)
 abstract class RangeGwtSerializationDependencies<C extends Comparable> implements Serializable {}
diff --git a/guava/src/com/google/common/collect/RangeMap.java b/guava/src/com/google/common/collect/RangeMap.java
index 99e7b97..9721a08 100644
--- a/guava/src/com/google/common/collect/RangeMap.java
+++ b/guava/src/com/google/common/collect/RangeMap.java
@@ -16,16 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.NoSuchElementException;
 import java.util.function.BiFunction;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A mapping from disjoint nonempty ranges to non-null values. Queries look up the value associated
@@ -37,9 +33,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@DoNotMock("Use ImmutableRangeMap or TreeRangeMap")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface RangeMap<K extends Comparable, V> {
   /*
diff --git a/guava/src/com/google/common/collect/RangeSet.java b/guava/src/com/google/common/collect/RangeSet.java
index 1fb7b10..401d3f6 100644
--- a/guava/src/com/google/common/collect/RangeSet.java
+++ b/guava/src/com/google/common/collect/RangeSet.java
@@ -14,9 +14,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import javax.annotation.CheckForNull;
@@ -49,9 +46,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@DoNotMock("Use ImmutableRangeSet or TreeRangeSet")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface RangeSet<C extends Comparable> {
   // TODO(lowasser): consider adding default implementations of some of these methods
diff --git a/guava/src/com/google/common/collect/RegularContiguousSet.java b/guava/src/com/google/common/collect/RegularContiguousSet.java
index 913e2d7..e0aacc5 100644
--- a/guava/src/com/google/common/collect/RegularContiguousSet.java
+++ b/guava/src/com/google/common/collect/RegularContiguousSet.java
@@ -18,10 +18,7 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.BoundType.CLOSED;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.Collection;
 import javax.annotation.CheckForNull;
@@ -31,7 +28,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Gregory Kick
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("unchecked") // allow ungenerified Comparable types
 @ElementTypesAreNonnullByDefault
 final class RegularContiguousSet<C extends Comparable> extends ContiguousSet<C> {
@@ -71,7 +67,7 @@ final class RegularContiguousSet<C extends Comparable> extends ContiguousSet<C>
     return intersectionInCurrentDomain(Range.downTo(fromElement, BoundType.forBoolean(inclusive)));
   }
 
-  @GwtIncompatible // not used by GWT emulation
+  // not used by GWT emulation
   @Override
   int indexOf(@CheckForNull Object target) {
     // requireNonNull is safe because of the contains check.
@@ -91,7 +87,7 @@ final class RegularContiguousSet<C extends Comparable> extends ContiguousSet<C>
     };
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public UnmodifiableIterator<C> descendingIterator() {
     return new AbstractSequentialIterator<C>(last()) {
@@ -220,7 +216,7 @@ final class RegularContiguousSet<C extends Comparable> extends ContiguousSet<C>
     return Sets.hashCodeImpl(this);
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   private static final class SerializedForm<C extends Comparable> implements Serializable {
     final Range<C> range;
     final DiscreteDomain<C> domain;
@@ -235,7 +231,7 @@ final class RegularContiguousSet<C extends Comparable> extends ContiguousSet<C>
     }
   }
 
-  @GwtIncompatible // serialization
+  // serialization
   @Override
   Object writeReplace() {
     return new SerializedForm<C>(range, domain);
diff --git a/guava/src/com/google/common/collect/RegularImmutableAsList.java b/guava/src/com/google/common/collect/RegularImmutableAsList.java
index 0e3fe4e..107caa4 100644
--- a/guava/src/com/google/common/collect/RegularImmutableAsList.java
+++ b/guava/src/com/google/common/collect/RegularImmutableAsList.java
@@ -16,11 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.function.Consumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An {@link ImmutableAsList} implementation specialized for when the delegate collection is already
@@ -28,7 +25,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @SuppressWarnings("serial") // uses writeReplace, not default serialization
 @ElementTypesAreNonnullByDefault
 class RegularImmutableAsList<E> extends ImmutableAsList<E> {
@@ -59,13 +55,13 @@ class RegularImmutableAsList<E> extends ImmutableAsList<E> {
     return (UnmodifiableListIterator<E>) delegateList.listIterator(index);
   }
 
-  @GwtIncompatible // not present in emulated superclass
+  // not present in emulated superclass
   @Override
   public void forEach(Consumer<? super E> action) {
     delegateList.forEach(action);
   }
 
-  @GwtIncompatible // not present in emulated superclass
+  // not present in emulated superclass
   @Override
   int copyIntoArray(@Nullable Object[] dst, int offset) {
     return delegateList.copyIntoArray(dst, offset);
diff --git a/guava/src/com/google/common/collect/RegularImmutableBiMap.java b/guava/src/com/google/common/collect/RegularImmutableBiMap.java
index 60d22e2..8715a03 100644
--- a/guava/src/com/google/common/collect/RegularImmutableBiMap.java
+++ b/guava/src/com/google/common/collect/RegularImmutableBiMap.java
@@ -19,28 +19,17 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndex;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
-import static com.google.common.collect.ImmutableMapEntry.createEntryArray;
-import static com.google.common.collect.RegularImmutableMap.checkNoConflictInKeyBucket;
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.ImmutableMapEntry.NonTerminalImmutableBiMapEntry;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
+
 import java.io.Serializable;
 import java.util.function.BiConsumer;
 import java.util.function.Consumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Bimap with zero or more mappings.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 class RegularImmutableBiMap<K, V> extends ImmutableBiMap<K, V> {
@@ -50,9 +39,9 @@ class RegularImmutableBiMap<K, V> extends ImmutableBiMap<K, V> {
 
   static final double MAX_LOAD_FACTOR = 1.2;
 
-  @CheckForNull private final transient @Nullable ImmutableMapEntry<K, V>[] keyTable;
-  @CheckForNull private final transient @Nullable ImmutableMapEntry<K, V>[] valueTable;
-  @VisibleForTesting final transient Entry<K, V>[] entries;
+  @CheckForNull private final transient ImmutableMapEntry<K, V>[] keyTable;
+  @CheckForNull private final transient ImmutableMapEntry<K, V>[] valueTable;
+  final transient Entry<K, V>[] entries;
   private final transient int mask;
   private final transient int hashCode;
 
@@ -64,8 +53,8 @@ class RegularImmutableBiMap<K, V> extends ImmutableBiMap<K, V> {
     checkPositionIndex(n, entryArray.length);
     int tableSize = Hashing.closedTableSize(n, MAX_LOAD_FACTOR);
     int mask = tableSize - 1;
-    @Nullable ImmutableMapEntry<K, V>[] keyTable = createEntryArray(tableSize);
-    @Nullable ImmutableMapEntry<K, V>[] valueTable = createEntryArray(tableSize);
+    ImmutableMapEntry<K, V>[] keyTable = createEntryArray(tableSize);
+    ImmutableMapEntry<K, V>[] valueTable = createEntryArray(tableSize);
     /*
      * The cast is safe: n==entryArray.length means that we have filled the whole array with Entry
      * instances, in which case it is safe to cast it from an array of nullable entries to an array
@@ -127,7 +116,6 @@ class RegularImmutableBiMap<K, V> extends ImmutableBiMap<K, V> {
    * @return number of entries in this bucket
    * @throws IllegalArgumentException if another entry in the bucket has the same key
    */
-  @CanIgnoreReturnValue
   private static int checkNoConflictInValueBucket(
       Object value, Entry<?, ?> entry, @CheckForNull ImmutableMapEntry<?, ?> valueBucketHead) {
     int bucketSize = 0;
@@ -184,7 +172,7 @@ class RegularImmutableBiMap<K, V> extends ImmutableBiMap<K, V> {
     return entries.length;
   }
 
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableBiMap<V, K> inverse;
+  @CheckForNull private transient ImmutableBiMap<V, K> inverse;
 
   @Override
   public ImmutableBiMap<V, K> inverse() {
diff --git a/guava/src/com/google/common/collect/RegularImmutableList.java b/guava/src/com/google/common/collect/RegularImmutableList.java
index 397147d..2e73b3d 100644
--- a/guava/src/com/google/common/collect/RegularImmutableList.java
+++ b/guava/src/com/google/common/collect/RegularImmutableList.java
@@ -16,24 +16,20 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.util.Spliterator;
 import java.util.Spliterators;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link ImmutableList} backed by a simple array.
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 class RegularImmutableList<E> extends ImmutableList<E> {
   static final ImmutableList<Object> EMPTY = new RegularImmutableList<>(new Object[0]);
 
-  @VisibleForTesting final transient Object[] array;
+  final transient Object[] array;
 
   RegularImmutableList(Object[] array) {
     this.array = array;
diff --git a/guava/src/com/google/common/collect/RegularImmutableMap.java b/guava/src/com/google/common/collect/RegularImmutableMap.java
index 43425b2..b0ec627 100644
--- a/guava/src/com/google/common/collect/RegularImmutableMap.java
+++ b/guava/src/com/google/common/collect/RegularImmutableMap.java
@@ -19,18 +19,10 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndex;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
-import static com.google.common.collect.ImmutableMapEntry.createEntryArray;
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.ImmutableMapEntry.NonTerminalImmutableMapEntry;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
+
 import java.io.Serializable;
 import java.util.function.BiConsumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link ImmutableMap} with two or more entries.
@@ -39,7 +31,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @author Gregory Kick
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
 final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
   @SuppressWarnings("unchecked")
@@ -51,24 +42,24 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
    * ensures that the table is still likely to be relatively sparse (hence it misses fast) while
    * saving space.
    */
-  @VisibleForTesting static final double MAX_LOAD_FACTOR = 1.2;
+  static final double MAX_LOAD_FACTOR = 1.2;
 
   /**
    * Maximum allowed false positive probability of detecting a hash flooding attack given random
    * input.
    */
-  @VisibleForTesting static final double HASH_FLOODING_FPP = 0.001;
+  static final double HASH_FLOODING_FPP = 0.001;
 
   /**
    * Maximum allowed length of a hash table bucket before falling back to a j.u.HashMap based
    * implementation. Experimentally determined.
    */
-  @VisibleForTesting static final int MAX_HASH_BUCKET_LENGTH = 8;
+  static final int MAX_HASH_BUCKET_LENGTH = 8;
 
   // entries in insertion order
-  @VisibleForTesting final transient Entry<K, V>[] entries;
+  final transient Entry<K, V>[] entries;
   // array of linked lists of entries
-  @CheckForNull private final transient @Nullable ImmutableMapEntry<K, V>[] table;
+  @CheckForNull private final transient ImmutableMapEntry<K, V>[] table;
   // 'and' with an int to get a table index
   private final transient int mask;
 
@@ -95,7 +86,7 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
     Entry<K, V>[] entries =
         (n == entryArray.length) ? (Entry<K, V>[]) entryArray : createEntryArray(n);
     int tableSize = Hashing.closedTableSize(n, MAX_LOAD_FACTOR);
-    @Nullable ImmutableMapEntry<K, V>[] table = createEntryArray(tableSize);
+    ImmutableMapEntry<K, V>[] table = createEntryArray(tableSize);
     int mask = tableSize - 1;
     for (int entryIndex = 0; entryIndex < n; entryIndex++) {
       // requireNonNull is safe because the first `n` elements have been filled in.
@@ -145,7 +136,6 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
    * @return number of entries in this bucket
    * @throws IllegalArgumentException if another entry in the bucket has the same key
    */
-  @CanIgnoreReturnValue
   static int checkNoConflictInKeyBucket(
       Object key, Entry<?, ?> entry, @CheckForNull ImmutableMapEntry<?, ?> keyBucketHead) {
     int bucketSize = 0;
@@ -217,7 +207,6 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
     return new KeySet<>(this);
   }
 
-  @GwtCompatible(emulated = true)
   private static final class KeySet<K> extends IndexedImmutableSet<K> {
     private final RegularImmutableMap<K, ?> map;
 
@@ -246,7 +235,7 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
     }
 
     // No longer used for new writes, but kept so that old data can still be read.
-    @GwtIncompatible // serialization
+    // serialization
     @SuppressWarnings("unused")
     private static class SerializedForm<K> implements Serializable {
       final ImmutableMap<K, ?> map;
@@ -268,7 +257,6 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
     return new Values<>(this);
   }
 
-  @GwtCompatible(emulated = true)
   private static final class Values<K, V> extends ImmutableList<V> {
     final RegularImmutableMap<K, V> map;
 
@@ -292,7 +280,7 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> {
     }
 
     // No longer used for new writes, but kept so that old data can still be read.
-    @GwtIncompatible // serialization
+    // serialization
     @SuppressWarnings("unused")
     private static class SerializedForm<V> implements Serializable {
       final ImmutableMap<?, V> map;
diff --git a/guava/src/com/google/common/collect/RegularImmutableMultiset.java b/guava/src/com/google/common/collect/RegularImmutableMultiset.java
index 026919e..4203b7b 100644
--- a/guava/src/com/google/common/collect/RegularImmutableMultiset.java
+++ b/guava/src/com/google/common/collect/RegularImmutableMultiset.java
@@ -16,16 +16,11 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
-import com.google.common.collect.Multisets.ImmutableEntry;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.util.Arrays;
 import java.util.Collection;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link ImmutableMultiset} with zero or more elements.
@@ -33,7 +28,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true, serializable = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 class RegularImmutableMultiset<E> extends ImmutableMultiset<E> {
@@ -50,8 +44,7 @@ class RegularImmutableMultiset<E> extends ImmutableMultiset<E> {
     int tableSize = Hashing.closedTableSize(distinct, MAX_LOAD_FACTOR);
     int mask = tableSize - 1;
     @SuppressWarnings({"unchecked", "rawtypes"})
-    @Nullable
-    ImmutableEntry<E>[] hashTable = new @Nullable ImmutableEntry[tableSize];
+    ImmutableEntry<E>[] hashTable = new ImmutableEntry[tableSize];
 
     int index = 0;
     int hashCode = 0;
@@ -103,26 +96,26 @@ class RegularImmutableMultiset<E> extends ImmutableMultiset<E> {
    * ensures that the table is still likely to be relatively sparse (hence it misses fast) while
    * saving space.
    */
-  @VisibleForTesting static final double MAX_LOAD_FACTOR = 1.0;
+  static final double MAX_LOAD_FACTOR = 1.0;
 
   /**
    * Maximum allowed false positive probability of detecting a hash flooding attack given random
    * input.
    */
-  @VisibleForTesting static final double HASH_FLOODING_FPP = 0.001;
+  static final double HASH_FLOODING_FPP = 0.001;
 
   /**
    * Maximum allowed length of a hash table bucket before falling back to a j.u.HashMap based
    * implementation. Experimentally determined.
    */
-  @VisibleForTesting static final int MAX_HASH_BUCKET_LENGTH = 9;
+  static final int MAX_HASH_BUCKET_LENGTH = 9;
 
   private final transient ImmutableEntry<E>[] entries;
-  private final transient @Nullable ImmutableEntry<?>[] hashTable;
+  private final transient ImmutableEntry<?>[] hashTable;
   private final transient int size;
   private final transient int hashCode;
 
-  @LazyInit @CheckForNull private transient ImmutableSet<E> elementSet;
+  @CheckForNull private transient ImmutableSet<E> elementSet;
 
   private RegularImmutableMultiset(
       ImmutableEntry<E>[] entries,
@@ -158,7 +151,7 @@ class RegularImmutableMultiset<E> extends ImmutableMultiset<E> {
 
   @Override
   public int count(@CheckForNull Object element) {
-    @Nullable ImmutableEntry<?>[] hashTable = this.hashTable;
+    ImmutableEntry<?>[] hashTable = this.hashTable;
     if (element == null || hashTable.length == 0) {
       return 0;
     }
diff --git a/guava/src/com/google/common/collect/RegularImmutableSet.java b/guava/src/com/google/common/collect/RegularImmutableSet.java
index 211c893..8688692 100644
--- a/guava/src/com/google/common/collect/RegularImmutableSet.java
+++ b/guava/src/com/google/common/collect/RegularImmutableSet.java
@@ -16,19 +16,15 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.util.Spliterator;
 import java.util.Spliterators;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link ImmutableSet} with two or more elements.
  *
  * @author Kevin Bourrillion
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 final class RegularImmutableSet<E> extends ImmutableSet.CachingAsList<E> {
@@ -39,7 +35,7 @@ final class RegularImmutableSet<E> extends ImmutableSet.CachingAsList<E> {
   private final transient Object[] elements;
   private final transient int hashCode;
   // the same values as `elements` in hashed positions (plus nulls)
-  @VisibleForTesting final transient @Nullable Object[] table;
+  final transient Object[] table;
   // 'and' with an int to get a valid table index.
   private final transient int mask;
 
@@ -52,7 +48,7 @@ final class RegularImmutableSet<E> extends ImmutableSet.CachingAsList<E> {
 
   @Override
   public boolean contains(@CheckForNull Object target) {
-    @Nullable Object[] table = this.table;
+    Object[] table = this.table;
     if (target == null || table.length == 0) {
       return false;
     }
diff --git a/guava/src/com/google/common/collect/RegularImmutableSortedMultiset.java b/guava/src/com/google/common/collect/RegularImmutableSortedMultiset.java
index 4b7ba87..46ca644 100644
--- a/guava/src/com/google/common/collect/RegularImmutableSortedMultiset.java
+++ b/guava/src/com/google/common/collect/RegularImmutableSortedMultiset.java
@@ -18,8 +18,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 import static com.google.common.collect.BoundType.CLOSED;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.primitives.Ints;
 import java.util.Comparator;
 import java.util.function.ObjIntConsumer;
@@ -31,7 +29,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  */
 @SuppressWarnings("serial") // uses writeReplace, not default serialization
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class RegularImmutableSortedMultiset<E> extends ImmutableSortedMultiset<E> {
   private static final long[] ZERO_CUMULATIVE_COUNTS = {0};
@@ -39,7 +36,7 @@ final class RegularImmutableSortedMultiset<E> extends ImmutableSortedMultiset<E>
   static final ImmutableSortedMultiset<Comparable> NATURAL_EMPTY_MULTISET =
       new RegularImmutableSortedMultiset<>(Ordering.natural());
 
-  @VisibleForTesting final transient RegularImmutableSortedSet<E> elementSet;
+  final transient RegularImmutableSortedSet<E> elementSet;
   private final transient long[] cumulativeCounts;
   private final transient int offset;
   private final transient int length;
diff --git a/guava/src/com/google/common/collect/RegularImmutableSortedSet.java b/guava/src/com/google/common/collect/RegularImmutableSortedSet.java
index fcb683f..fe53cda 100644
--- a/guava/src/com/google/common/collect/RegularImmutableSortedSet.java
+++ b/guava/src/com/google/common/collect/RegularImmutableSortedSet.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -37,7 +35,6 @@ import javax.annotation.CheckForNull;
  * @author Jared Levy
  * @author Louis Wasserman
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings({"serial", "rawtypes"})
 @ElementTypesAreNonnullByDefault
 final class RegularImmutableSortedSet<E> extends ImmutableSortedSet<E> {
@@ -72,7 +69,7 @@ final class RegularImmutableSortedSet<E> extends ImmutableSortedSet<E> {
     return elements.iterator();
   }
 
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @Override
   public UnmodifiableIterator<E> descendingIterator() {
     return elements.reverse().iterator();
diff --git a/guava/src/com/google/common/collect/RegularImmutableTable.java b/guava/src/com/google/common/collect/RegularImmutableTable.java
index 24434c5..500c7cf 100644
--- a/guava/src/com/google/common/collect/RegularImmutableTable.java
+++ b/guava/src/com/google/common/collect/RegularImmutableTable.java
@@ -17,8 +17,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.LinkedHashSet;
@@ -31,7 +29,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 abstract class RegularImmutableTable<R, C, V> extends ImmutableTable<R, C, V> {
   RegularImmutableTable() {}
@@ -43,7 +40,6 @@ abstract class RegularImmutableTable<R, C, V> extends ImmutableTable<R, C, V> {
     return isEmpty() ? ImmutableSet.<Cell<R, C, V>>of() : new CellSet();
   }
 
-  @WeakOuter
   private final class CellSet extends IndexedImmutableSet<Cell<R, C, V>> {
     @Override
     public int size() {
@@ -78,7 +74,6 @@ abstract class RegularImmutableTable<R, C, V> extends ImmutableTable<R, C, V> {
     return isEmpty() ? ImmutableList.<V>of() : new Values();
   }
 
-  @WeakOuter
   private final class Values extends ImmutableList<V> {
     @Override
     public int size() {
diff --git a/guava/src/com/google/common/collect/ReverseNaturalOrdering.java b/guava/src/com/google/common/collect/ReverseNaturalOrdering.java
index f0c40cb..1b90432 100644
--- a/guava/src/com/google/common/collect/ReverseNaturalOrdering.java
+++ b/guava/src/com/google/common/collect/ReverseNaturalOrdering.java
@@ -18,12 +18,10 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Iterator;
 
 /** An ordering that uses the reverse of the natural order of the values. */
-@GwtCompatible(serializable = true)
 @SuppressWarnings({"unchecked", "rawtypes"}) // TODO(kevinb): the right way to explain this??
 @ElementTypesAreNonnullByDefault
 final class ReverseNaturalOrdering extends Ordering<Comparable<?>> implements Serializable {
diff --git a/guava/src/com/google/common/collect/ReverseOrdering.java b/guava/src/com/google/common/collect/ReverseOrdering.java
index 6c1e74d..c9772b0 100644
--- a/guava/src/com/google/common/collect/ReverseOrdering.java
+++ b/guava/src/com/google/common/collect/ReverseOrdering.java
@@ -18,16 +18,13 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.Iterator;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** An ordering that uses the reverse of a given order. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
-final class ReverseOrdering<T extends @Nullable Object> extends Ordering<T>
+final class ReverseOrdering<T extends Object> extends Ordering<T>
     implements Serializable {
   final Ordering<? super T> forwardOrder;
 
diff --git a/guava/src/com/google/common/collect/RowSortedTable.java b/guava/src/com/google/common/collect/RowSortedTable.java
index 2c2d773..cef6ba5 100644
--- a/guava/src/com/google/common/collect/RowSortedTable.java
+++ b/guava/src/com/google/common/collect/RowSortedTable.java
@@ -16,12 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Interface that extends {@code Table} and whose rows are sorted.
@@ -33,10 +31,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Warren Dukes
  * @since 8.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public interface RowSortedTable<
-        R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+        R extends Object, C extends Object, V extends Object>
     extends Table<R, C, V> {
   /**
    * {@inheritDoc}
diff --git a/guava/src/com/google/common/collect/Serialization.java b/guava/src/com/google/common/collect/Serialization.java
index 5e88067..8b25839 100644
--- a/guava/src/com/google/common/collect/Serialization.java
+++ b/guava/src/com/google/common/collect/Serialization.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.lang.reflect.Field;
 import java.util.Collection;
 import java.util.Map;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static methods for serializing collection classes.
@@ -33,7 +31,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Jared Levy
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class Serialization {
   private Serialization() {}
@@ -56,7 +53,7 @@ final class Serialization {
    * <p>The serialized output consists of the number of entries, first key, first value, second key,
    * second value, and so on.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void writeMap(
+  static <K extends Object, V extends Object> void writeMap(
       Map<K, V> map, ObjectOutputStream stream) throws IOException {
     stream.writeInt(map.size());
     for (Map.Entry<K, V> entry : map.entrySet()) {
@@ -69,7 +66,7 @@ final class Serialization {
    * Populates a map by reading an input stream, as part of deserialization. See {@link #writeMap}
    * for the data format.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void populateMap(
+  static <K extends Object, V extends Object> void populateMap(
       Map<K, V> map, ObjectInputStream stream) throws IOException, ClassNotFoundException {
     int size = stream.readInt();
     populateMap(map, stream, size);
@@ -79,7 +76,7 @@ final class Serialization {
    * Populates a map by reading an input stream, as part of deserialization. See {@link #writeMap}
    * for the data format. The size is determined by a prior call to {@link #readCount}.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void populateMap(
+  static <K extends Object, V extends Object> void populateMap(
       Map<K, V> map, ObjectInputStream stream, int size)
       throws IOException, ClassNotFoundException {
     for (int i = 0; i < size; i++) {
@@ -98,7 +95,7 @@ final class Serialization {
    * <p>The serialized output consists of the number of distinct elements, the first element, its
    * count, the second element, its count, and so on.
    */
-  static <E extends @Nullable Object> void writeMultiset(
+  static <E extends Object> void writeMultiset(
       Multiset<E> multiset, ObjectOutputStream stream) throws IOException {
     int entryCount = multiset.entrySet().size();
     stream.writeInt(entryCount);
@@ -112,7 +109,7 @@ final class Serialization {
    * Populates a multiset by reading an input stream, as part of deserialization. See {@link
    * #writeMultiset} for the data format.
    */
-  static <E extends @Nullable Object> void populateMultiset(
+  static <E extends Object> void populateMultiset(
       Multiset<E> multiset, ObjectInputStream stream) throws IOException, ClassNotFoundException {
     int distinctElements = stream.readInt();
     populateMultiset(multiset, stream, distinctElements);
@@ -123,7 +120,7 @@ final class Serialization {
    * #writeMultiset} for the data format. The number of distinct elements is determined by a prior
    * call to {@link #readCount}.
    */
-  static <E extends @Nullable Object> void populateMultiset(
+  static <E extends Object> void populateMultiset(
       Multiset<E> multiset, ObjectInputStream stream, int distinctElements)
       throws IOException, ClassNotFoundException {
     for (int i = 0; i < distinctElements; i++) {
@@ -142,7 +139,7 @@ final class Serialization {
    * <p>The serialized output consists of the number of distinct keys, and then for each distinct
    * key: the key, the number of values for that key, and the key's values.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void writeMultimap(
+  static <K extends Object, V extends Object> void writeMultimap(
       Multimap<K, V> multimap, ObjectOutputStream stream) throws IOException {
     stream.writeInt(multimap.asMap().size());
     for (Map.Entry<K, Collection<V>> entry : multimap.asMap().entrySet()) {
@@ -158,7 +155,7 @@ final class Serialization {
    * Populates a multimap by reading an input stream, as part of deserialization. See {@link
    * #writeMultimap} for the data format.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void populateMultimap(
+  static <K extends Object, V extends Object> void populateMultimap(
       Multimap<K, V> multimap, ObjectInputStream stream)
       throws IOException, ClassNotFoundException {
     int distinctKeys = stream.readInt();
@@ -170,7 +167,7 @@ final class Serialization {
    * #writeMultimap} for the data format. The number of distinct keys is determined by a prior call
    * to {@link #readCount}.
    */
-  static <K extends @Nullable Object, V extends @Nullable Object> void populateMultimap(
+  static <K extends Object, V extends Object> void populateMultimap(
       Multimap<K, V> multimap, ObjectInputStream stream, int distinctKeys)
       throws IOException, ClassNotFoundException {
     for (int i = 0; i < distinctKeys; i++) {
diff --git a/guava/src/com/google/common/collect/SetMultimap.java b/guava/src/com/google/common/collect/SetMultimap.java
index 216533e..99ddf7a 100644
--- a/guava/src/com/google/common/collect/SetMultimap.java
+++ b/guava/src/com/google/common/collect/SetMultimap.java
@@ -16,14 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@code Multimap} that cannot hold duplicate key-value pairs. Adding a key-value pair that's
@@ -52,9 +49,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface SetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public interface SetMultimap<K extends Object, V extends Object>
     extends Multimap<K, V> {
   /**
    * {@inheritDoc}
@@ -73,7 +69,6 @@ public interface SetMultimap<K extends @Nullable Object, V extends @Nullable Obj
    * {@link Set}, instead of the {@link java.util.Collection} specified in the {@link Multimap}
    * interface.
    */
-  @CanIgnoreReturnValue
   @Override
   Set<V> removeAll(@CheckForNull Object key);
 
@@ -86,7 +81,6 @@ public interface SetMultimap<K extends @Nullable Object, V extends @Nullable Obj
    *
    * <p>Any duplicates in {@code values} will be stored in the multimap once.
    */
-  @CanIgnoreReturnValue
   @Override
   Set<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);
 
diff --git a/guava/src/com/google/common/collect/Sets.java b/guava/src/com/google/common/collect/Sets.java
index 5338bd2..8f2bed4 100644
--- a/guava/src/com/google/common/collect/Sets.java
+++ b/guava/src/com/google/common/collect/Sets.java
@@ -20,15 +20,10 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.collect.Collections2.FilteredCollection;
 import com.google.common.math.IntMath;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.io.Serializable;
 import java.util.AbstractSet;
 import java.util.Arrays;
@@ -53,7 +48,6 @@ import java.util.function.Consumer;
 import java.util.stream.Collector;
 import java.util.stream.Stream;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@link Set} instances. Also see this class's counterparts
@@ -67,7 +61,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Povirk
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Sets {
   private Sets() {}
@@ -76,7 +69,7 @@ public final class Sets {
    * {@link AbstractSet} substitute without the potentially-quadratic {@code removeAll}
    * implementation.
    */
-  abstract static class ImprovedAbstractSet<E extends @Nullable Object> extends AbstractSet<E> {
+  abstract static class ImprovedAbstractSet<E extends Object> extends AbstractSet<E> {
     @Override
     public boolean removeAll(Collection<?> c) {
       return removeAllImpl(this, c);
@@ -100,7 +93,6 @@ public final class Sets {
    * @return an immutable set containing those elements, minus duplicates
    */
   // http://code.google.com/p/google-web-toolkit/issues/detail?id=3028
-  @GwtCompatible(serializable = true)
   public static <E extends Enum<E>> ImmutableSet<E> immutableEnumSet(
       E anElement, E... otherElements) {
     return ImmutableEnumSet.asImmutable(EnumSet.of(anElement, otherElements));
@@ -117,7 +109,6 @@ public final class Sets {
    * @return an immutable set containing those elements, minus duplicates
    */
   // http://code.google.com/p/google-web-toolkit/issues/detail?id=3028
-  @GwtCompatible(serializable = true)
   public static <E extends Enum<E>> ImmutableSet<E> immutableEnumSet(Iterable<E> elements) {
     if (elements instanceof ImmutableEnumSet) {
       return (ImmutableEnumSet<E>) elements;
@@ -177,7 +168,7 @@ public final class Sets {
    * deprecated. Instead, use the {@code HashSet} constructor directly, taking advantage of the new
    * <a href="http://goo.gl/iz2Wi">"diamond" syntax</a>.
    */
-  public static <E extends @Nullable Object> HashSet<E> newHashSet() {
+  public static <E extends Object> HashSet<E> newHashSet() {
     return new HashSet<E>();
   }
 
@@ -194,7 +185,7 @@ public final class Sets {
    * asList}{@code (...))}, or for creating an empty set then calling {@link Collections#addAll}.
    * This method is not actually very useful and will likely be deprecated in the future.
    */
-  public static <E extends @Nullable Object> HashSet<E> newHashSet(E... elements) {
+  public static <E extends Object> HashSet<E> newHashSet(E... elements) {
     HashSet<E> set = newHashSetWithExpectedSize(elements.length);
     Collections.addAll(set, elements);
     return set;
@@ -218,7 +209,7 @@ public final class Sets {
    *
    * <p>Overall, this method is not very useful and will likely be deprecated in the future.
    */
-  public static <E extends @Nullable Object> HashSet<E> newHashSet(Iterable<? extends E> elements) {
+  public static <E extends Object> HashSet<E> newHashSet(Iterable<? extends E> elements) {
     return (elements instanceof Collection)
         ? new HashSet<E>((Collection<? extends E>) elements)
         : newHashSet(elements.iterator());
@@ -236,7 +227,7 @@ public final class Sets {
    *
    * <p>Overall, this method is not very useful and will likely be deprecated in the future.
    */
-  public static <E extends @Nullable Object> HashSet<E> newHashSet(Iterator<? extends E> elements) {
+  public static <E extends Object> HashSet<E> newHashSet(Iterator<? extends E> elements) {
     HashSet<E> set = newHashSet();
     Iterators.addAll(set, elements);
     return set;
@@ -254,7 +245,7 @@ public final class Sets {
    *     without resizing
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    */
-  public static <E extends @Nullable Object> HashSet<E> newHashSetWithExpectedSize(
+  public static <E extends Object> HashSet<E> newHashSetWithExpectedSize(
       int expectedSize) {
     return new HashSet<E>(Maps.capacity(expectedSize));
   }
@@ -305,7 +296,7 @@ public final class Sets {
    *
    * @return a new, empty {@code LinkedHashSet}
    */
-  public static <E extends @Nullable Object> LinkedHashSet<E> newLinkedHashSet() {
+  public static <E extends Object> LinkedHashSet<E> newLinkedHashSet() {
     return new LinkedHashSet<E>();
   }
 
@@ -324,7 +315,7 @@ public final class Sets {
    * @param elements the elements that the set should contain, in order
    * @return a new {@code LinkedHashSet} containing those elements (minus duplicates)
    */
-  public static <E extends @Nullable Object> LinkedHashSet<E> newLinkedHashSet(
+  public static <E extends Object> LinkedHashSet<E> newLinkedHashSet(
       Iterable<? extends E> elements) {
     if (elements instanceof Collection) {
       return new LinkedHashSet<E>((Collection<? extends E>) elements);
@@ -346,7 +337,7 @@ public final class Sets {
    * @throws IllegalArgumentException if {@code expectedSize} is negative
    * @since 11.0
    */
-  public static <E extends @Nullable Object> LinkedHashSet<E> newLinkedHashSetWithExpectedSize(
+  public static <E extends Object> LinkedHashSet<E> newLinkedHashSetWithExpectedSize(
       int expectedSize) {
     return new LinkedHashSet<E>(Maps.capacity(expectedSize));
   }
@@ -412,7 +403,7 @@ public final class Sets {
    * @return a new, empty {@code TreeSet}
    * @throws NullPointerException if {@code comparator} is null
    */
-  public static <E extends @Nullable Object> TreeSet<E> newTreeSet(
+  public static <E extends Object> TreeSet<E> newTreeSet(
       Comparator<? super E> comparator) {
     return new TreeSet<E>(checkNotNull(comparator));
   }
@@ -426,7 +417,7 @@ public final class Sets {
    *
    * @since 8.0
    */
-  public static <E extends @Nullable Object> Set<E> newIdentityHashSet() {
+  public static <E extends Object> Set<E> newIdentityHashSet() {
     return Collections.newSetFromMap(Maps.<E, Boolean>newIdentityHashMap());
   }
 
@@ -439,8 +430,8 @@ public final class Sets {
    * @return a new, empty {@code CopyOnWriteArraySet}
    * @since 12.0
    */
-  @GwtIncompatible // CopyOnWriteArraySet
-  public static <E extends @Nullable Object> CopyOnWriteArraySet<E> newCopyOnWriteArraySet() {
+  // CopyOnWriteArraySet
+  public static <E extends Object> CopyOnWriteArraySet<E> newCopyOnWriteArraySet() {
     return new CopyOnWriteArraySet<E>();
   }
 
@@ -451,8 +442,8 @@ public final class Sets {
    * @return a new {@code CopyOnWriteArraySet} containing those elements
    * @since 12.0
    */
-  @GwtIncompatible // CopyOnWriteArraySet
-  public static <E extends @Nullable Object> CopyOnWriteArraySet<E> newCopyOnWriteArraySet(
+  // CopyOnWriteArraySet
+  public static <E extends Object> CopyOnWriteArraySet<E> newCopyOnWriteArraySet(
       Iterable<? extends E> elements) {
     // We copy elements to an ArrayList first, rather than incurring the
     // quadratic cost of adding them to the COWAS directly.
@@ -541,7 +532,7 @@ public final class Sets {
    * @deprecated Use {@link Collections#newSetFromMap} instead.
    */
   @Deprecated
-  public static <E extends @Nullable Object> Set<E> newSetFromMap(
+  public static <E extends Object> Set<E> newSetFromMap(
       Map<E, Boolean> map) {
     return Collections.newSetFromMap(map);
   }
@@ -555,7 +546,7 @@ public final class Sets {
    *
    * @since 2.0
    */
-  public abstract static class SetView<E extends @Nullable Object> extends AbstractSet<E> {
+  public abstract static class SetView<E extends Object> extends AbstractSet<E> {
     private SetView() {} // no subclasses but our own
 
     /**
@@ -580,7 +571,6 @@ public final class Sets {
      */
     // Note: S should logically extend Set<? super E> but can't due to either
     // some javac bug or some weirdness in the spec, not sure which.
-    @CanIgnoreReturnValue
     public <S extends Set<E>> S copyInto(S set) {
       set.addAll(this);
       return set;
@@ -592,10 +582,8 @@ public final class Sets {
      * @throws UnsupportedOperationException always
      * @deprecated Unsupported operation.
      */
-    @CanIgnoreReturnValue
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final boolean add(@ParametricNullness E e) {
       throw new UnsupportedOperationException();
     }
@@ -606,10 +594,8 @@ public final class Sets {
      * @throws UnsupportedOperationException always
      * @deprecated Unsupported operation.
      */
-    @CanIgnoreReturnValue
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final boolean remove(@CheckForNull Object object) {
       throw new UnsupportedOperationException();
     }
@@ -620,10 +606,8 @@ public final class Sets {
      * @throws UnsupportedOperationException always
      * @deprecated Unsupported operation.
      */
-    @CanIgnoreReturnValue
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final boolean addAll(Collection<? extends E> newElements) {
       throw new UnsupportedOperationException();
     }
@@ -634,10 +618,8 @@ public final class Sets {
      * @throws UnsupportedOperationException always
      * @deprecated Unsupported operation.
      */
-    @CanIgnoreReturnValue
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final boolean removeAll(Collection<?> oldElements) {
       throw new UnsupportedOperationException();
     }
@@ -648,10 +630,8 @@ public final class Sets {
      * @throws UnsupportedOperationException always
      * @deprecated Unsupported operation.
      */
-    @CanIgnoreReturnValue
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final boolean removeIf(java.util.function.Predicate<? super E> filter) {
       throw new UnsupportedOperationException();
     }
@@ -662,10 +642,8 @@ public final class Sets {
      * @throws UnsupportedOperationException always
      * @deprecated Unsupported operation.
      */
-    @CanIgnoreReturnValue
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final boolean retainAll(Collection<?> elementsToKeep) {
       throw new UnsupportedOperationException();
     }
@@ -678,7 +656,6 @@ public final class Sets {
      */
     @Deprecated
     @Override
-    @DoNotCall("Always throws UnsupportedOperationException")
     public final void clear() {
       throw new UnsupportedOperationException();
     }
@@ -702,7 +679,7 @@ public final class Sets {
    * equivalence relations, for example if {@code set1} is a {@link HashSet} and {@code set2} is a
    * {@link TreeSet} or the {@link Map#keySet} of an {@code IdentityHashMap}.
    */
-  public static <E extends @Nullable Object> SetView<E> union(
+  public static <E extends Object> SetView<E> union(
       final Set<? extends E> set1, final Set<? extends E> set2) {
     checkNotNull(set1, "set1");
     checkNotNull(set2, "set2");
@@ -804,7 +781,7 @@ public final class Sets {
    *
    * <p>This is unfortunate, but should come up only very rarely.
    */
-  public static <E extends @Nullable Object> SetView<E> intersection(
+  public static <E extends Object> SetView<E> intersection(
       final Set<E> set1, final Set<?> set2) {
     checkNotNull(set1, "set1");
     checkNotNull(set2, "set2");
@@ -877,7 +854,7 @@ public final class Sets {
    * equivalence relations, for example if {@code set1} is a {@link HashSet} and {@code set2} is a
    * {@link TreeSet} or the {@link Map#keySet} of an {@code IdentityHashMap}.
    */
-  public static <E extends @Nullable Object> SetView<E> difference(
+  public static <E extends Object> SetView<E> difference(
       final Set<E> set1, final Set<?> set2) {
     checkNotNull(set1, "set1");
     checkNotNull(set2, "set2");
@@ -946,7 +923,7 @@ public final class Sets {
    *
    * @since 3.0
    */
-  public static <E extends @Nullable Object> SetView<E> symmetricDifference(
+  public static <E extends Object> SetView<E> symmetricDifference(
       final Set<? extends E> set1, final Set<? extends E> set2) {
     checkNotNull(set1, "set1");
     checkNotNull(set2, "set2");
@@ -1032,7 +1009,7 @@ public final class Sets {
    * you to migrate to streams.
    */
   // TODO(kevinb): how to omit that last sentence when building GWT javadoc?
-  public static <E extends @Nullable Object> Set<E> filter(
+  public static <E extends Object> Set<E> filter(
       Set<E> unfiltered, Predicate<? super E> predicate) {
     if (unfiltered instanceof SortedSet) {
       return filter((SortedSet<E>) unfiltered, predicate);
@@ -1072,7 +1049,7 @@ public final class Sets {
    *
    * @since 11.0
    */
-  public static <E extends @Nullable Object> SortedSet<E> filter(
+  public static <E extends Object> SortedSet<E> filter(
       SortedSet<E> unfiltered, Predicate<? super E> predicate) {
     if (unfiltered instanceof FilteredSet) {
       // Support clear(), removeAll(), and retainAll() when filtering a filtered
@@ -1109,9 +1086,9 @@ public final class Sets {
    *
    * @since 14.0
    */
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   @SuppressWarnings("unchecked")
-  public static <E extends @Nullable Object> NavigableSet<E> filter(
+  public static <E extends Object> NavigableSet<E> filter(
       NavigableSet<E> unfiltered, Predicate<? super E> predicate) {
     if (unfiltered instanceof FilteredSet) {
       // Support clear(), removeAll(), and retainAll() when filtering a filtered
@@ -1124,7 +1101,7 @@ public final class Sets {
     return new FilteredNavigableSet<E>(checkNotNull(unfiltered), checkNotNull(predicate));
   }
 
-  private static class FilteredSet<E extends @Nullable Object> extends FilteredCollection<E>
+  private static class FilteredSet<E extends Object> extends FilteredCollection<E>
       implements Set<E> {
     FilteredSet(Set<E> unfiltered, Predicate<? super E> predicate) {
       super(unfiltered, predicate);
@@ -1141,7 +1118,7 @@ public final class Sets {
     }
   }
 
-  private static class FilteredSortedSet<E extends @Nullable Object> extends FilteredSet<E>
+  private static class FilteredSortedSet<E extends Object> extends FilteredSet<E>
       implements SortedSet<E> {
 
     FilteredSortedSet(SortedSet<E> unfiltered, Predicate<? super E> predicate) {
@@ -1190,8 +1167,8 @@ public final class Sets {
     }
   }
 
-  @GwtIncompatible // NavigableSet
-  private static class FilteredNavigableSet<E extends @Nullable Object> extends FilteredSortedSet<E>
+  // NavigableSet
+  private static class FilteredNavigableSet<E extends Object> extends FilteredSortedSet<E>
       implements NavigableSet<E> {
     FilteredNavigableSet(NavigableSet<E> unfiltered, Predicate<? super E> predicate) {
       super(unfiltered, predicate);
@@ -1511,7 +1488,6 @@ public final class Sets {
    * @see <a href="http://en.wikipedia.org/wiki/Power_set">Power set article at Wikipedia</a>
    * @since 4.0
    */
-  @GwtCompatible(serializable = false)
   public static <E> Set<Set<E>> powerSet(Set<E> set) {
     return new PowerSet<E>(set);
   }
@@ -1647,7 +1623,6 @@ public final class Sets {
    * @throws NullPointerException if {@code set} is or contains {@code null}
    * @since 23.0
    */
-  @Beta
   public static <E> Set<Set<E>> combinations(Set<E> set, final int size) {
     final ImmutableMap<E, Integer> index = Maps.indexMap(set);
     checkNonnegative(size, "size");
@@ -1790,7 +1765,7 @@ public final class Sets {
    * @return an unmodifiable view of the specified navigable set
    * @since 12.0
    */
-  public static <E extends @Nullable Object> NavigableSet<E> unmodifiableNavigableSet(
+  public static <E extends Object> NavigableSet<E> unmodifiableNavigableSet(
       NavigableSet<E> set) {
     if (set instanceof ImmutableCollection || set instanceof UnmodifiableNavigableSet) {
       return set;
@@ -1798,7 +1773,7 @@ public final class Sets {
     return new UnmodifiableNavigableSet<E>(set);
   }
 
-  static final class UnmodifiableNavigableSet<E extends @Nullable Object>
+  static final class UnmodifiableNavigableSet<E extends Object>
       extends ForwardingSortedSet<E> implements NavigableSet<E>, Serializable {
     private final NavigableSet<E> delegate;
     private final SortedSet<E> unmodifiableDelegate;
@@ -1956,8 +1931,8 @@ public final class Sets {
    * @return a synchronized view of the specified navigable set.
    * @since 13.0
    */
-  @GwtIncompatible // NavigableSet
-  public static <E extends @Nullable Object> NavigableSet<E> synchronizedNavigableSet(
+  // NavigableSet
+  public static <E extends Object> NavigableSet<E> synchronizedNavigableSet(
       NavigableSet<E> navigableSet) {
     return Synchronized.navigableSet(navigableSet);
   }
@@ -1990,8 +1965,8 @@ public final class Sets {
     }
   }
 
-  @GwtIncompatible // NavigableSet
-  static class DescendingSet<E extends @Nullable Object> extends ForwardingNavigableSet<E> {
+  // NavigableSet
+  static class DescendingSet<E extends Object> extends ForwardingNavigableSet<E> {
     private final NavigableSet<E> forward;
 
     DescendingSet(NavigableSet<E> forward) {
@@ -2095,7 +2070,7 @@ public final class Sets {
     }
 
     // If we inline this, we get a javac error.
-    private static <T extends @Nullable Object> Ordering<T> reverse(Comparator<T> forward) {
+    private static <T extends Object> Ordering<T> reverse(Comparator<T> forward) {
       return Ordering.from(forward).reverse();
     }
 
@@ -2117,13 +2092,13 @@ public final class Sets {
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       return standardToArray();
     }
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       return standardToArray(array);
     }
 
@@ -2149,8 +2124,7 @@ public final class Sets {
    *
    * @since 20.0
    */
-  @Beta
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public static <K extends Comparable<? super K>> NavigableSet<K> subSet(
       NavigableSet<K> set, Range<K> range) {
     if (set.comparator() != null
diff --git a/guava/src/com/google/common/collect/SingletonImmutableBiMap.java b/guava/src/com/google/common/collect/SingletonImmutableBiMap.java
index c5fb2b2..39e5634 100644
--- a/guava/src/com/google/common/collect/SingletonImmutableBiMap.java
+++ b/guava/src/com/google/common/collect/SingletonImmutableBiMap.java
@@ -19,9 +19,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.CollectPreconditions.checkEntryNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.concurrent.LazyInit;
-import com.google.j2objc.annotations.RetainedWith;
 import java.util.function.BiConsumer;
 import javax.annotation.CheckForNull;
 
@@ -31,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Jesse Wilson
  * @author Kevin Bourrillion
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 final class SingletonImmutableBiMap<K, V> extends ImmutableBiMap<K, V> {
@@ -94,7 +90,7 @@ final class SingletonImmutableBiMap<K, V> extends ImmutableBiMap<K, V> {
   }
 
   @CheckForNull private final transient ImmutableBiMap<V, K> inverse;
-  @LazyInit @RetainedWith @CheckForNull private transient ImmutableBiMap<V, K> lazyInverse;
+  @CheckForNull private transient ImmutableBiMap<V, K> lazyInverse;
 
   @Override
   public ImmutableBiMap<V, K> inverse() {
diff --git a/guava/src/com/google/common/collect/SingletonImmutableList.java b/guava/src/com/google/common/collect/SingletonImmutableList.java
index a7ac8b3..5b0ffff 100644
--- a/guava/src/com/google/common/collect/SingletonImmutableList.java
+++ b/guava/src/com/google/common/collect/SingletonImmutableList.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
 import java.util.Collections;
 import java.util.Spliterator;
@@ -28,7 +27,6 @@ import java.util.Spliterator;
  *
  * @author Hayward Chan
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 final class SingletonImmutableList<E> extends ImmutableList<E> {
diff --git a/guava/src/com/google/common/collect/SingletonImmutableSet.java b/guava/src/com/google/common/collect/SingletonImmutableSet.java
index 088cb80..27c2eb6 100644
--- a/guava/src/com/google/common/collect/SingletonImmutableSet.java
+++ b/guava/src/com/google/common/collect/SingletonImmutableSet.java
@@ -16,10 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link ImmutableSet} with exactly one element.
@@ -27,7 +25,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @author Nick Kralevich
  */
-@GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial") // uses writeReplace(), not default serialization
 @ElementTypesAreNonnullByDefault
 final class SingletonImmutableSet<E> extends ImmutableSet<E> {
diff --git a/guava/src/com/google/common/collect/SingletonImmutableTable.java b/guava/src/com/google/common/collect/SingletonImmutableTable.java
index cfaeadb..565a4b4 100644
--- a/guava/src/com/google/common/collect/SingletonImmutableTable.java
+++ b/guava/src/com/google/common/collect/SingletonImmutableTable.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 
 /**
@@ -26,7 +25,6 @@ import java.util.Map;
  *
  * @author Gregory Kick
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 class SingletonImmutableTable<R, C, V> extends ImmutableTable<R, C, V> {
   final R singleRowKey;
diff --git a/guava/src/com/google/common/collect/SortedIterable.java b/guava/src/com/google/common/collect/SortedIterable.java
index 64ec08e..4ed3e60 100644
--- a/guava/src/com/google/common/collect/SortedIterable.java
+++ b/guava/src/com/google/common/collect/SortedIterable.java
@@ -14,10 +14,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An {@code Iterable} whose elements are sorted relative to a {@code Comparator}, typically
@@ -25,9 +23,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-interface SortedIterable<T extends @Nullable Object> extends Iterable<T> {
+interface SortedIterable<T extends Object> extends Iterable<T> {
   /**
    * Returns the {@code Comparator} by which the elements of this iterable are ordered, or {@code
    * Ordering.natural()} if the elements are ordered by their natural ordering.
diff --git a/guava/src/com/google/common/collect/SortedIterables.java b/guava/src/com/google/common/collect/SortedIterables.java
index 68b231a..184b3c2 100644
--- a/guava/src/com/google/common/collect/SortedIterables.java
+++ b/guava/src/com/google/common/collect/SortedIterables.java
@@ -16,17 +16,14 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Comparator;
 import java.util.SortedSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Utilities for dealing with sorted collections of all types.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class SortedIterables {
   private SortedIterables() {}
@@ -51,7 +48,7 @@ final class SortedIterables {
 
   @SuppressWarnings("unchecked")
   // if sortedSet.comparator() is null, the set must be naturally ordered
-  public static <E extends @Nullable Object> Comparator<? super E> comparator(
+  public static <E extends Object> Comparator<? super E> comparator(
       SortedSet<E> sortedSet) {
     Comparator<? super E> result = sortedSet.comparator();
     if (result == null) {
diff --git a/guava/src/com/google/common/collect/SortedLists.java b/guava/src/com/google/common/collect/SortedLists.java
index 0ebaab2..9c6dbbd 100644
--- a/guava/src/com/google/common/collect/SortedLists.java
+++ b/guava/src/com/google/common/collect/SortedLists.java
@@ -16,14 +16,11 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.RandomAccess;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static methods pertaining to sorted {@link List} instances.
@@ -34,8 +31,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
-@Beta
 @ElementTypesAreNonnullByDefault
 final class SortedLists {
   private SortedLists() {}
@@ -51,7 +46,7 @@ final class SortedLists {
      */
     ANY_PRESENT {
       @Override
-      <E extends @Nullable Object> int resultIndex(
+      <E extends Object> int resultIndex(
           Comparator<? super E> comparator,
           @ParametricNullness E key,
           List<? extends E> list,
@@ -62,7 +57,7 @@ final class SortedLists {
     /** Return the index of the last list element that compares as equal to the key. */
     LAST_PRESENT {
       @Override
-      <E extends @Nullable Object> int resultIndex(
+      <E extends Object> int resultIndex(
           Comparator<? super E> comparator,
           @ParametricNullness E key,
           List<? extends E> list,
@@ -87,7 +82,7 @@ final class SortedLists {
     /** Return the index of the first list element that compares as equal to the key. */
     FIRST_PRESENT {
       @Override
-      <E extends @Nullable Object> int resultIndex(
+      <E extends Object> int resultIndex(
           Comparator<? super E> comparator,
           @ParametricNullness E key,
           List<? extends E> list,
@@ -116,7 +111,7 @@ final class SortedLists {
      */
     FIRST_AFTER {
       @Override
-      public <E extends @Nullable Object> int resultIndex(
+      public <E extends Object> int resultIndex(
           Comparator<? super E> comparator,
           @ParametricNullness E key,
           List<? extends E> list,
@@ -130,7 +125,7 @@ final class SortedLists {
      */
     LAST_BEFORE {
       @Override
-      public <E extends @Nullable Object> int resultIndex(
+      public <E extends Object> int resultIndex(
           Comparator<? super E> comparator,
           @ParametricNullness E key,
           List<? extends E> list,
@@ -139,7 +134,7 @@ final class SortedLists {
       }
     };
 
-    abstract <E extends @Nullable Object> int resultIndex(
+    abstract <E extends Object> int resultIndex(
         Comparator<? super E> comparator,
         @ParametricNullness E key,
         List<? extends E> list,
@@ -215,7 +210,7 @@ final class SortedLists {
    * <p>Equivalent to {@link #binarySearch(List, Function, Object, Comparator, KeyPresentBehavior,
    * KeyAbsentBehavior)} using {@link Ordering#natural}.
    */
-  public static <E extends @Nullable Object, K extends Comparable> int binarySearch(
+  public static <E extends Object, K extends Comparable> int binarySearch(
       List<E> list,
       Function<? super E, K> keyFunction,
       K key,
@@ -233,7 +228,7 @@ final class SortedLists {
    * KeyAbsentBehavior)} using {@link Lists#transform(List, Function) Lists.transform(list,
    * keyFunction)}.
    */
-  public static <E extends @Nullable Object, K extends @Nullable Object> int binarySearch(
+  public static <E extends Object, K extends Object> int binarySearch(
       List<E> list,
       Function<? super E, K> keyFunction,
       @ParametricNullness K key,
@@ -267,7 +262,7 @@ final class SortedLists {
    * @return the index determined by the {@code KeyPresentBehavior}, if the key is in the list;
    *     otherwise the index determined by the {@code KeyAbsentBehavior}.
    */
-  public static <E extends @Nullable Object> int binarySearch(
+  public static <E extends Object> int binarySearch(
       List<? extends E> list,
       @ParametricNullness E key,
       Comparator<? super E> comparator,
diff --git a/guava/src/com/google/common/collect/SortedMapDifference.java b/guava/src/com/google/common/collect/SortedMapDifference.java
index 46cac8a..caf8c77 100644
--- a/guava/src/com/google/common/collect/SortedMapDifference.java
+++ b/guava/src/com/google/common/collect/SortedMapDifference.java
@@ -16,9 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.SortedMap;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An object representing the differences between two sorted maps.
@@ -26,9 +24,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 8.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface SortedMapDifference<K extends @Nullable Object, V extends @Nullable Object>
+public interface SortedMapDifference<K extends Object, V extends Object>
     extends MapDifference<K, V> {
 
   @Override
diff --git a/guava/src/com/google/common/collect/SortedMultiset.java b/guava/src/com/google/common/collect/SortedMultiset.java
index 68932f5..babea9a 100644
--- a/guava/src/com/google/common/collect/SortedMultiset.java
+++ b/guava/src/com/google/common/collect/SortedMultiset.java
@@ -16,14 +16,12 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Multiset} which maintains the ordering of its elements, according to either their
@@ -43,9 +41,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public interface SortedMultiset<E extends @Nullable Object>
+public interface SortedMultiset<E extends Object>
     extends SortedMultisetBridge<E>, SortedIterable<E> {
   /**
    * Returns the comparator that orders this multiset, or {@link Ordering#natural()} if the natural
diff --git a/guava/src/com/google/common/collect/SortedMultisetBridge.java b/guava/src/com/google/common/collect/SortedMultisetBridge.java
index 72d50be..fdd2b55 100644
--- a/guava/src/com/google/common/collect/SortedMultisetBridge.java
+++ b/guava/src/com/google/common/collect/SortedMultisetBridge.java
@@ -16,9 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.SortedSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Superinterface of {@link SortedMultiset} to introduce a bridge method for {@code elementSet()},
@@ -27,9 +25,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-interface SortedMultisetBridge<E extends @Nullable Object> extends Multiset<E> {
+interface SortedMultisetBridge<E extends Object> extends Multiset<E> {
   @Override
   SortedSet<E> elementSet();
 }
diff --git a/guava/src/com/google/common/collect/SortedMultisets.java b/guava/src/com/google/common/collect/SortedMultisets.java
index 1d1940c..803e713 100644
--- a/guava/src/com/google/common/collect/SortedMultisets.java
+++ b/guava/src/com/google/common/collect/SortedMultisets.java
@@ -19,33 +19,28 @@ package com.google.common.collect;
 import static com.google.common.collect.BoundType.CLOSED;
 import static com.google.common.collect.BoundType.OPEN;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.Multiset.Entry;
-import com.google.j2objc.annotations.Weak;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.NavigableSet;
 import java.util.NoSuchElementException;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static utility methods for creating and working with {@link SortedMultiset} instances.
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class SortedMultisets {
   private SortedMultisets() {}
 
   /** A skeleton implementation for {@link SortedMultiset#elementSet}. */
   @SuppressWarnings("JdkObsolete") // TODO(b/6160855): Switch GWT emulations to NavigableSet.
-  static class ElementSet<E extends @Nullable Object> extends Multisets.ElementSet<E>
+  static class ElementSet<E extends Object> extends Multisets.ElementSet<E>
       implements SortedSet<E> {
-    @Weak private final SortedMultiset<E> multiset;
+    private final SortedMultiset<E> multiset;
 
     ElementSet(SortedMultiset<E> multiset) {
       this.multiset = multiset;
@@ -95,8 +90,8 @@ final class SortedMultisets {
   }
 
   /** A skeleton navigable implementation for {@link SortedMultiset#elementSet}. */
-  @GwtIncompatible // Navigable
-  static class NavigableElementSet<E extends @Nullable Object> extends ElementSet<E>
+  // Navigable
+  static class NavigableElementSet<E extends Object> extends ElementSet<E>
       implements NavigableSet<E> {
     NavigableElementSet(SortedMultiset<E> multiset) {
       super(multiset);
@@ -174,7 +169,7 @@ final class SortedMultisets {
     }
   }
 
-  private static <E extends @Nullable Object> E getElementOrThrow(@CheckForNull Entry<E> entry) {
+  private static <E extends Object> E getElementOrThrow(@CheckForNull Entry<E> entry) {
     if (entry == null) {
       throw new NoSuchElementException();
     }
@@ -182,7 +177,7 @@ final class SortedMultisets {
   }
 
   @CheckForNull
-  private static <E extends @Nullable Object> E getElementOrNull(@CheckForNull Entry<E> entry) {
+  private static <E extends Object> E getElementOrNull(@CheckForNull Entry<E> entry) {
     return (entry == null) ? null : entry.getElement();
   }
 }
diff --git a/guava/src/com/google/common/collect/SortedSetMultimap.java b/guava/src/com/google/common/collect/SortedSetMultimap.java
index 8449014..6ed3116 100644
--- a/guava/src/com/google/common/collect/SortedSetMultimap.java
+++ b/guava/src/com/google/common/collect/SortedSetMultimap.java
@@ -16,8 +16,6 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.Map;
@@ -25,7 +23,6 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@code SetMultimap} whose set of values for a given key are kept sorted; that is, they comprise
@@ -49,9 +46,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface SortedSetMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public interface SortedSetMultimap<K extends Object, V extends Object>
     extends SetMultimap<K, V> {
   // Following Javadoc copied from Multimap.
 
@@ -75,7 +71,6 @@ public interface SortedSetMultimap<K extends @Nullable Object, V extends @Nullab
    * returns a {@link SortedSet}, instead of the {@link java.util.Collection} specified in the
    * {@link Multimap} interface.
    */
-  @CanIgnoreReturnValue
   @Override
   SortedSet<V> removeAll(@CheckForNull Object key);
 
@@ -88,7 +83,6 @@ public interface SortedSetMultimap<K extends @Nullable Object, V extends @Nullab
    *
    * <p>Any duplicates in {@code values} will be stored in the multimap once.
    */
-  @CanIgnoreReturnValue
   @Override
   SortedSet<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);
 
diff --git a/guava/src/com/google/common/collect/SparseImmutableTable.java b/guava/src/com/google/common/collect/SparseImmutableTable.java
index b314f7b..c478003 100644
--- a/guava/src/com/google/common/collect/SparseImmutableTable.java
+++ b/guava/src/com/google/common/collect/SparseImmutableTable.java
@@ -14,17 +14,12 @@
 
 package com.google.common.collect;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.Immutable;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 
 /** A {@code RegularImmutableTable} optimized for sparse data. */
-@GwtCompatible
-@Immutable(containerOf = {"R", "C", "V"})
 @ElementTypesAreNonnullByDefault
 final class SparseImmutableTable<R, C, V> extends RegularImmutableTable<R, C, V> {
   static final ImmutableTable<Object, Object, Object> EMPTY =
diff --git a/guava/src/com/google/common/collect/StandardRowSortedTable.java b/guava/src/com/google/common/collect/StandardRowSortedTable.java
index bea5b7b..2be8d58 100644
--- a/guava/src/com/google/common/collect/StandardRowSortedTable.java
+++ b/guava/src/com/google/common/collect/StandardRowSortedTable.java
@@ -18,9 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Supplier;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.Comparator;
 import java.util.Map;
 import java.util.Set;
@@ -45,7 +43,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 class StandardRowSortedTable<R, C, V> extends StandardTable<R, C, V>
     implements RowSortedTable<R, C, V> {
@@ -91,7 +88,6 @@ class StandardRowSortedTable<R, C, V> extends StandardTable<R, C, V>
     return new RowSortedMap();
   }
 
-  @WeakOuter
   private class RowSortedMap extends RowMap implements SortedMap<R, Map<C, V>> {
     @Override
     public SortedSet<R> keySet() {
diff --git a/guava/src/com/google/common/collect/StandardTable.java b/guava/src/com/google/common/collect/StandardTable.java
index 06defb0..dacc225 100644
--- a/guava/src/com/google/common/collect/StandardTable.java
+++ b/guava/src/com/google/common/collect/StandardTable.java
@@ -23,18 +23,13 @@ import static com.google.common.base.Predicates.in;
 import static com.google.common.base.Predicates.not;
 import static com.google.common.collect.Maps.safeContainsKey;
 import static com.google.common.collect.Maps.safeGet;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Supplier;
 import com.google.common.collect.Maps.IteratorBasedAbstractMap;
 import com.google.common.collect.Maps.ViewCachingAbstractMap;
 import com.google.common.collect.Sets.ImprovedAbstractSet;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.Iterator;
@@ -65,7 +60,6 @@ import javax.annotation.CheckForNull;
  *
  * @author Jared Levy
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializable {
   @GwtTransient final Map<R, Map<C, V>> backingMap;
@@ -142,7 +136,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return map;
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V put(R rowKey, C columnKey, V value) {
@@ -152,7 +145,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return getOrCreate(rowKey).put(columnKey, value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @CheckForNull
   public V remove(@CheckForNull Object rowKey, @CheckForNull Object columnKey) {
@@ -170,7 +162,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return value;
   }
 
-  @CanIgnoreReturnValue
   private Map<R, V> removeColumn(@CheckForNull Object column) {
     Map<R, V> output = new LinkedHashMap<>();
     Iterator<Entry<R, Map<C, V>>> iterator = backingMap.entrySet().iterator();
@@ -208,7 +199,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
    * Abstract set whose {@code isEmpty()} returns whether the table is empty and whose {@code
    * clear()} clears all table mappings.
    */
-  @WeakOuter
   private abstract class TableSet<T> extends ImprovedAbstractSet<T> {
     @Override
     public boolean isEmpty() {
@@ -490,7 +480,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     }
 
     /** Removes all {@code Column} mappings whose row key and value satisfy the given predicate. */
-    @CanIgnoreReturnValue
     boolean removeFromColumnIf(Predicate<? super Entry<R, V>> predicate) {
       boolean changed = false;
       Iterator<Entry<R, Map<C, V>>> iterator = backingMap.entrySet().iterator();
@@ -514,7 +503,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       return new EntrySet();
     }
 
-    @WeakOuter
     private class EntrySet extends ImprovedAbstractSet<Entry<R, V>> {
       @Override
       public Iterator<Entry<R, V>> iterator() {
@@ -575,7 +563,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
         while (iterator.hasNext()) {
           final Entry<R, Map<C, V>> entry = iterator.next();
           if (entry.getValue().containsKey(columnKey)) {
-            @WeakOuter
             class EntryImpl extends AbstractMapEntry<R, V> {
               @Override
               public R getKey() {
@@ -619,7 +606,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       return new KeySet();
     }
 
-    @WeakOuter
     private class KeySet extends Maps.KeySet<R, V> {
       KeySet() {
         super(Column.this);
@@ -646,7 +632,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       return new Values();
     }
 
-    @WeakOuter
     private class Values extends Maps.Values<R, V> {
       Values() {
         super(Column.this);
@@ -690,7 +675,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return (result == null) ? columnKeySet = new ColumnKeySet() : result;
   }
 
-  @WeakOuter
   private class ColumnKeySet extends TableSet<C> {
     @Override
     public Iterator<C> iterator() {
@@ -817,7 +801,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return new RowMap();
   }
 
-  @WeakOuter
   class RowMap extends ViewCachingAbstractMap<R, Map<C, V>> {
     @Override
     public boolean containsKey(@CheckForNull Object key) {
@@ -844,7 +827,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       return new EntrySet();
     }
 
-    @WeakOuter
     class EntrySet extends TableSet<Entry<R, Map<C, V>>> {
       @Override
       public Iterator<Entry<R, Map<C, V>>> iterator() {
@@ -895,7 +877,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
     return (result == null) ? columnMap = new ColumnMap() : result;
   }
 
-  @WeakOuter
   private class ColumnMap extends ViewCachingAbstractMap<C, Map<R, V>> {
     // The cast to C occurs only when the key is in the map, implying that it
     // has the correct type.
@@ -933,7 +914,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       return new ColumnMapValues();
     }
 
-    @WeakOuter
     class ColumnMapEntrySet extends TableSet<Entry<C, Map<R, V>>> {
       @Override
       public Iterator<Entry<C, Map<R, V>>> iterator() {
@@ -1004,7 +984,6 @@ class StandardTable<R, C, V> extends AbstractTable<R, C, V> implements Serializa
       }
     }
 
-    @WeakOuter
     private class ColumnMapValues extends Maps.Values<C, Map<R, V>> {
       ColumnMapValues() {
         super(ColumnMap.this);
diff --git a/guava/src/com/google/common/collect/Streams.java b/guava/src/com/google/common/collect/Streams.java
index 3bf8382..f0a91ff 100644
--- a/guava/src/com/google/common/collect/Streams.java
+++ b/guava/src/com/google/common/collect/Streams.java
@@ -17,14 +17,8 @@
 package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.math.LongMath;
-import com.google.errorprone.annotations.InlineMe;
-import com.google.errorprone.annotations.InlineMeValidationDisabled;
 import java.util.ArrayDeque;
 import java.util.Collection;
 import java.util.Deque;
@@ -49,21 +43,19 @@ import java.util.stream.LongStream;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods related to {@code Stream} instances.
  *
  * @since 21.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Streams {
   /**
    * Returns a sequential {@link Stream} of the contents of {@code iterable}, delegating to {@link
    * Collection#stream} if possible.
    */
-  public static <T extends @Nullable Object> Stream<T> stream(Iterable<T> iterable) {
+  public static <T extends Object> Stream<T> stream(Iterable<T> iterable) {
     return (iterable instanceof Collection)
         ? ((Collection<T>) iterable).stream()
         : StreamSupport.stream(iterable.spliterator(), false);
@@ -74,10 +66,8 @@ public final class Streams {
    *
    * @deprecated There is no reason to use this; just invoke {@code collection.stream()} directly.
    */
-  @Beta
   @Deprecated
-  @InlineMe(replacement = "collection.stream()")
-  public static <T extends @Nullable Object> Stream<T> stream(Collection<T> collection) {
+  public static <T extends Object> Stream<T> stream(Collection<T> collection) {
     return collection.stream();
   }
 
@@ -85,8 +75,7 @@ public final class Streams {
    * Returns a sequential {@link Stream} of the remaining contents of {@code iterator}. Do not use
    * {@code iterator} directly after passing it to this method.
    */
-  @Beta
-  public static <T extends @Nullable Object> Stream<T> stream(Iterator<T> iterator) {
+  public static <T extends Object> Stream<T> stream(Iterator<T> iterator) {
     return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false);
   }
 
@@ -94,7 +83,6 @@ public final class Streams {
    * If a value is present in {@code optional}, returns a stream containing only that element,
    * otherwise returns an empty stream.
    */
-  @Beta
   public static <T> Stream<T> stream(com.google.common.base.Optional<T> optional) {
     return optional.isPresent() ? Stream.of(optional.get()) : Stream.empty();
   }
@@ -105,9 +93,6 @@ public final class Streams {
    *
    * <p><b>Java 9 users:</b> use {@code optional.stream()} instead.
    */
-  @Beta
-  @InlineMe(replacement = "optional.stream()")
-  @InlineMeValidationDisabled("Java 9+ API only")
   public static <T> Stream<T> stream(java.util.Optional<T> optional) {
     return optional.isPresent() ? Stream.of(optional.get()) : Stream.empty();
   }
@@ -118,9 +103,6 @@ public final class Streams {
    *
    * <p><b>Java 9 users:</b> use {@code optional.stream()} instead.
    */
-  @Beta
-  @InlineMe(replacement = "optional.stream()")
-  @InlineMeValidationDisabled("Java 9+ API only")
   public static IntStream stream(OptionalInt optional) {
     return optional.isPresent() ? IntStream.of(optional.getAsInt()) : IntStream.empty();
   }
@@ -131,9 +113,6 @@ public final class Streams {
    *
    * <p><b>Java 9 users:</b> use {@code optional.stream()} instead.
    */
-  @Beta
-  @InlineMe(replacement = "optional.stream()")
-  @InlineMeValidationDisabled("Java 9+ API only")
   public static LongStream stream(OptionalLong optional) {
     return optional.isPresent() ? LongStream.of(optional.getAsLong()) : LongStream.empty();
   }
@@ -144,9 +123,6 @@ public final class Streams {
    *
    * <p><b>Java 9 users:</b> use {@code optional.stream()} instead.
    */
-  @Beta
-  @InlineMe(replacement = "optional.stream()")
-  @InlineMeValidationDisabled("Java 9+ API only")
   public static DoubleStream stream(OptionalDouble optional) {
     return optional.isPresent() ? DoubleStream.of(optional.getAsDouble()) : DoubleStream.empty();
   }
@@ -168,7 +144,7 @@ public final class Streams {
    * @see Stream#concat(Stream, Stream)
    */
   @SafeVarargs
-  public static <T extends @Nullable Object> Stream<T> concat(Stream<? extends T>... streams) {
+  public static <T extends Object> Stream<T> concat(Stream<? extends T>... streams) {
     // TODO(lowasser): consider an implementation that can support SUBSIZED
     boolean isParallel = false;
     int characteristics = Spliterator.ORDERED | Spliterator.SIZED | Spliterator.NONNULL;
@@ -313,8 +289,7 @@ public final class Streams {
    * href="http://gee.cs.oswego.edu/dl/html/StreamParallelGuidance.html">efficiently splittable</a>.
    * This may harm parallel performance.
    */
-  @Beta
-  public static <A extends @Nullable Object, B extends @Nullable Object, R extends @Nullable Object>
+  public static <A extends Object, B extends Object, R extends Object>
       Stream<R> zip(
           Stream<A> streamA, Stream<B> streamB, BiFunction<? super A, ? super B, R> function) {
     checkNotNull(streamA);
@@ -376,8 +351,7 @@ public final class Streams {
    *
    * @since 22.0
    */
-  @Beta
-  public static <A extends @Nullable Object, B extends @Nullable Object> void forEachPair(
+  public static <A extends Object, B extends Object> void forEachPair(
       Stream<A> streamA, Stream<B> streamB, BiConsumer<? super A, ? super B> consumer) {
     checkNotNull(consumer);
 
@@ -393,7 +367,7 @@ public final class Streams {
   }
 
   // Use this carefully - it doesn't implement value semantics
-  private static class TemporaryPair<A extends @Nullable Object, B extends @Nullable Object> {
+  private static class TemporaryPair<A extends Object, B extends Object> {
     @ParametricNullness final A a;
     @ParametricNullness final B b;
 
@@ -425,8 +399,7 @@ public final class Streams {
    * <p>The order of the resulting stream is defined if and only if the order of the original stream
    * was defined.
    */
-  @Beta
-  public static <T extends @Nullable Object, R extends @Nullable Object> Stream<R> mapWithIndex(
+  public static <T extends Object, R extends Object> Stream<R> mapWithIndex(
       Stream<T> stream, FunctionWithIndex<? super T, ? extends R> function) {
     checkNotNull(stream);
     checkNotNull(function);
@@ -509,8 +482,7 @@ public final class Streams {
    * <p>The order of the resulting stream is defined if and only if the order of the original stream
    * was defined.
    */
-  @Beta
-  public static <R extends @Nullable Object> Stream<R> mapWithIndex(
+  public static <R extends Object> Stream<R> mapWithIndex(
       IntStream stream, IntFunctionWithIndex<R> function) {
     checkNotNull(stream);
     checkNotNull(function);
@@ -589,8 +561,7 @@ public final class Streams {
    * <p>The order of the resulting stream is defined if and only if the order of the original stream
    * was defined.
    */
-  @Beta
-  public static <R extends @Nullable Object> Stream<R> mapWithIndex(
+  public static <R extends Object> Stream<R> mapWithIndex(
       LongStream stream, LongFunctionWithIndex<R> function) {
     checkNotNull(stream);
     checkNotNull(function);
@@ -669,8 +640,7 @@ public final class Streams {
    * <p>The order of the resulting stream is defined if and only if the order of the original stream
    * was defined.
    */
-  @Beta
-  public static <R extends @Nullable Object> Stream<R> mapWithIndex(
+  public static <R extends Object> Stream<R> mapWithIndex(
       DoubleStream stream, DoubleFunctionWithIndex<R> function) {
     checkNotNull(stream);
     checkNotNull(function);
@@ -735,8 +705,7 @@ public final class Streams {
    *
    * @since 21.0
    */
-  @Beta
-  public interface FunctionWithIndex<T extends @Nullable Object, R extends @Nullable Object> {
+  public interface FunctionWithIndex<T extends Object, R extends Object> {
     /** Applies this function to the given argument and its index within a stream. */
     @ParametricNullness
     R apply(@ParametricNullness T from, long index);
@@ -744,7 +713,7 @@ public final class Streams {
 
   private abstract static class MapWithIndexSpliterator<
           F extends Spliterator<?>,
-          R extends @Nullable Object,
+          R extends Object,
           S extends MapWithIndexSpliterator<F, R, S>>
       implements Spliterator<R> {
     final F fromSpliterator;
@@ -791,8 +760,7 @@ public final class Streams {
    *
    * @since 21.0
    */
-  @Beta
-  public interface IntFunctionWithIndex<R extends @Nullable Object> {
+  public interface IntFunctionWithIndex<R extends Object> {
     /** Applies this function to the given argument and its index within a stream. */
     @ParametricNullness
     R apply(int from, long index);
@@ -806,8 +774,7 @@ public final class Streams {
    *
    * @since 21.0
    */
-  @Beta
-  public interface LongFunctionWithIndex<R extends @Nullable Object> {
+  public interface LongFunctionWithIndex<R extends Object> {
     /** Applies this function to the given argument and its index within a stream. */
     @ParametricNullness
     R apply(long from, long index);
@@ -821,8 +788,7 @@ public final class Streams {
    *
    * @since 21.0
    */
-  @Beta
-  public interface DoubleFunctionWithIndex<R extends @Nullable Object> {
+  public interface DoubleFunctionWithIndex<R extends Object> {
     /** Applies this function to the given argument and its index within a stream. */
     @ParametricNullness
     R apply(double from, long index);
@@ -853,7 +819,6 @@ public final class Streams {
    * split has a last element of null, so throw NPE" from "the final split was empty, so look for an
    * element in the prior one.")
    */
-  @Beta
   public static <T> java.util.Optional<T> findLast(Stream<T> stream) {
     class OptionalState {
       boolean set = false;
@@ -932,7 +897,6 @@ public final class Streams {
    * @see IntStream#findFirst()
    * @throws NullPointerException if the last element of the stream is null
    */
-  @Beta
   public static OptionalInt findLast(IntStream stream) {
     // findLast(Stream) does some allocation, so we might as well box some more
     java.util.Optional<Integer> boxedLast = findLast(stream.boxed());
@@ -951,7 +915,6 @@ public final class Streams {
    * @see LongStream#findFirst()
    * @throws NullPointerException if the last element of the stream is null
    */
-  @Beta
   public static OptionalLong findLast(LongStream stream) {
     // findLast(Stream) does some allocation, so we might as well box some more
     java.util.Optional<Long> boxedLast = findLast(stream.boxed());
@@ -970,7 +933,6 @@ public final class Streams {
    * @see DoubleStream#findFirst()
    * @throws NullPointerException if the last element of the stream is null
    */
-  @Beta
   public static OptionalDouble findLast(DoubleStream stream) {
     // findLast(Stream) does some allocation, so we might as well box some more
     java.util.Optional<Double> boxedLast = findLast(stream.boxed());
diff --git a/guava/src/com/google/common/collect/Synchronized.java b/guava/src/com/google/common/collect/Synchronized.java
index 25e2870..8125ebc 100644
--- a/guava/src/com/google/common/collect/Synchronized.java
+++ b/guava/src/com/google/common/collect/Synchronized.java
@@ -18,10 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.j2objc.annotations.RetainedWith;
 import java.io.IOException;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
@@ -48,7 +44,6 @@ import java.util.function.Predicate;
 import java.util.function.UnaryOperator;
 import java.util.stream.Stream;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Synchronized collection views. The returned synchronized collection views are serializable if the
@@ -62,7 +57,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Mike Bostock
  * @author Jared Levy
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 /*
  * I have decided not to bother adding @ParametricNullness annotations in this class. Adding them is
@@ -103,24 +97,23 @@ final class Synchronized {
     // they don't contain any non-transient member variables, while the
     // following writeObject() handles the SynchronizedObject members.
 
-    @GwtIncompatible // java.io.ObjectOutputStream
+    // java.io.ObjectOutputStream
     private void writeObject(ObjectOutputStream stream) throws IOException {
       synchronized (mutex) {
         stream.defaultWriteObject();
       }
     }
 
-    @GwtIncompatible // not needed in emulated source
+    // not needed in emulated source
     private static final long serialVersionUID = 0;
   }
 
-  private static <E extends @Nullable Object> Collection<E> collection(
+  private static <E extends Object> Collection<E> collection(
       Collection<E> collection, @CheckForNull Object mutex) {
     return new SynchronizedCollection<E>(collection, mutex);
   }
 
-  @VisibleForTesting
-  static class SynchronizedCollection<E extends @Nullable Object> extends SynchronizedObject
+  static class SynchronizedCollection<E extends Object> extends SynchronizedObject
       implements Collection<E> {
     private SynchronizedCollection(Collection<E> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -243,7 +236,7 @@ final class Synchronized {
     }
 
     @Override
-    public @Nullable Object[] toArray() {
+    public Object[] toArray() {
       synchronized (mutex) {
         return delegate().toArray();
       }
@@ -251,7 +244,7 @@ final class Synchronized {
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] a) {
+    public <T extends Object> T[] toArray(T[] a) {
       synchronized (mutex) {
         return delegate().toArray(a);
       }
@@ -260,12 +253,11 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  @VisibleForTesting
-  static <E extends @Nullable Object> Set<E> set(Set<E> set, @CheckForNull Object mutex) {
+  static <E extends Object> Set<E> set(Set<E> set, @CheckForNull Object mutex) {
     return new SynchronizedSet<E>(set, mutex);
   }
 
-  static class SynchronizedSet<E extends @Nullable Object> extends SynchronizedCollection<E>
+  static class SynchronizedSet<E extends Object> extends SynchronizedCollection<E>
       implements Set<E> {
 
     SynchronizedSet(Set<E> delegate, @CheckForNull Object mutex) {
@@ -297,12 +289,12 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static <E extends @Nullable Object> SortedSet<E> sortedSet(
+  private static <E extends Object> SortedSet<E> sortedSet(
       SortedSet<E> set, @CheckForNull Object mutex) {
     return new SynchronizedSortedSet<E>(set, mutex);
   }
 
-  static class SynchronizedSortedSet<E extends @Nullable Object> extends SynchronizedSet<E>
+  static class SynchronizedSortedSet<E extends Object> extends SynchronizedSet<E>
       implements SortedSet<E> {
     SynchronizedSortedSet(SortedSet<E> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -359,14 +351,14 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static <E extends @Nullable Object> List<E> list(
+  private static <E extends Object> List<E> list(
       List<E> list, @CheckForNull Object mutex) {
     return (list instanceof RandomAccess)
         ? new SynchronizedRandomAccessList<E>(list, mutex)
         : new SynchronizedList<E>(list, mutex);
   }
 
-  private static class SynchronizedList<E extends @Nullable Object>
+  private static class SynchronizedList<E extends Object>
       extends SynchronizedCollection<E> implements List<E> {
     SynchronizedList(List<E> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -477,7 +469,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static class SynchronizedRandomAccessList<E extends @Nullable Object>
+  private static class SynchronizedRandomAccessList<E extends Object>
       extends SynchronizedList<E> implements RandomAccess {
     SynchronizedRandomAccessList(List<E> list, @CheckForNull Object mutex) {
       super(list, mutex);
@@ -486,7 +478,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <E extends @Nullable Object> Multiset<E> multiset(
+  static <E extends Object> Multiset<E> multiset(
       Multiset<E> multiset, @CheckForNull Object mutex) {
     if (multiset instanceof SynchronizedMultiset || multiset instanceof ImmutableMultiset) {
       return multiset;
@@ -494,7 +486,7 @@ final class Synchronized {
     return new SynchronizedMultiset<E>(multiset, mutex);
   }
 
-  private static class SynchronizedMultiset<E extends @Nullable Object>
+  private static class SynchronizedMultiset<E extends Object>
       extends SynchronizedCollection<E> implements Multiset<E> {
     @CheckForNull transient Set<E> elementSet;
     @CheckForNull transient Set<Multiset.Entry<E>> entrySet;
@@ -583,7 +575,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> Multimap<K, V> multimap(
+  static <K extends Object, V extends Object> Multimap<K, V> multimap(
       Multimap<K, V> multimap, @CheckForNull Object mutex) {
     if (multimap instanceof SynchronizedMultimap || multimap instanceof BaseImmutableMultimap) {
       return multimap;
@@ -591,7 +583,7 @@ final class Synchronized {
     return new SynchronizedMultimap<>(multimap, mutex);
   }
 
-  private static class SynchronizedMultimap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class SynchronizedMultimap<K extends Object, V extends Object>
       extends SynchronizedObject implements Multimap<K, V> {
     @CheckForNull transient Set<K> keySet;
     @CheckForNull transient Collection<V> valuesCollection;
@@ -777,7 +769,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> ListMultimap<K, V> listMultimap(
+  static <K extends Object, V extends Object> ListMultimap<K, V> listMultimap(
       ListMultimap<K, V> multimap, @CheckForNull Object mutex) {
     if (multimap instanceof SynchronizedListMultimap || multimap instanceof BaseImmutableMultimap) {
       return multimap;
@@ -786,7 +778,7 @@ final class Synchronized {
   }
 
   private static class SynchronizedListMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends SynchronizedMultimap<K, V> implements ListMultimap<K, V> {
     SynchronizedListMultimap(ListMultimap<K, V> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -821,7 +813,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> SetMultimap<K, V> setMultimap(
+  static <K extends Object, V extends Object> SetMultimap<K, V> setMultimap(
       SetMultimap<K, V> multimap, @CheckForNull Object mutex) {
     if (multimap instanceof SynchronizedSetMultimap || multimap instanceof BaseImmutableMultimap) {
       return multimap;
@@ -830,7 +822,7 @@ final class Synchronized {
   }
 
   private static class SynchronizedSetMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends SynchronizedMultimap<K, V> implements SetMultimap<K, V> {
     @CheckForNull transient Set<Map.Entry<K, V>> entrySet;
 
@@ -877,7 +869,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object>
+  static <K extends Object, V extends Object>
       SortedSetMultimap<K, V> sortedSetMultimap(
           SortedSetMultimap<K, V> multimap, @CheckForNull Object mutex) {
     if (multimap instanceof SynchronizedSortedSetMultimap) {
@@ -887,7 +879,7 @@ final class Synchronized {
   }
 
   private static class SynchronizedSortedSetMultimap<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends SynchronizedSetMultimap<K, V> implements SortedSetMultimap<K, V> {
     SynchronizedSortedSetMultimap(SortedSetMultimap<K, V> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -930,7 +922,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static <E extends @Nullable Object> Collection<E> typePreservingCollection(
+  private static <E extends Object> Collection<E> typePreservingCollection(
       Collection<E> collection, @CheckForNull Object mutex) {
     if (collection instanceof SortedSet) {
       return sortedSet((SortedSet<E>) collection, mutex);
@@ -944,7 +936,7 @@ final class Synchronized {
     return collection(collection, mutex);
   }
 
-  private static <E extends @Nullable Object> Set<E> typePreservingSet(
+  private static <E extends Object> Set<E> typePreservingSet(
       Set<E> set, @CheckForNull Object mutex) {
     if (set instanceof SortedSet) {
       return sortedSet((SortedSet<E>) set, mutex);
@@ -954,7 +946,7 @@ final class Synchronized {
   }
 
   private static class SynchronizedAsMapEntries<
-          K extends @Nullable Object, V extends @Nullable Object>
+          K extends Object, V extends Object>
       extends SynchronizedSet<Map.Entry<K, Collection<V>>> {
     SynchronizedAsMapEntries(
         Set<Map.Entry<K, Collection<V>>> delegate, @CheckForNull Object mutex) {
@@ -1001,7 +993,7 @@ final class Synchronized {
 
     @Override
     @SuppressWarnings("nullness") // b/192354773 in our checker affects toArray declarations
-    public <T extends @Nullable Object> T[] toArray(T[] array) {
+    public <T extends Object> T[] toArray(T[] array) {
       synchronized (mutex) {
         return ObjectArrays.toArrayImpl(delegate(), array);
       }
@@ -1055,13 +1047,12 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  @VisibleForTesting
-  static <K extends @Nullable Object, V extends @Nullable Object> Map<K, V> map(
+  static <K extends Object, V extends Object> Map<K, V> map(
       Map<K, V> map, @CheckForNull Object mutex) {
     return new SynchronizedMap<>(map, mutex);
   }
 
-  private static class SynchronizedMap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class SynchronizedMap<K extends Object, V extends Object>
       extends SynchronizedObject implements Map<K, V> {
     @CheckForNull transient Set<K> keySet;
     @CheckForNull transient Collection<V> values;
@@ -1275,12 +1266,12 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> SortedMap<K, V> sortedMap(
+  static <K extends Object, V extends Object> SortedMap<K, V> sortedMap(
       SortedMap<K, V> sortedMap, @CheckForNull Object mutex) {
     return new SynchronizedSortedMap<>(sortedMap, mutex);
   }
 
-  static class SynchronizedSortedMap<K extends @Nullable Object, V extends @Nullable Object>
+  static class SynchronizedSortedMap<K extends Object, V extends Object>
       extends SynchronizedMap<K, V> implements SortedMap<K, V> {
 
     SynchronizedSortedMap(SortedMap<K, V> delegate, @CheckForNull Object mutex) {
@@ -1338,7 +1329,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <K extends @Nullable Object, V extends @Nullable Object> BiMap<K, V> biMap(
+  static <K extends Object, V extends Object> BiMap<K, V> biMap(
       BiMap<K, V> bimap, @CheckForNull Object mutex) {
     if (bimap instanceof SynchronizedBiMap || bimap instanceof ImmutableBiMap) {
       return bimap;
@@ -1346,11 +1337,10 @@ final class Synchronized {
     return new SynchronizedBiMap<>(bimap, mutex, null);
   }
 
-  @VisibleForTesting
-  static class SynchronizedBiMap<K extends @Nullable Object, V extends @Nullable Object>
+  static class SynchronizedBiMap<K extends Object, V extends Object>
       extends SynchronizedMap<K, V> implements BiMap<K, V>, Serializable {
     @CheckForNull private transient Set<V> valueSet;
-    @RetainedWith @CheckForNull private transient BiMap<V, K> inverse;
+    @CheckForNull private transient BiMap<V, K> inverse;
 
     private SynchronizedBiMap(
         BiMap<K, V> delegate, @CheckForNull Object mutex, @CheckForNull BiMap<V, K> inverse) {
@@ -1394,7 +1384,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static class SynchronizedAsMap<K extends @Nullable Object, V extends @Nullable Object>
+  private static class SynchronizedAsMap<K extends Object, V extends Object>
       extends SynchronizedMap<K, Collection<V>> {
     @CheckForNull transient Set<Map.Entry<K, Collection<V>>> asMapEntrySet;
     @CheckForNull transient Collection<Collection<V>> asMapValues;
@@ -1441,7 +1431,7 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  private static class SynchronizedAsMapValues<V extends @Nullable Object>
+  private static class SynchronizedAsMapValues<V extends Object>
       extends SynchronizedCollection<Collection<V>> {
     SynchronizedAsMapValues(Collection<Collection<V>> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -1461,9 +1451,8 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // NavigableSet
-  @VisibleForTesting
-  static class SynchronizedNavigableSet<E extends @Nullable Object> extends SynchronizedSortedSet<E>
+  // NavigableSet
+  static class SynchronizedNavigableSet<E extends Object> extends SynchronizedSortedSet<E>
       implements NavigableSet<E> {
     SynchronizedNavigableSet(NavigableSet<E> delegate, @CheckForNull Object mutex) {
       super(delegate, mutex);
@@ -1582,32 +1571,31 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // NavigableSet
-  static <E extends @Nullable Object> NavigableSet<E> navigableSet(
+  // NavigableSet
+  static <E extends Object> NavigableSet<E> navigableSet(
       NavigableSet<E> navigableSet, @CheckForNull Object mutex) {
     return new SynchronizedNavigableSet<E>(navigableSet, mutex);
   }
 
-  @GwtIncompatible // NavigableSet
-  static <E extends @Nullable Object> NavigableSet<E> navigableSet(NavigableSet<E> navigableSet) {
+  // NavigableSet
+  static <E extends Object> NavigableSet<E> navigableSet(NavigableSet<E> navigableSet) {
     return navigableSet(navigableSet, null);
   }
 
-  @GwtIncompatible // NavigableMap
-  static <K extends @Nullable Object, V extends @Nullable Object> NavigableMap<K, V> navigableMap(
+  // NavigableMap
+  static <K extends Object, V extends Object> NavigableMap<K, V> navigableMap(
       NavigableMap<K, V> navigableMap) {
     return navigableMap(navigableMap, null);
   }
 
-  @GwtIncompatible // NavigableMap
-  static <K extends @Nullable Object, V extends @Nullable Object> NavigableMap<K, V> navigableMap(
+  // NavigableMap
+  static <K extends Object, V extends Object> NavigableMap<K, V> navigableMap(
       NavigableMap<K, V> navigableMap, @CheckForNull Object mutex) {
     return new SynchronizedNavigableMap<>(navigableMap, mutex);
   }
 
-  @GwtIncompatible // NavigableMap
-  @VisibleForTesting
-  static class SynchronizedNavigableMap<K extends @Nullable Object, V extends @Nullable Object>
+  // NavigableMap
+  static class SynchronizedNavigableMap<K extends Object, V extends Object>
       extends SynchronizedSortedMap<K, V> implements NavigableMap<K, V> {
 
     SynchronizedNavigableMap(NavigableMap<K, V> delegate, @CheckForNull Object mutex) {
@@ -1796,9 +1784,9 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  @GwtIncompatible // works but is needed only for NavigableMap
+  // works but is needed only for NavigableMap
   @CheckForNull
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       Map.Entry<K, V> nullableSynchronizedEntry(
           @CheckForNull Map.Entry<K, V> entry, @CheckForNull Object mutex) {
     if (entry == null) {
@@ -1807,8 +1795,8 @@ final class Synchronized {
     return new SynchronizedEntry<>(entry, mutex);
   }
 
-  @GwtIncompatible // works but is needed only for NavigableMap
-  private static class SynchronizedEntry<K extends @Nullable Object, V extends @Nullable Object>
+  // works but is needed only for NavigableMap
+  private static class SynchronizedEntry<K extends Object, V extends Object>
       extends SynchronizedObject implements Map.Entry<K, V> {
 
     SynchronizedEntry(Map.Entry<K, V> delegate, @CheckForNull Object mutex) {
@@ -1859,11 +1847,11 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <E extends @Nullable Object> Queue<E> queue(Queue<E> queue, @CheckForNull Object mutex) {
+  static <E extends Object> Queue<E> queue(Queue<E> queue, @CheckForNull Object mutex) {
     return (queue instanceof SynchronizedQueue) ? queue : new SynchronizedQueue<E>(queue, mutex);
   }
 
-  private static class SynchronizedQueue<E extends @Nullable Object>
+  private static class SynchronizedQueue<E extends Object>
       extends SynchronizedCollection<E> implements Queue<E> {
 
     SynchronizedQueue(Queue<E> delegate, @CheckForNull Object mutex) {
@@ -1915,11 +1903,11 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <E extends @Nullable Object> Deque<E> deque(Deque<E> deque, @CheckForNull Object mutex) {
+  static <E extends Object> Deque<E> deque(Deque<E> deque, @CheckForNull Object mutex) {
     return new SynchronizedDeque<E>(deque, mutex);
   }
 
-  private static final class SynchronizedDeque<E extends @Nullable Object>
+  private static final class SynchronizedDeque<E extends Object>
       extends SynchronizedQueue<E> implements Deque<E> {
 
     SynchronizedDeque(Deque<E> delegate, @CheckForNull Object mutex) {
@@ -2057,13 +2045,13 @@ final class Synchronized {
     private static final long serialVersionUID = 0;
   }
 
-  static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  static <R extends Object, C extends Object, V extends Object>
       Table<R, C, V> table(Table<R, C, V> table, @CheckForNull Object mutex) {
     return new SynchronizedTable<>(table, mutex);
   }
 
   private static final class SynchronizedTable<
-          R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+          R extends Object, C extends Object, V extends Object>
       extends SynchronizedObject implements Table<R, C, V> {
 
     SynchronizedTable(Table<R, C, V> delegate, @CheckForNull Object mutex) {
diff --git a/guava/src/com/google/common/collect/Table.java b/guava/src/com/google/common/collect/Table.java
index 97d3f70..cd09e49 100644
--- a/guava/src/com/google/common/collect/Table.java
+++ b/guava/src/com/google/common/collect/Table.java
@@ -16,16 +16,11 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CompatibleWith;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A collection that associates an ordered pair of keys, called a row key and a column key, with a
@@ -54,11 +49,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @param <V> the type of the mapped values
  * @since 7.0
  */
-@DoNotMock("Use ImmutableTable, HashBasedTable, or another implementation")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public interface Table<
-    R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object> {
+    R extends Object, C extends Object, V extends Object> {
   // TODO(jlevy): Consider adding methods similar to ConcurrentMap methods.
 
   // Accessors
@@ -141,7 +134,6 @@ public interface Table<
    * @return the value previously associated with the keys, or {@code null} if no mapping existed
    *     for the keys
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V put(@ParametricNullness R rowKey, @ParametricNullness C columnKey, @ParametricNullness V value);
 
@@ -160,7 +152,6 @@ public interface Table<
    * @param columnKey column key of mapping to be removed
    * @return the value previously associated with the keys, or {@code null} if no such value existed
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V remove(
       @CompatibleWith("R") @CheckForNull Object rowKey,
@@ -257,7 +248,7 @@ public interface Table<
    * @since 7.0
    */
   interface Cell<
-      R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object> {
+      R extends Object, C extends Object, V extends Object> {
     /** Returns the row key of this cell. */
     @ParametricNullness
     R getRowKey();
diff --git a/guava/src/com/google/common/collect/TableCollectors.java b/guava/src/com/google/common/collect/TableCollectors.java
index 99ab810..d7a4970 100644
--- a/guava/src/com/google/common/collect/TableCollectors.java
+++ b/guava/src/com/google/common/collect/TableCollectors.java
@@ -18,7 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Tables.AbstractCell;
 import java.util.ArrayList;
 import java.util.List;
@@ -26,14 +25,12 @@ import java.util.function.BinaryOperator;
 import java.util.function.Function;
 import java.util.function.Supplier;
 import java.util.stream.Collector;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Collectors utilities for {@code common.collect.Table} internals. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class TableCollectors {
 
-  static <T extends @Nullable Object, R, C, V>
+  static <T extends Object, R, C, V>
       Collector<T, ?, ImmutableTable<R, C, V>> toImmutableTable(
           Function<? super T, ? extends R> rowFunction,
           Function<? super T, ? extends C> columnFunction,
@@ -49,7 +46,7 @@ final class TableCollectors {
         ImmutableTable.Builder::build);
   }
 
-  static <T extends @Nullable Object, R, C, V>
+  static <T extends Object, R, C, V>
       Collector<T, ?, ImmutableTable<R, C, V>> toImmutableTable(
           Function<? super T, ? extends R> rowFunction,
           Function<? super T, ? extends C> columnFunction,
@@ -81,10 +78,10 @@ final class TableCollectors {
   }
 
   static <
-          T extends @Nullable Object,
-          R extends @Nullable Object,
-          C extends @Nullable Object,
-          V extends @Nullable Object,
+          T extends Object,
+          R extends Object,
+          C extends Object,
+          V extends Object,
           I extends Table<R, C, V>>
       Collector<T, ?, I> toTable(
           java.util.function.Function<? super T, ? extends R> rowFunction,
@@ -102,10 +99,10 @@ final class TableCollectors {
   }
 
   static <
-          T extends @Nullable Object,
-          R extends @Nullable Object,
-          C extends @Nullable Object,
-          V extends @Nullable Object,
+          T extends Object,
+          R extends Object,
+          C extends Object,
+          V extends Object,
           I extends Table<R, C, V>>
       Collector<T, ?, I> toTable(
           java.util.function.Function<? super T, ? extends R> rowFunction,
@@ -197,7 +194,7 @@ final class TableCollectors {
   }
 
   private static <
-          R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+          R extends Object, C extends Object, V extends Object>
       void mergeTables(
           Table<R, C, V> table,
           @ParametricNullness R row,
diff --git a/guava/src/com/google/common/collect/Tables.java b/guava/src/com/google/common/collect/Tables.java
index 2d743f0..cb92274 100644
--- a/guava/src/com/google/common/collect/Tables.java
+++ b/guava/src/com/google/common/collect/Tables.java
@@ -18,10 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import com.google.common.base.Supplier;
@@ -38,7 +35,6 @@ import java.util.Spliterator;
 import java.util.function.BinaryOperator;
 import java.util.stream.Collector;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides static methods that involve a {@code Table}.
@@ -50,7 +46,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 7.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Tables {
   private Tables() {}
@@ -67,12 +62,11 @@ public final class Tables {
    *
    * @since 21.0
    */
-  @Beta
   public static <
-          T extends @Nullable Object,
-          R extends @Nullable Object,
-          C extends @Nullable Object,
-          V extends @Nullable Object,
+          T extends Object,
+          R extends Object,
+          C extends Object,
+          V extends Object,
           I extends Table<R, C, V>>
       Collector<T, ?, I> toTable(
           java.util.function.Function<? super T, ? extends R> rowFunction,
@@ -97,10 +91,10 @@ public final class Tables {
    * @since 21.0
    */
   public static <
-          T extends @Nullable Object,
-          R extends @Nullable Object,
-          C extends @Nullable Object,
-          V extends @Nullable Object,
+          T extends Object,
+          R extends Object,
+          C extends Object,
+          V extends Object,
           I extends Table<R, C, V>>
       Collector<T, ?, I> toTable(
           java.util.function.Function<? super T, ? extends R> rowFunction,
@@ -121,7 +115,7 @@ public final class Tables {
    * @param columnKey the column key to be associated with the returned cell
    * @param value the value to be associated with the returned cell
    */
-  public static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  public static <R extends Object, C extends Object, V extends Object>
       Cell<R, C, V> immutableCell(
           @ParametricNullness R rowKey,
           @ParametricNullness C columnKey,
@@ -130,7 +124,7 @@ public final class Tables {
   }
 
   static final class ImmutableCell<
-          R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+          R extends Object, C extends Object, V extends Object>
       extends AbstractCell<R, C, V> implements Serializable {
     @ParametricNullness private final R rowKey;
     @ParametricNullness private final C columnKey;
@@ -167,7 +161,7 @@ public final class Tables {
   }
 
   abstract static class AbstractCell<
-          R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+          R extends Object, C extends Object, V extends Object>
       implements Cell<R, C, V> {
     // needed for serialization
     AbstractCell() {}
@@ -209,7 +203,7 @@ public final class Tables {
    * columnKeySet().iterator()} doesn't. With a transposed {@link HashBasedTable}, it's the other
    * way around.
    */
-  public static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  public static <R extends Object, C extends Object, V extends Object>
       Table<C, R, V> transpose(Table<R, C, V> table) {
     return (table instanceof TransposeTable)
         ? ((TransposeTable<R, C, V>) table).original
@@ -217,7 +211,7 @@ public final class Tables {
   }
 
   private static class TransposeTable<
-          C extends @Nullable Object, R extends @Nullable Object, V extends @Nullable Object>
+          C extends Object, R extends Object, V extends Object>
       extends AbstractTable<C, R, V> {
     final Table<R, C, V> original;
 
@@ -376,7 +370,6 @@ public final class Tables {
    * @throws IllegalArgumentException if {@code backingMap} is not empty
    * @since 10.0
    */
-  @Beta
   public static <R, C, V> Table<R, C, V> newCustomTable(
       Map<R, Map<C, V>> backingMap, Supplier<? extends Map<C, V>> factory) {
     checkArgument(backingMap.isEmpty());
@@ -406,22 +399,21 @@ public final class Tables {
    *
    * @since 10.0
    */
-  @Beta
   public static <
-          R extends @Nullable Object,
-          C extends @Nullable Object,
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object>
+          R extends Object,
+          C extends Object,
+          V1 extends Object,
+          V2 extends Object>
       Table<R, C, V2> transformValues(
           Table<R, C, V1> fromTable, Function<? super V1, V2> function) {
     return new TransformedTable<>(fromTable, function);
   }
 
   private static class TransformedTable<
-          R extends @Nullable Object,
-          C extends @Nullable Object,
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object>
+          R extends Object,
+          C extends Object,
+          V1 extends Object,
+          V2 extends Object>
       extends AbstractTable<R, C, V2> {
     final Table<R, C, V1> fromTable;
     final Function<? super V1, V2> function;
@@ -562,13 +554,13 @@ public final class Tables {
    *
    * @since 11.0
    */
-  public static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  public static <R extends Object, C extends Object, V extends Object>
       Table<R, C, V> unmodifiableTable(Table<? extends R, ? extends C, ? extends V> table) {
     return new UnmodifiableTable<>(table);
   }
 
   private static class UnmodifiableTable<
-          R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+          R extends Object, C extends Object, V extends Object>
       extends ForwardingTable<R, C, V> implements Serializable {
     final Table<? extends R, ? extends C, ? extends V> delegate;
 
@@ -664,8 +656,7 @@ public final class Tables {
    * @return an unmodifiable view of the specified table
    * @since 11.0
    */
-  @Beta
-  public static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  public static <R extends Object, C extends Object, V extends Object>
       RowSortedTable<R, C, V> unmodifiableRowSortedTable(
           RowSortedTable<R, ? extends C, ? extends V> table) {
     /*
@@ -677,7 +668,7 @@ public final class Tables {
   }
 
   static final class UnmodifiableRowSortedMap<
-          R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+          R extends Object, C extends Object, V extends Object>
       extends UnmodifiableTable<R, C, V> implements RowSortedTable<R, C, V> {
 
     public UnmodifiableRowSortedMap(RowSortedTable<R, ? extends C, ? extends V> delegate) {
@@ -704,7 +695,7 @@ public final class Tables {
   }
 
   @SuppressWarnings("unchecked")
-  private static <K extends @Nullable Object, V extends @Nullable Object>
+  private static <K extends Object, V extends Object>
       Function<Map<K, V>, Map<K, V>> unmodifiableWrapper() {
     return (Function) UNMODIFIABLE_WRAPPER;
   }
@@ -746,7 +737,7 @@ public final class Tables {
    * @return a synchronized view of the specified table
    * @since 22.0
    */
-  public static <R extends @Nullable Object, C extends @Nullable Object, V extends @Nullable Object>
+  public static <R extends Object, C extends Object, V extends Object>
       Table<R, C, V> synchronizedTable(Table<R, C, V> table) {
     return Synchronized.table(table, null);
   }
diff --git a/guava/src/com/google/common/collect/TopKSelector.java b/guava/src/com/google/common/collect/TopKSelector.java
index 8411fcd..8fa67ab 100644
--- a/guava/src/com/google/common/collect/TopKSelector.java
+++ b/guava/src/com/google/common/collect/TopKSelector.java
@@ -18,9 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.math.IntMath;
 import java.math.RoundingMode;
 import java.util.Arrays;
@@ -30,7 +28,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.stream.Stream;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An accumulator that selects the "top" {@code k} elements added to it, relative to a provided
@@ -53,10 +50,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class TopKSelector<
-    T extends @Nullable Object> {
+    T extends Object> {
 
   /**
    * Returns a {@code TopKSelector} that collects the lowest {@code k} elements added to it,
@@ -75,7 +71,7 @@ final class TopKSelector<
    *
    * @throws IllegalArgumentException if {@code k < 0} or {@code k > Integer.MAX_VALUE / 2}
    */
-  public static <T extends @Nullable Object> TopKSelector<T> least(
+  public static <T extends Object> TopKSelector<T> least(
       int k, Comparator<? super T> comparator) {
     return new TopKSelector<T>(comparator, k);
   }
@@ -97,7 +93,7 @@ final class TopKSelector<
    *
    * @throws IllegalArgumentException if {@code k < 0} or {@code k > Integer.MAX_VALUE / 2}
    */
-  public static <T extends @Nullable Object> TopKSelector<T> greatest(
+  public static <T extends Object> TopKSelector<T> greatest(
       int k, Comparator<? super T> comparator) {
     return new TopKSelector<T>(Ordering.from(comparator).reverse(), k);
   }
@@ -110,7 +106,7 @@ final class TopKSelector<
    * for the top k elements. Whenever the buffer is filled, we quickselect the top k elements to the
    * range [0, k) and ignore the remaining elements.
    */
-  private final @Nullable T[] buffer;
+  private final T[] buffer;
   private int bufferSize;
 
   /**
diff --git a/guava/src/com/google/common/collect/TransformedIterator.java b/guava/src/com/google/common/collect/TransformedIterator.java
index 2456cec..8d6afda 100644
--- a/guava/src/com/google/common/collect/TransformedIterator.java
+++ b/guava/src/com/google/common/collect/TransformedIterator.java
@@ -18,9 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An iterator that transforms a backing iterator; for internal use. This avoids the object overhead
@@ -28,9 +26,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class TransformedIterator<F extends @Nullable Object, T extends @Nullable Object>
+abstract class TransformedIterator<F extends Object, T extends Object>
     implements Iterator<T> {
   final Iterator<? extends F> backingIterator;
 
diff --git a/guava/src/com/google/common/collect/TransformedListIterator.java b/guava/src/com/google/common/collect/TransformedListIterator.java
index 66b42e4..46110b4 100644
--- a/guava/src/com/google/common/collect/TransformedListIterator.java
+++ b/guava/src/com/google/common/collect/TransformedListIterator.java
@@ -16,10 +16,8 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import java.util.ListIterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An iterator that transforms a backing list iterator; for internal use. This avoids the object
@@ -27,9 +25,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class TransformedListIterator<F extends @Nullable Object, T extends @Nullable Object>
+abstract class TransformedListIterator<F extends Object, T extends Object>
     extends TransformedIterator<F, T> implements ListIterator<T> {
   TransformedListIterator(ListIterator<? extends F> backingIterator) {
     super(backingIterator);
diff --git a/guava/src/com/google/common/collect/TreeBasedTable.java b/guava/src/com/google/common/collect/TreeBasedTable.java
index 315404a..ac0d2eb 100644
--- a/guava/src/com/google/common/collect/TreeBasedTable.java
+++ b/guava/src/com/google/common/collect/TreeBasedTable.java
@@ -18,9 +18,7 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.base.Supplier;
 import java.io.Serializable;
@@ -66,7 +64,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 7.0
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 public class TreeBasedTable<R, C, V> extends StandardRowSortedTable<R, C, V> {
   private final Comparator<? super C> columnComparator;
diff --git a/guava/src/com/google/common/collect/TreeMultimap.java b/guava/src/com/google/common/collect/TreeMultimap.java
index 04ae207..8080a04 100644
--- a/guava/src/com/google/common/collect/TreeMultimap.java
+++ b/guava/src/com/google/common/collect/TreeMultimap.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -31,7 +29,6 @@ import java.util.NavigableSet;
 import java.util.SortedSet;
 import java.util.TreeMap;
 import java.util.TreeSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@code Multimap} whose keys and values are ordered by their natural ordering or
@@ -71,9 +68,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 2.0
  */
-@GwtCompatible(serializable = true, emulated = true)
 @ElementTypesAreNonnullByDefault
-public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object>
+public class TreeMultimap<K extends Object, V extends Object>
     extends AbstractSortedKeySortedSetMultimap<K, V> {
   private transient Comparator<? super K> keyComparator;
   private transient Comparator<? super V> valueComparator;
@@ -92,7 +88,7 @@ public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object
    * @param keyComparator the comparator that determines the key ordering
    * @param valueComparator the comparator that determines the value ordering
    */
-  public static <K extends @Nullable Object, V extends @Nullable Object> TreeMultimap<K, V> create(
+  public static <K extends Object, V extends Object> TreeMultimap<K, V> create(
       Comparator<? super K> keyComparator, Comparator<? super V> valueComparator) {
     return new TreeMultimap<>(checkNotNull(keyComparator), checkNotNull(valueComparator));
   }
@@ -164,7 +160,7 @@ public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object
 
   /** @since 14.0 (present with return type {@code SortedSet} since 2.0) */
   @Override
-  @GwtIncompatible // NavigableSet
+  // NavigableSet
   public NavigableSet<V> get(@ParametricNullness K key) {
     return (NavigableSet<V>) super.get(key);
   }
@@ -201,7 +197,7 @@ public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object
    * @serialData key comparator, value comparator, number of distinct keys, and then for each
    *     distinct key: the key, number of values for that key, and key values
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(keyComparator());
@@ -209,7 +205,7 @@ public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object
     Serialization.writeMultimap(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   @SuppressWarnings("unchecked") // reading data stored by writeObject
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
@@ -219,6 +215,6 @@ public class TreeMultimap<K extends @Nullable Object, V extends @Nullable Object
     Serialization.populateMultimap(this, stream);
   }
 
-  @GwtIncompatible // not needed in emulated source
+  // not needed in emulated source
   private static final long serialVersionUID = 0;
 }
diff --git a/guava/src/com/google/common/collect/TreeMultiset.java b/guava/src/com/google/common/collect/TreeMultiset.java
index dcc3f68..55561e6 100644
--- a/guava/src/com/google/common/collect/TreeMultiset.java
+++ b/guava/src/com/google/common/collect/TreeMultiset.java
@@ -20,14 +20,9 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.CollectPreconditions.checkNonnegative;
-import static com.google.common.collect.NullnessCasts.uncheckedCastNullableTToT;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -38,7 +33,6 @@ import java.util.Iterator;
 import java.util.NoSuchElementException;
 import java.util.function.ObjIntConsumer;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A multiset which maintains the ordering of its elements, according to either their natural order
@@ -58,9 +52,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public final class TreeMultiset<E extends @Nullable Object> extends AbstractSortedMultiset<E>
+public final class TreeMultiset<E extends Object> extends AbstractSortedMultiset<E>
     implements Serializable {
 
   /**
@@ -91,7 +84,7 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
    *     indicates that the elements' <i>natural ordering</i> should be used.
    */
   @SuppressWarnings("unchecked")
-  public static <E extends @Nullable Object> TreeMultiset<E> create(
+  public static <E extends Object> TreeMultiset<E> create(
       @CheckForNull Comparator<? super E> comparator) {
     return (comparator == null)
         ? new TreeMultiset<E>((Comparator) Ordering.natural())
@@ -255,7 +248,6 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     }
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int add(@ParametricNullness E element, int occurrences) {
     checkNonnegative(occurrences, "occurrences");
@@ -277,7 +269,6 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     return result[0];
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int remove(@CheckForNull Object element, int occurrences) {
     checkNonnegative(occurrences, "occurrences");
@@ -301,7 +292,6 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     return result[0];
   }
 
-  @CanIgnoreReturnValue
   @Override
   public int setCount(@ParametricNullness E element, int count) {
     checkNonnegative(count, "count");
@@ -323,7 +313,6 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     return result[0];
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean setCount(@ParametricNullness E element, int oldCount, int newCount) {
     checkNonnegative(newCount, "newCount");
@@ -583,7 +572,7 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     }
   }
 
-  private static final class AvlNode<E extends @Nullable Object> {
+  private static final class AvlNode<E extends Object> {
     /*
      * For "normal" nodes, the type of this field is `E`, not `@Nullable E` (though note that E is a
      * type that can include null, as in a TreeMultiset<@Nullable String>).
@@ -1053,12 +1042,12 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     }
   }
 
-  private static <T extends @Nullable Object> void successor(AvlNode<T> a, AvlNode<T> b) {
+  private static <T extends Object> void successor(AvlNode<T> a, AvlNode<T> b) {
     a.succ = b;
     b.pred = a;
   }
 
-  private static <T extends @Nullable Object> void successor(
+  private static <T extends Object> void successor(
       AvlNode<T> a, AvlNode<T> b, AvlNode<T> c) {
     successor(a, b);
     successor(b, c);
@@ -1074,14 +1063,14 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
    * @serialData the comparator, the number of distinct elements, the first element, its count, the
    *     second element, its count, and so on
    */
-  @GwtIncompatible // java.io.ObjectOutputStream
+  // java.io.ObjectOutputStream
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
     stream.writeObject(elementSet().comparator());
     Serialization.writeMultiset(this, stream);
   }
 
-  @GwtIncompatible // java.io.ObjectInputStream
+  // java.io.ObjectInputStream
   private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
     @SuppressWarnings("unchecked")
@@ -1098,6 +1087,6 @@ public final class TreeMultiset<E extends @Nullable Object> extends AbstractSort
     Serialization.populateMultiset(this, stream);
   }
 
-  @GwtIncompatible // not needed in emulated source
+  // not needed in emulated source
   private static final long serialVersionUID = 1;
 }
diff --git a/guava/src/com/google/common/collect/TreeRangeMap.java b/guava/src/com/google/common/collect/TreeRangeMap.java
index a920089..685d4e2 100644
--- a/guava/src/com/google/common/collect/TreeRangeMap.java
+++ b/guava/src/com/google/common/collect/TreeRangeMap.java
@@ -21,10 +21,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Predicates.compose;
 import static com.google.common.base.Predicates.in;
 import static com.google.common.base.Predicates.not;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Maps.IteratorBasedAbstractMap;
@@ -40,7 +37,6 @@ import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.function.BiFunction;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An implementation of {@code RangeMap} based on a {@code TreeMap}, supporting all optional
@@ -51,8 +47,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@GwtIncompatible // NavigableMap
+// NavigableMap
 @ElementTypesAreNonnullByDefault
 public final class TreeRangeMap<K extends Comparable, V> implements RangeMap<K, V> {
 
diff --git a/guava/src/com/google/common/collect/TreeRangeSet.java b/guava/src/com/google/common/collect/TreeRangeSet.java
index 8308880..b87bf81 100644
--- a/guava/src/com/google/common/collect/TreeRangeSet.java
+++ b/guava/src/com/google/common/collect/TreeRangeSet.java
@@ -17,9 +17,6 @@ package com.google.common.collect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import java.io.Serializable;
 import java.util.Collection;
@@ -38,13 +35,12 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 14.0
  */
-@Beta
-@GwtIncompatible // uses NavigableMap
+// uses NavigableMap
 @ElementTypesAreNonnullByDefault
 public class TreeRangeSet<C extends Comparable<?>> extends AbstractRangeSet<C>
     implements Serializable {
 
-  @VisibleForTesting final NavigableMap<Cut<C>, Range<C>> rangesByLowerBound;
+  final NavigableMap<Cut<C>, Range<C>> rangesByLowerBound;
 
   /** Creates an empty {@code TreeRangeSet} instance. */
   public static <C extends Comparable<?>> TreeRangeSet<C> create() {
@@ -282,7 +278,6 @@ public class TreeRangeSet<C extends Comparable<?>> extends AbstractRangeSet<C>
     return (result == null) ? complement = new Complement() : result;
   }
 
-  @VisibleForTesting
   static final class RangesByUpperBound<C extends Comparable<?>>
       extends AbstractNavigableMap<Cut<C>, Range<C>> {
     private final NavigableMap<Cut<C>, Range<C>> rangesByLowerBound;
diff --git a/guava/src/com/google/common/collect/TreeTraverser.java b/guava/src/com/google/common/collect/TreeTraverser.java
index b5d2a42..ab04f87 100644
--- a/guava/src/com/google/common/collect/TreeTraverser.java
+++ b/guava/src/com/google/common/collect/TreeTraverser.java
@@ -18,8 +18,6 @@ package com.google.common.collect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import java.util.ArrayDeque;
 import java.util.Deque;
@@ -73,8 +71,6 @@ import javax.annotation.CheckForNull;
  */
 // TODO(b/68134636): Remove by 2019-10
 @Deprecated
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class TreeTraverser<T> {
 
diff --git a/guava/src/com/google/common/collect/UnmodifiableIterator.java b/guava/src/com/google/common/collect/UnmodifiableIterator.java
index 03e52aa..02d022f 100644
--- a/guava/src/com/google/common/collect/UnmodifiableIterator.java
+++ b/guava/src/com/google/common/collect/UnmodifiableIterator.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An iterator that does not support {@link #remove}.
@@ -31,9 +28,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jared Levy
  * @since 2.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class UnmodifiableIterator<E extends @Nullable Object> implements Iterator<E> {
+public abstract class UnmodifiableIterator<E extends Object> implements Iterator<E> {
   /** Constructor for use by subclasses. */
   protected UnmodifiableIterator() {}
 
@@ -45,7 +41,6 @@ public abstract class UnmodifiableIterator<E extends @Nullable Object> implement
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void remove() {
     throw new UnsupportedOperationException();
   }
diff --git a/guava/src/com/google/common/collect/UnmodifiableListIterator.java b/guava/src/com/google/common/collect/UnmodifiableListIterator.java
index f3d3b92..8b79d2a 100644
--- a/guava/src/com/google/common/collect/UnmodifiableListIterator.java
+++ b/guava/src/com/google/common/collect/UnmodifiableListIterator.java
@@ -16,10 +16,7 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.ListIterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A list iterator that does not support {@link #remove}, {@link #add}, or {@link #set}.
@@ -27,9 +24,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 7.0
  * @author Louis Wasserman
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public abstract class UnmodifiableListIterator<E extends @Nullable Object>
+public abstract class UnmodifiableListIterator<E extends Object>
     extends UnmodifiableIterator<E> implements ListIterator<E> {
   /** Constructor for use by subclasses. */
   protected UnmodifiableListIterator() {}
@@ -42,7 +38,6 @@ public abstract class UnmodifiableListIterator<E extends @Nullable Object>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void add(@ParametricNullness E e) {
     throw new UnsupportedOperationException();
   }
@@ -55,7 +50,6 @@ public abstract class UnmodifiableListIterator<E extends @Nullable Object>
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public final void set(@ParametricNullness E e) {
     throw new UnsupportedOperationException();
   }
diff --git a/guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java b/guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java
index 59bd2ce..a95f11d 100644
--- a/guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java
+++ b/guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java
@@ -16,12 +16,10 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.collect.Multisets.UnmodifiableMultiset;
 import java.util.Comparator;
 import java.util.NavigableSet;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into
@@ -30,9 +28,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-final class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>
+final class UnmodifiableSortedMultiset<E extends Object> extends UnmodifiableMultiset<E>
     implements SortedMultiset<E> {
   UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {
     super(delegate);
diff --git a/guava/src/com/google/common/collect/UsingToStringOrdering.java b/guava/src/com/google/common/collect/UsingToStringOrdering.java
index 3443b43..8393ecc 100644
--- a/guava/src/com/google/common/collect/UsingToStringOrdering.java
+++ b/guava/src/com/google/common/collect/UsingToStringOrdering.java
@@ -16,11 +16,9 @@
 
 package com.google.common.collect;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 
 /** An ordering that uses the natural order of the string representation of the values. */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 final class UsingToStringOrdering extends Ordering<Object> implements Serializable {
   static final UsingToStringOrdering INSTANCE = new UsingToStringOrdering();
diff --git a/guava/src/com/google/common/collect/package-info.java b/guava/src/com/google/common/collect/package-info.java
index d46e65f..41aa6ad 100644
--- a/guava/src/com/google/common/collect/package-info.java
+++ b/guava/src/com/google/common/collect/package-info.java
@@ -212,9 +212,7 @@
  *   <li>{@link com.google.common.collect.ForwardingTable}
  * </ul>
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.collect;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/escape/ArrayBasedCharEscaper.java b/guava/src/com/google/common/escape/ArrayBasedCharEscaper.java
index 20e8563..22907ce 100644
--- a/guava/src/com/google/common/escape/ArrayBasedCharEscaper.java
+++ b/guava/src/com/google/common/escape/ArrayBasedCharEscaper.java
@@ -16,8 +16,6 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 import javax.annotation.CheckForNull;
 
@@ -41,8 +39,6 @@ import javax.annotation.CheckForNull;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ArrayBasedCharEscaper extends CharEscaper {
   // The replacement array (see ArrayBasedEscaperMap).
diff --git a/guava/src/com/google/common/escape/ArrayBasedEscaperMap.java b/guava/src/com/google/common/escape/ArrayBasedEscaperMap.java
index a0883fe..2de9626 100644
--- a/guava/src/com/google/common/escape/ArrayBasedEscaperMap.java
+++ b/guava/src/com/google/common/escape/ArrayBasedEscaperMap.java
@@ -16,9 +16,6 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.util.Collections;
 import java.util.Map;
 
@@ -36,8 +33,6 @@ import java.util.Map;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class ArrayBasedEscaperMap {
   /**
@@ -66,7 +61,6 @@ public final class ArrayBasedEscaperMap {
   // Creates a replacement array from the given map. The returned array is a
   // linear lookup table of replacement character sequences indexed by the
   // original character value.
-  @VisibleForTesting
   static char[][] createReplacementArray(Map<Character, String> map) {
     checkNotNull(map); // GWT specific check (do not optimize)
     if (map.isEmpty()) {
diff --git a/guava/src/com/google/common/escape/ArrayBasedUnicodeEscaper.java b/guava/src/com/google/common/escape/ArrayBasedUnicodeEscaper.java
index 5ea7807..42e38ae 100644
--- a/guava/src/com/google/common/escape/ArrayBasedUnicodeEscaper.java
+++ b/guava/src/com/google/common/escape/ArrayBasedUnicodeEscaper.java
@@ -16,11 +16,8 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link UnicodeEscaper} that uses an array to quickly look up replacement characters for a given
@@ -41,8 +38,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ArrayBasedUnicodeEscaper extends UnicodeEscaper {
   // The replacement array (see ArrayBasedEscaperMap).
diff --git a/guava/src/com/google/common/escape/CharEscaper.java b/guava/src/com/google/common/escape/CharEscaper.java
index 55090f6..b0727a6 100644
--- a/guava/src/com/google/common/escape/CharEscaper.java
+++ b/guava/src/com/google/common/escape/CharEscaper.java
@@ -16,8 +16,6 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -40,8 +38,6 @@ import javax.annotation.CheckForNull;
  * @author Sven Mawson
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class CharEscaper extends Escaper {
   /** Constructor for use by subclasses. */
diff --git a/guava/src/com/google/common/escape/CharEscaperBuilder.java b/guava/src/com/google/common/escape/CharEscaperBuilder.java
index cbe6958..1d78c5f 100644
--- a/guava/src/com/google/common/escape/CharEscaperBuilder.java
+++ b/guava/src/com/google/common/escape/CharEscaperBuilder.java
@@ -16,14 +16,10 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Simple helper class to build a "sparse" array of objects based on the indexes that were added to
@@ -34,8 +30,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class CharEscaperBuilder {
   /**
@@ -43,7 +37,7 @@ public final class CharEscaperBuilder {
    * a very fast escape method.
    */
   private static class CharArrayDecorator extends CharEscaper {
-    private final char[] @Nullable [] replacements;
+    private final char[] [] replacements;
     private final int replaceLength;
 
     CharArrayDecorator(char[] @Nullable [] replacements) {
@@ -86,7 +80,6 @@ public final class CharEscaperBuilder {
   }
 
   /** Add a new mapping from an index to an object to the escaping. */
-  @CanIgnoreReturnValue
   public CharEscaperBuilder addEscape(char c, String r) {
     map.put(c, checkNotNull(r));
     if (c > max) {
@@ -96,7 +89,6 @@ public final class CharEscaperBuilder {
   }
 
   /** Add multiple mappings at once for a particular index. */
-  @CanIgnoreReturnValue
   public CharEscaperBuilder addEscapes(char[] cs, String r) {
     checkNotNull(r);
     for (char c : cs) {
@@ -112,7 +104,7 @@ public final class CharEscaperBuilder {
    *
    * @return a "sparse" array that holds the replacement mappings.
    */
-  public char[] @Nullable [] toArray() {
+  public char[] [] toArray() {
     char[][] result = new char[max + 1][];
     for (Entry<Character, String> entry : map.entrySet()) {
       result[entry.getKey()] = entry.getValue().toCharArray();
diff --git a/guava/src/com/google/common/escape/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/escape/ElementTypesAreNonnullByDefault.java
index 992c9a3..2b187ed 100644
--- a/guava/src/com/google/common/escape/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/escape/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/escape/Escaper.java b/guava/src/com/google/common/escape/Escaper.java
index cdfe4e9..944b3c4 100644
--- a/guava/src/com/google/common/escape/Escaper.java
+++ b/guava/src/com/google/common/escape/Escaper.java
@@ -14,9 +14,7 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * An object that converts literal text into a format safe for inclusion in a particular context
@@ -54,8 +52,6 @@ import com.google.errorprone.annotations.DoNotMock;
  * @author David Beaumont
  * @since 15.0
  */
-@DoNotMock("Use Escapers.nullEscaper() or another methods from the *Escapers classes")
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class Escaper {
   // TODO(dbeaumont): evaluate custom implementations, considering package private constructor.
diff --git a/guava/src/com/google/common/escape/Escapers.java b/guava/src/com/google/common/escape/Escapers.java
index 41af668..0b481a3 100644
--- a/guava/src/com/google/common/escape/Escapers.java
+++ b/guava/src/com/google/common/escape/Escapers.java
@@ -16,13 +16,9 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to {@link Escaper} instances.
@@ -31,8 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Escapers {
   private Escapers() {}
@@ -93,7 +87,6 @@ public final class Escapers {
    * @author David Beaumont
    * @since 15.0
    */
-  @Beta
   public static final class Builder {
     private final Map<Character, String> replacementMap = new HashMap<>();
     private char safeMin = Character.MIN_VALUE;
@@ -112,7 +105,6 @@ public final class Escapers {
      * @param safeMax the highest 'safe' character
      * @return the builder instance
      */
-    @CanIgnoreReturnValue
     public Builder setSafeRange(char safeMin, char safeMax) {
       this.safeMin = safeMin;
       this.safeMax = safeMax;
@@ -127,7 +119,6 @@ public final class Escapers {
      * @param unsafeReplacement the string to replace unsafe characters
      * @return the builder instance
      */
-    @CanIgnoreReturnValue
     public Builder setUnsafeReplacement(@Nullable String unsafeReplacement) {
       this.unsafeReplacement = unsafeReplacement;
       return this;
@@ -143,7 +134,6 @@ public final class Escapers {
      * @return the builder instance
      * @throws NullPointerException if {@code replacement} is null
      */
-    @CanIgnoreReturnValue
     public Builder addEscape(char c, String replacement) {
       checkNotNull(replacement);
       // This can replace an existing character (the builder is re-usable).
diff --git a/guava/src/com/google/common/escape/ParametricNullness.java b/guava/src/com/google/common/escape/ParametricNullness.java
index 2f03d59..4db3ffa 100644
--- a/guava/src/com/google/common/escape/ParametricNullness.java
+++ b/guava/src/com/google/common/escape/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/escape/Platform.java b/guava/src/com/google/common/escape/Platform.java
index dc6610c..9ad1799 100644
--- a/guava/src/com/google/common/escape/Platform.java
+++ b/guava/src/com/google/common/escape/Platform.java
@@ -14,14 +14,12 @@
 
 package com.google.common.escape;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Methods factored out so that they can be emulated differently in GWT.
  *
  * @author Jesse Wilson
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class Platform {
   private Platform() {}
diff --git a/guava/src/com/google/common/escape/UnicodeEscaper.java b/guava/src/com/google/common/escape/UnicodeEscaper.java
index c10ae34..f908cfb 100644
--- a/guava/src/com/google/common/escape/UnicodeEscaper.java
+++ b/guava/src/com/google/common/escape/UnicodeEscaper.java
@@ -16,8 +16,6 @@ package com.google.common.escape;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -50,8 +48,6 @@ import javax.annotation.CheckForNull;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public abstract class UnicodeEscaper extends Escaper {
   /** The amount of padding (chars) to use when growing the escape buffer. */
diff --git a/guava/src/com/google/common/escape/package-info.java b/guava/src/com/google/common/escape/package-info.java
index 8cd29e6..fa290a0 100644
--- a/guava/src/com/google/common/escape/package-info.java
+++ b/guava/src/com/google/common/escape/package-info.java
@@ -24,9 +24,7 @@
  * <p>This package is a part of the open-source <a href="http://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.escape;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/eventbus/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/eventbus/ElementTypesAreNonnullByDefault.java
index e8542bb..896651e 100644
--- a/guava/src/com/google/common/eventbus/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/eventbus/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/eventbus/ParametricNullness.java b/guava/src/com/google/common/eventbus/ParametricNullness.java
index fc5bb17..37e0e51 100644
--- a/guava/src/com/google/common/eventbus/ParametricNullness.java
+++ b/guava/src/com/google/common/eventbus/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/eventbus/Subscriber.java b/guava/src/com/google/common/eventbus/Subscriber.java
index 73e7f42..a94b98a 100644
--- a/guava/src/com/google/common/eventbus/Subscriber.java
+++ b/guava/src/com/google/common/eventbus/Subscriber.java
@@ -16,8 +16,6 @@ package com.google.common.eventbus;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.VisibleForTesting;
-import com.google.j2objc.annotations.Weak;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.concurrent.Executor;
@@ -43,10 +41,10 @@ class Subscriber {
   }
 
   /** The event bus this subscriber belongs to. */
-  @Weak private EventBus bus;
+  private EventBus bus;
 
   /** The object with the subscriber method. */
-  @VisibleForTesting final Object target;
+  final Object target;
 
   /** Subscriber method. */
   private final Method method;
@@ -82,7 +80,6 @@ class Subscriber {
    * Invokes the subscriber method. This method can be overridden to make the invocation
    * synchronized.
    */
-  @VisibleForTesting
   void invokeSubscriberMethod(Object event) throws InvocationTargetException {
     try {
       method.invoke(target, checkNotNull(event));
@@ -132,7 +129,6 @@ class Subscriber {
    * Subscriber that synchronizes invocations of a method to ensure that only one thread may enter
    * the method at a time.
    */
-  @VisibleForTesting
   static final class SynchronizedSubscriber extends Subscriber {
 
     private SynchronizedSubscriber(EventBus bus, Object target, Method method) {
diff --git a/guava/src/com/google/common/eventbus/SubscriberRegistry.java b/guava/src/com/google/common/eventbus/SubscriberRegistry.java
index 46e9820..d3e4477 100644
--- a/guava/src/com/google/common/eventbus/SubscriberRegistry.java
+++ b/guava/src/com/google/common/eventbus/SubscriberRegistry.java
@@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.throwIfUnchecked;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Throwables;
@@ -26,8 +25,6 @@ import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.HashMultimap;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -35,7 +32,6 @@ import com.google.common.collect.Multimap;
 import com.google.common.primitives.Primitives;
 import com.google.common.reflect.TypeToken;
 import com.google.common.util.concurrent.UncheckedExecutionException;
-import com.google.j2objc.annotations.Weak;
 import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collection;
@@ -66,7 +62,7 @@ final class SubscriberRegistry {
       Maps.newConcurrentMap();
 
   /** The event bus this registry belongs to. */
-  @Weak private final EventBus bus;
+  private final EventBus bus;
 
   SubscriberRegistry(EventBus bus) {
     this.bus = checkNotNull(bus);
@@ -115,7 +111,6 @@ final class SubscriberRegistry {
     }
   }
 
-  @VisibleForTesting
   Set<Subscriber> getSubscribersForTesting(Class<?> eventType) {
     return MoreObjects.firstNonNull(subscribers.get(eventType), ImmutableSet.<Subscriber>of());
   }
@@ -234,7 +229,6 @@ final class SubscriberRegistry {
    * Flattens a class's type hierarchy into a set of {@code Class} objects including all
    * superclasses (transitively) and all interfaces implemented by these superclasses.
    */
-  @VisibleForTesting
   static ImmutableSet<Class<?>> flattenHierarchy(Class<?> concreteClass) {
     try {
       return flattenHierarchyCache.getUnchecked(concreteClass);
diff --git a/guava/src/com/google/common/eventbus/package-info.java b/guava/src/com/google/common/eventbus/package-info.java
index fa7faa4..b5a538c 100644
--- a/guava/src/com/google/common/eventbus/package-info.java
+++ b/guava/src/com/google/common/eventbus/package-info.java
@@ -249,9 +249,7 @@
  * <p>Because subscriber methods on your listener classes are normal methods, you can simply call
  * them from your test code to simulate the EventBus.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.eventbus;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/graph/AbstractBaseGraph.java b/guava/src/com/google/common/graph/AbstractBaseGraph.java
index c4be6b6..c4de96e 100644
--- a/guava/src/com/google/common/graph/AbstractBaseGraph.java
+++ b/guava/src/com/google/common/graph/AbstractBaseGraph.java
@@ -22,7 +22,6 @@ import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.graph.GraphConstants.ENDPOINTS_MISMATCH;
 
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Sets;
 import com.google.common.collect.UnmodifiableIterator;
diff --git a/guava/src/com/google/common/graph/AbstractDirectedNetworkConnections.java b/guava/src/com/google/common/graph/AbstractDirectedNetworkConnections.java
index ac452d4..b6d3686 100644
--- a/guava/src/com/google/common/graph/AbstractDirectedNetworkConnections.java
+++ b/guava/src/com/google/common/graph/AbstractDirectedNetworkConnections.java
@@ -20,7 +20,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.graph.Graphs.checkNonNegative;
 import static com.google.common.graph.Graphs.checkPositive;
-import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Iterators;
diff --git a/guava/src/com/google/common/graph/AbstractGraph.java b/guava/src/com/google/common/graph/AbstractGraph.java
index 9402be5..56d1e62 100644
--- a/guava/src/com/google/common/graph/AbstractGraph.java
+++ b/guava/src/com/google/common/graph/AbstractGraph.java
@@ -16,7 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
 import javax.annotation.CheckForNull;
 
 /**
@@ -27,7 +26,6 @@ import javax.annotation.CheckForNull;
  * @param <N> Node parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractGraph<N> extends AbstractBaseGraph<N> implements Graph<N> {
 
diff --git a/guava/src/com/google/common/graph/AbstractNetwork.java b/guava/src/com/google/common/graph/AbstractNetwork.java
index d6bf4c3..e9b08ea 100644
--- a/guava/src/com/google/common/graph/AbstractNetwork.java
+++ b/guava/src/com/google/common/graph/AbstractNetwork.java
@@ -22,10 +22,8 @@ import static com.google.common.graph.GraphConstants.ENDPOINTS_MISMATCH;
 import static com.google.common.graph.GraphConstants.MULTIPLE_EDGES_CONNECTING;
 import static java.util.Collections.unmodifiableSet;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
@@ -49,7 +47,6 @@ import javax.annotation.CheckForNull;
  * @param <E> Edge parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractNetwork<N, E> implements Network<N, E> {
 
diff --git a/guava/src/com/google/common/graph/AbstractUndirectedNetworkConnections.java b/guava/src/com/google/common/graph/AbstractUndirectedNetworkConnections.java
index 8f736d7..cc4ad1c 100644
--- a/guava/src/com/google/common/graph/AbstractUndirectedNetworkConnections.java
+++ b/guava/src/com/google/common/graph/AbstractUndirectedNetworkConnections.java
@@ -18,7 +18,6 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
-import static java.util.Objects.requireNonNull;
 
 import java.util.Collections;
 import java.util.Map;
diff --git a/guava/src/com/google/common/graph/AbstractValueGraph.java b/guava/src/com/google/common/graph/AbstractValueGraph.java
index 5b8e520..b75754a 100644
--- a/guava/src/com/google/common/graph/AbstractValueGraph.java
+++ b/guava/src/com/google/common/graph/AbstractValueGraph.java
@@ -16,9 +16,7 @@
 
 package com.google.common.graph;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.collect.Maps;
 import java.util.Map;
@@ -38,7 +36,6 @@ import javax.annotation.CheckForNull;
  * @param <V> Value parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractValueGraph<N, V> extends AbstractBaseGraph<N>
     implements ValueGraph<N, V> {
diff --git a/guava/src/com/google/common/graph/DirectedGraphConnections.java b/guava/src/com/google/common/graph/DirectedGraphConnections.java
index 23083da..4adae06 100644
--- a/guava/src/com/google/common/graph/DirectedGraphConnections.java
+++ b/guava/src/com/google/common/graph/DirectedGraphConnections.java
@@ -26,7 +26,6 @@ import static com.google.common.graph.Graphs.checkPositive;
 
 import com.google.common.base.Function;
 import com.google.common.collect.AbstractIterator;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.UnmodifiableIterator;
 import java.util.AbstractSet;
diff --git a/guava/src/com/google/common/graph/DirectedMultiNetworkConnections.java b/guava/src/com/google/common/graph/DirectedMultiNetworkConnections.java
index 05f40c2..c309c8b 100644
--- a/guava/src/com/google/common/graph/DirectedMultiNetworkConnections.java
+++ b/guava/src/com/google/common/graph/DirectedMultiNetworkConnections.java
@@ -21,9 +21,7 @@ import static com.google.common.graph.GraphConstants.INNER_CAPACITY;
 import static com.google.common.graph.GraphConstants.INNER_LOAD_FACTOR;
 
 import com.google.common.collect.HashMultiset;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Multiset;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.lang.ref.Reference;
 import java.lang.ref.SoftReference;
 import java.util.Collections;
@@ -60,7 +58,7 @@ final class DirectedMultiNetworkConnections<N, E> extends AbstractDirectedNetwor
         ImmutableMap.copyOf(inEdges), ImmutableMap.copyOf(outEdges), selfLoopCount);
   }
 
-  @CheckForNull @LazyInit private transient Reference<Multiset<N>> predecessorsReference;
+  @CheckForNull private transient Reference<Multiset<N>> predecessorsReference;
 
   @Override
   public Set<N> predecessors() {
@@ -76,7 +74,7 @@ final class DirectedMultiNetworkConnections<N, E> extends AbstractDirectedNetwor
     return predecessors;
   }
 
-  @CheckForNull @LazyInit private transient Reference<Multiset<N>> successorsReference;
+  @CheckForNull private transient Reference<Multiset<N>> successorsReference;
 
   @Override
   public Set<N> successors() {
diff --git a/guava/src/com/google/common/graph/DirectedNetworkConnections.java b/guava/src/com/google/common/graph/DirectedNetworkConnections.java
index c2a25a5..57e2705 100644
--- a/guava/src/com/google/common/graph/DirectedNetworkConnections.java
+++ b/guava/src/com/google/common/graph/DirectedNetworkConnections.java
@@ -20,7 +20,6 @@ import static com.google.common.graph.GraphConstants.EXPECTED_DEGREE;
 
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
-import com.google.common.collect.ImmutableBiMap;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
diff --git a/guava/src/com/google/common/graph/EdgesConnecting.java b/guava/src/com/google/common/graph/EdgesConnecting.java
index 797970b..46c4d84 100644
--- a/guava/src/com/google/common/graph/EdgesConnecting.java
+++ b/guava/src/com/google/common/graph/EdgesConnecting.java
@@ -18,7 +18,6 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.UnmodifiableIterator;
 import java.util.AbstractSet;
diff --git a/guava/src/com/google/common/graph/ElementOrder.java b/guava/src/com/google/common/graph/ElementOrder.java
index ea13674..7b1da6c 100644
--- a/guava/src/com/google/common/graph/ElementOrder.java
+++ b/guava/src/com/google/common/graph/ElementOrder.java
@@ -19,13 +19,11 @@ package com.google.common.graph;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Objects;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
-import com.google.errorprone.annotations.Immutable;
 import java.util.Comparator;
 import java.util.Map;
 import javax.annotation.CheckForNull;
@@ -44,8 +42,6 @@ import javax.annotation.CheckForNull;
  * @author Joshua O'Madadhain
  * @since 20.0
  */
-@Beta
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class ElementOrder<T> {
   private final Type type;
diff --git a/guava/src/com/google/common/graph/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/graph/ElementTypesAreNonnullByDefault.java
index 0798de0..f4af581 100644
--- a/guava/src/com/google/common/graph/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/graph/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/graph/EndpointPair.java b/guava/src/com/google/common/graph/EndpointPair.java
index 7aa3860..967a576 100644
--- a/guava/src/com/google/common/graph/EndpointPair.java
+++ b/guava/src/com/google/common/graph/EndpointPair.java
@@ -19,11 +19,9 @@ package com.google.common.graph;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.graph.GraphConstants.NOT_AVAILABLE_ON_UNDIRECTED;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Objects;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.UnmodifiableIterator;
-import com.google.errorprone.annotations.Immutable;
 import javax.annotation.CheckForNull;
 
 /**
@@ -37,8 +35,6 @@ import javax.annotation.CheckForNull;
  * @author James Sexton
  * @since 20.0
  */
-@Beta
-@Immutable(containerOf = {"N"})
 @ElementTypesAreNonnullByDefault
 public abstract class EndpointPair<N> implements Iterable<N> {
   private final N nodeU;
diff --git a/guava/src/com/google/common/graph/EndpointPairIterator.java b/guava/src/com/google/common/graph/EndpointPairIterator.java
index 7096dbe..dc7f51f 100644
--- a/guava/src/com/google/common/graph/EndpointPairIterator.java
+++ b/guava/src/com/google/common/graph/EndpointPairIterator.java
@@ -17,15 +17,12 @@
 package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkState;
-import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.AbstractIterator;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import java.util.Iterator;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A class to facilitate the set returned by {@link Graph#edges()}.
@@ -117,7 +114,7 @@ abstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>>
    */
   private static final class Undirected<N> extends EndpointPairIterator<N> {
     // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.
-    @CheckForNull private Set<@Nullable N> visitedNodes;
+    @CheckForNull private Set<N> visitedNodes;
 
     private Undirected(BaseGraph<N> graph) {
       super(graph);
diff --git a/guava/src/com/google/common/graph/Graph.java b/guava/src/com/google/common/graph/Graph.java
index 5dc0e71..3099b13 100644
--- a/guava/src/com/google/common/graph/Graph.java
+++ b/guava/src/com/google/common/graph/Graph.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Collection;
 import java.util.Set;
 import javax.annotation.CheckForNull;
@@ -101,8 +99,6 @@ import javax.annotation.CheckForNull;
  * @param <N> Node parameter type
  * @since 20.0
  */
-@Beta
-@DoNotMock("Use GraphBuilder to create a real instance")
 @ElementTypesAreNonnullByDefault
 public interface Graph<N> extends BaseGraph<N> {
   //
diff --git a/guava/src/com/google/common/graph/GraphBuilder.java b/guava/src/com/google/common/graph/GraphBuilder.java
index d57ed37..2b473fb 100644
--- a/guava/src/com/google/common/graph/GraphBuilder.java
+++ b/guava/src/com/google/common/graph/GraphBuilder.java
@@ -20,9 +20,7 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.graph.Graphs.checkNonNegative;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * A builder for constructing instances of {@link MutableGraph} or {@link ImmutableGraph} with
@@ -62,8 +60,6 @@ import com.google.errorprone.annotations.DoNotMock;
  *     constructed based on an existing {@code Graph} using {@link #from(Graph)}.
  * @since 20.0
  */
-@Beta
-@DoNotMock
 @ElementTypesAreNonnullByDefault
 public final class GraphBuilder<N> extends AbstractGraphBuilder<N> {
 
diff --git a/guava/src/com/google/common/graph/GraphConnections.java b/guava/src/com/google/common/graph/GraphConnections.java
index 7d4f8f0..be31de2 100644
--- a/guava/src/com/google/common/graph/GraphConnections.java
+++ b/guava/src/com/google/common/graph/GraphConnections.java
@@ -16,7 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Iterator;
 import java.util.Set;
 import javax.annotation.CheckForNull;
@@ -59,7 +58,6 @@ interface GraphConnections<N, V> {
    * Remove {@code node} from the set of successors. Returns the value previously associated with
    * the edge connecting the two nodes.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V removeSuccessor(N node);
 
@@ -74,7 +72,6 @@ interface GraphConnections<N, V> {
    * becomes a predecessor. Associates {@code value} with the edge connecting the two nodes. Returns
    * the value previously associated with the edge connecting the two nodes.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V addSuccessor(N node, V value);
 }
diff --git a/guava/src/com/google/common/graph/Graphs.java b/guava/src/com/google/common/graph/Graphs.java
index 6ab9f56..b7dd295 100644
--- a/guava/src/com/google/common/graph/Graphs.java
+++ b/guava/src/com/google/common/graph/Graphs.java
@@ -18,16 +18,12 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.graph.GraphConstants.NODE_NOT_IN_GRAPH;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Maps;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -43,7 +39,6 @@ import javax.annotation.CheckForNull;
  * @author Joshua O'Madadhain
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class Graphs {
 
@@ -610,25 +605,21 @@ public final class Graphs {
     return copy;
   }
 
-  @CanIgnoreReturnValue
   static int checkNonNegative(int value) {
     checkArgument(value >= 0, "Not true that %s is non-negative.", value);
     return value;
   }
 
-  @CanIgnoreReturnValue
   static long checkNonNegative(long value) {
     checkArgument(value >= 0, "Not true that %s is non-negative.", value);
     return value;
   }
 
-  @CanIgnoreReturnValue
   static int checkPositive(int value) {
     checkArgument(value > 0, "Not true that %s is positive.", value);
     return value;
   }
 
-  @CanIgnoreReturnValue
   static long checkPositive(long value) {
     checkArgument(value > 0, "Not true that %s is positive.", value);
     return value;
diff --git a/guava/src/com/google/common/graph/ImmutableGraph.java b/guava/src/com/google/common/graph/ImmutableGraph.java
index afad211..06bf280 100644
--- a/guava/src/com/google/common/graph/ImmutableGraph.java
+++ b/guava/src/com/google/common/graph/ImmutableGraph.java
@@ -18,14 +18,10 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import com.google.common.graph.GraphConstants.Presence;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.Immutable;
 
 /**
  * A {@link Graph} whose elements and structural relationships will never change. Instances of this
@@ -43,8 +39,6 @@ import com.google.errorprone.annotations.Immutable;
  * @param <N> Node parameter type
  * @since 20.0
  */
-@Beta
-@Immutable(containerOf = {"N"})
 @ElementTypesAreNonnullByDefault
 public class ImmutableGraph<N> extends ForwardingGraph<N> {
   @SuppressWarnings("Immutable") // The backing graph must be immutable.
@@ -143,7 +137,6 @@ public class ImmutableGraph<N> extends ForwardingGraph<N> {
      *
      * @return this {@code Builder} object
      */
-    @CanIgnoreReturnValue
     public Builder<N> addNode(N node) {
       mutableGraph.addNode(node);
       return this;
@@ -162,7 +155,6 @@ public class ImmutableGraph<N> extends ForwardingGraph<N> {
      * @throws IllegalArgumentException if the introduction of the edge would violate {@link
      *     #allowsSelfLoops()}
      */
-    @CanIgnoreReturnValue
     public Builder<N> putEdge(N nodeU, N nodeV) {
       mutableGraph.putEdge(nodeU, nodeV);
       return this;
@@ -185,7 +177,6 @@ public class ImmutableGraph<N> extends ForwardingGraph<N> {
      *     #allowsSelfLoops()}
      * @throws IllegalArgumentException if the endpoints are unordered and the graph is directed
      */
-    @CanIgnoreReturnValue
     public Builder<N> putEdge(EndpointPair<N> endpoints) {
       mutableGraph.putEdge(endpoints);
       return this;
diff --git a/guava/src/com/google/common/graph/ImmutableNetwork.java b/guava/src/com/google/common/graph/ImmutableNetwork.java
index cb636aa..18e2697 100644
--- a/guava/src/com/google/common/graph/ImmutableNetwork.java
+++ b/guava/src/com/google/common/graph/ImmutableNetwork.java
@@ -18,12 +18,8 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.Immutable;
 import java.util.Map;
 
 /**
@@ -43,8 +39,6 @@ import java.util.Map;
  * @param <E> Edge parameter type
  * @since 20.0
  */
-@Beta
-@Immutable(containerOf = {"N", "E"})
 @SuppressWarnings("Immutable") // Extends StandardNetwork but uses ImmutableMaps.
 @ElementTypesAreNonnullByDefault
 public final class ImmutableNetwork<N, E> extends StandardNetwork<N, E> {
@@ -180,7 +174,6 @@ public final class ImmutableNetwork<N, E> extends StandardNetwork<N, E> {
      *
      * @return this {@code Builder} object
      */
-    @CanIgnoreReturnValue
     public ImmutableNetwork.Builder<N, E> addNode(N node) {
       mutableNetwork.addNode(node);
       return this;
@@ -207,7 +200,6 @@ public final class ImmutableNetwork<N, E> extends StandardNetwork<N, E> {
      * @throws IllegalArgumentException if the introduction of the edge would violate {@link
      *     #allowsParallelEdges()} or {@link #allowsSelfLoops()}
      */
-    @CanIgnoreReturnValue
     public ImmutableNetwork.Builder<N, E> addEdge(N nodeU, N nodeV, E edge) {
       mutableNetwork.addEdge(nodeU, nodeV, edge);
       return this;
@@ -238,7 +230,6 @@ public final class ImmutableNetwork<N, E> extends StandardNetwork<N, E> {
      *     #allowsParallelEdges()} or {@link #allowsSelfLoops()}
      * @throws IllegalArgumentException if the endpoints are unordered and the network is directed
      */
-    @CanIgnoreReturnValue
     public ImmutableNetwork.Builder<N, E> addEdge(EndpointPair<N> endpoints, E edge) {
       mutableNetwork.addEdge(endpoints, edge);
       return this;
diff --git a/guava/src/com/google/common/graph/ImmutableValueGraph.java b/guava/src/com/google/common/graph/ImmutableValueGraph.java
index a1567da..a95d760 100644
--- a/guava/src/com/google/common/graph/ImmutableValueGraph.java
+++ b/guava/src/com/google/common/graph/ImmutableValueGraph.java
@@ -17,14 +17,9 @@
 package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.Immutable;
 
 /**
  * A {@link ValueGraph} whose elements and structural relationships will never change. Instances of
@@ -41,8 +36,6 @@ import com.google.errorprone.annotations.Immutable;
  * @param <V> Value parameter type
  * @since 20.0
  */
-@Beta
-@Immutable(containerOf = {"N", "V"})
 @SuppressWarnings("Immutable") // Extends StandardValueGraph but uses ImmutableMaps.
 @ElementTypesAreNonnullByDefault
 public final class ImmutableValueGraph<N, V> extends StandardValueGraph<N, V> {
@@ -146,7 +139,6 @@ public final class ImmutableValueGraph<N, V> extends StandardValueGraph<N, V> {
      *
      * @return this {@code Builder} object
      */
-    @CanIgnoreReturnValue
     public ImmutableValueGraph.Builder<N, V> addNode(N node) {
       mutableValueGraph.addNode(node);
       return this;
@@ -168,7 +160,6 @@ public final class ImmutableValueGraph<N, V> extends StandardValueGraph<N, V> {
      * @throws IllegalArgumentException if the introduction of the edge would violate {@link
      *     #allowsSelfLoops()}
      */
-    @CanIgnoreReturnValue
     public ImmutableValueGraph.Builder<N, V> putEdgeValue(N nodeU, N nodeV, V value) {
       mutableValueGraph.putEdgeValue(nodeU, nodeV, value);
       return this;
@@ -193,7 +184,6 @@ public final class ImmutableValueGraph<N, V> extends StandardValueGraph<N, V> {
      *     #allowsSelfLoops()}
      * @throws IllegalArgumentException if the endpoints are unordered and the graph is directed
      */
-    @CanIgnoreReturnValue
     public ImmutableValueGraph.Builder<N, V> putEdgeValue(EndpointPair<N> endpoints, V value) {
       mutableValueGraph.putEdgeValue(endpoints, value);
       return this;
diff --git a/guava/src/com/google/common/graph/MapIteratorCache.java b/guava/src/com/google/common/graph/MapIteratorCache.java
index aae9187..8681876 100644
--- a/guava/src/com/google/common/graph/MapIteratorCache.java
+++ b/guava/src/com/google/common/graph/MapIteratorCache.java
@@ -19,7 +19,6 @@ package com.google.common.graph;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import com.google.common.collect.UnmodifiableIterator;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.AbstractSet;
 import java.util.Iterator;
 import java.util.Map;
@@ -60,7 +59,6 @@ class MapIteratorCache<K, V> {
     this.backingMap = checkNotNull(backingMap);
   }
 
-  @CanIgnoreReturnValue
   @CheckForNull
   final V put(K key, V value) {
     checkNotNull(key);
@@ -69,7 +67,6 @@ class MapIteratorCache<K, V> {
     return backingMap.put(key, value);
   }
 
-  @CanIgnoreReturnValue
   @CheckForNull
   final V remove(Object key) {
     checkNotNull(key);
diff --git a/guava/src/com/google/common/graph/MutableGraph.java b/guava/src/com/google/common/graph/MutableGraph.java
index b1f3359..d0a5454 100644
--- a/guava/src/com/google/common/graph/MutableGraph.java
+++ b/guava/src/com/google/common/graph/MutableGraph.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 
 /**
  * A subinterface of {@link Graph} which adds mutation methods. When mutation is not required, users
@@ -28,7 +26,6 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue;
  * @param <N> Node parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public interface MutableGraph<N> extends Graph<N> {
 
@@ -39,7 +36,6 @@ public interface MutableGraph<N> extends Graph<N> {
    *
    * @return {@code true} if the graph was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean addNode(N node);
 
   /**
@@ -55,7 +51,6 @@ public interface MutableGraph<N> extends Graph<N> {
    * @throws IllegalArgumentException if the introduction of the edge would violate {@link
    *     #allowsSelfLoops()}
    */
-  @CanIgnoreReturnValue
   boolean putEdge(N nodeU, N nodeV);
 
   /**
@@ -76,7 +71,6 @@ public interface MutableGraph<N> extends Graph<N> {
    * @throws IllegalArgumentException if the endpoints are unordered and the graph is directed
    * @since 27.1
    */
-  @CanIgnoreReturnValue
   boolean putEdge(EndpointPair<N> endpoints);
 
   /**
@@ -84,7 +78,6 @@ public interface MutableGraph<N> extends Graph<N> {
    *
    * @return {@code true} if the graph was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean removeNode(N node);
 
   /**
@@ -92,7 +85,6 @@ public interface MutableGraph<N> extends Graph<N> {
    *
    * @return {@code true} if the graph was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean removeEdge(N nodeU, N nodeV);
 
   /**
@@ -104,6 +96,5 @@ public interface MutableGraph<N> extends Graph<N> {
    * @return {@code true} if the graph was modified as a result of this call
    * @since 27.1
    */
-  @CanIgnoreReturnValue
   boolean removeEdge(EndpointPair<N> endpoints);
 }
diff --git a/guava/src/com/google/common/graph/MutableNetwork.java b/guava/src/com/google/common/graph/MutableNetwork.java
index 64acb13..4c31c20 100644
--- a/guava/src/com/google/common/graph/MutableNetwork.java
+++ b/guava/src/com/google/common/graph/MutableNetwork.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 
 /**
  * A subinterface of {@link Network} which adds mutation methods. When mutation is not required,
@@ -29,7 +27,6 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue;
  * @param <E> Edge parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public interface MutableNetwork<N, E> extends Network<N, E> {
 
@@ -40,7 +37,6 @@ public interface MutableNetwork<N, E> extends Network<N, E> {
    *
    * @return {@code true} if the network was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean addNode(N node);
 
   /**
@@ -64,7 +60,6 @@ public interface MutableNetwork<N, E> extends Network<N, E> {
    * @throws IllegalArgumentException if the introduction of the edge would violate {@link
    *     #allowsParallelEdges()} or {@link #allowsSelfLoops()}
    */
-  @CanIgnoreReturnValue
   boolean addEdge(N nodeU, N nodeV, E edge);
 
   /**
@@ -93,7 +88,6 @@ public interface MutableNetwork<N, E> extends Network<N, E> {
    * @throws IllegalArgumentException if the endpoints are unordered and the graph is directed
    * @since 27.1
    */
-  @CanIgnoreReturnValue
   boolean addEdge(EndpointPair<N> endpoints, E edge);
 
   /**
@@ -101,7 +95,6 @@ public interface MutableNetwork<N, E> extends Network<N, E> {
    *
    * @return {@code true} if the network was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean removeNode(N node);
 
   /**
@@ -109,6 +102,5 @@ public interface MutableNetwork<N, E> extends Network<N, E> {
    *
    * @return {@code true} if the network was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean removeEdge(E edge);
 }
diff --git a/guava/src/com/google/common/graph/MutableValueGraph.java b/guava/src/com/google/common/graph/MutableValueGraph.java
index f32d2ee..32f01ff 100644
--- a/guava/src/com/google/common/graph/MutableValueGraph.java
+++ b/guava/src/com/google/common/graph/MutableValueGraph.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
 
 /**
@@ -29,7 +27,6 @@ import javax.annotation.CheckForNull;
  * @param <V> Value parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
 
@@ -40,7 +37,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    *
    * @return {@code true} if the graph was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean addNode(N node);
 
   /**
@@ -60,7 +56,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    * @throws IllegalArgumentException if the introduction of the edge would violate {@link
    *     #allowsSelfLoops()}
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V putEdgeValue(N nodeU, N nodeV, V value);
 
@@ -85,7 +80,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    * @throws IllegalArgumentException if the endpoints are unordered and the graph is directed
    * @since 27.1
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V putEdgeValue(EndpointPair<N> endpoints, V value);
 
@@ -94,7 +88,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    *
    * @return {@code true} if the graph was modified as a result of this call
    */
-  @CanIgnoreReturnValue
   boolean removeNode(N node);
 
   /**
@@ -103,7 +96,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    * @return the value previously associated with the edge connecting {@code nodeU} to {@code
    *     nodeV}, or null if there was no such edge.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V removeEdge(N nodeU, N nodeV);
 
@@ -116,7 +108,6 @@ public interface MutableValueGraph<N, V> extends ValueGraph<N, V> {
    *     there was no such edge.
    * @since 27.1
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   V removeEdge(EndpointPair<N> endpoints);
 }
diff --git a/guava/src/com/google/common/graph/Network.java b/guava/src/com/google/common/graph/Network.java
index c700d33..a0f2267 100644
--- a/guava/src/com/google/common/graph/Network.java
+++ b/guava/src/com/google/common/graph/Network.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Optional;
 import java.util.Set;
 import javax.annotation.CheckForNull;
@@ -102,8 +100,6 @@ import javax.annotation.CheckForNull;
  * @param <E> Edge parameter type
  * @since 20.0
  */
-@Beta
-@DoNotMock("Use NetworkBuilder to create a real instance")
 @ElementTypesAreNonnullByDefault
 public interface Network<N, E> extends SuccessorsFunction<N>, PredecessorsFunction<N> {
   //
diff --git a/guava/src/com/google/common/graph/NetworkBuilder.java b/guava/src/com/google/common/graph/NetworkBuilder.java
index 9689444..2962c55 100644
--- a/guava/src/com/google/common/graph/NetworkBuilder.java
+++ b/guava/src/com/google/common/graph/NetworkBuilder.java
@@ -19,7 +19,6 @@ package com.google.common.graph;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.graph.Graphs.checkNonNegative;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
 
 /**
@@ -66,7 +65,6 @@ import com.google.common.base.Optional;
  *     constructed based on an existing {@code Network} using {@link #from(Network)}.
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class NetworkBuilder<N, E> extends AbstractGraphBuilder<N> {
   boolean allowsParallelEdges = false;
diff --git a/guava/src/com/google/common/graph/NetworkConnections.java b/guava/src/com/google/common/graph/NetworkConnections.java
index 94d1780..2d2833f 100644
--- a/guava/src/com/google/common/graph/NetworkConnections.java
+++ b/guava/src/com/google/common/graph/NetworkConnections.java
@@ -16,7 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Set;
 import javax.annotation.CheckForNull;
 
@@ -61,12 +60,10 @@ interface NetworkConnections<N, E> {
    *
    * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.
    */
-  @CanIgnoreReturnValue
   @CheckForNull
   N removeInEdge(E edge, boolean isSelfLoop);
 
   /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */
-  @CanIgnoreReturnValue
   N removeOutEdge(E edge);
 
   /**
diff --git a/guava/src/com/google/common/graph/ParametricNullness.java b/guava/src/com/google/common/graph/ParametricNullness.java
index 62534eb..3cb5a25 100644
--- a/guava/src/com/google/common/graph/ParametricNullness.java
+++ b/guava/src/com/google/common/graph/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/graph/PredecessorsFunction.java b/guava/src/com/google/common/graph/PredecessorsFunction.java
index 750a8ac..52a1036 100644
--- a/guava/src/com/google/common/graph/PredecessorsFunction.java
+++ b/guava/src/com/google/common/graph/PredecessorsFunction.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * A functional interface for <a
@@ -78,8 +76,6 @@ import com.google.errorprone.annotations.DoNotMock;
  * @param <N> Node parameter type
  * @since 23.0
  */
-@Beta
-@DoNotMock("Implement with a lambda, or use GraphBuilder to build a Graph with the desired edges")
 @ElementTypesAreNonnullByDefault
 public interface PredecessorsFunction<N> {
 
diff --git a/guava/src/com/google/common/graph/StandardMutableNetwork.java b/guava/src/com/google/common/graph/StandardMutableNetwork.java
index c58b6d3..40222e3 100644
--- a/guava/src/com/google/common/graph/StandardMutableNetwork.java
+++ b/guava/src/com/google/common/graph/StandardMutableNetwork.java
@@ -22,10 +22,7 @@ import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.graph.GraphConstants.PARALLEL_EDGES_NOT_ALLOWED;
 import static com.google.common.graph.GraphConstants.REUSING_EDGE;
 import static com.google.common.graph.GraphConstants.SELF_LOOPS_NOT_ALLOWED;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.collect.ImmutableList;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 
 /**
  * Standard implementation of {@link MutableNetwork} that supports both directed and undirected
@@ -50,7 +47,6 @@ final class StandardMutableNetwork<N, E> extends StandardNetwork<N, E>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean addNode(N node) {
     checkNotNull(node, "node");
 
@@ -67,7 +63,6 @@ final class StandardMutableNetwork<N, E> extends StandardNetwork<N, E>
    *
    * @throws IllegalStateException if {@code node} is already present
    */
-  @CanIgnoreReturnValue
   private NetworkConnections<N, E> addNodeInternal(N node) {
     NetworkConnections<N, E> connections = newConnections();
     checkState(nodeConnections.put(node, connections) == null);
@@ -75,7 +70,6 @@ final class StandardMutableNetwork<N, E> extends StandardNetwork<N, E>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean addEdge(N nodeU, N nodeV, E edge) {
     checkNotNull(nodeU, "nodeU");
     checkNotNull(nodeV, "nodeV");
@@ -119,14 +113,12 @@ final class StandardMutableNetwork<N, E> extends StandardNetwork<N, E>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean addEdge(EndpointPair<N> endpoints, E edge) {
     validateEndpoints(endpoints);
     return addEdge(endpoints.nodeU(), endpoints.nodeV(), edge);
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean removeNode(N node) {
     checkNotNull(node, "node");
 
@@ -145,7 +137,6 @@ final class StandardMutableNetwork<N, E> extends StandardNetwork<N, E>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean removeEdge(E edge) {
     checkNotNull(edge, "edge");
 
diff --git a/guava/src/com/google/common/graph/StandardMutableValueGraph.java b/guava/src/com/google/common/graph/StandardMutableValueGraph.java
index 0ea641a..464a59f 100644
--- a/guava/src/com/google/common/graph/StandardMutableValueGraph.java
+++ b/guava/src/com/google/common/graph/StandardMutableValueGraph.java
@@ -22,9 +22,7 @@ import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.graph.GraphConstants.SELF_LOOPS_NOT_ALLOWED;
 import static com.google.common.graph.Graphs.checkNonNegative;
 import static com.google.common.graph.Graphs.checkPositive;
-import static java.util.Objects.requireNonNull;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import javax.annotation.CheckForNull;
 
 /**
@@ -58,7 +56,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean addNode(N node) {
     checkNotNull(node, "node");
 
@@ -75,7 +72,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
    *
    * @throws IllegalStateException if {@code node} is already present
    */
-  @CanIgnoreReturnValue
   private GraphConnections<N, V> addNodeInternal(N node) {
     GraphConnections<N, V> connections = newConnections();
     checkState(nodeConnections.put(node, connections) == null);
@@ -83,7 +79,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public V putEdgeValue(N nodeU, N nodeV, V value) {
     checkNotNull(nodeU, "nodeU");
@@ -111,7 +106,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public V putEdgeValue(EndpointPair<N> endpoints, V value) {
     validateEndpoints(endpoints);
@@ -119,7 +113,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   public boolean removeNode(N node) {
     checkNotNull(node, "node");
 
@@ -156,7 +149,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public V removeEdge(N nodeU, N nodeV) {
     checkNotNull(nodeU, "nodeU");
@@ -177,7 +169,6 @@ final class StandardMutableValueGraph<N, V> extends StandardValueGraph<N, V>
   }
 
   @Override
-  @CanIgnoreReturnValue
   @CheckForNull
   public V removeEdge(EndpointPair<N> endpoints) {
     validateEndpoints(endpoints);
diff --git a/guava/src/com/google/common/graph/StandardNetwork.java b/guava/src/com/google/common/graph/StandardNetwork.java
index 2aa103f..9be4e54 100644
--- a/guava/src/com/google/common/graph/StandardNetwork.java
+++ b/guava/src/com/google/common/graph/StandardNetwork.java
@@ -22,9 +22,7 @@ import static com.google.common.graph.GraphConstants.DEFAULT_EDGE_COUNT;
 import static com.google.common.graph.GraphConstants.DEFAULT_NODE_COUNT;
 import static com.google.common.graph.GraphConstants.EDGE_NOT_IN_GRAPH;
 import static com.google.common.graph.GraphConstants.NODE_NOT_IN_GRAPH;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.collect.ImmutableSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
diff --git a/guava/src/com/google/common/graph/SuccessorsFunction.java b/guava/src/com/google/common/graph/SuccessorsFunction.java
index c29bb4b..2725649 100644
--- a/guava/src/com/google/common/graph/SuccessorsFunction.java
+++ b/guava/src/com/google/common/graph/SuccessorsFunction.java
@@ -16,8 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
 
 /**
  * A functional interface for <a
@@ -78,8 +76,6 @@ import com.google.errorprone.annotations.DoNotMock;
  * @param <N> Node parameter type
  * @since 23.0
  */
-@Beta
-@DoNotMock("Implement with a lambda, or use GraphBuilder to build a Graph with the desired edges")
 @ElementTypesAreNonnullByDefault
 public interface SuccessorsFunction<N> {
 
diff --git a/guava/src/com/google/common/graph/Traverser.java b/guava/src/com/google/common/graph/Traverser.java
index 5a36f9f..45caf66 100644
--- a/guava/src/com/google/common/graph/Traverser.java
+++ b/guava/src/com/google/common/graph/Traverser.java
@@ -18,12 +18,8 @@ package com.google.common.graph;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.collect.AbstractIterator;
-import com.google.common.collect.ImmutableSet;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.ArrayDeque;
 import java.util.Deque;
 import java.util.HashSet;
@@ -60,10 +56,6 @@ import javax.annotation.CheckForNull;
  * @param <N> Node parameter type
  * @since 23.1
  */
-@Beta
-@DoNotMock(
-    "Call forGraph or forTree, passing a lambda or a Graph with the desired edges (built with"
-        + " GraphBuilder)")
 @ElementTypesAreNonnullByDefault
 public abstract class Traverser<N> {
   private final SuccessorsFunction<N> successorFunction;
diff --git a/guava/src/com/google/common/graph/UndirectedGraphConnections.java b/guava/src/com/google/common/graph/UndirectedGraphConnections.java
index 085e3a7..ed50c6a 100644
--- a/guava/src/com/google/common/graph/UndirectedGraphConnections.java
+++ b/guava/src/com/google/common/graph/UndirectedGraphConnections.java
@@ -21,7 +21,6 @@ import static com.google.common.graph.GraphConstants.INNER_CAPACITY;
 import static com.google.common.graph.GraphConstants.INNER_LOAD_FACTOR;
 
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterators;
 import java.util.Collections;
 import java.util.HashMap;
diff --git a/guava/src/com/google/common/graph/UndirectedMultiNetworkConnections.java b/guava/src/com/google/common/graph/UndirectedMultiNetworkConnections.java
index a5c45ca..f92a354 100644
--- a/guava/src/com/google/common/graph/UndirectedMultiNetworkConnections.java
+++ b/guava/src/com/google/common/graph/UndirectedMultiNetworkConnections.java
@@ -21,9 +21,7 @@ import static com.google.common.graph.GraphConstants.INNER_CAPACITY;
 import static com.google.common.graph.GraphConstants.INNER_LOAD_FACTOR;
 
 import com.google.common.collect.HashMultiset;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Multiset;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.lang.ref.Reference;
 import java.lang.ref.SoftReference;
 import java.util.Collections;
@@ -56,7 +54,7 @@ final class UndirectedMultiNetworkConnections<N, E>
     return new UndirectedMultiNetworkConnections<>(ImmutableMap.copyOf(incidentEdges));
   }
 
-  @CheckForNull @LazyInit private transient Reference<Multiset<N>> adjacentNodesReference;
+  @CheckForNull private transient Reference<Multiset<N>> adjacentNodesReference;
 
   @Override
   public Set<N> adjacentNodes() {
diff --git a/guava/src/com/google/common/graph/UndirectedNetworkConnections.java b/guava/src/com/google/common/graph/UndirectedNetworkConnections.java
index 38cb763..293d559 100644
--- a/guava/src/com/google/common/graph/UndirectedNetworkConnections.java
+++ b/guava/src/com/google/common/graph/UndirectedNetworkConnections.java
@@ -20,7 +20,6 @@ import static com.google.common.graph.GraphConstants.EXPECTED_DEGREE;
 
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
-import com.google.common.collect.ImmutableBiMap;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
diff --git a/guava/src/com/google/common/graph/ValueGraph.java b/guava/src/com/google/common/graph/ValueGraph.java
index a13e87e..0696b27 100644
--- a/guava/src/com/google/common/graph/ValueGraph.java
+++ b/guava/src/com/google/common/graph/ValueGraph.java
@@ -16,7 +16,6 @@
 
 package com.google.common.graph;
 
-import com.google.common.annotations.Beta;
 import java.util.Collection;
 import java.util.Optional;
 import java.util.Set;
@@ -107,7 +106,6 @@ import javax.annotation.CheckForNull;
  * @param <V> Value parameter type
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public interface ValueGraph<N, V> extends BaseGraph<N> {
   //
diff --git a/guava/src/com/google/common/graph/ValueGraphBuilder.java b/guava/src/com/google/common/graph/ValueGraphBuilder.java
index ce146c3..b0f3373 100644
--- a/guava/src/com/google/common/graph/ValueGraphBuilder.java
+++ b/guava/src/com/google/common/graph/ValueGraphBuilder.java
@@ -20,7 +20,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.graph.Graphs.checkNonNegative;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
 
 /**
@@ -65,7 +64,6 @@ import com.google.common.base.Optional;
  *     #from(ValueGraph)}.
  * @since 20.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class ValueGraphBuilder<N, V> extends AbstractGraphBuilder<N> {
 
diff --git a/guava/src/com/google/common/graph/package-info.java b/guava/src/com/google/common/graph/package-info.java
index 32d8b01..b3ccd2f 100644
--- a/guava/src/com/google/common/graph/package-info.java
+++ b/guava/src/com/google/common/graph/package-info.java
@@ -21,9 +21,7 @@
  * <p>This package is a part of the open-source <a href="https://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.graph;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/hash/AbstractByteHasher.java b/guava/src/com/google/common/hash/AbstractByteHasher.java
index 9f7e041..75be6da 100644
--- a/guava/src/com/google/common/hash/AbstractByteHasher.java
+++ b/guava/src/com/google/common/hash/AbstractByteHasher.java
@@ -21,7 +21,6 @@ import com.google.common.primitives.Chars;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.Longs;
 import com.google.common.primitives.Shorts;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 
@@ -31,7 +30,6 @@ import java.nio.ByteOrder;
  *
  * @author Colin Decker
  */
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 abstract class AbstractByteHasher extends AbstractHasher {
   private final ByteBuffer scratch = ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN);
diff --git a/guava/src/com/google/common/hash/AbstractCompositeHashFunction.java b/guava/src/com/google/common/hash/AbstractCompositeHashFunction.java
index 4b69bb7..855b492 100644
--- a/guava/src/com/google/common/hash/AbstractCompositeHashFunction.java
+++ b/guava/src/com/google/common/hash/AbstractCompositeHashFunction.java
@@ -17,10 +17,8 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.errorprone.annotations.Immutable;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An abstract composition of multiple hash functions. {@linkplain #newHasher()} delegates to the
@@ -29,7 +27,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Dimitris Andreou
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 abstract class AbstractCompositeHashFunction extends AbstractHashFunction {
 
@@ -179,7 +176,7 @@ abstract class AbstractCompositeHashFunction extends AbstractHashFunction {
       }
 
       @Override
-      public <T extends @Nullable Object> Hasher putObject(
+      public <T extends Object> Hasher putObject(
           @ParametricNullness T instance, Funnel<? super T> funnel) {
         for (Hasher hasher : hashers) {
           hasher.putObject(instance, funnel);
diff --git a/guava/src/com/google/common/hash/AbstractHashFunction.java b/guava/src/com/google/common/hash/AbstractHashFunction.java
index 7308556..d797358 100644
--- a/guava/src/com/google/common/hash/AbstractHashFunction.java
+++ b/guava/src/com/google/common/hash/AbstractHashFunction.java
@@ -17,21 +17,18 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.errorprone.annotations.Immutable;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Skeleton implementation of {@link HashFunction} in terms of {@link #newHasher()}.
  *
  * <p>TODO(lowasser): make public
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 abstract class AbstractHashFunction implements HashFunction {
   @Override
-  public <T extends @Nullable Object> HashCode hashObject(
+  public <T extends Object> HashCode hashObject(
       @ParametricNullness T instance, Funnel<? super T> funnel) {
     return newHasher().putObject(instance, funnel).hash();
   }
diff --git a/guava/src/com/google/common/hash/AbstractHasher.java b/guava/src/com/google/common/hash/AbstractHasher.java
index c72e05b..981efc2 100644
--- a/guava/src/com/google/common/hash/AbstractHasher.java
+++ b/guava/src/com/google/common/hash/AbstractHasher.java
@@ -15,10 +15,8 @@
 package com.google.common.hash;
 
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An abstract implementation of {@link Hasher}, which only requires subtypes to implement {@link
@@ -26,7 +24,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Dimitris Andreou
  */
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 abstract class AbstractHasher implements Hasher {
   @Override
@@ -116,7 +113,7 @@ abstract class AbstractHasher implements Hasher {
   }
 
   @Override
-  public <T extends @Nullable Object> Hasher putObject(
+  public <T extends Object> Hasher putObject(
       @ParametricNullness T instance, Funnel<? super T> funnel) {
     funnel.funnel(instance, this);
     return this;
diff --git a/guava/src/com/google/common/hash/AbstractNonStreamingHashFunction.java b/guava/src/com/google/common/hash/AbstractNonStreamingHashFunction.java
index 4969e35..e606ddc 100644
--- a/guava/src/com/google/common/hash/AbstractNonStreamingHashFunction.java
+++ b/guava/src/com/google/common/hash/AbstractNonStreamingHashFunction.java
@@ -15,7 +15,6 @@
 package com.google.common.hash;
 
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.Immutable;
 import java.io.ByteArrayOutputStream;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
@@ -29,7 +28,6 @@ import java.util.Arrays;
  *
  * @author Dimitris Andreou
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 abstract class AbstractNonStreamingHashFunction extends AbstractHashFunction {
   @Override
diff --git a/guava/src/com/google/common/hash/AbstractStreamingHasher.java b/guava/src/com/google/common/hash/AbstractStreamingHasher.java
index a987b48..f927adf 100644
--- a/guava/src/com/google/common/hash/AbstractStreamingHasher.java
+++ b/guava/src/com/google/common/hash/AbstractStreamingHasher.java
@@ -16,7 +16,6 @@ package com.google.common.hash;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 
@@ -28,7 +27,6 @@ import java.nio.ByteOrder;
  * @author Dimitris Andreou
  */
 // TODO(kevinb): this class still needs some design-and-document-for-inheritance love
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 abstract class AbstractStreamingHasher extends AbstractHasher {
   /** Buffer via which we pass data to the hash algorithm (the implementor) */
diff --git a/guava/src/com/google/common/hash/BloomFilter.java b/guava/src/com/google/common/hash/BloomFilter.java
index e0affaa..8507082 100644
--- a/guava/src/com/google/common/hash/BloomFilter.java
+++ b/guava/src/com/google/common/hash/BloomFilter.java
@@ -17,15 +17,12 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.hash.BloomFilterStrategies.LockFreeBitArray;
 import com.google.common.math.DoubleMath;
 import com.google.common.primitives.SignedBytes;
 import com.google.common.primitives.UnsignedBytes;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
@@ -35,7 +32,6 @@ import java.io.Serializable;
 import java.math.RoundingMode;
 import java.util.stream.Collector;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A Bloom filter for instances of {@code T}. A Bloom filter offers an approximate containment test
@@ -64,9 +60,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 11.0 (thread-safe since 23.0)
  */
-@Beta
 @ElementTypesAreNonnullByDefault
-public final class BloomFilter<T extends @Nullable Object> implements Predicate<T>, Serializable {
+public final class BloomFilter<T extends Object> implements Predicate<T>, Serializable {
   /**
    * A strategy to translate T instances, to {@code numHashFunctions} bit indexes.
    *
@@ -79,7 +74,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
      *
      * <p>Returns whether any bits changed as a result of this operation.
      */
-    <T extends @Nullable Object> boolean put(
+    <T extends Object> boolean put(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
@@ -89,7 +84,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
      * Queries {@code numHashFunctions} bits of the given bit array, by hashing a user element;
      * returns {@code true} if and only if all selected bits are set.
      */
-    <T extends @Nullable Object> boolean mightContain(
+    <T extends Object> boolean mightContain(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
@@ -168,7 +163,6 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    *     result to what {@code mightContain(t)} would have returned at the time it is called.
    * @since 12.0 (present in 11.0 with {@code void} return type})
    */
-  @CanIgnoreReturnValue
   public boolean put(@ParametricNullness T object) {
     return strategy.put(object, funnel, numHashFunctions, bits);
   }
@@ -211,7 +205,6 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
   }
 
   /** Returns the number of bits in the underlying bit array. */
-  @VisibleForTesting
   long bitSize() {
     return bits.bitSize();
   }
@@ -316,7 +309,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @return a {@code Collector} generating a {@code BloomFilter} of the received elements
    * @since 23.0
    */
-  public static <T extends @Nullable Object> Collector<T, ?, BloomFilter<T>> toBloomFilter(
+  public static <T extends Object> Collector<T, ?, BloomFilter<T>> toBloomFilter(
       Funnel<? super T> funnel, long expectedInsertions) {
     return toBloomFilter(funnel, expectedInsertions, 0.03);
   }
@@ -343,7 +336,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @return a {@code Collector} generating a {@code BloomFilter} of the received elements
    * @since 23.0
    */
-  public static <T extends @Nullable Object> Collector<T, ?, BloomFilter<T>> toBloomFilter(
+  public static <T extends Object> Collector<T, ?, BloomFilter<T>> toBloomFilter(
       Funnel<? super T> funnel, long expectedInsertions, double fpp) {
     checkNotNull(funnel);
     checkArgument(
@@ -381,7 +374,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @param fpp the desired false positive probability (must be positive and less than 1.0)
    * @return a {@code BloomFilter}
    */
-  public static <T extends @Nullable Object> BloomFilter<T> create(
+  public static <T extends Object> BloomFilter<T> create(
       Funnel<? super T> funnel, int expectedInsertions, double fpp) {
     return create(funnel, (long) expectedInsertions, fpp);
   }
@@ -407,13 +400,12 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @return a {@code BloomFilter}
    * @since 19.0
    */
-  public static <T extends @Nullable Object> BloomFilter<T> create(
+  public static <T extends Object> BloomFilter<T> create(
       Funnel<? super T> funnel, long expectedInsertions, double fpp) {
     return create(funnel, expectedInsertions, fpp, BloomFilterStrategies.MURMUR128_MITZ_64);
   }
 
-  @VisibleForTesting
-  static <T extends @Nullable Object> BloomFilter<T> create(
+  static <T extends Object> BloomFilter<T> create(
       Funnel<? super T> funnel, long expectedInsertions, double fpp, Strategy strategy) {
     checkNotNull(funnel);
     checkArgument(
@@ -458,7 +450,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    *     BloomFilter}; must be positive
    * @return a {@code BloomFilter}
    */
-  public static <T extends @Nullable Object> BloomFilter<T> create(
+  public static <T extends Object> BloomFilter<T> create(
       Funnel<? super T> funnel, int expectedInsertions) {
     return create(funnel, (long) expectedInsertions);
   }
@@ -483,7 +475,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @return a {@code BloomFilter}
    * @since 19.0
    */
-  public static <T extends @Nullable Object> BloomFilter<T> create(
+  public static <T extends Object> BloomFilter<T> create(
       Funnel<? super T> funnel, long expectedInsertions) {
     return create(funnel, expectedInsertions, 0.03); // FYI, for 3%, we always get 5 hash functions
   }
@@ -509,7 +501,6 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @param n expected insertions (must be positive)
    * @param m total number of bits in Bloom filter (must be positive)
    */
-  @VisibleForTesting
   static int optimalNumOfHashFunctions(long n, long m) {
     // (m / n) * log(2), but avoid truncation due to division!
     return Math.max(1, (int) Math.round((double) m / n * Math.log(2)));
@@ -525,7 +516,6 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @param n expected insertions (must be positive)
    * @param p false positive rate (must be 0 < p < 1)
    */
-  @VisibleForTesting
   static long optimalNumOfBits(long n, double p) {
     if (p == 0) {
       p = Double.MIN_VALUE;
@@ -537,7 +527,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
     return new SerialForm<T>(this);
   }
 
-  private static class SerialForm<T extends @Nullable Object> implements Serializable {
+  private static class SerialForm<T extends Object> implements Serializable {
     final long[] data;
     final int numHashFunctions;
     final Funnel<? super T> funnel;
@@ -590,7 +580,7 @@ public final class BloomFilter<T extends @Nullable Object> implements Predicate<
    * @throws IOException if the InputStream throws an {@code IOException}, or if its data does not
    *     appear to be a BloomFilter serialized using the {@linkplain #writeTo(OutputStream)} method.
    */
-  public static <T extends @Nullable Object> BloomFilter<T> readFrom(
+  public static <T extends Object> BloomFilter<T> readFrom(
       InputStream in, Funnel<? super T> funnel) throws IOException {
     checkNotNull(in, "InputStream");
     checkNotNull(funnel, "Funnel");
diff --git a/guava/src/com/google/common/hash/BloomFilterStrategies.java b/guava/src/com/google/common/hash/BloomFilterStrategies.java
index 3a012f3..e9799e1 100644
--- a/guava/src/com/google/common/hash/BloomFilterStrategies.java
+++ b/guava/src/com/google/common/hash/BloomFilterStrategies.java
@@ -23,7 +23,6 @@ import java.math.RoundingMode;
 import java.util.Arrays;
 import java.util.concurrent.atomic.AtomicLongArray;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Collections of strategies of generating the k * log(M) bits required for an element to be mapped
@@ -46,7 +45,7 @@ enum BloomFilterStrategies implements BloomFilter.Strategy {
    */
   MURMUR128_MITZ_32() {
     @Override
-    public <T extends @Nullable Object> boolean put(
+    public <T extends Object> boolean put(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
@@ -69,7 +68,7 @@ enum BloomFilterStrategies implements BloomFilter.Strategy {
     }
 
     @Override
-    public <T extends @Nullable Object> boolean mightContain(
+    public <T extends Object> boolean mightContain(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
@@ -100,7 +99,7 @@ enum BloomFilterStrategies implements BloomFilter.Strategy {
    */
   MURMUR128_MITZ_64() {
     @Override
-    public <T extends @Nullable Object> boolean put(
+    public <T extends Object> boolean put(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
@@ -121,7 +120,7 @@ enum BloomFilterStrategies implements BloomFilter.Strategy {
     }
 
     @Override
-    public <T extends @Nullable Object> boolean mightContain(
+    public <T extends Object> boolean mightContain(
         @ParametricNullness T object,
         Funnel<? super T> funnel,
         int numHashFunctions,
diff --git a/guava/src/com/google/common/hash/ChecksumHashFunction.java b/guava/src/com/google/common/hash/ChecksumHashFunction.java
index 159adbb..2456b88 100644
--- a/guava/src/com/google/common/hash/ChecksumHashFunction.java
+++ b/guava/src/com/google/common/hash/ChecksumHashFunction.java
@@ -17,7 +17,6 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.util.zip.Checksum;
 
@@ -26,7 +25,6 @@ import java.util.zip.Checksum;
  *
  * @author Colin Decker
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class ChecksumHashFunction extends AbstractHashFunction implements Serializable {
   private final ImmutableSupplier<? extends Checksum> checksumSupplier;
diff --git a/guava/src/com/google/common/hash/Crc32cHashFunction.java b/guava/src/com/google/common/hash/Crc32cHashFunction.java
index 8e17e65..5599f85 100644
--- a/guava/src/com/google/common/hash/Crc32cHashFunction.java
+++ b/guava/src/com/google/common/hash/Crc32cHashFunction.java
@@ -14,7 +14,6 @@
 
 package com.google.common.hash;
 
-import com.google.errorprone.annotations.Immutable;
 import java.nio.ByteBuffer;
 
 /**
@@ -23,7 +22,6 @@ import java.nio.ByteBuffer;
  *
  * @author Kurt Alfred Kluever
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class Crc32cHashFunction extends AbstractHashFunction {
   static final HashFunction CRC_32_C = new Crc32cHashFunction();
diff --git a/guava/src/com/google/common/hash/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/hash/ElementTypesAreNonnullByDefault.java
index a2382b3..030fd4f 100644
--- a/guava/src/com/google/common/hash/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/hash/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/hash/FarmHashFingerprint64.java b/guava/src/com/google/common/hash/FarmHashFingerprint64.java
index 7d6a398..923bf2f 100644
--- a/guava/src/com/google/common/hash/FarmHashFingerprint64.java
+++ b/guava/src/com/google/common/hash/FarmHashFingerprint64.java
@@ -19,7 +19,6 @@ import static com.google.common.hash.LittleEndianByteArray.load32;
 import static com.google.common.hash.LittleEndianByteArray.load64;
 import static java.lang.Long.rotateRight;
 
-import com.google.common.annotations.VisibleForTesting;
 
 /**
  * Implementation of FarmHash Fingerprint64, an open-source fingerprinting algorithm for strings.
@@ -65,7 +64,6 @@ final class FarmHashFingerprint64 extends AbstractNonStreamingHashFunction {
 
   // End of public functions.
 
-  @VisibleForTesting
   static long fingerprint(byte[] bytes, int offset, int length) {
     if (length <= 32) {
       if (length <= 16) {
diff --git a/guava/src/com/google/common/hash/Funnel.java b/guava/src/com/google/common/hash/Funnel.java
index 9d80dab..3fb86d2 100644
--- a/guava/src/com/google/common/hash/Funnel.java
+++ b/guava/src/com/google/common/hash/Funnel.java
@@ -14,10 +14,7 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.Serializable;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An object which can send data from an object of type {@code T} into a {@code PrimitiveSink}.
@@ -42,10 +39,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Dimitris Andreou
  * @since 11.0
  */
-@Beta
-@DoNotMock("Implement with a lambda")
 @ElementTypesAreNonnullByDefault
-public interface Funnel<T extends @Nullable Object> extends Serializable {
+public interface Funnel<T extends Object> extends Serializable {
 
   /**
    * Sends a stream of data from the {@code from} object into the sink {@code into}. There is no
diff --git a/guava/src/com/google/common/hash/Funnels.java b/guava/src/com/google/common/hash/Funnels.java
index 6673836..9ed9dca 100644
--- a/guava/src/com/google/common/hash/Funnels.java
+++ b/guava/src/com/google/common/hash/Funnels.java
@@ -14,13 +14,11 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Preconditions;
 import java.io.OutputStream;
 import java.io.Serializable;
 import java.nio.charset.Charset;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Funnels for common types. All implementations are serializable.
@@ -28,7 +26,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Dimitris Andreou
  * @since 11.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class Funnels {
   private Funnels() {}
@@ -166,12 +163,12 @@ public final class Funnels {
    *
    * @since 15.0
    */
-  public static <E extends @Nullable Object> Funnel<Iterable<? extends E>> sequentialFunnel(
+  public static <E extends Object> Funnel<Iterable<? extends E>> sequentialFunnel(
       Funnel<E> elementFunnel) {
     return new SequentialFunnel<E>(elementFunnel);
   }
 
-  private static class SequentialFunnel<E extends @Nullable Object>
+  private static class SequentialFunnel<E extends Object>
       implements Funnel<Iterable<? extends E>>, Serializable {
     private final Funnel<E> elementFunnel;
 
diff --git a/guava/src/com/google/common/hash/HashCode.java b/guava/src/com/google/common/hash/HashCode.java
index fde2a86..2f2615e 100644
--- a/guava/src/com/google/common/hash/HashCode.java
+++ b/guava/src/com/google/common/hash/HashCode.java
@@ -21,7 +21,6 @@ import static com.google.common.base.Preconditions.checkState;
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.UnsignedInts;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -81,7 +80,6 @@ public abstract class HashCode {
    * @return the number of bytes written to {@code dest}
    * @throws IndexOutOfBoundsException if there is not enough room in {@code dest}
    */
-  @CanIgnoreReturnValue
   public int writeBytesTo(byte[] dest, int offset, int maxLength) {
     maxLength = Ints.min(maxLength, bits() / 8);
     Preconditions.checkPositionIndexes(offset, offset + maxLength, dest.length);
diff --git a/guava/src/com/google/common/hash/HashFunction.java b/guava/src/com/google/common/hash/HashFunction.java
index d4b7f8a..897777e 100644
--- a/guava/src/com/google/common/hash/HashFunction.java
+++ b/guava/src/com/google/common/hash/HashFunction.java
@@ -15,10 +15,8 @@
 package com.google.common.hash;
 
 import com.google.common.primitives.Ints;
-import com.google.errorprone.annotations.Immutable;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A hash function is a collision-averse pure function that maps an arbitrary block of data to a
@@ -115,7 +113,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 11.0
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 public interface HashFunction {
   /**
@@ -211,7 +208,7 @@ public interface HashFunction {
    *
    * @since 14.0
    */
-  <T extends @Nullable Object> HashCode hashObject(
+  <T extends Object> HashCode hashObject(
       @ParametricNullness T instance, Funnel<? super T> funnel);
 
   /**
diff --git a/guava/src/com/google/common/hash/Hasher.java b/guava/src/com/google/common/hash/Hasher.java
index b3f24fa..59ede64 100644
--- a/guava/src/com/google/common/hash/Hasher.java
+++ b/guava/src/com/google/common/hash/Hasher.java
@@ -14,11 +14,8 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link PrimitiveSink} that can compute a hash code after reading the input. Each hasher should
@@ -53,8 +50,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kevin Bourrillion
  * @since 11.0
  */
-@Beta
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 public interface Hasher extends PrimitiveSink {
   @Override
@@ -121,7 +116,7 @@ public interface Hasher extends PrimitiveSink {
   Hasher putString(CharSequence charSequence, Charset charset);
 
   /** A simple convenience for {@code funnel.funnel(object, this)}. */
-  <T extends @Nullable Object> Hasher putObject(
+  <T extends Object> Hasher putObject(
       @ParametricNullness T instance, Funnel<? super T> funnel);
 
   /**
diff --git a/guava/src/com/google/common/hash/Hashing.java b/guava/src/com/google/common/hash/Hashing.java
index dd65367..17a273f 100644
--- a/guava/src/com/google/common/hash/Hashing.java
+++ b/guava/src/com/google/common/hash/Hashing.java
@@ -17,8 +17,6 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.Immutable;
 import java.security.Key;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -42,7 +40,6 @@ import javax.crypto.spec.SecretKeySpec;
  * @author Kurt Alfred Kluever
  * @since 11.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class Hashing {
   /**
@@ -425,7 +422,6 @@ public final class Hashing {
     return ChecksumType.ADLER_32.hashFunction;
   }
 
-  @Immutable
   enum ChecksumType implements ImmutableSupplier<Checksum> {
     CRC_32("Hashing.crc32()") {
       @Override
diff --git a/guava/src/com/google/common/hash/HashingInputStream.java b/guava/src/com/google/common/hash/HashingInputStream.java
index bf9464c..b1a305f 100644
--- a/guava/src/com/google/common/hash/HashingInputStream.java
+++ b/guava/src/com/google/common/hash/HashingInputStream.java
@@ -16,8 +16,6 @@ package com.google.common.hash;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -28,7 +26,6 @@ import java.io.InputStream;
  * @author Qian Huang
  * @since 16.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class HashingInputStream extends FilterInputStream {
   private final Hasher hasher;
@@ -49,7 +46,6 @@ public final class HashingInputStream extends FilterInputStream {
    * byte read.
    */
   @Override
-  @CanIgnoreReturnValue
   public int read() throws IOException {
     int b = in.read();
     if (b != -1) {
@@ -63,7 +59,6 @@ public final class HashingInputStream extends FilterInputStream {
    * the bytes read.
    */
   @Override
-  @CanIgnoreReturnValue
   public int read(byte[] bytes, int off, int len) throws IOException {
     int numOfBytesRead = in.read(bytes, off, len);
     if (numOfBytesRead != -1) {
diff --git a/guava/src/com/google/common/hash/HashingOutputStream.java b/guava/src/com/google/common/hash/HashingOutputStream.java
index f138bba..14dd66f 100644
--- a/guava/src/com/google/common/hash/HashingOutputStream.java
+++ b/guava/src/com/google/common/hash/HashingOutputStream.java
@@ -16,7 +16,6 @@ package com.google.common.hash;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import java.io.FilterOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -27,7 +26,6 @@ import java.io.OutputStream;
  * @author Nick Piepmeier
  * @since 16.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class HashingOutputStream extends FilterOutputStream {
   private final Hasher hasher;
diff --git a/guava/src/com/google/common/hash/ImmutableSupplier.java b/guava/src/com/google/common/hash/ImmutableSupplier.java
index 24f711a..76041ad 100644
--- a/guava/src/com/google/common/hash/ImmutableSupplier.java
+++ b/guava/src/com/google/common/hash/ImmutableSupplier.java
@@ -15,13 +15,11 @@
 package com.google.common.hash;
 
 import com.google.common.base.Supplier;
-import com.google.errorprone.annotations.Immutable;
 
 /**
  * Explicitly named subinterface of {@link Supplier} that can be marked {@literal @}{@link
  * Immutable}.
  */
 // TODO(cpovirk): Should we just use ChecksumType directly instead of defining this type?
-@Immutable
 @ElementTypesAreNonnullByDefault
 interface ImmutableSupplier<T> extends Supplier<T> {}
diff --git a/guava/src/com/google/common/hash/Java8Compatibility.java b/guava/src/com/google/common/hash/Java8Compatibility.java
index c15f2b3..24cb72d 100644
--- a/guava/src/com/google/common/hash/Java8Compatibility.java
+++ b/guava/src/com/google/common/hash/Java8Compatibility.java
@@ -14,14 +14,12 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.nio.Buffer;
 
 /**
  * Wrappers around {@link Buffer} methods that are covariantly overridden in Java 9+. See
  * https://github.com/google/guava/issues/3990
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class Java8Compatibility {
   static void clear(Buffer b) {
diff --git a/guava/src/com/google/common/hash/MacHashFunction.java b/guava/src/com/google/common/hash/MacHashFunction.java
index 031b1c0..11e9f67 100644
--- a/guava/src/com/google/common/hash/MacHashFunction.java
+++ b/guava/src/com/google/common/hash/MacHashFunction.java
@@ -17,7 +17,6 @@ package com.google.common.hash;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.errorprone.annotations.Immutable;
 import java.nio.ByteBuffer;
 import java.security.InvalidKeyException;
 import java.security.Key;
@@ -29,7 +28,6 @@ import javax.crypto.Mac;
  *
  * @author Kurt Alfred Kluever
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class MacHashFunction extends AbstractHashFunction {
 
diff --git a/guava/src/com/google/common/hash/MessageDigestHashFunction.java b/guava/src/com/google/common/hash/MessageDigestHashFunction.java
index 48b47b0..bb39a4b 100644
--- a/guava/src/com/google/common/hash/MessageDigestHashFunction.java
+++ b/guava/src/com/google/common/hash/MessageDigestHashFunction.java
@@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.nio.ByteBuffer;
 import java.security.MessageDigest;
@@ -31,7 +30,6 @@ import java.util.Arrays;
  * @author Kevin Bourrillion
  * @author Dimitris Andreou
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {
 
diff --git a/guava/src/com/google/common/hash/Murmur3_128HashFunction.java b/guava/src/com/google/common/hash/Murmur3_128HashFunction.java
index d1304f8..d0538a6 100644
--- a/guava/src/com/google/common/hash/Murmur3_128HashFunction.java
+++ b/guava/src/com/google/common/hash/Murmur3_128HashFunction.java
@@ -27,7 +27,6 @@ package com.google.common.hash;
 
 import static com.google.common.primitives.UnsignedBytes.toInt;
 
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
@@ -40,7 +39,6 @@ import javax.annotation.CheckForNull;
  * @author Austin Appleby
  * @author Dimitris Andreou
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class Murmur3_128HashFunction extends AbstractHashFunction implements Serializable {
   static final HashFunction MURMUR3_128 = new Murmur3_128HashFunction(0);
diff --git a/guava/src/com/google/common/hash/Murmur3_32HashFunction.java b/guava/src/com/google/common/hash/Murmur3_32HashFunction.java
index a47184b..f241e0c 100644
--- a/guava/src/com/google/common/hash/Murmur3_32HashFunction.java
+++ b/guava/src/com/google/common/hash/Murmur3_32HashFunction.java
@@ -33,8 +33,6 @@ import com.google.common.base.Charsets;
 import com.google.common.primitives.Chars;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.Longs;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
@@ -50,7 +48,6 @@ import javax.annotation.CheckForNull;
  * @author Dimitris Andreou
  * @author Kurt Alfred Kluever
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class Murmur3_32HashFunction extends AbstractHashFunction implements Serializable {
   static final HashFunction MURMUR3_32 =
@@ -267,7 +264,6 @@ final class Murmur3_32HashFunction extends AbstractHashFunction implements Seria
     return HashCode.fromInt(h1);
   }
 
-  @CanIgnoreReturnValue
   private static final class Murmur3_32Hasher extends AbstractHasher {
     private int h1;
     private long buffer;
diff --git a/guava/src/com/google/common/hash/ParametricNullness.java b/guava/src/com/google/common/hash/ParametricNullness.java
index 2ae8d42..5eb043f 100644
--- a/guava/src/com/google/common/hash/ParametricNullness.java
+++ b/guava/src/com/google/common/hash/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/hash/PrimitiveSink.java b/guava/src/com/google/common/hash/PrimitiveSink.java
index a29ba4e..c6fe0b7 100644
--- a/guava/src/com/google/common/hash/PrimitiveSink.java
+++ b/guava/src/com/google/common/hash/PrimitiveSink.java
@@ -14,8 +14,6 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
 
@@ -25,8 +23,6 @@ import java.nio.charset.Charset;
  * @author Kevin Bourrillion
  * @since 12.0 (in 11.0 as {@code Sink})
  */
-@Beta
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 public interface PrimitiveSink {
   /**
diff --git a/guava/src/com/google/common/hash/SipHashFunction.java b/guava/src/com/google/common/hash/SipHashFunction.java
index a226b61..0e67e97 100644
--- a/guava/src/com/google/common/hash/SipHashFunction.java
+++ b/guava/src/com/google/common/hash/SipHashFunction.java
@@ -21,7 +21,6 @@ package com.google.common.hash;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.nio.ByteBuffer;
 import javax.annotation.CheckForNull;
@@ -33,7 +32,6 @@ import javax.annotation.CheckForNull;
  * @author Jean-Philippe Aumasson
  * @author Daniel J. Bernstein
  */
-@Immutable
 @ElementTypesAreNonnullByDefault
 final class SipHashFunction extends AbstractHashFunction implements Serializable {
   static final HashFunction SIP_HASH_24 =
diff --git a/guava/src/com/google/common/hash/Striped64.java b/guava/src/com/google/common/hash/Striped64.java
index 1a0671c..0433fa1 100644
--- a/guava/src/com/google/common/hash/Striped64.java
+++ b/guava/src/com/google/common/hash/Striped64.java
@@ -11,17 +11,14 @@
 
 package com.google.common.hash;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Random;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A package-local class holding common representation and mechanics for classes supporting dynamic
  * striping on 64bit values. The class extends Number so that concrete subclasses must publicly do
  * so.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class Striped64 extends Number {
   /*
@@ -127,7 +124,7 @@ abstract class Striped64 extends Number {
    * class, we use a suboptimal int[] representation to avoid introducing a new type that can impede
    * class-unloading when ThreadLocals are not removed.
    */
-  static final ThreadLocal<int @Nullable []> threadHashCode = new ThreadLocal<>();
+  static final ThreadLocal<int []> threadHashCode = new ThreadLocal<>();
 
   /** Generator of new random hash codes */
   static final Random rng = new Random();
diff --git a/guava/src/com/google/common/hash/package-info.java b/guava/src/com/google/common/hash/package-info.java
index d210f7e..310d297 100644
--- a/guava/src/com/google/common/hash/package-info.java
+++ b/guava/src/com/google/common/hash/package-info.java
@@ -19,9 +19,7 @@
  * <p>See the Guava User Guide article on <a
  * href="https://github.com/google/guava/wiki/HashingExplained">hashing</a>.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.hash;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/html/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/html/ElementTypesAreNonnullByDefault.java
index a28b716..bd1d1c0 100644
--- a/guava/src/com/google/common/html/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/html/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/html/HtmlEscapers.java b/guava/src/com/google/common/html/HtmlEscapers.java
index c426388..adb4ea2 100644
--- a/guava/src/com/google/common/html/HtmlEscapers.java
+++ b/guava/src/com/google/common/html/HtmlEscapers.java
@@ -14,7 +14,6 @@
 
 package com.google.common.html;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.Escaper;
 import com.google.common.escape.Escapers;
 
@@ -34,7 +33,6 @@ import com.google.common.escape.Escapers;
  * @author David Beaumont
  * @since 15.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class HtmlEscapers {
   /**
diff --git a/guava/src/com/google/common/html/ParametricNullness.java b/guava/src/com/google/common/html/ParametricNullness.java
index 9a62c35..db63beb 100644
--- a/guava/src/com/google/common/html/ParametricNullness.java
+++ b/guava/src/com/google/common/html/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/html/package-info.java b/guava/src/com/google/common/html/package-info.java
index f84d7f2..da133f2 100644
--- a/guava/src/com/google/common/html/package-info.java
+++ b/guava/src/com/google/common/html/package-info.java
@@ -20,9 +20,7 @@
  * <p>This package is a part of the open-source <a href="http://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.html;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/io/AppendableWriter.java b/guava/src/com/google/common/io/AppendableWriter.java
index d9aab34..906d8e6 100644
--- a/guava/src/com/google/common/io/AppendableWriter.java
+++ b/guava/src/com/google/common/io/AppendableWriter.java
@@ -16,7 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Closeable;
 import java.io.Flushable;
 import java.io.IOException;
@@ -31,7 +30,6 @@ import javax.annotation.CheckForNull;
  * @author Sebastian Kanthak
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 class AppendableWriter extends Writer {
   private final Appendable target;
diff --git a/guava/src/com/google/common/io/BaseEncoding.java b/guava/src/com/google/common/io/BaseEncoding.java
index f42857c..bfffbc2 100644
--- a/guava/src/com/google/common/io/BaseEncoding.java
+++ b/guava/src/com/google/common/io/BaseEncoding.java
@@ -24,11 +24,8 @@ import static java.math.RoundingMode.CEILING;
 import static java.math.RoundingMode.FLOOR;
 import static java.math.RoundingMode.UNNECESSARY;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Objects;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -121,7 +118,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 14.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public abstract class BaseEncoding {
   // TODO(lowasser): consider making encodeTo(Appendable, byte[], int, int) public.
@@ -169,13 +165,13 @@ public abstract class BaseEncoding {
    * {@code Writer}. When the returned {@code OutputStream} is closed, so is the backing {@code
    * Writer}.
    */
-  @GwtIncompatible // Writer,OutputStream
+  // Writer,OutputStream
   public abstract OutputStream encodingStream(Writer writer);
 
   /**
    * Returns a {@code ByteSink} that writes base-encoded bytes to the specified {@code CharSink}.
    */
-  @GwtIncompatible // ByteSink,CharSink
+  // ByteSink,CharSink
   public final ByteSink encodingSink(final CharSink encodedSink) {
     checkNotNull(encodedSink);
     return new ByteSink() {
@@ -239,14 +235,14 @@ public abstract class BaseEncoding {
    * Returns an {@code InputStream} that decodes base-encoded input from the specified {@code
    * Reader}. The returned stream throws a {@link DecodingException} upon decoding-specific errors.
    */
-  @GwtIncompatible // Reader,InputStream
+  // Reader,InputStream
   public abstract InputStream decodingStream(Reader reader);
 
   /**
    * Returns a {@code ByteSource} that reads base-encoded bytes from the specified {@code
    * CharSource}.
    */
-  @GwtIncompatible // ByteSource,CharSource
+  // ByteSource,CharSource
   public final ByteSource decodingSource(final CharSource encodedSource) {
     checkNotNull(encodedSource);
     return new ByteSource() {
@@ -586,7 +582,7 @@ public abstract class BaseEncoding {
       return alphabet.charsPerChunk * divide(bytes, alphabet.bytesPerChunk, CEILING);
     }
 
-    @GwtIncompatible // Writer,OutputStream
+    // Writer,OutputStream
     @Override
     public OutputStream encodingStream(final Writer out) {
       checkNotNull(out);
@@ -727,7 +723,7 @@ public abstract class BaseEncoding {
     }
 
     @Override
-    @GwtIncompatible // Reader,InputStream
+    // Reader,InputStream
     public InputStream decodingStream(final Reader reader) {
       checkNotNull(reader);
       return new InputStream() {
@@ -830,8 +826,8 @@ public abstract class BaseEncoding {
       return new SeparatedBaseEncoding(this, separator, afterEveryChars);
     }
 
-    @LazyInit @CheckForNull private transient BaseEncoding upperCase;
-    @LazyInit @CheckForNull private transient BaseEncoding lowerCase;
+    @CheckForNull private transient BaseEncoding upperCase;
+    @CheckForNull private transient BaseEncoding lowerCase;
 
     @Override
     public BaseEncoding upperCase() {
@@ -991,7 +987,6 @@ public abstract class BaseEncoding {
     }
   }
 
-  @GwtIncompatible
   static Reader ignoringReader(final Reader delegate, final String toIgnore) {
     checkNotNull(delegate);
     checkNotNull(toIgnore);
@@ -1048,7 +1043,7 @@ public abstract class BaseEncoding {
     };
   }
 
-  @GwtIncompatible // Writer
+  // Writer
   static Writer separatingWriter(
       final Writer delegate, final String separator, final int afterEveryChars) {
     final Appendable separatingAppendable =
@@ -1101,7 +1096,7 @@ public abstract class BaseEncoding {
           + separator.length() * divide(Math.max(0, unseparatedSize - 1), afterEveryChars, FLOOR);
     }
 
-    @GwtIncompatible // Writer,OutputStream
+    // Writer,OutputStream
     @Override
     public OutputStream encodingStream(final Writer output) {
       return delegate.encodingStream(separatingWriter(output, separator, afterEveryChars));
@@ -1142,7 +1137,7 @@ public abstract class BaseEncoding {
     }
 
     @Override
-    @GwtIncompatible // Reader,InputStream
+    // Reader,InputStream
     public InputStream decodingStream(final Reader reader) {
       return delegate.decodingStream(ignoringReader(reader, separator));
     }
diff --git a/guava/src/com/google/common/io/ByteArrayDataInput.java b/guava/src/com/google/common/io/ByteArrayDataInput.java
index cf84fcc..8d48c24 100644
--- a/guava/src/com/google/common/io/ByteArrayDataInput.java
+++ b/guava/src/com/google/common/io/ByteArrayDataInput.java
@@ -14,8 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.DataInput;
 import java.io.IOException;
 import javax.annotation.CheckForNull;
@@ -32,7 +30,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface ByteArrayDataInput extends DataInput {
   @Override
@@ -46,52 +43,52 @@ public interface ByteArrayDataInput extends DataInput {
   @Override
   int skipBytes(int n);
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   boolean readBoolean();
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   byte readByte();
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   int readUnsignedByte();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   short readShort();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   int readUnsignedShort();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   char readChar();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   int readInt();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   long readLong();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   float readFloat();
 
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   double readDouble();
 
-  @CanIgnoreReturnValue // to skip a line
+  // to skip a line
   @Override
   @CheckForNull
   String readLine();
 
-  @CanIgnoreReturnValue // to skip a field
+  // to skip a field
   @Override
   String readUTF();
 }
diff --git a/guava/src/com/google/common/io/ByteArrayDataOutput.java b/guava/src/com/google/common/io/ByteArrayDataOutput.java
index 3739073..b6ae62b 100644
--- a/guava/src/com/google/common/io/ByteArrayDataOutput.java
+++ b/guava/src/com/google/common/io/ByteArrayDataOutput.java
@@ -14,7 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.DataOutput;
 import java.io.IOException;
 
@@ -25,7 +24,6 @@ import java.io.IOException;
  * @author Jayaprabhakar Kadarkarai
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface ByteArrayDataOutput extends DataOutput {
   @Override
diff --git a/guava/src/com/google/common/io/ByteProcessor.java b/guava/src/com/google/common/io/ByteProcessor.java
index 98ea3ff..bad1da6 100644
--- a/guava/src/com/google/common/io/ByteProcessor.java
+++ b/guava/src/com/google/common/io/ByteProcessor.java
@@ -14,12 +14,7 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.io.IOException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A callback interface to process bytes from a stream.
@@ -30,11 +25,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@Beta
-@DoNotMock("Implement it normally")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public interface ByteProcessor<T extends @Nullable Object> {
+public interface ByteProcessor<T extends Object> {
   /**
    * This method will be called for each chunk of bytes in an input stream. The implementation
    * should process the bytes from {@code buf[off]} through {@code buf[off + len - 1]} (inclusive).
@@ -44,7 +36,7 @@ public interface ByteProcessor<T extends @Nullable Object> {
    * @param len the length of data to be processed
    * @return true to continue processing, false to stop
    */
-  @CanIgnoreReturnValue // some uses know that their processor never returns false
+  // some uses know that their processor never returns false
   boolean processBytes(byte[] buf, int off, int len) throws IOException;
 
   /** Return the result of processing all the bytes. */
diff --git a/guava/src/com/google/common/io/ByteSink.java b/guava/src/com/google/common/io/ByteSink.java
index 7a6af6f..d54408d 100644
--- a/guava/src/com/google/common/io/ByteSink.java
+++ b/guava/src/com/google/common/io/ByteSink.java
@@ -16,8 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -45,7 +43,6 @@ import java.nio.charset.Charset;
  * @since 14.0
  * @author Colin Decker
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ByteSink {
 
@@ -116,7 +113,6 @@ public abstract class ByteSink {
    * @return the number of bytes written
    * @throws IOException if an I/O occurs while reading from {@code input} or writing to this sink
    */
-  @CanIgnoreReturnValue
   public long writeFrom(InputStream input) throws IOException {
     checkNotNull(input);
 
diff --git a/guava/src/com/google/common/io/ByteSource.java b/guava/src/com/google/common/io/ByteSource.java
index c8da967..720a71e 100644
--- a/guava/src/com/google/common/io/ByteSource.java
+++ b/guava/src/com/google/common/io/ByteSource.java
@@ -19,16 +19,12 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.io.ByteStreams.createBuffer;
 import static com.google.common.io.ByteStreams.skipUpTo;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
 import com.google.common.hash.Funnels;
 import com.google.common.hash.HashCode;
 import com.google.common.hash.HashFunction;
 import com.google.common.hash.Hasher;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -40,7 +36,6 @@ import java.nio.charset.Charset;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A readable source of bytes, such as a file. Unlike an {@link InputStream}, a {@code ByteSource}
@@ -73,7 +68,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 14.0
  * @author Colin Decker
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ByteSource {
 
@@ -178,7 +172,6 @@ public abstract class ByteSource {
    *
    * @since 19.0
    */
-  @Beta
   public Optional<Long> sizeIfKnown() {
     return Optional.absent();
   }
@@ -247,7 +240,6 @@ public abstract class ByteSource {
    * @throws IOException if an I/O error occurs while reading from this source or writing to {@code
    *     output}
    */
-  @CanIgnoreReturnValue
   public long copyTo(OutputStream output) throws IOException {
     checkNotNull(output);
 
@@ -269,7 +261,6 @@ public abstract class ByteSource {
    * @throws IOException if an I/O error occurs while reading from this source or writing to {@code
    *     sink}
    */
-  @CanIgnoreReturnValue
   public long copyTo(ByteSink sink) throws IOException {
     checkNotNull(sink);
 
@@ -314,9 +305,8 @@ public abstract class ByteSource {
    *     processor} throws an {@code IOException}
    * @since 16.0
    */
-  @Beta
-  @CanIgnoreReturnValue // some processors won't return a useful result
-  public <T extends @Nullable Object> T read(ByteProcessor<T> processor) throws IOException {
+  // some processors won't return a useful result
+  public <T extends Object> T read(ByteProcessor<T> processor) throws IOException {
     checkNotNull(processor);
 
     Closer closer = Closer.create();
@@ -621,7 +611,7 @@ public abstract class ByteSource {
     @SuppressWarnings("CheckReturnValue") // it doesn't matter what processBytes returns here
     @Override
     @ParametricNullness
-    public <T extends @Nullable Object> T read(ByteProcessor<T> processor) throws IOException {
+    public <T extends Object> T read(ByteProcessor<T> processor) throws IOException {
       processor.processBytes(bytes, offset, length);
       return processor.getResult();
     }
diff --git a/guava/src/com/google/common/io/ByteStreams.java b/guava/src/com/google/common/io/ByteStreams.java
index 2f1f669..5cf933d 100644
--- a/guava/src/com/google/common/io/ByteStreams.java
+++ b/guava/src/com/google/common/io/ByteStreams.java
@@ -19,10 +19,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndex;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.math.IntMath;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.DataInput;
@@ -42,7 +39,6 @@ import java.util.ArrayDeque;
 import java.util.Arrays;
 import java.util.Queue;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides utility methods for working with byte arrays and I/O streams.
@@ -51,7 +47,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Colin Decker
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ByteStreams {
 
@@ -102,7 +97,6 @@ public final class ByteStreams {
    * @return the number of bytes copied
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue
   public static long copy(InputStream from, OutputStream to) throws IOException {
     checkNotNull(from);
     checkNotNull(to);
@@ -128,7 +122,6 @@ public final class ByteStreams {
    * @return the number of bytes copied
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue
   public static long copy(ReadableByteChannel from, WritableByteChannel to) throws IOException {
     checkNotNull(from);
     checkNotNull(to);
@@ -268,8 +261,6 @@ public final class ByteStreams {
    *
    * @since 20.0
    */
-  @CanIgnoreReturnValue
-  @Beta
   public static long exhaust(InputStream in) throws IOException {
     long total = 0;
     long read;
@@ -284,7 +275,6 @@ public final class ByteStreams {
    * Returns a new {@link ByteArrayDataInput} instance to read from the {@code bytes} array from the
    * beginning.
    */
-  @Beta
   public static ByteArrayDataInput newDataInput(byte[] bytes) {
     return newDataInput(new ByteArrayInputStream(bytes));
   }
@@ -296,7 +286,6 @@ public final class ByteStreams {
    * @throws IndexOutOfBoundsException if {@code start} is negative or greater than the length of
    *     the array
    */
-  @Beta
   public static ByteArrayDataInput newDataInput(byte[] bytes, int start) {
     checkPositionIndex(start, bytes.length);
     return newDataInput(new ByteArrayInputStream(bytes, start, bytes.length - start));
@@ -309,7 +298,6 @@ public final class ByteStreams {
    *
    * @since 17.0
    */
-  @Beta
   public static ByteArrayDataInput newDataInput(ByteArrayInputStream byteArrayInputStream) {
     return new ByteArrayDataInputStream(checkNotNull(byteArrayInputStream));
   }
@@ -461,7 +449,6 @@ public final class ByteStreams {
   }
 
   /** Returns a new {@link ByteArrayDataOutput} instance with a default size. */
-  @Beta
   public static ByteArrayDataOutput newDataOutput() {
     return newDataOutput(new ByteArrayOutputStream());
   }
@@ -472,7 +459,6 @@ public final class ByteStreams {
    *
    * @throws IllegalArgumentException if {@code size} is negative
    */
-  @Beta
   public static ByteArrayDataOutput newDataOutput(int size) {
     // When called at high frequency, boxing size generates too much garbage,
     // so avoid doing that if we can.
@@ -494,7 +480,6 @@ public final class ByteStreams {
    *
    * @since 17.0
    */
-  @Beta
   public static ByteArrayDataOutput newDataOutput(ByteArrayOutputStream byteArrayOutputStream) {
     return new ByteArrayDataOutputStream(checkNotNull(byteArrayOutputStream));
   }
@@ -670,7 +655,6 @@ public final class ByteStreams {
    *
    * @since 14.0 (since 1.0 as com.google.common.io.NullOutputStream)
    */
-  @Beta
   public static OutputStream nullOutputStream() {
     return NULL_OUTPUT_STREAM;
   }
@@ -683,7 +667,6 @@ public final class ByteStreams {
    * @return a length-limited {@link InputStream}
    * @since 14.0 (since 1.0 as com.google.common.io.LimitInputStream)
    */
-  @Beta
   public static InputStream limit(InputStream in, long limit) {
     return new LimitedInputStream(in, limit);
   }
@@ -770,7 +753,6 @@ public final class ByteStreams {
    * @throws EOFException if this stream reaches the end before reading all the bytes.
    * @throws IOException if an I/O error occurs.
    */
-  @Beta
   public static void readFully(InputStream in, byte[] b) throws IOException {
     readFully(in, b, 0, b.length);
   }
@@ -787,7 +769,6 @@ public final class ByteStreams {
    * @throws EOFException if this stream reaches the end before reading all the bytes.
    * @throws IOException if an I/O error occurs.
    */
-  @Beta
   public static void readFully(InputStream in, byte[] b, int off, int len) throws IOException {
     int read = read(in, b, off, len);
     if (read != len) {
@@ -805,7 +786,6 @@ public final class ByteStreams {
    * @throws EOFException if this stream reaches the end before skipping all the bytes
    * @throws IOException if an I/O error occurs, or the stream does not support skipping
    */
-  @Beta
   public static void skipFully(InputStream in, long n) throws IOException {
     long skipped = skipUpTo(in, n);
     if (skipped < n) {
@@ -871,10 +851,9 @@ public final class ByteStreams {
    * @throws IOException if an I/O error occurs
    * @since 14.0
    */
-  @Beta
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
-  public static <T extends @Nullable Object> T readBytes(
+  public static <T extends Object> T readBytes(
       InputStream input, ByteProcessor<T> processor) throws IOException {
     checkNotNull(input);
     checkNotNull(processor);
@@ -911,8 +890,6 @@ public final class ByteStreams {
    * @throws IndexOutOfBoundsException if {@code off} is negative, if {@code len} is negative, or if
    *     {@code off + len} is greater than {@code b.length}
    */
-  @Beta
-  @CanIgnoreReturnValue
   // Sometimes you don't care how many bytes you actually read, I guess.
   // (You know that it's either going to read len bytes or stop at EOF.)
   public static int read(InputStream in, byte[] b, int off, int len) throws IOException {
diff --git a/guava/src/com/google/common/io/CharSequenceReader.java b/guava/src/com/google/common/io/CharSequenceReader.java
index 790e266..62207cc 100644
--- a/guava/src/com/google/common/io/CharSequenceReader.java
+++ b/guava/src/com/google/common/io/CharSequenceReader.java
@@ -17,9 +17,7 @@ package com.google.common.io;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.Reader;
 import java.nio.CharBuffer;
@@ -32,7 +30,6 @@ import javax.annotation.CheckForNull;
  * @author Colin Decker
  */
 // TODO(cgdecker): make this public? as a type, or a method in CharStreams?
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class CharSequenceReader extends Reader {
 
diff --git a/guava/src/com/google/common/io/CharSink.java b/guava/src/com/google/common/io/CharSink.java
index f804dae..e50b7f2 100644
--- a/guava/src/com/google/common/io/CharSink.java
+++ b/guava/src/com/google/common/io/CharSink.java
@@ -16,9 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.Reader;
@@ -50,7 +47,6 @@ import java.util.stream.Stream;
  * @since 14.0
  * @author Colin Decker
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class CharSink {
 
@@ -135,7 +131,6 @@ public abstract class CharSink {
    * @throws IOException if an I/O error occurs while writing to this sink
    * @since 22.0
    */
-  @Beta
   public void writeLines(Stream<? extends CharSequence> lines) throws IOException {
     writeLines(lines, System.getProperty("line.separator"));
   }
@@ -147,7 +142,6 @@ public abstract class CharSink {
    * @throws IOException if an I/O error occurs while writing to this sink
    * @since 22.0
    */
-  @Beta
   public void writeLines(Stream<? extends CharSequence> lines, String lineSeparator)
       throws IOException {
     writeLines(lines.iterator(), lineSeparator);
@@ -172,7 +166,6 @@ public abstract class CharSink {
    * @throws IOException if an I/O error occurs while reading from {@code readable} or writing to
    *     this sink
    */
-  @CanIgnoreReturnValue
   public long writeFrom(Readable readable) throws IOException {
     checkNotNull(readable);
 
diff --git a/guava/src/com/google/common/io/CharSource.java b/guava/src/com/google/common/io/CharSource.java
index 24a67af..c74445a 100644
--- a/guava/src/com/google/common/io/CharSource.java
+++ b/guava/src/com/google/common/io/CharSource.java
@@ -16,17 +16,12 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.Optional;
 import com.google.common.base.Splitter;
 import com.google.common.collect.AbstractIterator;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Streams;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.MustBeClosed;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -40,7 +35,6 @@ import java.util.List;
 import java.util.function.Consumer;
 import java.util.stream.Stream;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A readable source of characters, such as a text file. Unlike a {@link Reader}, a {@code
@@ -81,7 +75,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 14.0
  * @author Colin Decker
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class CharSource {
 
@@ -99,7 +92,6 @@ public abstract class CharSource {
    *
    * @since 20.0
    */
-  @Beta
   public ByteSource asByteSource(Charset charset) {
     return new AsByteSource(charset);
   }
@@ -155,8 +147,6 @@ public abstract class CharSource {
    * @throws IOException if an I/O error occurs while opening the stream
    * @since 22.0
    */
-  @Beta
-  @MustBeClosed
   public Stream<String> lines() throws IOException {
     BufferedReader reader = openBufferedStream();
     return reader
@@ -185,7 +175,6 @@ public abstract class CharSource {
    *
    * @since 19.0
    */
-  @Beta
   public Optional<Long> lengthIfKnown() {
     return Optional.absent();
   }
@@ -209,7 +198,6 @@ public abstract class CharSource {
    * @throws IOException if an I/O error occurs while reading the length of this source
    * @since 19.0
    */
-  @Beta
   public long length() throws IOException {
     Optional<Long> lengthIfKnown = lengthIfKnown();
     if (lengthIfKnown.isPresent()) {
@@ -244,7 +232,6 @@ public abstract class CharSource {
    * @throws IOException if an I/O error occurs while reading from this source or writing to {@code
    *     appendable}
    */
-  @CanIgnoreReturnValue
   public long copyTo(Appendable appendable) throws IOException {
     checkNotNull(appendable);
 
@@ -266,7 +253,6 @@ public abstract class CharSource {
    * @throws IOException if an I/O error occurs while reading from this source or writing to {@code
    *     sink}
    */
-  @CanIgnoreReturnValue
   public long copyTo(CharSink sink) throws IOException {
     checkNotNull(sink);
 
@@ -364,10 +350,9 @@ public abstract class CharSource {
    *     processor} throws an {@code IOException}
    * @since 16.0
    */
-  @Beta
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
-  public <T extends @Nullable Object> T readLines(LineProcessor<T> processor) throws IOException {
+  public <T extends Object> T readLines(LineProcessor<T> processor) throws IOException {
     checkNotNull(processor);
 
     Closer closer = Closer.create();
@@ -394,7 +379,6 @@ public abstract class CharSource {
    *     throws an {@code UncheckedIOException}
    * @since 22.0
    */
-  @Beta
   public void forEachLine(Consumer<? super String> action) throws IOException {
     try (Stream<String> lines = lines()) {
       // The lines should be ordered regardless in most cases, but use forEachOrdered to be sure
@@ -612,7 +596,7 @@ public abstract class CharSource {
 
     @Override
     @ParametricNullness
-    public <T extends @Nullable Object> T readLines(LineProcessor<T> processor) throws IOException {
+    public <T extends Object> T readLines(LineProcessor<T> processor) throws IOException {
       Iterator<String> lines = linesIterator();
       while (lines.hasNext()) {
         if (!processor.processLine(lines.next())) {
diff --git a/guava/src/com/google/common/io/CharStreams.java b/guava/src/com/google/common/io/CharStreams.java
index c414194..15bcab9 100644
--- a/guava/src/com/google/common/io/CharStreams.java
+++ b/guava/src/com/google/common/io/CharStreams.java
@@ -17,9 +17,6 @@ package com.google.common.io;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Closeable;
 import java.io.EOFException;
 import java.io.IOException;
@@ -29,7 +26,6 @@ import java.nio.CharBuffer;
 import java.util.ArrayList;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides utility methods for working with character streams.
@@ -45,7 +41,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Colin Decker
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class CharStreams {
 
@@ -68,7 +63,6 @@ public final class CharStreams {
    * @return the number of characters copied
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue
   public static long copy(Readable from, Appendable to) throws IOException {
     // The most common case is that from is a Reader (like InputStreamReader or StringReader) so
     // take advantage of that.
@@ -112,7 +106,6 @@ public final class CharStreams {
    * @return the number of characters copied
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue
   static long copyReaderToBuilder(Reader from, StringBuilder to) throws IOException {
     checkNotNull(from);
     checkNotNull(to);
@@ -140,7 +133,6 @@ public final class CharStreams {
    * @return the number of characters copied
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue
   static long copyReaderToWriter(Reader from, Writer to) throws IOException {
     checkNotNull(from);
     checkNotNull(to);
@@ -195,7 +187,6 @@ public final class CharStreams {
    * @return a mutable {@link List} containing all the lines
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static List<String> readLines(Readable r) throws IOException {
     List<String> result = new ArrayList<>();
     LineReader lineReader = new LineReader(r);
@@ -215,10 +206,9 @@ public final class CharStreams {
    * @throws IOException if an I/O error occurs
    * @since 14.0
    */
-  @Beta
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
-  public static <T extends @Nullable Object> T readLines(
+  public static <T extends Object> T readLines(
       Readable readable, LineProcessor<T> processor) throws IOException {
     checkNotNull(readable);
     checkNotNull(processor);
@@ -239,8 +229,6 @@ public final class CharStreams {
    *
    * @since 20.0
    */
-  @Beta
-  @CanIgnoreReturnValue
   public static long exhaust(Readable readable) throws IOException {
     long total = 0;
     long read;
@@ -261,7 +249,6 @@ public final class CharStreams {
    * @throws EOFException if this stream reaches the end before skipping all the characters
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static void skipFully(Reader reader, long n) throws IOException {
     checkNotNull(reader);
     while (n > 0) {
@@ -278,7 +265,6 @@ public final class CharStreams {
    *
    * @since 15.0
    */
-  @Beta
   public static Writer nullWriter() {
     return NullWriter.INSTANCE;
   }
@@ -346,7 +332,6 @@ public final class CharStreams {
    * @param target the object to which output will be sent
    * @return a new Writer object, unless target is a Writer, in which case the target is returned
    */
-  @Beta
   public static Writer asWriter(Appendable target) {
     if (target instanceof Writer) {
       return (Writer) target;
diff --git a/guava/src/com/google/common/io/Closeables.java b/guava/src/com/google/common/io/Closeables.java
index b45f5f0..231f164 100644
--- a/guava/src/com/google/common/io/Closeables.java
+++ b/guava/src/com/google/common/io/Closeables.java
@@ -14,9 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
@@ -31,11 +28,9 @@ import javax.annotation.CheckForNull;
  * @author Michael Lancaster
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Closeables {
-  @VisibleForTesting static final Logger logger = Logger.getLogger(Closeables.class.getName());
+  static final Logger logger = Logger.getLogger(Closeables.class.getName());
 
   private Closeables() {}
 
diff --git a/guava/src/com/google/common/io/Closer.java b/guava/src/com/google/common/io/Closer.java
index 12998ef..c1bb9c3 100644
--- a/guava/src/com/google/common/io/Closer.java
+++ b/guava/src/com/google/common/io/Closer.java
@@ -16,11 +16,7 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Throwables;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Closeable;
 import java.io.IOException;
 import java.lang.reflect.Method;
@@ -28,7 +24,6 @@ import java.util.ArrayDeque;
 import java.util.Deque;
 import java.util.logging.Level;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Closeable} that collects {@code Closeable} resources and closes them all when it is
@@ -87,8 +82,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 14.0
  */
 // Coffee's for {@link Closer closers} only.
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Closer implements Closeable {
 
@@ -105,13 +98,12 @@ public final class Closer implements Closeable {
     return new Closer(SUPPRESSOR);
   }
 
-  @VisibleForTesting final Suppressor suppressor;
+  final Suppressor suppressor;
 
   // only need space for 2 elements in most cases, so try to use the smallest array possible
   private final Deque<Closeable> stack = new ArrayDeque<>(4);
   @CheckForNull private Throwable thrown;
 
-  @VisibleForTesting
   Closer(Suppressor suppressor) {
     this.suppressor = checkNotNull(suppressor); // checkNotNull to satisfy null tests
   }
@@ -123,9 +115,8 @@ public final class Closer implements Closeable {
    * @return the given {@code closeable}
    */
   // close. this word no longer has any meaning to me.
-  @CanIgnoreReturnValue
   @ParametricNullness
-  public <C extends @Nullable Closeable> C register(@ParametricNullness C closeable) {
+  public <C extends Closeable> C register(@ParametricNullness C closeable) {
     if (closeable != null) {
       stack.addFirst(closeable);
     }
@@ -232,7 +223,6 @@ public final class Closer implements Closeable {
   }
 
   /** Suppression strategy interface. */
-  @VisibleForTesting
   interface Suppressor {
     /**
      * Suppresses the given exception ({@code suppressed}) which was thrown when attempting to close
@@ -243,7 +233,6 @@ public final class Closer implements Closeable {
   }
 
   /** Suppresses exceptions by logging them. */
-  @VisibleForTesting
   static final class LoggingSuppressor implements Suppressor {
 
     static final LoggingSuppressor INSTANCE = new LoggingSuppressor();
@@ -260,7 +249,6 @@ public final class Closer implements Closeable {
    * Suppresses exceptions by adding them to the exception that will be thrown using JDK7's
    * addSuppressed(Throwable) mechanism.
    */
-  @VisibleForTesting
   static final class SuppressingSuppressor implements Suppressor {
     @CheckForNull
     static SuppressingSuppressor tryCreate() {
diff --git a/guava/src/com/google/common/io/CountingInputStream.java b/guava/src/com/google/common/io/CountingInputStream.java
index a37807a..76c4c31 100644
--- a/guava/src/com/google/common/io/CountingInputStream.java
+++ b/guava/src/com/google/common/io/CountingInputStream.java
@@ -16,8 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -28,8 +26,6 @@ import java.io.InputStream;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class CountingInputStream extends FilterInputStream {
 
diff --git a/guava/src/com/google/common/io/CountingOutputStream.java b/guava/src/com/google/common/io/CountingOutputStream.java
index cf62b9c..270891e 100644
--- a/guava/src/com/google/common/io/CountingOutputStream.java
+++ b/guava/src/com/google/common/io/CountingOutputStream.java
@@ -16,7 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.FilterOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -27,7 +26,6 @@ import java.io.OutputStream;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class CountingOutputStream extends FilterOutputStream {
 
diff --git a/guava/src/com/google/common/io/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/io/ElementTypesAreNonnullByDefault.java
index 48bc10f..39c2cb6 100644
--- a/guava/src/com/google/common/io/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/io/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/io/FileBackedOutputStream.java b/guava/src/com/google/common/io/FileBackedOutputStream.java
index 9912e2f..6b07840 100644
--- a/guava/src/com/google/common/io/FileBackedOutputStream.java
+++ b/guava/src/com/google/common/io/FileBackedOutputStream.java
@@ -14,12 +14,7 @@
 
 package com.google.common.io;
 
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -50,8 +45,6 @@ import javax.annotation.CheckForNull;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class FileBackedOutputStream extends OutputStream {
   private final int fileThreshold;
@@ -59,14 +52,11 @@ public final class FileBackedOutputStream extends OutputStream {
   private final ByteSource source;
   @CheckForNull private final File parentDirectory;
 
-  @GuardedBy("this")
   private OutputStream out;
 
-  @GuardedBy("this")
   @CheckForNull
   private MemoryOutput memory;
 
-  @GuardedBy("this")
   @CheckForNull
   private File file;
 
@@ -82,7 +72,6 @@ public final class FileBackedOutputStream extends OutputStream {
   }
 
   /** Returns the file holding the data (possibly null). */
-  @VisibleForTesting
   @CheckForNull
   synchronized File getFile() {
     return file;
@@ -222,7 +211,6 @@ public final class FileBackedOutputStream extends OutputStream {
    * Checks if writing {@code len} bytes would go over threshold, and switches to file buffering if
    * so.
    */
-  @GuardedBy("this")
   private void update(int len) throws IOException {
     if (memory != null && (memory.getCount() + len > fileThreshold)) {
       File temp = File.createTempFile("FileBackedOutputStream", null, parentDirectory);
diff --git a/guava/src/com/google/common/io/FileWriteMode.java b/guava/src/com/google/common/io/FileWriteMode.java
index 86872d1..e69ba8a 100644
--- a/guava/src/com/google/common/io/FileWriteMode.java
+++ b/guava/src/com/google/common/io/FileWriteMode.java
@@ -14,7 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.GwtIncompatible;
 
 /**
  * Modes for opening a file for writing. The default when mode when none is specified is to truncate
@@ -22,7 +21,6 @@ import com.google.common.annotations.GwtIncompatible;
  *
  * @author Colin Decker
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public enum FileWriteMode {
   /** Specifies that writes to the opened file should append to the end of the file. */
diff --git a/guava/src/com/google/common/io/Files.java b/guava/src/com/google/common/io/Files.java
index bf6289e..a45e5ec 100644
--- a/guava/src/com/google/common/io/Files.java
+++ b/guava/src/com/google/common/io/Files.java
@@ -18,20 +18,15 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.io.FileWriteMode.APPEND;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Joiner;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.graph.SuccessorsFunction;
 import com.google.common.graph.Traverser;
 import com.google.common.hash.HashCode;
 import com.google.common.hash.HashFunction;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
@@ -53,7 +48,6 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides utility methods for working with {@linkplain File files}.
@@ -65,7 +59,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Colin Decker
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Files {
 
@@ -85,7 +78,6 @@ public final class Files {
    *     helpful predefined constants
    * @return the buffered reader
    */
-  @Beta
   public static BufferedReader newReader(File file, Charset charset) throws FileNotFoundException {
     checkNotNull(file);
     checkNotNull(charset);
@@ -104,7 +96,6 @@ public final class Files {
    *     helpful predefined constants
    * @return the buffered writer
    */
-  @Beta
   public static BufferedWriter newWriter(File file, Charset charset) throws FileNotFoundException {
     checkNotNull(file);
     checkNotNull(charset);
@@ -235,7 +226,6 @@ public final class Files {
    *     (2^31 - 1)
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static byte[] toByteArray(File file) throws IOException {
     return asByteSource(file).read();
   }
@@ -251,7 +241,6 @@ public final class Files {
    * @deprecated Prefer {@code asCharSource(file, charset).read()}. This method is scheduled to be
    *     removed in October 2019.
    */
-  @Beta
   @Deprecated
   public static String toString(File file, Charset charset) throws IOException {
     return asCharSource(file, charset).read();
@@ -267,7 +256,6 @@ public final class Files {
    * @param to the destination file
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static void write(byte[] from, File to) throws IOException {
     asByteSink(to).write(from);
   }
@@ -283,7 +271,6 @@ public final class Files {
    * @deprecated Prefer {@code asCharSink(to, charset).write(from)}. This method is scheduled to be
    *     removed in October 2019.
    */
-  @Beta
   @Deprecated
   public static void write(CharSequence from, File to, Charset charset) throws IOException {
     asCharSink(to, charset).write(from);
@@ -299,7 +286,6 @@ public final class Files {
    * @param to the output stream
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static void copy(File from, OutputStream to) throws IOException {
     asByteSource(from).copyTo(to);
   }
@@ -323,7 +309,6 @@ public final class Files {
    * @throws IOException if an I/O error occurs
    * @throws IllegalArgumentException if {@code from.equals(to)}
    */
-  @Beta
   public static void copy(File from, File to) throws IOException {
     checkArgument(!from.equals(to), "Source %s and destination %s must be different", from, to);
     asByteSource(from).copyTo(asByteSink(to));
@@ -340,7 +325,6 @@ public final class Files {
    * @deprecated Prefer {@code asCharSource(from, charset).copyTo(to)}. This method is scheduled to
    *     be removed in October 2019.
    */
-  @Beta
   @Deprecated
   public
   static void copy(File from, Charset charset, Appendable to) throws IOException {
@@ -358,7 +342,6 @@ public final class Files {
    * @deprecated Prefer {@code asCharSink(to, charset, FileWriteMode.APPEND).write(from)}. This
    *     method is scheduled to be removed in October 2019.
    */
-  @Beta
   @Deprecated
   public
   static void append(CharSequence from, File to, Charset charset) throws IOException {
@@ -370,7 +353,6 @@ public final class Files {
    *
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static boolean equal(File file1, File file2) throws IOException {
     checkNotNull(file1);
     checkNotNull(file2);
@@ -421,7 +403,6 @@ public final class Files {
    *     java.nio.file.Files#createTempDirectory}, transforming it to a {@link File} using {@link
    *     java.nio.file.Path#toFile() toFile()} if needed.
    */
-  @Beta
   @Deprecated
   public static File createTempDir() {
     File baseDir = new File(System.getProperty("java.io.tmpdir"));
@@ -452,7 +433,6 @@ public final class Files {
    * @param file the file to create or update
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   @SuppressWarnings("GoodTime") // reading system time without TimeSource
   public static void touch(File file) throws IOException {
     checkNotNull(file);
@@ -470,7 +450,6 @@ public final class Files {
    *     directories of the specified file could not be created.
    * @since 4.0
    */
-  @Beta
   public static void createParentDirs(File file) throws IOException {
     checkNotNull(file);
     File parent = file.getCanonicalFile().getParentFile();
@@ -501,7 +480,6 @@ public final class Files {
    * @throws IOException if an I/O error occurs
    * @throws IllegalArgumentException if {@code from.equals(to)}
    */
-  @Beta
   public static void move(File from, File to) throws IOException {
     checkNotNull(from);
     checkNotNull(to);
@@ -530,7 +508,6 @@ public final class Files {
    * @deprecated Prefer {@code asCharSource(file, charset).readFirstLine()}. This method is
    *     scheduled to be removed in October 2019.
    */
-  @Beta
   @Deprecated
   @CheckForNull
   public
@@ -554,7 +531,6 @@ public final class Files {
    * @return a mutable {@link List} containing all the lines
    * @throws IOException if an I/O error occurs
    */
-  @Beta
   public static List<String> readLines(File file, Charset charset) throws IOException {
     // don't use asCharSource(file, charset).readLines() because that returns
     // an immutable list, which would change the behavior of this method
@@ -589,12 +565,11 @@ public final class Files {
    * @deprecated Prefer {@code asCharSource(file, charset).readLines(callback)}. This method is
    *     scheduled to be removed in October 2019.
    */
-  @Beta
   @Deprecated
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
   public
-  static <T extends @Nullable Object> T readLines(
+  static <T extends Object> T readLines(
       File file, Charset charset, LineProcessor<T> callback) throws IOException {
     return asCharSource(file, charset).readLines(callback);
   }
@@ -611,12 +586,11 @@ public final class Files {
    * @deprecated Prefer {@code asByteSource(file).read(processor)}. This method is scheduled to be
    *     removed in October 2019.
    */
-  @Beta
   @Deprecated
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
   public
-  static <T extends @Nullable Object> T readBytes(File file, ByteProcessor<T> processor)
+  static <T extends Object> T readBytes(File file, ByteProcessor<T> processor)
       throws IOException {
     return asByteSource(file).read(processor);
   }
@@ -632,7 +606,6 @@ public final class Files {
    * @deprecated Prefer {@code asByteSource(file).hash(hashFunction)}. This method is scheduled to
    *     be removed in October 2019.
    */
-  @Beta
   @Deprecated
   public
   static HashCode hash(File file, HashFunction hashFunction) throws IOException {
@@ -654,7 +627,6 @@ public final class Files {
    * @see FileChannel#map(MapMode, long, long)
    * @since 2.0
    */
-  @Beta
   public static MappedByteBuffer map(File file) throws IOException {
     checkNotNull(file);
     return map(file, MapMode.READ_ONLY);
@@ -677,7 +649,6 @@ public final class Files {
    * @see FileChannel#map(MapMode, long, long)
    * @since 2.0
    */
-  @Beta
   public static MappedByteBuffer map(File file, MapMode mode) throws IOException {
     return mapInternal(file, mode, -1);
   }
@@ -701,7 +672,6 @@ public final class Files {
    * @see FileChannel#map(MapMode, long, long)
    * @since 2.0
    */
-  @Beta
   public static MappedByteBuffer map(File file, MapMode mode, long size) throws IOException {
     checkArgument(size >= 0, "size (%s) may not be negative", size);
     return mapInternal(file, mode, size);
@@ -745,7 +715,6 @@ public final class Files {
    *
    * @since 11.0
    */
-  @Beta
   public static String simplifyPath(String pathname) {
     checkNotNull(pathname);
     if (pathname.length() == 0) {
@@ -806,7 +775,6 @@ public final class Files {
    *
    * @since 11.0
    */
-  @Beta
   public static String getFileExtension(String fullName) {
     checkNotNull(fullName);
     String fileName = new File(fullName).getName();
@@ -824,7 +792,6 @@ public final class Files {
    * @return The file name without its path or extension.
    * @since 14.0
    */
-  @Beta
   public static String getNameWithoutExtension(String file) {
     checkNotNull(file);
     String fileName = new File(file).getName();
@@ -854,7 +821,6 @@ public final class Files {
    *
    * @since 23.5
    */
-  @Beta
   public static Traverser<File> fileTraverser() {
     return Traverser.forTree(FILE_TREE);
   }
@@ -880,7 +846,6 @@ public final class Files {
    *
    * @since 15.0
    */
-  @Beta
   public static Predicate<File> isDirectory() {
     return FilePredicate.IS_DIRECTORY;
   }
@@ -890,7 +855,6 @@ public final class Files {
    *
    * @since 15.0
    */
-  @Beta
   public static Predicate<File> isFile() {
     return FilePredicate.IS_FILE;
   }
diff --git a/guava/src/com/google/common/io/Flushables.java b/guava/src/com/google/common/io/Flushables.java
index 1f795a2..5cde0a8 100644
--- a/guava/src/com/google/common/io/Flushables.java
+++ b/guava/src/com/google/common/io/Flushables.java
@@ -14,8 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Flushable;
 import java.io.IOException;
 import java.util.logging.Level;
@@ -27,8 +25,6 @@ import java.util.logging.Logger;
  * @author Michael Lancaster
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Flushables {
   private static final Logger logger = Logger.getLogger(Flushables.class.getName());
diff --git a/guava/src/com/google/common/io/InsecureRecursiveDeleteException.java b/guava/src/com/google/common/io/InsecureRecursiveDeleteException.java
index 4140936..581ea07 100644
--- a/guava/src/com/google/common/io/InsecureRecursiveDeleteException.java
+++ b/guava/src/com/google/common/io/InsecureRecursiveDeleteException.java
@@ -16,9 +16,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
 import java.nio.file.FileSystemException;
 import java.nio.file.SecureDirectoryStream;
 import javax.annotation.CheckForNull;
@@ -35,9 +32,7 @@ import javax.annotation.CheckForNull;
  * @since 21.0
  * @author Colin Decker
  */
-@Beta
-@GwtIncompatible
-@J2ObjCIncompatible // java.nio.file
+// java.nio.file
 @ElementTypesAreNonnullByDefault
 public final class InsecureRecursiveDeleteException extends FileSystemException {
 
diff --git a/guava/src/com/google/common/io/Java8Compatibility.java b/guava/src/com/google/common/io/Java8Compatibility.java
index 705d97b..b111de7 100644
--- a/guava/src/com/google/common/io/Java8Compatibility.java
+++ b/guava/src/com/google/common/io/Java8Compatibility.java
@@ -14,14 +14,12 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.nio.Buffer;
 
 /**
  * Wrappers around {@link Buffer} methods that are covariantly overridden in Java 9+. See
  * https://github.com/google/guava/issues/3990
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class Java8Compatibility {
   static void clear(Buffer b) {
diff --git a/guava/src/com/google/common/io/LineBuffer.java b/guava/src/com/google/common/io/LineBuffer.java
index f944abc..0206eb0 100644
--- a/guava/src/com/google/common/io/LineBuffer.java
+++ b/guava/src/com/google/common/io/LineBuffer.java
@@ -14,8 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 
 /**
@@ -29,7 +27,6 @@ import java.io.IOException;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class LineBuffer {
   /** Holds partial line contents. */
@@ -84,7 +81,6 @@ abstract class LineBuffer {
   }
 
   /** Called when a line is complete. */
-  @CanIgnoreReturnValue
   private boolean finishLine(boolean sawNewline) throws IOException {
     String separator = sawReturn ? (sawNewline ? "\r\n" : "\r") : (sawNewline ? "\n" : "");
     handleLine(line.toString(), separator);
diff --git a/guava/src/com/google/common/io/LineProcessor.java b/guava/src/com/google/common/io/LineProcessor.java
index e28bebc..d4a3b2b 100644
--- a/guava/src/com/google/common/io/LineProcessor.java
+++ b/guava/src/com/google/common/io/LineProcessor.java
@@ -14,11 +14,7 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A callback to be used with the streaming {@code readLines} methods.
@@ -29,10 +25,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Miles Barr
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public interface LineProcessor<T extends @Nullable Object> {
+public interface LineProcessor<T extends Object> {
 
   /**
    * This method will be called once for each line.
@@ -40,7 +34,7 @@ public interface LineProcessor<T extends @Nullable Object> {
    * @param line the line read from the input, without delimiter
    * @return true to continue processing, false to stop
    */
-  @CanIgnoreReturnValue // some uses know that their processor never returns false
+  // some uses know that their processor never returns false
   boolean processLine(String line) throws IOException;
 
   /** Return the result of processing all the lines. */
diff --git a/guava/src/com/google/common/io/LineReader.java b/guava/src/com/google/common/io/LineReader.java
index 2c57ac4..976e6c8 100644
--- a/guava/src/com/google/common/io/LineReader.java
+++ b/guava/src/com/google/common/io/LineReader.java
@@ -17,9 +17,6 @@ package com.google.common.io;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.io.CharStreams.createBuffer;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.Reader;
 import java.nio.CharBuffer;
@@ -35,8 +32,6 @@ import javax.annotation.CheckForNull;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class LineReader {
   private final Readable readable;
@@ -68,7 +63,7 @@ public final class LineReader {
    *     line-termination characters, or {@code null} if the end of the stream has been reached.
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip a line
+  // to skip a line
   @CheckForNull
   public String readLine() throws IOException {
     while (lines.peek() == null) {
diff --git a/guava/src/com/google/common/io/LittleEndianDataInputStream.java b/guava/src/com/google/common/io/LittleEndianDataInputStream.java
index 88c8e27..10ced0d 100644
--- a/guava/src/com/google/common/io/LittleEndianDataInputStream.java
+++ b/guava/src/com/google/common/io/LittleEndianDataInputStream.java
@@ -14,13 +14,9 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.Ints;
 import com.google.common.primitives.Longs;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.io.DataInput;
 import java.io.DataInputStream;
 import java.io.EOFException;
@@ -39,8 +35,6 @@ import java.io.InputStream;
  * @author Keith Bottner
  * @since 8.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class LittleEndianDataInputStream extends FilterInputStream implements DataInput {
 
@@ -54,9 +48,8 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
   }
 
   /** This method will throw an {@link UnsupportedOperationException}. */
-  @CanIgnoreReturnValue // to skip a line
+  // to skip a line
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public String readLine() {
     throw new UnsupportedOperationException("readLine is not supported");
   }
@@ -76,7 +69,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
     return (int) in.skip(n);
   }
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   public int readUnsignedByte() throws IOException {
     int b1 = in.read();
@@ -95,7 +88,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     little-endian byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public int readUnsignedShort() throws IOException {
     byte b1 = readAndCheckByte();
@@ -112,7 +105,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public int readInt() throws IOException {
     byte b1 = readAndCheckByte();
@@ -131,7 +124,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     little-endian byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public long readLong() throws IOException {
     byte b1 = readAndCheckByte();
@@ -154,7 +147,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     little-endian byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public float readFloat() throws IOException {
     return Float.intBitsToFloat(readInt());
@@ -168,13 +161,13 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     little-endian byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public double readDouble() throws IOException {
     return Double.longBitsToDouble(readLong());
   }
 
-  @CanIgnoreReturnValue // to skip a field
+  // to skip a field
   @Override
   public String readUTF() throws IOException {
     return new DataInputStream(in).readUTF();
@@ -188,7 +181,7 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     byte order.
    * @throws IOException if an I/O error occurs.
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public short readShort() throws IOException {
     return (short) readUnsignedShort();
@@ -202,19 +195,19 @@ public final class LittleEndianDataInputStream extends FilterInputStream impleme
    *     byte order
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // to skip some bytes
+  // to skip some bytes
   @Override
   public char readChar() throws IOException {
     return (char) readUnsignedShort();
   }
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   public byte readByte() throws IOException {
     return (byte) readUnsignedByte();
   }
 
-  @CanIgnoreReturnValue // to skip a byte
+  // to skip a byte
   @Override
   public boolean readBoolean() throws IOException {
     return readUnsignedByte() != 0;
diff --git a/guava/src/com/google/common/io/LittleEndianDataOutputStream.java b/guava/src/com/google/common/io/LittleEndianDataOutputStream.java
index 6e51aff..5065249 100644
--- a/guava/src/com/google/common/io/LittleEndianDataOutputStream.java
+++ b/guava/src/com/google/common/io/LittleEndianDataOutputStream.java
@@ -14,8 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.primitives.Longs;
 import java.io.DataOutput;
@@ -35,8 +33,6 @@ import java.io.OutputStream;
  * @author Keith Bottner
  * @since 8.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class LittleEndianDataOutputStream extends FilterOutputStream implements DataOutput {
 
diff --git a/guava/src/com/google/common/io/MoreFiles.java b/guava/src/com/google/common/io/MoreFiles.java
index ffe200d..ba7c7f9 100644
--- a/guava/src/com/google/common/io/MoreFiles.java
+++ b/guava/src/com/google/common/io/MoreFiles.java
@@ -19,16 +19,11 @@ package com.google.common.io;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.Iterables.getOnlyElement;
 import static java.nio.file.LinkOption.NOFOLLOW_LINKS;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
 import com.google.common.graph.SuccessorsFunction;
 import com.google.common.graph.Traverser;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -67,9 +62,7 @@ import javax.annotation.CheckForNull;
  * @since 21.0
  * @author Colin Decker
  */
-@Beta
-@GwtIncompatible
-@J2ObjCIncompatible // java.nio.file
+// java.nio.file
 @ElementTypesAreNonnullByDefault
 public final class MoreFiles {
 
diff --git a/guava/src/com/google/common/io/MultiInputStream.java b/guava/src/com/google/common/io/MultiInputStream.java
index 9a7e0fd..c890b88 100644
--- a/guava/src/com/google/common/io/MultiInputStream.java
+++ b/guava/src/com/google/common/io/MultiInputStream.java
@@ -16,7 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Iterator;
@@ -29,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class MultiInputStream extends InputStream {
 
diff --git a/guava/src/com/google/common/io/MultiReader.java b/guava/src/com/google/common/io/MultiReader.java
index cc36e52..af138c2 100644
--- a/guava/src/com/google/common/io/MultiReader.java
+++ b/guava/src/com/google/common/io/MultiReader.java
@@ -16,7 +16,6 @@ package com.google.common.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import java.io.IOException;
 import java.io.Reader;
@@ -29,7 +28,6 @@ import javax.annotation.CheckForNull;
  * @author Bin Zhu
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 class MultiReader extends Reader {
   private final Iterator<? extends CharSource> it;
diff --git a/guava/src/com/google/common/io/ParametricNullness.java b/guava/src/com/google/common/io/ParametricNullness.java
index afa0db1..7a138d3 100644
--- a/guava/src/com/google/common/io/ParametricNullness.java
+++ b/guava/src/com/google/common/io/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/io/PatternFilenameFilter.java b/guava/src/com/google/common/io/PatternFilenameFilter.java
index 3cb2371..af0f19b 100644
--- a/guava/src/com/google/common/io/PatternFilenameFilter.java
+++ b/guava/src/com/google/common/io/PatternFilenameFilter.java
@@ -14,8 +14,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import java.io.File;
 import java.io.FilenameFilter;
@@ -29,8 +27,6 @@ import java.util.regex.PatternSyntaxException;
  * @author Apple Chow
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class PatternFilenameFilter implements FilenameFilter {
 
diff --git a/guava/src/com/google/common/io/ReaderInputStream.java b/guava/src/com/google/common/io/ReaderInputStream.java
index 75f8a3e..bfe197c 100644
--- a/guava/src/com/google/common/io/ReaderInputStream.java
+++ b/guava/src/com/google/common/io/ReaderInputStream.java
@@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.UnsignedBytes;
 import java.io.IOException;
 import java.io.InputStream;
@@ -43,7 +42,6 @@ import java.util.Arrays;
  *
  * @author Chris Nokleberg
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class ReaderInputStream extends InputStream {
   private final Reader reader;
diff --git a/guava/src/com/google/common/io/RecursiveDeleteOption.java b/guava/src/com/google/common/io/RecursiveDeleteOption.java
index 1bb27a1..9f642dd 100644
--- a/guava/src/com/google/common/io/RecursiveDeleteOption.java
+++ b/guava/src/com/google/common/io/RecursiveDeleteOption.java
@@ -16,9 +16,6 @@
 
 package com.google.common.io;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
 import java.nio.file.SecureDirectoryStream;
 
 /**
@@ -28,9 +25,7 @@ import java.nio.file.SecureDirectoryStream;
  * @since 21.0
  * @author Colin Decker
  */
-@Beta
-@GwtIncompatible
-@J2ObjCIncompatible // java.nio.file
+// java.nio.file
 @ElementTypesAreNonnullByDefault
 public enum RecursiveDeleteOption {
   /**
diff --git a/guava/src/com/google/common/io/Resources.java b/guava/src/com/google/common/io/Resources.java
index cc595fc..f3fff73 100644
--- a/guava/src/com/google/common/io/Resources.java
+++ b/guava/src/com/google/common/io/Resources.java
@@ -17,19 +17,15 @@ package com.google.common.io;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Charsets;
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.Lists;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URL;
 import java.nio.charset.Charset;
 import java.util.List;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Provides utility methods for working with resources in the classpath. Note that even though these
@@ -43,8 +39,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Colin Decker
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Resources {
   private Resources() {}
@@ -122,9 +116,9 @@ public final class Resources {
    * @return the output of processing the lines
    * @throws IOException if an I/O error occurs
    */
-  @CanIgnoreReturnValue // some processors won't return a useful result
+  // some processors won't return a useful result
   @ParametricNullness
-  public static <T extends @Nullable Object> T readLines(
+  public static <T extends Object> T readLines(
       URL url, Charset charset, LineProcessor<T> callback) throws IOException {
     return asCharSource(url, charset).readLines(callback);
   }
@@ -187,7 +181,7 @@ public final class Resources {
    *
    * @throws IllegalArgumentException if the resource is not found
    */
-  @CanIgnoreReturnValue // being used to check if a resource exists
+  // being used to check if a resource exists
   // TODO(cgdecker): maybe add a better way to check if a resource exists
   // e.g. Optional<URL> tryGetResource or boolean resourceExists
   public static URL getResource(String resourceName) {
@@ -205,7 +199,7 @@ public final class Resources {
    *
    * @throws IllegalArgumentException if the resource is not found
    */
-  @CanIgnoreReturnValue // being used to check if a resource exists
+  // being used to check if a resource exists
   public static URL getResource(Class<?> contextClass, String resourceName) {
     URL url = contextClass.getResource(resourceName);
     checkArgument(
diff --git a/guava/src/com/google/common/io/package-info.java b/guava/src/com/google/common/io/package-info.java
index f0666b2..c7bac46 100644
--- a/guava/src/com/google/common/io/package-info.java
+++ b/guava/src/com/google/common/io/package-info.java
@@ -28,9 +28,7 @@
  *
  * @author Chris Nokleberg
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.io;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/math/BigDecimalMath.java b/guava/src/com/google/common/math/BigDecimalMath.java
index 33a55d3..38c67ba 100644
--- a/guava/src/com/google/common/math/BigDecimalMath.java
+++ b/guava/src/com/google/common/math/BigDecimalMath.java
@@ -14,7 +14,6 @@
 
 package com.google.common.math;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 
@@ -24,7 +23,6 @@ import java.math.RoundingMode;
  * @author Louis Wasserman
  * @since 30.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public class BigDecimalMath {
   private BigDecimalMath() {}
diff --git a/guava/src/com/google/common/math/BigIntegerMath.java b/guava/src/com/google/common/math/BigIntegerMath.java
index 6ef1e81..ceeb8ec 100644
--- a/guava/src/com/google/common/math/BigIntegerMath.java
+++ b/guava/src/com/google/common/math/BigIntegerMath.java
@@ -25,10 +25,6 @@ import static java.math.RoundingMode.HALF_DOWN;
 import static java.math.RoundingMode.HALF_EVEN;
 import static java.math.RoundingMode.UNNECESSARY;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.math.RoundingMode;
@@ -47,7 +43,6 @@ import java.util.List;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class BigIntegerMath {
   /**
@@ -57,7 +52,6 @@ public final class BigIntegerMath {
    * @throws IllegalArgumentException if {@code x <= 0}
    * @since 20.0
    */
-  @Beta
   public static BigInteger ceilingPowerOfTwo(BigInteger x) {
     return BigInteger.ZERO.setBit(log2(x, CEILING));
   }
@@ -69,7 +63,6 @@ public final class BigIntegerMath {
    * @throws IllegalArgumentException if {@code x <= 0}
    * @since 20.0
    */
-  @Beta
   public static BigInteger floorPowerOfTwo(BigInteger x) {
     return BigInteger.ZERO.setBit(log2(x, FLOOR));
   }
@@ -133,9 +126,8 @@ public final class BigIntegerMath {
    * of two. This can be any value, but higher values incur more class load time and linearly
    * increasing memory consumption.
    */
-  @VisibleForTesting static final int SQRT2_PRECOMPUTE_THRESHOLD = 256;
+  static final int SQRT2_PRECOMPUTE_THRESHOLD = 256;
 
-  @VisibleForTesting
   static final BigInteger SQRT2_PRECOMPUTED_BITS =
       new BigInteger("16a09e667f3bcc908b2fb1366ea957d3e3adec17512775099da2f590b0667322a", 16);
 
@@ -146,7 +138,7 @@ public final class BigIntegerMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code x}
    *     is not a power of ten
    */
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("fallthrough")
   public static int log10(BigInteger x, RoundingMode mode) {
     checkPositive("x", x);
@@ -224,7 +216,7 @@ public final class BigIntegerMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code
    *     sqrt(x)} is not an integer
    */
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("fallthrough")
   public static BigInteger sqrt(BigInteger x, RoundingMode mode) {
     checkNonNegative("x", x);
@@ -260,7 +252,7 @@ public final class BigIntegerMath {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static BigInteger sqrtFloor(BigInteger x) {
     /*
      * Adapted from Hacker's Delight, Figure 11-1.
@@ -304,7 +296,7 @@ public final class BigIntegerMath {
     return sqrt0;
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static BigInteger sqrtApproxWithDoubles(BigInteger x) {
     return DoubleMath.roundToBigInteger(Math.sqrt(DoubleUtils.bigToDouble(x)), HALF_EVEN);
   }
@@ -330,12 +322,10 @@ public final class BigIntegerMath {
    *     is not precisely representable as a {@code double}
    * @since 30.0
    */
-  @GwtIncompatible
   public static double roundToDouble(BigInteger x, RoundingMode mode) {
     return BigIntegerToDoubleRounder.INSTANCE.roundToDouble(x, mode);
   }
 
-  @GwtIncompatible
   private static class BigIntegerToDoubleRounder extends ToDoubleRounder<BigInteger> {
     static final BigIntegerToDoubleRounder INSTANCE = new BigIntegerToDoubleRounder();
 
@@ -369,7 +359,7 @@ public final class BigIntegerMath {
    * @throws ArithmeticException if {@code q == 0}, or if {@code mode == UNNECESSARY} and {@code a}
    *     is not an integer multiple of {@code b}
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static BigInteger divide(BigInteger p, BigInteger q, RoundingMode mode) {
     BigDecimal pDec = new BigDecimal(p);
     BigDecimal qDec = new BigDecimal(q);
@@ -521,7 +511,7 @@ public final class BigIntegerMath {
   }
 
   // Returns true if BigInteger.valueOf(x.longValue()).equals(x).
-  @GwtIncompatible // TODO
+  // TODO
   static boolean fitsInLong(BigInteger x) {
     return x.bitLength() <= Long.SIZE - 1;
   }
diff --git a/guava/src/com/google/common/math/DoubleMath.java b/guava/src/com/google/common/math/DoubleMath.java
index cdd0a4b..13ee002 100644
--- a/guava/src/com/google/common/math/DoubleMath.java
+++ b/guava/src/com/google/common/math/DoubleMath.java
@@ -30,11 +30,7 @@ import static java.lang.Math.getExponent;
 import static java.lang.Math.log;
 import static java.lang.Math.rint;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.primitives.Booleans;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.math.BigInteger;
 import java.math.RoundingMode;
 import java.util.Iterator;
@@ -45,14 +41,13 @@ import java.util.Iterator;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class DoubleMath {
   /*
    * This method returns a value y such that rounding y DOWN (towards zero) gives the same result as
    * rounding x according to the specified mode.
    */
-  @GwtIncompatible // #isMathematicalInteger, com.google.common.math.DoubleUtils
+  // #isMathematicalInteger, com.google.common.math.DoubleUtils
   static double roundIntermediate(double x, RoundingMode mode) {
     if (!isFinite(x)) {
       throw new ArithmeticException("input is infinite or NaN");
@@ -128,7 +123,7 @@ public final class DoubleMath {
    *           RoundingMode#UNNECESSARY}
    *     </ul>
    */
-  @GwtIncompatible // #roundIntermediate
+  // #roundIntermediate
   public static int roundToInt(double x, RoundingMode mode) {
     double z = roundIntermediate(x, mode);
     checkInRangeForRoundingInputs(
@@ -153,7 +148,7 @@ public final class DoubleMath {
    *           RoundingMode#UNNECESSARY}
    *     </ul>
    */
-  @GwtIncompatible // #roundIntermediate
+  // #roundIntermediate
   public static long roundToLong(double x, RoundingMode mode) {
     double z = roundIntermediate(x, mode);
     checkInRangeForRoundingInputs(
@@ -180,7 +175,6 @@ public final class DoubleMath {
    *     </ul>
    */
   // #roundIntermediate, java.lang.Math.getExponent, com.google.common.math.DoubleUtils
-  @GwtIncompatible
   public static BigInteger roundToBigInteger(double x, RoundingMode mode) {
     x = roundIntermediate(x, mode);
     if (MIN_LONG_AS_DOUBLE - x < 1.0 & x < MAX_LONG_AS_DOUBLE_PLUS_ONE) {
@@ -196,7 +190,7 @@ public final class DoubleMath {
    * Returns {@code true} if {@code x} is exactly equal to {@code 2^k} for some finite integer
    * {@code k}.
    */
-  @GwtIncompatible // com.google.common.math.DoubleUtils
+  // com.google.common.math.DoubleUtils
   public static boolean isPowerOfTwo(double x) {
     if (x > 0.0 && isFinite(x)) {
       long significand = getSignificand(x);
@@ -234,7 +228,7 @@ public final class DoubleMath {
    * @throws IllegalArgumentException if {@code x <= 0.0}, {@code x} is NaN, or {@code x} is
    *     infinite
    */
-  @GwtIncompatible // java.lang.Math.getExponent, com.google.common.math.DoubleUtils
+  // java.lang.Math.getExponent, com.google.common.math.DoubleUtils
   @SuppressWarnings("fallthrough")
   public static int log2(double x, RoundingMode mode) {
     checkArgument(x > 0.0 && isFinite(x), "x must be positive and finite");
@@ -283,7 +277,7 @@ public final class DoubleMath {
    * <p>This is equivalent to, but not necessarily implemented as, the expression {@code
    * !Double.isNaN(x) && !Double.isInfinite(x) && x == Math.rint(x)}.
    */
-  @GwtIncompatible // java.lang.Math.getExponent, com.google.common.math.DoubleUtils
+  // java.lang.Math.getExponent, com.google.common.math.DoubleUtils
   public static boolean isMathematicalInteger(double x) {
     return isFinite(x)
         && (x == 0.0
@@ -314,9 +308,8 @@ public final class DoubleMath {
     }
   }
 
-  @VisibleForTesting static final int MAX_FACTORIAL = 170;
+  static final int MAX_FACTORIAL = 170;
 
-  @VisibleForTesting
   static final double[] everySixteenthFactorial = {
     0x1.0p0,
     0x1.30777758p44,
@@ -404,7 +397,6 @@ public final class DoubleMath {
    */
   @Deprecated
   // com.google.common.math.DoubleUtils
-  @GwtIncompatible
   public static double mean(double... values) {
     checkArgument(values.length > 0, "Cannot take mean of 0 values");
     long count = 1;
@@ -484,7 +476,6 @@ public final class DoubleMath {
    */
   @Deprecated
   // com.google.common.math.DoubleUtils
-  @GwtIncompatible
   public static double mean(Iterable<? extends Number> values) {
     return mean(values.iterator());
   }
@@ -504,7 +495,6 @@ public final class DoubleMath {
    */
   @Deprecated
   // com.google.common.math.DoubleUtils
-  @GwtIncompatible
   public static double mean(Iterator<? extends Number> values) {
     checkArgument(values.hasNext(), "Cannot take mean of 0 values");
     long count = 1;
@@ -518,8 +508,7 @@ public final class DoubleMath {
     return mean;
   }
 
-  @GwtIncompatible // com.google.common.math.DoubleUtils
-  @CanIgnoreReturnValue
+  // com.google.common.math.DoubleUtils
   private static double checkFinite(double argument) {
     checkArgument(isFinite(argument));
     return argument;
diff --git a/guava/src/com/google/common/math/DoubleUtils.java b/guava/src/com/google/common/math/DoubleUtils.java
index d4a07e9..d655e48 100644
--- a/guava/src/com/google/common/math/DoubleUtils.java
+++ b/guava/src/com/google/common/math/DoubleUtils.java
@@ -23,8 +23,6 @@ import static java.lang.Double.isNaN;
 import static java.lang.Double.longBitsToDouble;
 import static java.lang.Math.getExponent;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.math.BigInteger;
 
 /**
@@ -32,7 +30,6 @@ import java.math.BigInteger;
  *
  * @author Louis Wasserman
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class DoubleUtils {
   private DoubleUtils() {}
@@ -135,5 +132,5 @@ final class DoubleUtils {
     return Math.max(value, 0.0);
   }
 
-  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;
+  static final long ONE_BITS = 0x3ff0000000000000L;
 }
diff --git a/guava/src/com/google/common/math/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/math/ElementTypesAreNonnullByDefault.java
index 84999ea..004d393 100644
--- a/guava/src/com/google/common/math/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/math/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/math/IntMath.java b/guava/src/com/google/common/math/IntMath.java
index 17a18c6..60b0852 100644
--- a/guava/src/com/google/common/math/IntMath.java
+++ b/guava/src/com/google/common/math/IntMath.java
@@ -25,10 +25,6 @@ import static java.lang.Math.min;
 import static java.math.RoundingMode.HALF_EVEN;
 import static java.math.RoundingMode.HALF_UP;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.primitives.Ints;
 import java.math.BigInteger;
 import java.math.RoundingMode;
@@ -47,12 +43,11 @@ import java.math.RoundingMode;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class IntMath {
   // NOTE: Whenever both tests are cheap and functional, it's faster to use &, | instead of &&, ||
 
-  @VisibleForTesting static final int MAX_SIGNED_POWER_OF_TWO = 1 << (Integer.SIZE - 2);
+  static final int MAX_SIGNED_POWER_OF_TWO = 1 << (Integer.SIZE - 2);
 
   /**
    * Returns the smallest power of two greater than or equal to {@code x}. This is equivalent to
@@ -63,7 +58,6 @@ public final class IntMath {
    *     int}, i.e. when {@code x > 2^30}
    * @since 20.0
    */
-  @Beta
   public static int ceilingPowerOfTwo(int x) {
     checkPositive("x", x);
     if (x > MAX_SIGNED_POWER_OF_TWO) {
@@ -79,7 +73,6 @@ public final class IntMath {
    * @throws IllegalArgumentException if {@code x <= 0}
    * @since 20.0
    */
-  @Beta
   public static int floorPowerOfTwo(int x) {
     checkPositive("x", x);
     return Integer.highestOneBit(x);
@@ -100,7 +93,6 @@ public final class IntMath {
    * a signed int. The implementation is branch-free, and benchmarks suggest it is measurably (if
    * narrowly) faster than the straightforward ternary expression.
    */
-  @VisibleForTesting
   static int lessThanBranchFree(int x, int y) {
     // The double negation is optimized away by normal Java, but is necessary for GWT
     // to make sure bit twiddling works as expected.
@@ -146,7 +138,7 @@ public final class IntMath {
   }
 
   /** The biggest half power of two that can fit in an unsigned int. */
-  @VisibleForTesting static final int MAX_POWER_OF_SQRT2_UNSIGNED = 0xB504F333;
+  static final int MAX_POWER_OF_SQRT2_UNSIGNED = 0xB504F333;
 
   /**
    * Returns the base-10 logarithm of {@code x}, rounded according to the specified rounding mode.
@@ -155,7 +147,7 @@ public final class IntMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code x}
    *     is not a power of ten
    */
-  @GwtIncompatible // need BigIntegerMath to adequately test
+  // need BigIntegerMath to adequately test
   @SuppressWarnings("fallthrough")
   public static int log10(int x, RoundingMode mode) {
     checkPositive("x", x);
@@ -198,19 +190,16 @@ public final class IntMath {
   }
 
   // maxLog10ForLeadingZeros[i] == floor(log10(2^(Long.SIZE - i)))
-  @VisibleForTesting
   static final byte[] maxLog10ForLeadingZeros = {
     9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0,
     0
   };
 
-  @VisibleForTesting
   static final int[] powersOf10 = {
     1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000
   };
 
   // halfPowersOf10[i] = largest int less than 10^(i + 0.5)
-  @VisibleForTesting
   static final int[] halfPowersOf10 = {
     3, 31, 316, 3162, 31622, 316227, 3162277, 31622776, 316227766, Integer.MAX_VALUE
   };
@@ -224,7 +213,7 @@ public final class IntMath {
    *
    * @throws IllegalArgumentException if {@code k < 0}
    */
-  @GwtIncompatible // failing tests
+  // failing tests
   public static int pow(int b, int k) {
     checkNonNegative("exponent", k);
     switch (b) {
@@ -265,7 +254,7 @@ public final class IntMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code
    *     sqrt(x)} is not an integer
    */
-  @GwtIncompatible // need BigIntegerMath to adequately test
+  // need BigIntegerMath to adequately test
   @SuppressWarnings("fallthrough")
   public static int sqrt(int x, RoundingMode mode) {
     checkNonNegative("x", x);
@@ -532,7 +521,6 @@ public final class IntMath {
    *
    * @since 20.0
    */
-  @Beta
   public static int saturatedAdd(int a, int b) {
     return Ints.saturatedCast((long) a + b);
   }
@@ -543,7 +531,6 @@ public final class IntMath {
    *
    * @since 20.0
    */
-  @Beta
   public static int saturatedSubtract(int a, int b) {
     return Ints.saturatedCast((long) a - b);
   }
@@ -554,7 +541,6 @@ public final class IntMath {
    *
    * @since 20.0
    */
-  @Beta
   public static int saturatedMultiply(int a, int b) {
     return Ints.saturatedCast((long) a * b);
   }
@@ -565,7 +551,6 @@ public final class IntMath {
    *
    * @since 20.0
    */
-  @Beta
   public static int saturatedPow(int b, int k) {
     checkNonNegative("exponent", k);
     switch (b) {
@@ -612,7 +597,7 @@ public final class IntMath {
     }
   }
 
-  @VisibleForTesting static final int FLOOR_SQRT_MAX_INT = 46340;
+  static final int FLOOR_SQRT_MAX_INT = 46340;
 
   /**
    * Returns {@code n!}, that is, the product of the first {@code n} positive integers, {@code 1} if
@@ -673,7 +658,6 @@ public final class IntMath {
   }
 
   // binomial(biggestBinomials[k], k) fits in an int, but not binomial(biggestBinomials[k]+1,k).
-  @VisibleForTesting
   static int[] biggestBinomials = {
     Integer.MAX_VALUE,
     Integer.MAX_VALUE,
@@ -719,8 +703,7 @@ public final class IntMath {
    * @throws IllegalArgumentException if {@code n} is negative
    * @since 20.0
    */
-  @GwtIncompatible // TODO
-  @Beta
+  // TODO
   public static boolean isPrime(int n) {
     return LongMath.isPrime(n);
   }
diff --git a/guava/src/com/google/common/math/LinearTransformation.java b/guava/src/com/google/common/math/LinearTransformation.java
index 4cc1eb8..c1cd1b0 100644
--- a/guava/src/com/google/common/math/LinearTransformation.java
+++ b/guava/src/com/google/common/math/LinearTransformation.java
@@ -18,9 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.math.DoubleUtils.isFinite;
 import static java.lang.Double.NaN;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import javax.annotation.CheckForNull;
 
 /**
@@ -34,8 +31,6 @@ import javax.annotation.CheckForNull;
  * @author Pete Gillin
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class LinearTransformation {
 
@@ -163,7 +158,7 @@ public abstract class LinearTransformation {
     final double slope;
     final double yIntercept;
 
-    @CheckForNull @LazyInit LinearTransformation inverse;
+    @CheckForNull LinearTransformation inverse;
 
     RegularLinearTransformation(double slope, double yIntercept) {
       this.slope = slope;
@@ -221,7 +216,7 @@ public abstract class LinearTransformation {
 
     final double x;
 
-    @CheckForNull @LazyInit LinearTransformation inverse;
+    @CheckForNull LinearTransformation inverse;
 
     VerticalLinearTransformation(double x) {
       this.x = x;
diff --git a/guava/src/com/google/common/math/LongMath.java b/guava/src/com/google/common/math/LongMath.java
index 1e67812..40be516 100644
--- a/guava/src/com/google/common/math/LongMath.java
+++ b/guava/src/com/google/common/math/LongMath.java
@@ -25,10 +25,6 @@ import static java.lang.Math.min;
 import static java.math.RoundingMode.HALF_EVEN;
 import static java.math.RoundingMode.HALF_UP;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.primitives.Longs;
 import com.google.common.primitives.UnsignedLongs;
 import java.math.BigInteger;
@@ -48,12 +44,11 @@ import java.math.RoundingMode;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class LongMath {
   // NOTE: Whenever both tests are cheap and functional, it's faster to use &, | instead of &&, ||
 
-  @VisibleForTesting static final long MAX_SIGNED_POWER_OF_TWO = 1L << (Long.SIZE - 2);
+  static final long MAX_SIGNED_POWER_OF_TWO = 1L << (Long.SIZE - 2);
 
   /**
    * Returns the smallest power of two greater than or equal to {@code x}. This is equivalent to
@@ -64,7 +59,6 @@ public final class LongMath {
    *     long}, i.e. when {@code x > 2^62}
    * @since 20.0
    */
-  @Beta
   public static long ceilingPowerOfTwo(long x) {
     checkPositive("x", x);
     if (x > MAX_SIGNED_POWER_OF_TWO) {
@@ -80,7 +74,6 @@ public final class LongMath {
    * @throws IllegalArgumentException if {@code x <= 0}
    * @since 20.0
    */
-  @Beta
   public static long floorPowerOfTwo(long x) {
     checkPositive("x", x);
 
@@ -104,7 +97,6 @@ public final class LongMath {
    * signed long. The implementation is branch-free, and benchmarks suggest it is measurably faster
    * than the straightforward ternary expression.
    */
-  @VisibleForTesting
   static int lessThanBranchFree(long x, long y) {
     // Returns the sign bit of x - y.
     return (int) (~~(x - y) >>> (Long.SIZE - 1));
@@ -149,7 +141,7 @@ public final class LongMath {
   }
 
   /** The biggest half power of two that fits into an unsigned long */
-  @VisibleForTesting static final long MAX_POWER_OF_SQRT2_UNSIGNED = 0xB504F333F9DE6484L;
+  static final long MAX_POWER_OF_SQRT2_UNSIGNED = 0xB504F333F9DE6484L;
 
   /**
    * Returns the base-10 logarithm of {@code x}, rounded according to the specified rounding mode.
@@ -158,7 +150,7 @@ public final class LongMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code x}
    *     is not a power of ten
    */
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("fallthrough")
   // TODO(kevinb): remove after this warning is disabled globally
   public static int log10(long x, RoundingMode mode) {
@@ -185,7 +177,7 @@ public final class LongMath {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   static int log10Floor(long x) {
     /*
      * Based on Hacker's Delight Fig. 11-5, the two-table-lookup, branch-free implementation.
@@ -203,15 +195,13 @@ public final class LongMath {
   }
 
   // maxLog10ForLeadingZeros[i] == floor(log10(2^(Long.SIZE - i)))
-  @VisibleForTesting
   static final byte[] maxLog10ForLeadingZeros = {
     19, 18, 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12,
     12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3,
     3, 2, 2, 2, 1, 1, 1, 0, 0, 0
   };
 
-  @GwtIncompatible // TODO
-  @VisibleForTesting
+  // TODO
   static final long[] powersOf10 = {
     1L,
     10L,
@@ -235,8 +225,7 @@ public final class LongMath {
   };
 
   // halfPowersOf10[i] = largest long less than 10^(i + 0.5)
-  @GwtIncompatible // TODO
-  @VisibleForTesting
+  // TODO
   static final long[] halfPowersOf10 = {
     3L,
     31L,
@@ -266,7 +255,7 @@ public final class LongMath {
    *
    * @throws IllegalArgumentException if {@code k < 0}
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long pow(long b, int k) {
     checkNonNegative("exponent", k);
     if (-2 <= b && b <= 2) {
@@ -309,7 +298,7 @@ public final class LongMath {
    * @throws ArithmeticException if {@code mode} is {@link RoundingMode#UNNECESSARY} and {@code
    *     sqrt(x)} is not an integer
    */
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("fallthrough")
   public static long sqrt(long x, RoundingMode mode) {
     checkNonNegative("x", x);
@@ -381,7 +370,7 @@ public final class LongMath {
    * @throws ArithmeticException if {@code q == 0}, or if {@code mode == UNNECESSARY} and {@code a}
    *     is not an integer multiple of {@code b}
    */
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("fallthrough")
   public static long divide(long p, long q, RoundingMode mode) {
     checkNotNull(mode);
@@ -454,7 +443,7 @@ public final class LongMath {
    * @see <a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17.3">
    *     Remainder Operator</a>
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static int mod(long x, int m) {
     // Cast is safe because the result is guaranteed in the range [0, m)
     return (int) mod(x, (long) m);
@@ -478,7 +467,7 @@ public final class LongMath {
    * @see <a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17.3">
    *     Remainder Operator</a>
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long mod(long x, long m) {
     if (m <= 0) {
       throw new ArithmeticException("Modulus must be positive");
@@ -543,7 +532,7 @@ public final class LongMath {
    *
    * @throws ArithmeticException if {@code a + b} overflows in signed {@code long} arithmetic
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long checkedAdd(long a, long b) {
     long result = a + b;
     checkNoOverflow((a ^ b) < 0 | (a ^ result) >= 0, "checkedAdd", a, b);
@@ -555,7 +544,7 @@ public final class LongMath {
    *
    * @throws ArithmeticException if {@code a - b} overflows in signed {@code long} arithmetic
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long checkedSubtract(long a, long b) {
     long result = a - b;
     checkNoOverflow((a ^ b) >= 0 | (a ^ result) >= 0, "checkedSubtract", a, b);
@@ -600,7 +589,7 @@ public final class LongMath {
    * @throws ArithmeticException if {@code b} to the {@code k}th power overflows in signed {@code
    *     long} arithmetic
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long checkedPow(long b, int k) {
     checkNonNegative("exponent", k);
     if (b >= -2 & b <= 2) {
@@ -648,7 +637,6 @@ public final class LongMath {
    *
    * @since 20.0
    */
-  @Beta
   public static long saturatedAdd(long a, long b) {
     long naiveSum = a + b;
     if ((a ^ b) < 0 | (a ^ naiveSum) >= 0) {
@@ -666,7 +654,6 @@ public final class LongMath {
    *
    * @since 20.0
    */
-  @Beta
   public static long saturatedSubtract(long a, long b) {
     long naiveDifference = a - b;
     if ((a ^ b) >= 0 | (a ^ naiveDifference) >= 0) {
@@ -684,7 +671,6 @@ public final class LongMath {
    *
    * @since 20.0
    */
-  @Beta
   public static long saturatedMultiply(long a, long b) {
     // see checkedMultiply for explanation
     int leadingZeros =
@@ -714,7 +700,6 @@ public final class LongMath {
    *
    * @since 20.0
    */
-  @Beta
   public static long saturatedPow(long b, int k) {
     checkNonNegative("exponent", k);
     if (b >= -2 & b <= 2) {
@@ -763,7 +748,7 @@ public final class LongMath {
     }
   }
 
-  @VisibleForTesting static final long FLOOR_SQRT_MAX_LONG = 3037000499L;
+  static final long FLOOR_SQRT_MAX_LONG = 3037000499L;
 
   /**
    * Returns {@code n!}, that is, the product of the first {@code n} positive integers, {@code 1} if
@@ -771,7 +756,7 @@ public final class LongMath {
    *
    * @throws IllegalArgumentException if {@code n < 0}
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static long factorial(int n) {
     checkNonNegative("n", n);
     return (n < factorials.length) ? factorials[n] : Long.MAX_VALUE;
@@ -924,7 +909,6 @@ public final class LongMath {
    * binomial(biggestSimpleBinomials[k], k) doesn't need to use the slower GCD-based impl, but
    * binomial(biggestSimpleBinomials[k] + 1, k) does.
    */
-  @VisibleForTesting
   static final int[] biggestSimpleBinomials = {
     Integer.MAX_VALUE,
     Integer.MAX_VALUE,
@@ -999,8 +983,7 @@ public final class LongMath {
    * @throws IllegalArgumentException if {@code n} is negative
    * @since 20.0
    */
-  @GwtIncompatible // TODO
-  @Beta
+  // TODO
   public static boolean isPrime(long n) {
     if (n < 2) {
       checkNonNegative("n", n);
@@ -1243,7 +1226,6 @@ public final class LongMath {
    * @since 30.0
    */
   @SuppressWarnings("deprecation")
-  @GwtIncompatible
   public static double roundToDouble(long x, RoundingMode mode) {
     // Logic adapted from ToDoubleRounder.
     double roundArbitrarily = (double) x;
diff --git a/guava/src/com/google/common/math/MathPreconditions.java b/guava/src/com/google/common/math/MathPreconditions.java
index 37d608a..fa5feb3 100644
--- a/guava/src/com/google/common/math/MathPreconditions.java
+++ b/guava/src/com/google/common/math/MathPreconditions.java
@@ -14,8 +14,6 @@
 
 package com.google.common.math;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.math.BigInteger;
 import java.math.RoundingMode;
 
@@ -24,8 +22,6 @@ import java.math.RoundingMode;
  *
  * @author Louis Wasserman
  */
-@GwtCompatible
-@CanIgnoreReturnValue
 @ElementTypesAreNonnullByDefault
 final class MathPreconditions {
   static int checkPositive(String role, int x) {
diff --git a/guava/src/com/google/common/math/PairedStats.java b/guava/src/com/google/common/math/PairedStats.java
index 31ab9b7..c9b4879 100644
--- a/guava/src/com/google/common/math/PairedStats.java
+++ b/guava/src/com/google/common/math/PairedStats.java
@@ -21,8 +21,6 @@ import static java.lang.Double.NaN;
 import static java.lang.Double.doubleToLongBits;
 import static java.lang.Double.isNaN;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import java.io.Serializable;
@@ -37,8 +35,6 @@ import javax.annotation.CheckForNull;
  * @author Pete Gillin
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class PairedStats implements Serializable {
 
diff --git a/guava/src/com/google/common/math/PairedStatsAccumulator.java b/guava/src/com/google/common/math/PairedStatsAccumulator.java
index 072ef13..f24331b 100644
--- a/guava/src/com/google/common/math/PairedStatsAccumulator.java
+++ b/guava/src/com/google/common/math/PairedStatsAccumulator.java
@@ -19,8 +19,6 @@ import static com.google.common.primitives.Doubles.isFinite;
 import static java.lang.Double.NaN;
 import static java.lang.Double.isNaN;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Doubles;
 
 /**
@@ -30,8 +28,6 @@ import com.google.common.primitives.Doubles;
  * @author Pete Gillin
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class PairedStatsAccumulator {
 
diff --git a/guava/src/com/google/common/math/ParametricNullness.java b/guava/src/com/google/common/math/ParametricNullness.java
index c079b97..6e01027 100644
--- a/guava/src/com/google/common/math/ParametricNullness.java
+++ b/guava/src/com/google/common/math/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/math/Quantiles.java b/guava/src/com/google/common/math/Quantiles.java
index 6ddea9b..a8aecf6 100644
--- a/guava/src/com/google/common/math/Quantiles.java
+++ b/guava/src/com/google/common/math/Quantiles.java
@@ -21,8 +21,6 @@ import static java.lang.Double.POSITIVE_INFINITY;
 import static java.util.Arrays.sort;
 import static java.util.Collections.unmodifiableMap;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Doubles;
 import com.google.common.primitives.Ints;
 import java.math.RoundingMode;
@@ -126,8 +124,6 @@ import java.util.Map;
  * @author Pete Gillin
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Quantiles {
 
diff --git a/guava/src/com/google/common/math/Stats.java b/guava/src/com/google/common/math/Stats.java
index 20c9466..a11ca82 100644
--- a/guava/src/com/google/common/math/Stats.java
+++ b/guava/src/com/google/common/math/Stats.java
@@ -24,8 +24,6 @@ import static java.lang.Double.NaN;
 import static java.lang.Double.doubleToLongBits;
 import static java.lang.Double.isNaN;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import java.io.Serializable;
@@ -62,8 +60,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Stats implements Serializable {
 
diff --git a/guava/src/com/google/common/math/StatsAccumulator.java b/guava/src/com/google/common/math/StatsAccumulator.java
index b28229c..a28d226 100644
--- a/guava/src/com/google/common/math/StatsAccumulator.java
+++ b/guava/src/com/google/common/math/StatsAccumulator.java
@@ -20,8 +20,6 @@ import static com.google.common.primitives.Doubles.isFinite;
 import static java.lang.Double.NaN;
 import static java.lang.Double.isNaN;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Iterator;
 import java.util.stream.DoubleStream;
 import java.util.stream.IntStream;
@@ -35,8 +33,6 @@ import java.util.stream.LongStream;
  * @author Kevin Bourrillion
  * @since 20.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class StatsAccumulator {
 
diff --git a/guava/src/com/google/common/math/ToDoubleRounder.java b/guava/src/com/google/common/math/ToDoubleRounder.java
index 2e7e7fa..dd961d1 100644
--- a/guava/src/com/google/common/math/ToDoubleRounder.java
+++ b/guava/src/com/google/common/math/ToDoubleRounder.java
@@ -17,14 +17,12 @@ package com.google.common.math;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.math.MathPreconditions.checkRoundingUnnecessary;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.math.RoundingMode;
 
 /**
  * Helper type to implement rounding {@code X} to a representable {@code double} value according to
  * a {@link RoundingMode}.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class ToDoubleRounder<X extends Number & Comparable<X>> {
   /**
diff --git a/guava/src/com/google/common/math/package-info.java b/guava/src/com/google/common/math/package-info.java
index 0408246..7a00a68 100644
--- a/guava/src/com/google/common/math/package-info.java
+++ b/guava/src/com/google/common/math/package-info.java
@@ -22,8 +22,6 @@
  * href="https://github.com/google/guava/wiki/MathExplained">math utilities</a>.
  */
 @ParametersAreNonnullByDefault
-@CheckReturnValue
 package com.google.common.math;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/net/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/net/ElementTypesAreNonnullByDefault.java
index d8cfd73..4a695b0 100644
--- a/guava/src/com/google/common/net/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/net/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/net/HostAndPort.java b/guava/src/com/google/common/net/HostAndPort.java
index 19e6b67..0dbcba9 100644
--- a/guava/src/com/google/common/net/HostAndPort.java
+++ b/guava/src/com/google/common/net/HostAndPort.java
@@ -18,12 +18,9 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Objects;
 import com.google.common.base.Strings;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import javax.annotation.CheckForNull;
 
@@ -60,9 +57,6 @@ import javax.annotation.CheckForNull;
  * @author Paul Marks
  * @since 10.0
  */
-@Beta
-@Immutable
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class HostAndPort implements Serializable {
   /** Magic value indicating the absence of a port number. */
diff --git a/guava/src/com/google/common/net/HostSpecifier.java b/guava/src/com/google/common/net/HostSpecifier.java
index 7448944..e568abd 100644
--- a/guava/src/com/google/common/net/HostSpecifier.java
+++ b/guava/src/com/google/common/net/HostSpecifier.java
@@ -14,8 +14,6 @@
 
 package com.google.common.net;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import java.net.InetAddress;
 import java.text.ParseException;
@@ -41,8 +39,6 @@ import javax.annotation.CheckForNull;
  * @author Craig Berry
  * @since 5.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class HostSpecifier {
 
diff --git a/guava/src/com/google/common/net/HttpHeaders.java b/guava/src/com/google/common/net/HttpHeaders.java
index f318da1..4c31fdb 100644
--- a/guava/src/com/google/common/net/HttpHeaders.java
+++ b/guava/src/com/google/common/net/HttpHeaders.java
@@ -14,8 +14,6 @@
 
 package com.google.common.net;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Contains constant definitions for the HTTP header field names. See:
@@ -31,7 +29,6 @@ import com.google.common.annotations.GwtCompatible;
  * @author Kurt Alfred Kluever
  * @since 11.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class HttpHeaders {
   private HttpHeaders() {}
@@ -102,7 +99,6 @@ public final class HttpHeaders {
    *
    * @since 17.0
    */
-  @Beta
   public static final String FOLLOW_ONLY_WHEN_PRERENDER_SHOWN = "Follow-Only-When-Prerender-Shown";
   /** The HTTP {@code Host} header field name. */
   public static final String HOST = "Host";
@@ -357,7 +353,7 @@ public final class HttpHeaders {
    *
    * @since 27.1
    */
-  @Beta public static final String SOURCE_MAP = "SourceMap";
+  public static final String SOURCE_MAP = "SourceMap";
 
   /**
    * The HTTP <a href="http://tools.ietf.org/html/rfc6797#section-6.1">{@code
@@ -455,14 +451,14 @@ public final class HttpHeaders {
    *
    * @since 15.0
    */
-  @Beta public static final String PUBLIC_KEY_PINS = "Public-Key-Pins";
+  public static final String PUBLIC_KEY_PINS = "Public-Key-Pins";
   /**
    * The HTTP <a href="http://tools.ietf.org/html/draft-evans-palmer-key-pinning">{@code
    * Public-Key-Pins-Report-Only}</a> header field name.
    *
    * @since 15.0
    */
-  @Beta public static final String PUBLIC_KEY_PINS_REPORT_ONLY = "Public-Key-Pins-Report-Only";
+  public static final String PUBLIC_KEY_PINS_REPORT_ONLY = "Public-Key-Pins-Report-Only";
   /**
    * The HTTP {@code X-Request-ID} header field name.
    *
@@ -482,7 +478,7 @@ public final class HttpHeaders {
    *
    * @since 24.1
    */
-  @Beta public static final String X_DOWNLOAD_OPTIONS = "X-Download-Options";
+  public static final String X_DOWNLOAD_OPTIONS = "X-Download-Options";
   /** The HTTP {@code X-XSS-Protection} header field name. */
   public static final String X_XSS_PROTECTION = "X-XSS-Protection";
   /**
diff --git a/guava/src/com/google/common/net/InetAddresses.java b/guava/src/com/google/common/net/InetAddresses.java
index 4e2aa69..c609d03 100644
--- a/guava/src/com/google/common/net/InetAddresses.java
+++ b/guava/src/com/google/common/net/InetAddresses.java
@@ -17,8 +17,6 @@ package com.google.common.net;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.MoreObjects;
 import com.google.common.hash.Hashing;
@@ -95,8 +93,6 @@ import javax.annotation.CheckForNull;
  * @author Erik Kline
  * @since 5.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class InetAddresses {
   private static final int IPV4_PART_COUNT = 4;
@@ -667,7 +663,6 @@ public final class InetAddresses {
    *
    * @since 5.0
    */
-  @Beta
   public static final class TeredoInfo {
     private final Inet4Address server;
     private final Inet4Address client;
diff --git a/guava/src/com/google/common/net/InternetDomainName.java b/guava/src/com/google/common/net/InternetDomainName.java
index 5873449..5ac415d 100644
--- a/guava/src/com/google/common/net/InternetDomainName.java
+++ b/guava/src/com/google/common/net/InternetDomainName.java
@@ -18,15 +18,11 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Joiner;
 import com.google.common.base.Optional;
 import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableList;
-import com.google.errorprone.annotations.Immutable;
 import com.google.thirdparty.publicsuffix.PublicSuffixPatterns;
 import com.google.thirdparty.publicsuffix.PublicSuffixType;
 import java.util.List;
@@ -71,9 +67,6 @@ import javax.annotation.CheckForNull;
  * @author Catherine Berry
  * @since 5.0
  */
-@Beta
-@GwtCompatible(emulated = true)
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class InternetDomainName {
 
diff --git a/guava/src/com/google/common/net/MediaType.java b/guava/src/com/google/common/net/MediaType.java
index ca47161..f453bc1 100644
--- a/guava/src/com/google/common/net/MediaType.java
+++ b/guava/src/com/google/common/net/MediaType.java
@@ -21,8 +21,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Ascii;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Function;
@@ -31,14 +29,9 @@ import com.google.common.base.Joiner.MapJoiner;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMultiset;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Multimaps;
-import com.google.errorprone.annotations.Immutable;
-import com.google.errorprone.annotations.concurrent.LazyInit;
 import java.nio.charset.Charset;
 import java.nio.charset.IllegalCharsetNameException;
 import java.nio.charset.UnsupportedCharsetException;
@@ -72,9 +65,6 @@ import javax.annotation.CheckForNull;
  * @since 12.0
  * @author Gregory Kick
  */
-@Beta
-@GwtCompatible
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class MediaType {
   private static final String CHARSET_ATTRIBUTE = "charset";
@@ -764,11 +754,11 @@ public final class MediaType {
   private final String subtype;
   private final ImmutableListMultimap<String, String> parameters;
 
-  @LazyInit @CheckForNull private String toString;
+  @CheckForNull private String toString;
 
-  @LazyInit private int hashCode;
+  private int hashCode;
 
-  @LazyInit @CheckForNull private Optional<Charset> parsedCharset;
+  @CheckForNull private Optional<Charset> parsedCharset;
 
   private MediaType(String type, String subtype, ImmutableListMultimap<String, String> parameters) {
     this.type = type;
diff --git a/guava/src/com/google/common/net/ParametricNullness.java b/guava/src/com/google/common/net/ParametricNullness.java
index acc3eab..5491552 100644
--- a/guava/src/com/google/common/net/ParametricNullness.java
+++ b/guava/src/com/google/common/net/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/net/PercentEscaper.java b/guava/src/com/google/common/net/PercentEscaper.java
index 7c7de9b..9ac1b2b 100644
--- a/guava/src/com/google/common/net/PercentEscaper.java
+++ b/guava/src/com/google/common/net/PercentEscaper.java
@@ -16,8 +16,6 @@ package com.google.common.net;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.UnicodeEscaper;
 import javax.annotation.CheckForNull;
 
@@ -50,8 +48,6 @@ import javax.annotation.CheckForNull;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class PercentEscaper extends UnicodeEscaper {
 
diff --git a/guava/src/com/google/common/net/UrlEscapers.java b/guava/src/com/google/common/net/UrlEscapers.java
index c7e15ef..53db211 100644
--- a/guava/src/com/google/common/net/UrlEscapers.java
+++ b/guava/src/com/google/common/net/UrlEscapers.java
@@ -14,7 +14,6 @@
 
 package com.google.common.net;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.Escaper;
 
 /**
@@ -28,7 +27,6 @@ import com.google.common.escape.Escaper;
  * @author Chris Povirk
  * @since 15.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class UrlEscapers {
   private UrlEscapers() {}
diff --git a/guava/src/com/google/common/primitives/Booleans.java b/guava/src/com/google/common/primitives/Booleans.java
index 522049b..588e822 100644
--- a/guava/src/com/google/common/primitives/Booleans.java
+++ b/guava/src/com/google/common/primitives/Booleans.java
@@ -19,8 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -41,7 +39,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Booleans {
   private Booleans() {}
@@ -80,7 +77,6 @@ public final class Booleans {
    *
    * @since 21.0
    */
-  @Beta
   public static Comparator<Boolean> trueFirst() {
     return BooleanComparator.TRUE_FIRST;
   }
@@ -93,7 +89,6 @@ public final class Booleans {
    *
    * @since 21.0
    */
-  @Beta
   public static Comparator<Boolean> falseFirst() {
     return BooleanComparator.FALSE_FIRST;
   }
@@ -375,7 +370,6 @@ public final class Booleans {
     return new BooleanArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class BooleanArrayAsList extends AbstractList<Boolean>
       implements RandomAccess, Serializable {
     final boolean[] array;
@@ -510,7 +504,6 @@ public final class Booleans {
    *
    * @since 16.0
    */
-  @Beta
   public static int countTrue(boolean... values) {
     int count = 0;
     for (boolean value : values) {
diff --git a/guava/src/com/google/common/primitives/Bytes.java b/guava/src/com/google/common/primitives/Bytes.java
index 62997f3..67b1b5e 100644
--- a/guava/src/com/google/common/primitives/Bytes.java
+++ b/guava/src/com/google/common/primitives/Bytes.java
@@ -19,7 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.GwtCompatible;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -43,7 +42,6 @@ import javax.annotation.CheckForNull;
  */
 // TODO(kevinb): how to prevent warning on UnsignedBytes when building GWT
 // javadoc?
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Bytes {
   private Bytes() {}
@@ -237,7 +235,6 @@ public final class Bytes {
     return new ByteArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class ByteArrayAsList extends AbstractList<Byte>
       implements RandomAccess, Serializable {
     final byte[] array;
diff --git a/guava/src/com/google/common/primitives/Chars.java b/guava/src/com/google/common/primitives/Chars.java
index 4a2e3a3..0dd62ac 100644
--- a/guava/src/com/google/common/primitives/Chars.java
+++ b/guava/src/com/google/common/primitives/Chars.java
@@ -19,9 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -45,7 +42,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Chars {
   private Chars() {}
@@ -258,7 +254,6 @@ public final class Chars {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static char constrainToRange(char value, char min, char max) {
     checkArgument(min <= max, "min (%s) must be less than or equal to max (%s)", min, max);
     return value < min ? min : value < max ? value : max;
@@ -294,7 +289,7 @@ public final class Chars {
    * use a shared {@link java.nio.ByteBuffer} instance, or use {@link
    * com.google.common.io.ByteStreams#newDataOutput()} to get a growable buffer.
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static byte[] toByteArray(char value) {
     return new byte[] {(byte) (value >> 8), (byte) value};
   }
@@ -309,7 +304,7 @@ public final class Chars {
    *
    * @throws IllegalArgumentException if {@code bytes} has fewer than 2 elements
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static char fromByteArray(byte[] bytes) {
     checkArgument(bytes.length >= BYTES, "array too small: %s < %s", bytes.length, BYTES);
     return fromBytes(bytes[0], bytes[1]);
@@ -321,7 +316,7 @@ public final class Chars {
    *
    * @since 7.0
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static char fromBytes(byte b1, byte b2) {
     return (char) ((b1 << 8) | (b2 & 0xFF));
   }
@@ -507,7 +502,6 @@ public final class Chars {
     return new CharArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class CharArrayAsList extends AbstractList<Character>
       implements RandomAccess, Serializable {
     final char[] array;
diff --git a/guava/src/com/google/common/primitives/Doubles.java b/guava/src/com/google/common/primitives/Doubles.java
index fab3cf6..eb470b0 100644
--- a/guava/src/com/google/common/primitives/Doubles.java
+++ b/guava/src/com/google/common/primitives/Doubles.java
@@ -22,9 +22,6 @@ import static com.google.common.base.Strings.lenientFormat;
 import static java.lang.Double.NEGATIVE_INFINITY;
 import static java.lang.Double.POSITIVE_INFINITY;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import java.io.Serializable;
 import java.util.AbstractList;
@@ -48,7 +45,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Doubles extends DoublesMethodsForWeb {
   private Doubles() {}
@@ -211,8 +207,6 @@ public final class Doubles extends DoublesMethodsForWeb {
    *     the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static double min(double... array) {
     checkArgument(array.length > 0);
     double min = array[0];
@@ -231,8 +225,6 @@ public final class Doubles extends DoublesMethodsForWeb {
    *     in the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static double max(double... array) {
     checkArgument(array.length > 0);
     double max = array[0];
@@ -255,7 +247,6 @@ public final class Doubles extends DoublesMethodsForWeb {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static double constrainToRange(double value, double min, double max) {
     // avoid auto-boxing by not using Preconditions.checkArgument(); see Guava issue 3984
     // Reject NaN by testing for the good case (min <= max) instead of the bad (min > max).
@@ -320,7 +311,6 @@ public final class Doubles extends DoublesMethodsForWeb {
    *
    * @since 16.0
    */
-  @Beta
   public static Converter<String, Double> stringConverter() {
     return DoubleConverter.INSTANCE;
   }
@@ -522,7 +512,6 @@ public final class Doubles extends DoublesMethodsForWeb {
     return new DoubleArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class DoubleArrayAsList extends AbstractList<Double>
       implements RandomAccess, Serializable {
     final double[] array;
@@ -662,12 +651,12 @@ public final class Doubles extends DoublesMethodsForWeb {
    * inputs. All valid inputs must pass this regex, but it's semantically fine if not all inputs
    * that pass this regex are valid -- only a performance hit is incurred, not a semantics bug.
    */
-  @GwtIncompatible // regular expressions
+  // regular expressions
   static final
   java.util.regex.Pattern
       FLOATING_POINT_PATTERN = fpPattern();
 
-  @GwtIncompatible // regular expressions
+  // regular expressions
   private static
   java.util.regex.Pattern
       fpPattern() {
@@ -708,8 +697,7 @@ public final class Doubles extends DoublesMethodsForWeb {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 14.0
    */
-  @Beta
-  @GwtIncompatible // regular expressions
+  // regular expressions
   @CheckForNull
   public static Double tryParse(String string) {
     if (FLOATING_POINT_PATTERN.matcher(string).matches()) {
diff --git a/guava/src/com/google/common/primitives/DoublesMethodsForWeb.java b/guava/src/com/google/common/primitives/DoublesMethodsForWeb.java
index 949cbe0..3023272 100644
--- a/guava/src/com/google/common/primitives/DoublesMethodsForWeb.java
+++ b/guava/src/com/google/common/primitives/DoublesMethodsForWeb.java
@@ -14,12 +14,10 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Holder for web specializations of methods of {@code Doubles}. Intended to be empty for regular
  * version.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class DoublesMethodsForWeb {}
diff --git a/guava/src/com/google/common/primitives/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/primitives/ElementTypesAreNonnullByDefault.java
index 44f6869..c9c38f1 100644
--- a/guava/src/com/google/common/primitives/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/primitives/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/primitives/Floats.java b/guava/src/com/google/common/primitives/Floats.java
index b038cb2..7442e41 100644
--- a/guava/src/com/google/common/primitives/Floats.java
+++ b/guava/src/com/google/common/primitives/Floats.java
@@ -22,9 +22,6 @@ import static com.google.common.base.Strings.lenientFormat;
 import static java.lang.Float.NEGATIVE_INFINITY;
 import static java.lang.Float.POSITIVE_INFINITY;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import java.io.Serializable;
 import java.util.AbstractList;
@@ -46,7 +43,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Floats extends FloatsMethodsForWeb {
   private Floats() {}
@@ -206,8 +202,6 @@ public final class Floats extends FloatsMethodsForWeb {
    *     the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static float min(float... array) {
     checkArgument(array.length > 0);
     float min = array[0];
@@ -226,8 +220,6 @@ public final class Floats extends FloatsMethodsForWeb {
    *     in the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static float max(float... array) {
     checkArgument(array.length > 0);
     float max = array[0];
@@ -250,7 +242,6 @@ public final class Floats extends FloatsMethodsForWeb {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static float constrainToRange(float value, float min, float max) {
     // avoid auto-boxing by not using Preconditions.checkArgument(); see Guava issue 3984
     // Reject NaN by testing for the good case (min <= max) instead of the bad (min > max).
@@ -315,7 +306,6 @@ public final class Floats extends FloatsMethodsForWeb {
    *
    * @since 16.0
    */
-  @Beta
   public static Converter<String, Float> stringConverter() {
     return FloatConverter.INSTANCE;
   }
@@ -514,7 +504,6 @@ public final class Floats extends FloatsMethodsForWeb {
     return new FloatArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class FloatArrayAsList extends AbstractList<Float>
       implements RandomAccess, Serializable {
     final float[] array;
@@ -660,8 +649,7 @@ public final class Floats extends FloatsMethodsForWeb {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 14.0
    */
-  @Beta
-  @GwtIncompatible // regular expressions
+  // regular expressions
   @CheckForNull
   public static Float tryParse(String string) {
     if (Doubles.FLOATING_POINT_PATTERN.matcher(string).matches()) {
diff --git a/guava/src/com/google/common/primitives/FloatsMethodsForWeb.java b/guava/src/com/google/common/primitives/FloatsMethodsForWeb.java
index 801e2f3..2d2eb45 100644
--- a/guava/src/com/google/common/primitives/FloatsMethodsForWeb.java
+++ b/guava/src/com/google/common/primitives/FloatsMethodsForWeb.java
@@ -14,12 +14,10 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Holder for web specializations of methods of {@code Floats}. Intended to be empty for regular
  * version.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class FloatsMethodsForWeb {}
diff --git a/guava/src/com/google/common/primitives/ImmutableDoubleArray.java b/guava/src/com/google/common/primitives/ImmutableDoubleArray.java
index 9731c11..616d602 100644
--- a/guava/src/com/google/common/primitives/ImmutableDoubleArray.java
+++ b/guava/src/com/google/common/primitives/ImmutableDoubleArray.java
@@ -17,12 +17,7 @@ package com.google.common.primitives;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CheckReturnValue;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -85,9 +80,6 @@ import javax.annotation.CheckForNull;
  *
  * @since 22.0
  */
-@Beta
-@GwtCompatible
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class ImmutableDoubleArray implements Serializable {
   private static final ImmutableDoubleArray EMPTY = new ImmutableDoubleArray(new double[0]);
@@ -210,7 +202,6 @@ public final class ImmutableDoubleArray implements Serializable {
    * A builder for {@link ImmutableDoubleArray} instances; obtained using {@link
    * ImmutableDoubleArray#builder}.
    */
-  @CanIgnoreReturnValue
   public static final class Builder {
     private double[] array;
     private int count = 0; // <= array.length
@@ -323,7 +314,6 @@ public final class ImmutableDoubleArray implements Serializable {
      * no data is copied as part of this step, but this may occupy more memory than strictly
      * necessary. To copy the data to a right-sized backing array, use {@code .build().trimmed()}.
      */
-    @CheckReturnValue
     public ImmutableDoubleArray build() {
       return count == 0 ? EMPTY : new ImmutableDoubleArray(array, 0, count);
     }
diff --git a/guava/src/com/google/common/primitives/ImmutableIntArray.java b/guava/src/com/google/common/primitives/ImmutableIntArray.java
index cc3c671..325ed6d 100644
--- a/guava/src/com/google/common/primitives/ImmutableIntArray.java
+++ b/guava/src/com/google/common/primitives/ImmutableIntArray.java
@@ -17,12 +17,7 @@ package com.google.common.primitives;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CheckReturnValue;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -85,9 +80,6 @@ import javax.annotation.CheckForNull;
  *
  * @since 22.0
  */
-@Beta
-@GwtCompatible
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class ImmutableIntArray implements Serializable {
   private static final ImmutableIntArray EMPTY = new ImmutableIntArray(new int[0]);
@@ -207,7 +199,6 @@ public final class ImmutableIntArray implements Serializable {
    * A builder for {@link ImmutableIntArray} instances; obtained using {@link
    * ImmutableIntArray#builder}.
    */
-  @CanIgnoreReturnValue
   public static final class Builder {
     private int[] array;
     private int count = 0; // <= array.length
@@ -320,7 +311,6 @@ public final class ImmutableIntArray implements Serializable {
      * no data is copied as part of this step, but this may occupy more memory than strictly
      * necessary. To copy the data to a right-sized backing array, use {@code .build().trimmed()}.
      */
-    @CheckReturnValue
     public ImmutableIntArray build() {
       return count == 0 ? EMPTY : new ImmutableIntArray(array, 0, count);
     }
diff --git a/guava/src/com/google/common/primitives/ImmutableLongArray.java b/guava/src/com/google/common/primitives/ImmutableLongArray.java
index c8f7037..9c00b15 100644
--- a/guava/src/com/google/common/primitives/ImmutableLongArray.java
+++ b/guava/src/com/google/common/primitives/ImmutableLongArray.java
@@ -17,12 +17,7 @@ package com.google.common.primitives;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CheckReturnValue;
-import com.google.errorprone.annotations.Immutable;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -85,9 +80,6 @@ import javax.annotation.CheckForNull;
  *
  * @since 22.0
  */
-@Beta
-@GwtCompatible
-@Immutable
 @ElementTypesAreNonnullByDefault
 public final class ImmutableLongArray implements Serializable {
   private static final ImmutableLongArray EMPTY = new ImmutableLongArray(new long[0]);
@@ -209,7 +201,6 @@ public final class ImmutableLongArray implements Serializable {
    * A builder for {@link ImmutableLongArray} instances; obtained using {@link
    * ImmutableLongArray#builder}.
    */
-  @CanIgnoreReturnValue
   public static final class Builder {
     private long[] array;
     private int count = 0; // <= array.length
@@ -322,7 +313,6 @@ public final class ImmutableLongArray implements Serializable {
      * no data is copied as part of this step, but this may occupy more memory than strictly
      * necessary. To copy the data to a right-sized backing array, use {@code .build().trimmed()}.
      */
-    @CheckReturnValue
     public ImmutableLongArray build() {
       return count == 0 ? EMPTY : new ImmutableLongArray(array, 0, count);
     }
diff --git a/guava/src/com/google/common/primitives/Ints.java b/guava/src/com/google/common/primitives/Ints.java
index b63b0f9..7240442 100644
--- a/guava/src/com/google/common/primitives/Ints.java
+++ b/guava/src/com/google/common/primitives/Ints.java
@@ -19,9 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import java.io.Serializable;
 import java.util.AbstractList;
@@ -45,7 +42,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Ints extends IntsMethodsForWeb {
   private Ints() {}
@@ -222,8 +218,6 @@ public final class Ints extends IntsMethodsForWeb {
    *     the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static int min(int... array) {
     checkArgument(array.length > 0);
     int min = array[0];
@@ -243,8 +237,6 @@ public final class Ints extends IntsMethodsForWeb {
    *     in the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static int max(int... array) {
     checkArgument(array.length > 0);
     int max = array[0];
@@ -269,7 +261,6 @@ public final class Ints extends IntsMethodsForWeb {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static int constrainToRange(int value, int min, int max) {
     checkArgument(min <= max, "min (%s) must be less than or equal to max (%s)", min, max);
     return Math.min(Math.max(value, min), max);
@@ -374,7 +365,6 @@ public final class Ints extends IntsMethodsForWeb {
    *
    * @since 16.0
    */
-  @Beta
   public static Converter<String, Integer> stringConverter() {
     return IntConverter.INSTANCE;
   }
@@ -562,7 +552,6 @@ public final class Ints extends IntsMethodsForWeb {
     return new IntArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class IntArrayAsList extends AbstractList<Integer>
       implements RandomAccess, Serializable {
     final int[] array;
@@ -713,7 +702,6 @@ public final class Ints extends IntsMethodsForWeb {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 11.0
    */
-  @Beta
   @CheckForNull
   public static Integer tryParse(String string) {
     return tryParse(string, 10);
@@ -739,7 +727,6 @@ public final class Ints extends IntsMethodsForWeb {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 19.0
    */
-  @Beta
   @CheckForNull
   public static Integer tryParse(String string, int radix) {
     Long result = Longs.tryParse(string, radix);
diff --git a/guava/src/com/google/common/primitives/IntsMethodsForWeb.java b/guava/src/com/google/common/primitives/IntsMethodsForWeb.java
index c59c6b0..85bd1bf 100644
--- a/guava/src/com/google/common/primitives/IntsMethodsForWeb.java
+++ b/guava/src/com/google/common/primitives/IntsMethodsForWeb.java
@@ -14,12 +14,10 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Holder for web specializations of methods of {@code Ints}. Intended to be empty for regular
  * version.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class IntsMethodsForWeb {}
diff --git a/guava/src/com/google/common/primitives/Longs.java b/guava/src/com/google/common/primitives/Longs.java
index 98c055e..8e55348 100644
--- a/guava/src/com/google/common/primitives/Longs.java
+++ b/guava/src/com/google/common/primitives/Longs.java
@@ -19,8 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Converter;
 import java.io.Serializable;
 import java.util.AbstractList;
@@ -44,7 +42,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Longs {
   private Longs() {}
@@ -236,7 +233,6 @@ public final class Longs {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static long constrainToRange(long value, long min, long max) {
     checkArgument(min <= max, "min (%s) must be less than or equal to max (%s)", min, max);
     return Math.min(Math.max(value, min), max);
@@ -363,7 +359,6 @@ public final class Longs {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 14.0
    */
-  @Beta
   @CheckForNull
   public static Long tryParse(String string) {
     return tryParse(string, 10);
@@ -389,7 +384,6 @@ public final class Longs {
    * @throws NullPointerException if {@code string} is {@code null}
    * @since 19.0
    */
-  @Beta
   @CheckForNull
   public static Long tryParse(String string, int radix) {
     if (checkNotNull(string).isEmpty()) {
@@ -469,7 +463,6 @@ public final class Longs {
    *
    * @since 16.0
    */
-  @Beta
   public static Converter<String, Long> stringConverter() {
     return LongConverter.INSTANCE;
   }
@@ -658,7 +651,6 @@ public final class Longs {
     return new LongArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class LongArrayAsList extends AbstractList<Long>
       implements RandomAccess, Serializable {
     final long[] array;
diff --git a/guava/src/com/google/common/primitives/ParametricNullness.java b/guava/src/com/google/common/primitives/ParametricNullness.java
index 17d606c..b23e60b 100644
--- a/guava/src/com/google/common/primitives/ParametricNullness.java
+++ b/guava/src/com/google/common/primitives/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/primitives/ParseRequest.java b/guava/src/com/google/common/primitives/ParseRequest.java
index a102d69..c63bcb6 100644
--- a/guava/src/com/google/common/primitives/ParseRequest.java
+++ b/guava/src/com/google/common/primitives/ParseRequest.java
@@ -14,10 +14,8 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /** A string to be parsed as a number and the radix to interpret it in. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class ParseRequest {
   final String rawValue;
diff --git a/guava/src/com/google/common/primitives/Platform.java b/guava/src/com/google/common/primitives/Platform.java
index ca31689..1fd177b 100644
--- a/guava/src/com/google/common/primitives/Platform.java
+++ b/guava/src/com/google/common/primitives/Platform.java
@@ -14,10 +14,8 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /** Methods factored out so that they can be emulated differently in GWT. */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class Platform {
   private static final java.util.logging.Logger logger =
diff --git a/guava/src/com/google/common/primitives/Primitives.java b/guava/src/com/google/common/primitives/Primitives.java
index 7ceed03..e7945c4 100644
--- a/guava/src/com/google/common/primitives/Primitives.java
+++ b/guava/src/com/google/common/primitives/Primitives.java
@@ -16,7 +16,6 @@ package com.google.common.primitives;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -29,7 +28,6 @@ import java.util.Set;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Primitives {
   private Primitives() {}
diff --git a/guava/src/com/google/common/primitives/Shorts.java b/guava/src/com/google/common/primitives/Shorts.java
index 09e0f7c..ad250e1 100644
--- a/guava/src/com/google/common/primitives/Shorts.java
+++ b/guava/src/com/google/common/primitives/Shorts.java
@@ -19,9 +19,6 @@ import static com.google.common.base.Preconditions.checkElementIndex;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Converter;
 import java.io.Serializable;
 import java.util.AbstractList;
@@ -43,7 +40,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Shorts extends ShortsMethodsForWeb {
   private Shorts() {}
@@ -219,8 +215,6 @@ public final class Shorts extends ShortsMethodsForWeb {
    *     the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static short min(short... array) {
     checkArgument(array.length > 0);
     short min = array[0];
@@ -240,8 +234,6 @@ public final class Shorts extends ShortsMethodsForWeb {
    *     in the array
    * @throws IllegalArgumentException if {@code array} is empty
    */
-  @GwtIncompatible(
-      "Available in GWT! Annotation is to avoid conflict with GWT specialization of base class.")
   public static short max(short... array) {
     checkArgument(array.length > 0);
     short max = array[0];
@@ -266,7 +258,6 @@ public final class Shorts extends ShortsMethodsForWeb {
    * @throws IllegalArgumentException if {@code min > max}
    * @since 21.0
    */
-  @Beta
   public static short constrainToRange(short value, short min, short max) {
     checkArgument(min <= max, "min (%s) must be less than or equal to max (%s)", min, max);
     return value < min ? min : value < max ? value : max;
@@ -303,7 +294,7 @@ public final class Shorts extends ShortsMethodsForWeb {
    * use a shared {@link java.nio.ByteBuffer} instance, or use {@link
    * com.google.common.io.ByteStreams#newDataOutput()} to get a growable buffer.
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static byte[] toByteArray(short value) {
     return new byte[] {(byte) (value >> 8), (byte) value};
   }
@@ -318,7 +309,7 @@ public final class Shorts extends ShortsMethodsForWeb {
    *
    * @throws IllegalArgumentException if {@code bytes} has fewer than 2 elements
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static short fromByteArray(byte[] bytes) {
     checkArgument(bytes.length >= BYTES, "array too small: %s < %s", bytes.length, BYTES);
     return fromBytes(bytes[0], bytes[1]);
@@ -330,7 +321,7 @@ public final class Shorts extends ShortsMethodsForWeb {
    *
    * @since 7.0
    */
-  @GwtIncompatible // doesn't work
+  // doesn't work
   public static short fromBytes(byte b1, byte b2) {
     return (short) ((b1 << 8) | (b2 & 0xFF));
   }
@@ -372,7 +363,6 @@ public final class Shorts extends ShortsMethodsForWeb {
    *
    * @since 16.0
    */
-  @Beta
   public static Converter<String, Short> stringConverter() {
     return ShortConverter.INSTANCE;
   }
@@ -559,7 +549,6 @@ public final class Shorts extends ShortsMethodsForWeb {
     return new ShortArrayAsList(backingArray);
   }
 
-  @GwtCompatible
   private static class ShortArrayAsList extends AbstractList<Short>
       implements RandomAccess, Serializable {
     final short[] array;
diff --git a/guava/src/com/google/common/primitives/ShortsMethodsForWeb.java b/guava/src/com/google/common/primitives/ShortsMethodsForWeb.java
index bb0ff10..aeb0825 100644
--- a/guava/src/com/google/common/primitives/ShortsMethodsForWeb.java
+++ b/guava/src/com/google/common/primitives/ShortsMethodsForWeb.java
@@ -14,12 +14,10 @@
 
 package com.google.common.primitives;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Holder for web specializations of methods of {@code Shorts}. Intended to be empty for regular
  * version.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class ShortsMethodsForWeb {}
diff --git a/guava/src/com/google/common/primitives/SignedBytes.java b/guava/src/com/google/common/primitives/SignedBytes.java
index 5fabaab..9416d83 100644
--- a/guava/src/com/google/common/primitives/SignedBytes.java
+++ b/guava/src/com/google/common/primitives/SignedBytes.java
@@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.Arrays;
 import java.util.Comparator;
 
@@ -35,7 +34,6 @@ import java.util.Comparator;
  */
 // TODO(kevinb): how to prevent warning on UnsignedBytes when building GWT
 // javadoc?
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class SignedBytes {
   private SignedBytes() {}
diff --git a/guava/src/com/google/common/primitives/UnsignedBytes.java b/guava/src/com/google/common/primitives/UnsignedBytes.java
index bf9a306..8588e8c 100644
--- a/guava/src/com/google/common/primitives/UnsignedBytes.java
+++ b/guava/src/com/google/common/primitives/UnsignedBytes.java
@@ -17,12 +17,7 @@ package com.google.common.primitives;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.nio.ByteOrder;
 import java.util.Arrays;
 import java.util.Comparator;
@@ -43,7 +38,6 @@ import sun.misc.Unsafe;
  * @author Louis Wasserman
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class UnsignedBytes {
   private UnsignedBytes() {}
@@ -84,7 +78,6 @@ public final class UnsignedBytes {
    * @return the {@code byte} value that, when treated as unsigned, equals {@code value}
    * @throws IllegalArgumentException if {@code value} is negative or greater than 255
    */
-  @CanIgnoreReturnValue
   public static byte checkedCast(long value) {
     checkArgument(value >> Byte.SIZE == 0, "out of range: %s", value);
     return (byte) value;
@@ -167,7 +160,6 @@ public final class UnsignedBytes {
    *
    * @since 13.0
    */
-  @Beta
   public static String toString(byte x) {
     return toString(x, 10);
   }
@@ -182,7 +174,6 @@ public final class UnsignedBytes {
    *     and {@link Character#MAX_RADIX}.
    * @since 13.0
    */
-  @Beta
   public static String toString(byte x, int radix) {
     checkArgument(
         radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX,
@@ -201,8 +192,6 @@ public final class UnsignedBytes {
    *     Byte#parseByte(String)})
    * @since 13.0
    */
-  @Beta
-  @CanIgnoreReturnValue
   public static byte parseUnsignedByte(String string) {
     return parseUnsignedByte(string, 10);
   }
@@ -219,8 +208,6 @@ public final class UnsignedBytes {
    *     Byte#parseByte(String)})
    * @since 13.0
    */
-  @Beta
-  @CanIgnoreReturnValue
   public static byte parseUnsignedByte(String string, int radix) {
     int parse = Integer.parseInt(checkNotNull(string), radix);
     // We need to throw a NumberFormatException, so we have to duplicate checkedCast. =(
@@ -273,7 +260,6 @@ public final class UnsignedBytes {
     return LexicographicalComparatorHolder.BEST_COMPARATOR;
   }
 
-  @VisibleForTesting
   static Comparator<byte[]> lexicographicalComparatorJavaImpl() {
     return LexicographicalComparatorHolder.PureJavaComparator.INSTANCE;
   }
@@ -285,14 +271,12 @@ public final class UnsignedBytes {
    * <p>Uses reflection to gracefully fall back to the Java implementation if {@code Unsafe} isn't
    * available.
    */
-  @VisibleForTesting
   static class LexicographicalComparatorHolder {
     static final String UNSAFE_COMPARATOR_NAME =
         LexicographicalComparatorHolder.class.getName() + "$UnsafeComparator";
 
     static final Comparator<byte[]> BEST_COMPARATOR = getBestComparator();
 
-    @VisibleForTesting
     enum UnsafeComparator implements Comparator<byte[]> {
       INSTANCE;
 
diff --git a/guava/src/com/google/common/primitives/UnsignedInteger.java b/guava/src/com/google/common/primitives/UnsignedInteger.java
index 0b30cef..33b604d 100644
--- a/guava/src/com/google/common/primitives/UnsignedInteger.java
+++ b/guava/src/com/google/common/primitives/UnsignedInteger.java
@@ -20,8 +20,6 @@ import static com.google.common.primitives.UnsignedInts.INT_MASK;
 import static com.google.common.primitives.UnsignedInts.compare;
 import static com.google.common.primitives.UnsignedInts.toLong;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import java.math.BigInteger;
 import javax.annotation.CheckForNull;
 
@@ -38,7 +36,6 @@ import javax.annotation.CheckForNull;
  * @author Louis Wasserman
  * @since 11.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class UnsignedInteger extends Number implements Comparable<UnsignedInteger> {
   public static final UnsignedInteger ZERO = fromIntBits(0);
@@ -143,7 +140,7 @@ public final class UnsignedInteger extends Number implements Comparable<Unsigned
    *
    * @since 14.0
    */
-  @GwtIncompatible // Does not truncate correctly
+  // Does not truncate correctly
   public UnsignedInteger times(UnsignedInteger val) {
     // TODO(lowasser): make this GWT-compatible
     return fromIntBits(value * checkNotNull(val).value);
diff --git a/guava/src/com/google/common/primitives/UnsignedInts.java b/guava/src/com/google/common/primitives/UnsignedInts.java
index ec6474e..4df9cd2 100644
--- a/guava/src/com/google/common/primitives/UnsignedInts.java
+++ b/guava/src/com/google/common/primitives/UnsignedInts.java
@@ -18,9 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Arrays;
 import java.util.Comparator;
 
@@ -45,8 +42,6 @@ import java.util.Comparator;
  * @author Louis Wasserman
  * @since 11.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class UnsignedInts {
   static final long INT_MASK = 0xffffffffL;
@@ -312,7 +307,6 @@ public final class UnsignedInts {
    * @throws NumberFormatException if the string does not contain a valid unsigned {@code int} value
    * @since 13.0
    */
-  @CanIgnoreReturnValue
   public static int decode(String stringValue) {
     ParseRequest request = ParseRequest.fromString(stringValue);
 
@@ -335,7 +329,6 @@ public final class UnsignedInts {
    * @throws NullPointerException if {@code s} is null (in contrast to {@link
    *     Integer#parseInt(String)})
    */
-  @CanIgnoreReturnValue
   public static int parseUnsignedInt(String s) {
     return parseUnsignedInt(s, 10);
   }
@@ -353,7 +346,6 @@ public final class UnsignedInts {
    * @throws NullPointerException if {@code s} is null (in contrast to {@link
    *     Integer#parseInt(String)})
    */
-  @CanIgnoreReturnValue
   public static int parseUnsignedInt(String string, int radix) {
     checkNotNull(string);
     long result = Long.parseLong(string, radix);
diff --git a/guava/src/com/google/common/primitives/UnsignedLong.java b/guava/src/com/google/common/primitives/UnsignedLong.java
index d803634..51a9f64 100644
--- a/guava/src/com/google/common/primitives/UnsignedLong.java
+++ b/guava/src/com/google/common/primitives/UnsignedLong.java
@@ -17,8 +17,6 @@ package com.google.common.primitives;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.math.BigInteger;
 import javax.annotation.CheckForNull;
@@ -37,7 +35,6 @@ import javax.annotation.CheckForNull;
  * @author Colin Evans
  * @since 11.0
  */
-@GwtCompatible(serializable = true)
 @ElementTypesAreNonnullByDefault
 public final class UnsignedLong extends Number implements Comparable<UnsignedLong>, Serializable {
 
@@ -77,7 +74,6 @@ public final class UnsignedLong extends Number implements Comparable<UnsignedLon
    * @throws IllegalArgumentException if {@code value} is negative
    * @since 14.0
    */
-  @CanIgnoreReturnValue
   public static UnsignedLong valueOf(long value) {
     checkArgument(value >= 0, "value (%s) is outside the range for an unsigned long value", value);
     return fromLongBits(value);
@@ -89,7 +85,6 @@ public final class UnsignedLong extends Number implements Comparable<UnsignedLon
    *
    * @throws IllegalArgumentException if {@code value} is negative or {@code value >= 2^64}
    */
-  @CanIgnoreReturnValue
   public static UnsignedLong valueOf(BigInteger value) {
     checkNotNull(value);
     checkArgument(
@@ -106,7 +101,6 @@ public final class UnsignedLong extends Number implements Comparable<UnsignedLon
    * @throws NumberFormatException if the string does not contain a parsable unsigned {@code long}
    *     value
    */
-  @CanIgnoreReturnValue
   public static UnsignedLong valueOf(String string) {
     return valueOf(string, 10);
   }
@@ -119,7 +113,6 @@ public final class UnsignedLong extends Number implements Comparable<UnsignedLon
    *     value, or {@code radix} is not between {@link Character#MIN_RADIX} and {@link
    *     Character#MAX_RADIX}
    */
-  @CanIgnoreReturnValue
   public static UnsignedLong valueOf(String string, int radix) {
     return fromLongBits(UnsignedLongs.parseUnsignedLong(string, radix));
   }
diff --git a/guava/src/com/google/common/primitives/UnsignedLongs.java b/guava/src/com/google/common/primitives/UnsignedLongs.java
index 31c51cc..5f18b61 100644
--- a/guava/src/com/google/common/primitives/UnsignedLongs.java
+++ b/guava/src/com/google/common/primitives/UnsignedLongs.java
@@ -18,9 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkPositionIndexes;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.math.BigInteger;
 import java.util.Arrays;
 import java.util.Comparator;
@@ -48,8 +45,6 @@ import java.util.Comparator;
  * @author Colin Evans
  * @since 10.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class UnsignedLongs {
   private UnsignedLongs() {}
@@ -316,7 +311,6 @@ public final class UnsignedLongs {
    * @throws NullPointerException if {@code string} is null (in contrast to {@link
    *     Long#parseLong(String)})
    */
-  @CanIgnoreReturnValue
   public static long parseUnsignedLong(String string) {
     return parseUnsignedLong(string, 10);
   }
@@ -334,7 +328,6 @@ public final class UnsignedLongs {
    * @throws NullPointerException if {@code string} is null (in contrast to {@link
    *     Long#parseLong(String)})
    */
-  @CanIgnoreReturnValue
   public static long parseUnsignedLong(String string, int radix) {
     checkNotNull(string);
     if (string.length() == 0) {
@@ -376,7 +369,6 @@ public final class UnsignedLongs {
    *     value
    * @since 13.0
    */
-  @CanIgnoreReturnValue
   public static long decode(String stringValue) {
     ParseRequest request = ParseRequest.fromString(stringValue);
 
diff --git a/guava/src/com/google/common/primitives/package-info.java b/guava/src/com/google/common/primitives/package-info.java
index 9504fa7..e04d08c 100644
--- a/guava/src/com/google/common/primitives/package-info.java
+++ b/guava/src/com/google/common/primitives/package-info.java
@@ -61,8 +61,6 @@
  * </ul>
  */
 @ParametersAreNonnullByDefault
-@CheckReturnValue
 package com.google.common.primitives;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/reflect/AbstractInvocationHandler.java b/guava/src/com/google/common/reflect/AbstractInvocationHandler.java
index 4666f99..69794c0 100644
--- a/guava/src/com/google/common/reflect/AbstractInvocationHandler.java
+++ b/guava/src/com/google/common/reflect/AbstractInvocationHandler.java
@@ -14,13 +14,11 @@
 
 package com.google.common.reflect;
 
-import com.google.common.annotations.Beta;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.util.Arrays;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Abstract implementation of {@link InvocationHandler} that handles {@link Object#equals}, {@link
@@ -39,7 +37,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Ben Yu
  * @since 12.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractInvocationHandler implements InvocationHandler {
 
diff --git a/guava/src/com/google/common/reflect/ClassPath.java b/guava/src/com/google/common/reflect/ClassPath.java
index de693da..d5900f3 100644
--- a/guava/src/com/google/common/reflect/ClassPath.java
+++ b/guava/src/com/google/common/reflect/ClassPath.java
@@ -20,15 +20,10 @@ import static com.google.common.base.StandardSystemProperty.JAVA_CLASS_PATH;
 import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR;
 import static java.util.logging.Level.WARNING;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Predicate;
 import com.google.common.base.Splitter;
 import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.io.ByteSource;
 import com.google.common.io.CharSource;
@@ -92,7 +87,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 14.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class ClassPath {
   private static final Logger logger = Logger.getLogger(ClassPath.class.getName());
@@ -211,7 +205,6 @@ public final class ClassPath {
    *
    * @since 14.0
    */
-  @Beta
   public static class ResourceInfo {
     private final File file;
     private final String resourceName;
@@ -307,7 +300,6 @@ public final class ClassPath {
    *
    * @since 14.0
    */
-  @Beta
   public static final class ClassInfo extends ResourceInfo {
     private final String className;
 
@@ -587,7 +579,6 @@ public final class ClassPath {
    * File Specification</a>. If {@code manifest} is null, it means the jar file has no manifest, and
    * an empty set will be returned.
    */
-  @VisibleForTesting
   static ImmutableSet<File> getClassPathFromManifest(
       File jarFile, @CheckForNull Manifest manifest) {
     if (manifest == null) {
@@ -614,7 +605,6 @@ public final class ClassPath {
     return builder.build();
   }
 
-  @VisibleForTesting
   static ImmutableMap<File, ClassLoader> getClassPathEntries(ClassLoader classloader) {
     LinkedHashMap<File, ClassLoader> entries = Maps.newLinkedHashMap();
     // Search parent first, since it's the order ClassLoader#loadClass() uses.
@@ -647,7 +637,7 @@ public final class ClassPath {
    * Returns the URLs in the class path specified by the {@code java.class.path} {@linkplain
    * System#getProperty system property}.
    */
-  @VisibleForTesting // TODO(b/65488446): Make this a public API.
+  // TODO(b/65488446): Make this a public API.
   static ImmutableList<URL> parseJavaClassPath() {
     ImmutableList.Builder<URL> urls = ImmutableList.builder();
     for (String entry : Splitter.on(PATH_SEPARATOR.value()).split(JAVA_CLASS_PATH.value())) {
@@ -670,19 +660,16 @@ public final class ClassPath {
    * File Specification</a>. Even though the specification only talks about relative urls, absolute
    * urls are actually supported too (for example, in Maven surefire plugin).
    */
-  @VisibleForTesting
   static URL getClassPathEntry(File jarFile, String path) throws MalformedURLException {
     return new URL(jarFile.toURI().toURL(), path);
   }
 
-  @VisibleForTesting
   static String getClassName(String filename) {
     int classNameEnd = filename.length() - CLASS_FILE_NAME_EXTENSION.length();
     return filename.substring(0, classNameEnd).replace('/', '.');
   }
 
   // TODO(benyu): Try java.nio.file.Paths#get() when Guava drops JDK 6 support.
-  @VisibleForTesting
   static File toFile(URL url) {
     checkArgument(url.getProtocol().equals("file"));
     try {
diff --git a/guava/src/com/google/common/reflect/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/reflect/ElementTypesAreNonnullByDefault.java
index 0e8ef3c..46997d6 100644
--- a/guava/src/com/google/common/reflect/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/reflect/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/reflect/ImmutableTypeToInstanceMap.java b/guava/src/com/google/common/reflect/ImmutableTypeToInstanceMap.java
index 7fad5de..9611988 100644
--- a/guava/src/com/google/common/reflect/ImmutableTypeToInstanceMap.java
+++ b/guava/src/com/google/common/reflect/ImmutableTypeToInstanceMap.java
@@ -14,11 +14,7 @@
 
 package com.google.common.reflect;
 
-import com.google.common.annotations.Beta;
 import com.google.common.collect.ForwardingMap;
-import com.google.common.collect.ImmutableMap;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.Map;
 
 /**
@@ -28,7 +24,6 @@ import java.util.Map;
  * @author Ben Yu
  * @since 13.0
  */
-@Beta
 public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken<? extends B>, B>
     implements TypeToInstanceMap<B> {
 
@@ -58,7 +53,6 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
    *
    * @since 13.0
    */
-  @Beta
   public static final class Builder<B> {
     private final ImmutableMap.Builder<TypeToken<? extends B>, B> mapBuilder =
         ImmutableMap.builder();
@@ -69,7 +63,6 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
      * Associates {@code key} with {@code value} in the built map. Duplicate keys are not allowed,
      * and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public <T extends B> Builder<B> put(Class<T> key, T value) {
       mapBuilder.put(TypeToken.of(key), value);
       return this;
@@ -79,7 +72,6 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
      * Associates {@code key} with {@code value} in the built map. Duplicate keys are not allowed,
      * and will cause {@link #build} to fail.
      */
-    @CanIgnoreReturnValue
     public <T extends B> Builder<B> put(TypeToken<T> key, T value) {
       mapBuilder.put(key.rejectTypeVariables(), value);
       return this;
@@ -117,10 +109,8 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
    * @deprecated unsupported operation
    * @throws UnsupportedOperationException always
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public <T extends B> T putInstance(TypeToken<T> type, T value) {
     throw new UnsupportedOperationException();
   }
@@ -131,10 +121,8 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
    * @deprecated unsupported operation
    * @throws UnsupportedOperationException always
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public <T extends B> T putInstance(Class<T> type, T value) {
     throw new UnsupportedOperationException();
   }
@@ -145,10 +133,8 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
    * @deprecated unsupported operation
    * @throws UnsupportedOperationException always
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public B put(TypeToken<? extends B> key, B value) {
     throw new UnsupportedOperationException();
   }
@@ -161,7 +147,6 @@ public final class ImmutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void putAll(Map<? extends TypeToken<? extends B>, ? extends B> map) {
     throw new UnsupportedOperationException();
   }
diff --git a/guava/src/com/google/common/reflect/Invokable.java b/guava/src/com/google/common/reflect/Invokable.java
index e6d3b6c..cf847ad 100644
--- a/guava/src/com/google/common/reflect/Invokable.java
+++ b/guava/src/com/google/common/reflect/Invokable.java
@@ -16,9 +16,6 @@ package com.google.common.reflect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.collect.ImmutableList;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.AnnotatedElement;
@@ -32,7 +29,6 @@ import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
 import java.util.Arrays;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Wrapper around either a {@link Method} or a {@link Constructor}. Convenience API is provided to
@@ -63,7 +59,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 14.0 (no longer implements {@link AccessibleObject} or {@code GenericDeclaration} since
  *     31.0)
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public abstract class Invokable<T, R> implements AnnotatedElement, Member {
   private final AccessibleObject accessibleObject;
@@ -254,7 +249,6 @@ public abstract class Invokable<T, R> implements AnnotatedElement, Member {
    */
   // All subclasses are owned by us and we'll make sure to get the R type right, including nullness.
   @SuppressWarnings({"unchecked", "nullness"})
-  @CanIgnoreReturnValue
   @CheckForNull
   public final R invoke(@CheckForNull T receiver, @Nullable Object... args)
       throws InvocationTargetException, IllegalAccessException {
diff --git a/guava/src/com/google/common/reflect/MutableTypeToInstanceMap.java b/guava/src/com/google/common/reflect/MutableTypeToInstanceMap.java
index 2d21dbb..a7b50c5 100644
--- a/guava/src/com/google/common/reflect/MutableTypeToInstanceMap.java
+++ b/guava/src/com/google/common/reflect/MutableTypeToInstanceMap.java
@@ -16,19 +16,15 @@ package com.google.common.reflect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.collect.ForwardingMap;
 import com.google.common.collect.ForwardingMapEntry;
 import com.google.common.collect.ForwardingSet;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Maps;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotCall;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A mutable type-to-instance map. See also {@link ImmutableTypeToInstanceMap}.
@@ -36,31 +32,28 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Ben Yu
  * @since 13.0
  */
-@Beta
 public final class MutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken<? extends B>, B>
     implements TypeToInstanceMap<B> {
 
   private final Map<TypeToken<? extends B>, B> backingMap = Maps.newHashMap();
 
   @Override
-  public <T extends B> @Nullable T getInstance(Class<T> type) {
+  public <T extends B> T getInstance(Class<T> type) {
     return trustedGet(TypeToken.of(type));
   }
 
   @Override
-  public <T extends B> @Nullable T getInstance(TypeToken<T> type) {
+  public <T extends B> T getInstance(TypeToken<T> type) {
     return trustedGet(type.rejectTypeVariables());
   }
 
   @Override
-  @CanIgnoreReturnValue
-  public <T extends B> @Nullable T putInstance(Class<T> type, @Nullable T value) {
+  public <T extends B> T putInstance(Class<T> type, @Nullable T value) {
     return trustedPut(TypeToken.of(type), value);
   }
 
   @Override
-  @CanIgnoreReturnValue
-  public <T extends B> @Nullable T putInstance(TypeToken<T> type, @Nullable T value) {
+  public <T extends B> T putInstance(TypeToken<T> type, @Nullable T value) {
     return trustedPut(type.rejectTypeVariables(), value);
   }
 
@@ -70,10 +63,8 @@ public final class MutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken<?
    * @deprecated unsupported operation
    * @throws UnsupportedOperationException always
    */
-  @CanIgnoreReturnValue
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public B put(TypeToken<? extends B> key, B value) {
     throw new UnsupportedOperationException("Please use putInstance() instead.");
   }
@@ -86,7 +77,6 @@ public final class MutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken<?
    */
   @Deprecated
   @Override
-  @DoNotCall("Always throws UnsupportedOperationException")
   public void putAll(Map<? extends TypeToken<? extends B>, ? extends B> map) {
     throw new UnsupportedOperationException("Please use putInstance() instead.");
   }
@@ -102,12 +92,12 @@ public final class MutableTypeToInstanceMap<B> extends ForwardingMap<TypeToken<?
   }
 
   @SuppressWarnings("unchecked") // value could not get in if not a T
-  private <T extends B> @Nullable T trustedPut(TypeToken<T> type, @Nullable T value) {
+  private <T extends B> T trustedPut(TypeToken<T> type, @Nullable T value) {
     return (T) backingMap.put(type, value);
   }
 
   @SuppressWarnings("unchecked") // value could not get in if not a T
-  private <T extends B> @Nullable T trustedGet(TypeToken<T> type) {
+  private <T extends B> T trustedGet(TypeToken<T> type) {
     return (T) backingMap.get(type);
   }
 
diff --git a/guava/src/com/google/common/reflect/Parameter.java b/guava/src/com/google/common/reflect/Parameter.java
index 61ab85a..af70a1d 100644
--- a/guava/src/com/google/common/reflect/Parameter.java
+++ b/guava/src/com/google/common/reflect/Parameter.java
@@ -16,14 +16,11 @@ package com.google.common.reflect;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.AnnotatedType;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Represents a method or constructor parameter.
@@ -31,7 +28,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Ben Yu
  * @since 14.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class Parameter implements AnnotatedElement {
 
@@ -113,7 +109,6 @@ public final class Parameter implements AnnotatedElement {
   // @Override on JDK8
   @Override
   public <A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationType) {
-    @Nullable
     A[] result = FluentIterable.from(annotations).filter(annotationType).toArray(annotationType);
     @SuppressWarnings("nullness") // safe because the input list contains no nulls
     A[] cast = (A[]) result;
diff --git a/guava/src/com/google/common/reflect/ParametricNullness.java b/guava/src/com/google/common/reflect/ParametricNullness.java
index 588aa5f..9a4c13e 100644
--- a/guava/src/com/google/common/reflect/ParametricNullness.java
+++ b/guava/src/com/google/common/reflect/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/reflect/Reflection.java b/guava/src/com/google/common/reflect/Reflection.java
index fa35f7f..9544963 100644
--- a/guava/src/com/google/common/reflect/Reflection.java
+++ b/guava/src/com/google/common/reflect/Reflection.java
@@ -17,7 +17,6 @@ package com.google.common.reflect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Proxy;
 
@@ -26,7 +25,6 @@ import java.lang.reflect.Proxy;
  *
  * @since 12.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class Reflection {
 
diff --git a/guava/src/com/google/common/reflect/TypeParameter.java b/guava/src/com/google/common/reflect/TypeParameter.java
index 9c64abb..69cd829 100644
--- a/guava/src/com/google/common/reflect/TypeParameter.java
+++ b/guava/src/com/google/common/reflect/TypeParameter.java
@@ -16,7 +16,6 @@ package com.google.common.reflect;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import com.google.common.annotations.Beta;
 import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
 import javax.annotation.CheckForNull;
@@ -34,7 +33,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 12.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 /*
  * A nullable bound would let users create a TypeParameter instance for a parameter with a nullable
diff --git a/guava/src/com/google/common/reflect/TypeResolver.java b/guava/src/com/google/common/reflect/TypeResolver.java
index fbe48c1..c2411d6 100644
--- a/guava/src/com/google/common/reflect/TypeResolver.java
+++ b/guava/src/com/google/common/reflect/TypeResolver.java
@@ -19,10 +19,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.Joiner;
 import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import java.lang.reflect.GenericArrayType;
 import java.lang.reflect.ParameterizedType;
@@ -51,7 +49,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 15.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class TypeResolver {
 
diff --git a/guava/src/com/google/common/reflect/TypeToInstanceMap.java b/guava/src/com/google/common/reflect/TypeToInstanceMap.java
index 443b258..fb992d3 100644
--- a/guava/src/com/google/common/reflect/TypeToInstanceMap.java
+++ b/guava/src/com/google/common/reflect/TypeToInstanceMap.java
@@ -14,11 +14,7 @@
 
 package com.google.common.reflect;
 
-import com.google.common.annotations.Beta;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Map;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A map, each entry of which maps a {@link TypeToken} to an instance of that type. In addition to
@@ -39,8 +35,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Ben Yu
  * @since 13.0
  */
-@Beta
-@DoNotMock("Use ImmutableTypeToInstanceMap or MutableTypeToInstanceMap")
 public interface TypeToInstanceMap<B> extends Map<TypeToken<? extends B>, B> {
 
   /**
@@ -51,14 +45,14 @@ public interface TypeToInstanceMap<B> extends Map<TypeToken<? extends B>, B> {
    * <p>{@code getInstance(Foo.class)} is equivalent to {@code
    * getInstance(TypeToken.of(Foo.class))}.
    */
-  <T extends B> @Nullable T getInstance(Class<T> type);
+  <T extends B> T getInstance(Class<T> type);
 
   /**
    * Returns the value the specified type is mapped to, or {@code null} if no entry for this type is
    * present. This will only return a value that was bound to this specific type, not a value that
    * may have been bound to a subtype.
    */
-  <T extends B> @Nullable T getInstance(TypeToken<T> type);
+  <T extends B> T getInstance(TypeToken<T> type);
 
   /**
    * Maps the specified class to the specified value. Does <i>not</i> associate this value with any
@@ -70,8 +64,7 @@ public interface TypeToInstanceMap<B> extends Map<TypeToken<? extends B>, B> {
    * @return the value previously associated with this class (possibly {@code null}), or {@code
    *     null} if there was no previous entry.
    */
-  @CanIgnoreReturnValue
-  <T extends B> @Nullable T putInstance(Class<T> type, @Nullable T value);
+  <T extends B> T putInstance(Class<T> type, @Nullable T value);
 
   /**
    * Maps the specified type to the specified value. Does <i>not</i> associate this value with any
@@ -80,6 +73,5 @@ public interface TypeToInstanceMap<B> extends Map<TypeToken<? extends B>, B> {
    * @return the value previously associated with this type (possibly {@code null}), or {@code null}
    *     if there was no previous entry.
    */
-  @CanIgnoreReturnValue
-  <T extends B> @Nullable T putInstance(TypeToken<T> type, @Nullable T value);
+  <T extends B> T putInstance(TypeToken<T> type, @Nullable T value);
 }
diff --git a/guava/src/com/google/common/reflect/TypeToken.java b/guava/src/com/google/common/reflect/TypeToken.java
index f107b70..7627924 100644
--- a/guava/src/com/google/common/reflect/TypeToken.java
+++ b/guava/src/com/google/common/reflect/TypeToken.java
@@ -17,21 +17,14 @@ package com.google.common.reflect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Joiner;
 import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ForwardingSet;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
 import com.google.common.primitives.Primitives;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.GenericArrayType;
@@ -97,7 +90,6 @@ import javax.annotation.CheckForNull;
  * @author Ben Yu
  * @since 12.0
  */
-@Beta
 @SuppressWarnings("serial") // SimpleTypeToken is the serialized form.
 @ElementTypesAreNonnullByDefault
 public abstract class TypeToken<T> extends TypeCapture<T> implements Serializable {
@@ -865,7 +857,6 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
    * Ensures that this type token doesn't contain type variables, which can cause unchecked type
    * errors for callers like {@link TypeToInstanceMap}.
    */
-  @CanIgnoreReturnValue
   final TypeToken<T> rejectTypeVariables() {
     new TypeVisitor() {
       @Override
@@ -1168,7 +1159,6 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
    * <p>If {@code cls} isn't parameterized and isn't a generic array, the type token of the class is
    * returned.
    */
-  @VisibleForTesting
   static <T> TypeToken<? extends T> toGenericType(Class<T> cls) {
     if (cls.isArray()) {
       Type arrayOfGenericType =
@@ -1402,7 +1392,6 @@ public abstract class TypeToken<T> extends TypeCapture<T> implements Serializabl
     }
 
     /** Collects all types to map, and returns the total depth from T up to Object. */
-    @CanIgnoreReturnValue
     private int collectTypes(K type, Map<? super K, Integer> map) {
       Integer existing = map.get(type);
       if (existing != null) {
diff --git a/guava/src/com/google/common/reflect/TypeVisitor.java b/guava/src/com/google/common/reflect/TypeVisitor.java
index 416397b..174ddfa 100644
--- a/guava/src/com/google/common/reflect/TypeVisitor.java
+++ b/guava/src/com/google/common/reflect/TypeVisitor.java
@@ -21,7 +21,6 @@ import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
 import java.lang.reflect.WildcardType;
 import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Based on what a {@link Type} is, dispatch it to the corresponding {@code visit*} method. By
diff --git a/guava/src/com/google/common/reflect/Types.java b/guava/src/com/google/common/reflect/Types.java
index 0dc327d..1dd30d9 100644
--- a/guava/src/com/google/common/reflect/Types.java
+++ b/guava/src/com/google/common/reflect/Types.java
@@ -17,15 +17,11 @@ package com.google.common.reflect;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.Iterables.transform;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
 import java.io.Serializable;
 import java.lang.reflect.AnnotatedElement;
@@ -46,7 +42,6 @@ import java.util.Collection;
 import java.util.Map.Entry;
 import java.util.concurrent.atomic.AtomicReference;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Utilities for working with {@link Type}.
@@ -157,13 +152,11 @@ final class Types {
   }
 
   /** Returns a new {@link WildcardType} with {@code upperBound}. */
-  @VisibleForTesting
   static WildcardType subtypeOf(Type upperBound) {
     return new WildcardTypeImpl(new Type[0], new Type[] {upperBound});
   }
 
   /** Returns a new {@link WildcardType} with {@code lowerBound}. */
-  @VisibleForTesting
   static WildcardType supertypeOf(Type lowerBound) {
     return new WildcardTypeImpl(new Type[] {lowerBound}, new Type[] {Object.class});
   }
@@ -180,7 +173,7 @@ final class Types {
   @CheckForNull
   static Type getComponentType(Type type) {
     checkNotNull(type);
-    final AtomicReference<@Nullable Type> result = new AtomicReference<>();
+    final AtomicReference<Type> result = new AtomicReference<>();
     new TypeVisitor() {
       @Override
       void visitTypeVariable(TypeVariable<?> t) {
diff --git a/guava/src/com/google/common/reflect/package-info.java b/guava/src/com/google/common/reflect/package-info.java
index 6b60471..10f5921 100644
--- a/guava/src/com/google/common/reflect/package-info.java
+++ b/guava/src/com/google/common/reflect/package-info.java
@@ -16,9 +16,7 @@
  * This package contains utilities to work with Java reflection. It is a part of the open-source <a
  * href="http://github.com/google/guava">Guava</a> library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.reflect;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/util/concurrent/AbstractCatchingFuture.java b/guava/src/com/google/common/util/concurrent/AbstractCatchingFuture.java
index 76eada2..01e1643 100644
--- a/guava/src/com/google/common/util/concurrent/AbstractCatchingFuture.java
+++ b/guava/src/com/google/common/util/concurrent/AbstractCatchingFuture.java
@@ -17,27 +17,22 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.Futures.getDone;
 import static com.google.common.util.concurrent.MoreExecutors.rejectionPropagatingExecutor;
-import static com.google.common.util.concurrent.NullnessCasts.uncheckedCastNullableTToT;
 import static com.google.common.util.concurrent.Platform.isInstanceOfThrowableClass;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.internal.InternalFutureFailureAccess;
 import com.google.common.util.concurrent.internal.InternalFutures;
-import com.google.errorprone.annotations.ForOverride;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Implementations of {@code Futures.catching*}. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 @SuppressWarnings("nullness") // TODO(b/147136275): Remove once our checker understands & and |.
 abstract class AbstractCatchingFuture<
-        V extends @Nullable Object, X extends Throwable, F, T extends @Nullable Object>
+        V extends Object, X extends Throwable, F, T extends Object>
     extends FluentFuture.TrustedFuture<V> implements Runnable {
-  static <V extends @Nullable Object, X extends Throwable> ListenableFuture<V> create(
+  static <V extends Object, X extends Throwable> ListenableFuture<V> create(
       ListenableFuture<? extends V> input,
       Class<X> exceptionType,
       Function<? super X, ? extends V> fallback,
@@ -47,7 +42,7 @@ abstract class AbstractCatchingFuture<
     return future;
   }
 
-  static <X extends Throwable, V extends @Nullable Object> ListenableFuture<V> create(
+  static <X extends Throwable, V extends Object> ListenableFuture<V> create(
       ListenableFuture<? extends V> input,
       Class<X> exceptionType,
       AsyncFunction<? super X, ? extends V> fallback,
@@ -167,12 +162,10 @@ abstract class AbstractCatchingFuture<
   }
 
   /** Template method for subtypes to actually run the fallback. */
-  @ForOverride
   @ParametricNullness
   abstract T doFallback(F fallback, X throwable) throws Exception;
 
   /** Template method for subtypes to actually set the result. */
-  @ForOverride
   abstract void setResult(@ParametricNullness T result);
 
   @Override
@@ -187,7 +180,7 @@ abstract class AbstractCatchingFuture<
    * An {@link AbstractCatchingFuture} that delegates to an {@link AsyncFunction} and {@link
    * #setFuture(ListenableFuture)}.
    */
-  private static final class AsyncCatchingFuture<V extends @Nullable Object, X extends Throwable>
+  private static final class AsyncCatchingFuture<V extends Object, X extends Throwable>
       extends AbstractCatchingFuture<
           V, X, AsyncFunction<? super X, ? extends V>, ListenableFuture<? extends V>> {
     AsyncCatchingFuture(
@@ -219,7 +212,7 @@ abstract class AbstractCatchingFuture<
    * An {@link AbstractCatchingFuture} that delegates to a {@link Function} and {@link
    * #set(Object)}.
    */
-  private static final class CatchingFuture<V extends @Nullable Object, X extends Throwable>
+  private static final class CatchingFuture<V extends Object, X extends Throwable>
       extends AbstractCatchingFuture<V, X, Function<? super X, ? extends V>, V> {
     CatchingFuture(
         ListenableFuture<? extends V> input,
diff --git a/guava/src/com/google/common/util/concurrent/AbstractExecutionThreadService.java b/guava/src/com/google/common/util/concurrent/AbstractExecutionThreadService.java
index df5b462..444b17d 100644
--- a/guava/src/com/google/common/util/concurrent/AbstractExecutionThreadService.java
+++ b/guava/src/com/google/common/util/concurrent/AbstractExecutionThreadService.java
@@ -14,10 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Supplier;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.time.Duration;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
@@ -33,7 +30,6 @@ import java.util.logging.Logger;
  * @author Jesse Wilson
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractExecutionThreadService implements Service {
   private static final Logger logger =
@@ -148,7 +144,6 @@ public abstract class AbstractExecutionThreadService implements Service {
    * implementing {@code stopping}. Note, however, that {@code stopping} does not run at exactly the
    * same times as {@code triggerShutdown}.
    */
-  @Beta
   protected void triggerShutdown() {}
 
   /**
@@ -198,7 +193,6 @@ public abstract class AbstractExecutionThreadService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service startAsync() {
     delegate.startAsync();
@@ -206,7 +200,6 @@ public abstract class AbstractExecutionThreadService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service stopAsync() {
     delegate.stopAsync();
diff --git a/guava/src/com/google/common/util/concurrent/AbstractFuture.java b/guava/src/com/google/common/util/concurrent/AbstractFuture.java
index e61c6ff..9214fbf 100644
--- a/guava/src/com/google/common/util/concurrent/AbstractFuture.java
+++ b/guava/src/com/google/common/util/concurrent/AbstractFuture.java
@@ -19,17 +19,11 @@ import static com.google.common.base.Throwables.throwIfUnchecked;
 import static com.google.common.util.concurrent.NullnessCasts.uncheckedNull;
 import static java.lang.Integer.toHexString;
 import static java.lang.System.identityHashCode;
-import static java.util.Objects.requireNonNull;
 import static java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Strings;
 import com.google.common.util.concurrent.internal.InternalFutureFailureAccess;
 import com.google.common.util.concurrent.internal.InternalFutures;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.ForOverride;
-import com.google.j2objc.annotations.ReflectionSupport;
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
@@ -46,7 +40,6 @@ import java.util.concurrent.locks.LockSupport;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An abstract implementation of {@link ListenableFuture}, intended for advanced users only. More
@@ -71,10 +64,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
   "ShortCircuitBoolean", // we use non-short circuiting comparisons intentionally
   "nullness", // TODO(b/147136275): Remove once our checker understands & and |.
 })
-@GwtCompatible(emulated = true)
-@ReflectionSupport(value = ReflectionSupport.Level.FULL)
 @ElementTypesAreNonnullByDefault
-public abstract class AbstractFuture<V extends @Nullable Object> extends InternalFutureFailureAccess
+public abstract class AbstractFuture<V extends Object> extends InternalFutureFailureAccess
     implements ListenableFuture<V> {
   // NOTE: Whenever both tests are cheap and functional, it's faster to use &, | instead of &&, ||
 
@@ -98,22 +89,20 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    * of this interface must also be an AbstractFuture and must not override or expose for overriding
    * any of the public methods of ListenableFuture.
    */
-  interface Trusted<V extends @Nullable Object> extends ListenableFuture<V> {}
+  interface Trusted<V extends Object> extends ListenableFuture<V> {}
 
   /**
    * A less abstract subclass of AbstractFuture. This can be used to optimize setFuture by ensuring
    * that {@link #get} calls exactly the implementation of {@link AbstractFuture#get}.
    */
-  abstract static class TrustedFuture<V extends @Nullable Object> extends AbstractFuture<V>
+  abstract static class TrustedFuture<V extends Object> extends AbstractFuture<V>
       implements Trusted<V> {
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public final V get() throws InterruptedException, ExecutionException {
       return super.get();
     }
 
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public final V get(long timeout, TimeUnit unit)
@@ -136,7 +125,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
       super.addListener(listener, executor);
     }
 
-    @CanIgnoreReturnValue
     @Override
     public final boolean cancel(boolean mayInterruptIfRunning) {
       return super.cancel(mayInterruptIfRunning);
@@ -340,7 +328,7 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
   }
 
   /** A special value that encodes the 'setFuture' state. */
-  private static final class SetFuture<V extends @Nullable Object> implements Runnable {
+  private static final class SetFuture<V extends Object> implements Runnable {
     final AbstractFuture<V> owner;
     final ListenableFuture<? extends V> future;
 
@@ -422,7 +410,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    *
    * @throws CancellationException {@inheritDoc}
    */
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public V get(long timeout, TimeUnit unit)
@@ -535,7 +522,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    *
    * @throws CancellationException {@inheritDoc}
    */
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public V get() throws InterruptedException, ExecutionException {
@@ -627,7 +613,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    * <p>Beware of completing a future while holding a lock. Its listeners may do slow work or
    * acquire other locks, risking deadlocks.
    */
-  @CanIgnoreReturnValue
   @Override
   public boolean cancel(boolean mayInterruptIfRunning) {
     Object localValue = value;
@@ -776,7 +761,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    * @param value the value to be used as the result
    * @return true if the attempt was accepted, completing the {@code Future}
    */
-  @CanIgnoreReturnValue
   protected boolean set(@ParametricNullness V value) {
     Object valueToSet = value == null ? NULL : value;
     if (ATOMIC_HELPER.casValue(this, null, valueToSet)) {
@@ -801,7 +785,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    * @param throwable the exception to be used as the failed result
    * @return true if the attempt was accepted, completing the {@code Future}
    */
-  @CanIgnoreReturnValue
   protected boolean setException(Throwable throwable) {
     Object valueToSet = new Failure(checkNotNull(throwable));
     if (ATOMIC_HELPER.casValue(this, null, valueToSet)) {
@@ -840,7 +823,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    *     cancelled or set.
    * @since 19.0
    */
-  @CanIgnoreReturnValue
   protected boolean setFuture(ListenableFuture<? extends V> future) {
     checkNotNull(future);
     Object localValue = value;
@@ -971,7 +953,7 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    * internal dependency on other /util/concurrent classes.
    */
   @ParametricNullness
-  private static <V extends @Nullable Object> V getUninterruptibly(Future<V> future)
+  private static <V extends Object> V getUninterruptibly(Future<V> future)
       throws ExecutionException {
     boolean interrupted = false;
     try {
@@ -1053,8 +1035,6 @@ public abstract class AbstractFuture<V extends @Nullable Object> extends Interna
    *
    * @since 20.0
    */
-  @Beta
-  @ForOverride
   protected void afterDone() {}
 
   // TODO(b/114236866): Inherit doc from InternalFutureFailureAccess. Also, -link to its URL.
diff --git a/guava/src/com/google/common/util/concurrent/AbstractIdleService.java b/guava/src/com/google/common/util/concurrent/AbstractIdleService.java
index fe9faf9..721b4c2 100644
--- a/guava/src/com/google/common/util/concurrent/AbstractIdleService.java
+++ b/guava/src/com/google/common/util/concurrent/AbstractIdleService.java
@@ -14,10 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Supplier;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.WeakOuter;
 import java.time.Duration;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
@@ -31,14 +28,12 @@ import java.util.concurrent.TimeoutException;
  * @author Chris Nokleberg
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractIdleService implements Service {
 
   /* Thread names will look like {@code "MyService STARTING"}. */
   private final Supplier<String> threadNameSupplier = new ThreadNameSupplier();
 
-  @WeakOuter
   private final class ThreadNameSupplier implements Supplier<String> {
     @Override
     public String get() {
@@ -49,7 +44,6 @@ public abstract class AbstractIdleService implements Service {
   /* use AbstractService for state management */
   private final Service delegate = new DelegateService();
 
-  @WeakOuter
   private final class DelegateService extends AbstractService {
     @Override
     protected final void doStart() {
@@ -144,7 +138,6 @@ public abstract class AbstractIdleService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service startAsync() {
     delegate.startAsync();
@@ -152,7 +145,6 @@ public abstract class AbstractIdleService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service stopAsync() {
     delegate.stopAsync();
diff --git a/guava/src/com/google/common/util/concurrent/AbstractListeningExecutorService.java b/guava/src/com/google/common/util/concurrent/AbstractListeningExecutorService.java
index fd5c5c9..98d8ede 100644
--- a/guava/src/com/google/common/util/concurrent/AbstractListeningExecutorService.java
+++ b/guava/src/com/google/common/util/concurrent/AbstractListeningExecutorService.java
@@ -14,13 +14,9 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.AbstractExecutorService;
 import java.util.concurrent.Callable;
 import java.util.concurrent.RunnableFuture;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Abstract {@link ListeningExecutorService} implementation that creates {@link ListenableFuture}
@@ -33,23 +29,20 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Povirk
  * @since 14.0
  */
-@Beta
-@CanIgnoreReturnValue
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractListeningExecutorService extends AbstractExecutorService
     implements ListeningExecutorService {
 
   /** @since 19.0 (present with return type {@code ListenableFutureTask} since 14.0) */
   @Override
-  protected final <T extends @Nullable Object> RunnableFuture<T> newTaskFor(
+  protected final <T extends Object> RunnableFuture<T> newTaskFor(
       Runnable runnable, @ParametricNullness T value) {
     return TrustedListenableFutureTask.create(runnable, value);
   }
 
   /** @since 19.0 (present with return type {@code ListenableFutureTask} since 14.0) */
   @Override
-  protected final <T extends @Nullable Object> RunnableFuture<T> newTaskFor(Callable<T> callable) {
+  protected final <T extends Object> RunnableFuture<T> newTaskFor(Callable<T> callable) {
     return TrustedListenableFutureTask.create(callable);
   }
 
@@ -59,13 +52,13 @@ public abstract class AbstractListeningExecutorService extends AbstractExecutorS
   }
 
   @Override
-  public <T extends @Nullable Object> ListenableFuture<T> submit(
+  public <T extends Object> ListenableFuture<T> submit(
       Runnable task, @ParametricNullness T result) {
     return (ListenableFuture<T>) super.submit(task, result);
   }
 
   @Override
-  public <T extends @Nullable Object> ListenableFuture<T> submit(Callable<T> task) {
+  public <T extends Object> ListenableFuture<T> submit(Callable<T> task) {
     return (ListenableFuture<T>) super.submit(task);
   }
 }
diff --git a/guava/src/com/google/common/util/concurrent/AbstractScheduledService.java b/guava/src/com/google/common/util/concurrent/AbstractScheduledService.java
index 87fb6df..bc593ff 100644
--- a/guava/src/com/google/common/util/concurrent/AbstractScheduledService.java
+++ b/guava/src/com/google/common/util/concurrent/AbstractScheduledService.java
@@ -19,13 +19,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.Futures.immediateCancelledFuture;
 import static com.google.common.util.concurrent.Internal.toNanosSaturated;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Supplier;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.WeakOuter;
 import java.time.Duration;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Executor;
@@ -40,7 +35,6 @@ import java.util.concurrent.locks.ReentrantLock;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Base class for services that can implement {@link #startUp} and {@link #shutDown} but while in
@@ -99,7 +93,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Luke Sandberg
  * @since 11.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractScheduledService implements Service {
   private static final Logger logger = Logger.getLogger(AbstractScheduledService.class.getName());
@@ -201,7 +194,6 @@ public abstract class AbstractScheduledService implements Service {
   /* use AbstractService for state management */
   private final AbstractService delegate = new ServiceDelegate();
 
-  @WeakOuter
   private final class ServiceDelegate extends AbstractService {
 
     // A handle to the running task so that we can stop it when a shutdown has been requested.
@@ -215,7 +207,6 @@ public abstract class AbstractScheduledService implements Service {
     // lock.
     private final ReentrantLock lock = new ReentrantLock();
 
-    @WeakOuter
     class Task implements Runnable {
       @Override
       public void run() {
@@ -367,7 +358,6 @@ public abstract class AbstractScheduledService implements Service {
    * fails}.
    */
   protected ScheduledExecutorService executor() {
-    @WeakOuter
     class ThreadFactoryImpl implements ThreadFactory {
       @Override
       public Thread newThread(Runnable runnable) {
@@ -435,7 +425,6 @@ public abstract class AbstractScheduledService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service startAsync() {
     delegate.startAsync();
@@ -443,7 +432,6 @@ public abstract class AbstractScheduledService implements Service {
   }
 
   /** @since 15.0 */
-  @CanIgnoreReturnValue
   @Override
   public final Service stopAsync() {
     delegate.stopAsync();
@@ -521,7 +509,7 @@ public abstract class AbstractScheduledService implements Service {
   public abstract static class CustomScheduler extends Scheduler {
 
     /** A callable class that can reschedule itself using a {@link CustomScheduler}. */
-    private final class ReschedulableCallable implements Callable<@Nullable Void> {
+    private final class ReschedulableCallable implements Callable<Void> {
 
       /** The underlying task. */
       private final Runnable wrappedRunnable;
@@ -564,7 +552,6 @@ public abstract class AbstractScheduledService implements Service {
       private final ReentrantLock lock = new ReentrantLock();
 
       /** The future that represents the next execution of this task. */
-      @GuardedBy("lock")
       @CheckForNull
       private SupplantableFuture cancellationDelegate;
 
@@ -587,7 +574,6 @@ public abstract class AbstractScheduledService implements Service {
        * Atomically reschedules this task and assigns the new future to {@link
        * #cancellationDelegate}.
        */
-      @CanIgnoreReturnValue
       public Cancellable reschedule() {
         // invoke the callback outside the lock, prevents some shenanigans.
         Schedule schedule;
@@ -627,7 +613,6 @@ public abstract class AbstractScheduledService implements Service {
         return toReturn;
       }
 
-      @GuardedBy("lock")
       /*
        * The GuardedBy checker warns us that we're not holding cancellationDelegate.lock. But in
        * fact we are holding it because it is the same as this.lock, which we know we are holding,
@@ -645,7 +630,7 @@ public abstract class AbstractScheduledService implements Service {
         return cancellationDelegate;
       }
 
-      private ScheduledFuture<@Nullable Void> submitToExecutor(Schedule schedule) {
+      private ScheduledFuture<Void> submitToExecutor(Schedule schedule) {
         return executor.schedule(this, schedule.delay, schedule.unit);
       }
     }
@@ -657,8 +642,7 @@ public abstract class AbstractScheduledService implements Service {
     private static final class SupplantableFuture implements Cancellable {
       private final ReentrantLock lock;
 
-      @GuardedBy("lock")
-      private Future<@Nullable Void> currentFuture;
+      private Future<Void> currentFuture;
 
       SupplantableFuture(ReentrantLock lock, Future<@Nullable Void> currentFuture) {
         this.lock = lock;
diff --git a/guava/src/com/google/common/util/concurrent/AbstractService.java b/guava/src/com/google/common/util/concurrent/AbstractService.java
index ae40096..809eb41 100644
--- a/guava/src/com/google/common/util/concurrent/AbstractService.java
+++ b/guava/src/com/google/common/util/concurrent/AbstractService.java
@@ -23,16 +23,9 @@ import static com.google.common.util.concurrent.Service.State.RUNNING;
 import static com.google.common.util.concurrent.Service.State.STARTING;
 import static com.google.common.util.concurrent.Service.State.STOPPING;
 import static com.google.common.util.concurrent.Service.State.TERMINATED;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.util.concurrent.Monitor.Guard;
 import com.google.common.util.concurrent.Service.State; // javadoc needs this
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.ForOverride;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.WeakOuter;
 import java.time.Duration;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
@@ -49,7 +42,6 @@ import javax.annotation.CheckForNull;
  * @author Luke Sandberg
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class AbstractService implements Service {
   private static final ListenerCallQueue.Event<Listener> STARTING_EVENT =
@@ -122,7 +114,6 @@ public abstract class AbstractService implements Service {
 
   private final Guard isStartable = new IsStartableGuard();
 
-  @WeakOuter
   private final class IsStartableGuard extends Guard {
     IsStartableGuard() {
       super(AbstractService.this.monitor);
@@ -136,7 +127,6 @@ public abstract class AbstractService implements Service {
 
   private final Guard isStoppable = new IsStoppableGuard();
 
-  @WeakOuter
   private final class IsStoppableGuard extends Guard {
     IsStoppableGuard() {
       super(AbstractService.this.monitor);
@@ -150,7 +140,6 @@ public abstract class AbstractService implements Service {
 
   private final Guard hasReachedRunning = new HasReachedRunningGuard();
 
-  @WeakOuter
   private final class HasReachedRunningGuard extends Guard {
     HasReachedRunningGuard() {
       super(AbstractService.this.monitor);
@@ -164,7 +153,6 @@ public abstract class AbstractService implements Service {
 
   private final Guard isStopped = new IsStoppedGuard();
 
-  @WeakOuter
   private final class IsStoppedGuard extends Guard {
     IsStoppedGuard() {
       super(AbstractService.this.monitor);
@@ -203,7 +191,6 @@ public abstract class AbstractService implements Service {
    * convenient. It is invoked exactly once on service startup, even when {@link #startAsync} is
    * called multiple times.
    */
-  @ForOverride
   protected abstract void doStart();
 
   /**
@@ -220,7 +207,6 @@ public abstract class AbstractService implements Service {
    * invoked immediately. Instead, it will be deferred until after the service is {@link
    * State#RUNNING}. Services that need to cancel startup work can override {@link #doCancelStart}.
    */
-  @ForOverride
   protected abstract void doStop();
 
   /**
@@ -237,11 +223,8 @@ public abstract class AbstractService implements Service {
    *
    * @since 27.0
    */
-  @Beta
-  @ForOverride
   protected void doCancelStart() {}
 
-  @CanIgnoreReturnValue
   @Override
   public final Service startAsync() {
     if (monitor.enterIf(isStartable)) {
@@ -261,7 +244,6 @@ public abstract class AbstractService implements Service {
     return this;
   }
 
-  @CanIgnoreReturnValue
   @Override
   public final Service stopAsync() {
     if (monitor.enterIf(isStoppable)) {
@@ -370,7 +352,6 @@ public abstract class AbstractService implements Service {
   }
 
   /** Checks that the current state is equal to the expected state. */
-  @GuardedBy("monitor")
   private void checkCurrentState(State expected) {
     State actual = state();
     if (actual != expected) {
diff --git a/guava/src/com/google/common/util/concurrent/AbstractTransformFuture.java b/guava/src/com/google/common/util/concurrent/AbstractTransformFuture.java
index dd68791..3a2413a 100644
--- a/guava/src/com/google/common/util/concurrent/AbstractTransformFuture.java
+++ b/guava/src/com/google/common/util/concurrent/AbstractTransformFuture.java
@@ -18,23 +18,19 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.Futures.getDone;
 import static com.google.common.util.concurrent.MoreExecutors.rejectionPropagatingExecutor;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Function;
-import com.google.errorprone.annotations.ForOverride;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Implementations of {@code Futures.transform*}. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 @SuppressWarnings("nullness") // TODO(b/147136275): Remove once our checker understands & and |.
 abstract class AbstractTransformFuture<
-        I extends @Nullable Object, O extends @Nullable Object, F, T extends @Nullable Object>
+        I extends Object, O extends Object, F, T extends Object>
     extends FluentFuture.TrustedFuture<O> implements Runnable {
-  static <I extends @Nullable Object, O extends @Nullable Object> ListenableFuture<O> create(
+  static <I extends Object, O extends Object> ListenableFuture<O> create(
       ListenableFuture<I> input,
       AsyncFunction<? super I, ? extends O> function,
       Executor executor) {
@@ -44,7 +40,7 @@ abstract class AbstractTransformFuture<
     return output;
   }
 
-  static <I extends @Nullable Object, O extends @Nullable Object> ListenableFuture<O> create(
+  static <I extends Object, O extends Object> ListenableFuture<O> create(
       ListenableFuture<I> input, Function<? super I, ? extends O> function, Executor executor) {
     checkNotNull(function);
     TransformFuture<I, O> output = new TransformFuture<>(input, function);
@@ -168,12 +164,10 @@ abstract class AbstractTransformFuture<
   }
 
   /** Template method for subtypes to actually run the transform. */
-  @ForOverride
   @ParametricNullness
   abstract T doTransform(F function, @ParametricNullness I result) throws Exception;
 
   /** Template method for subtypes to actually set the result. */
-  @ForOverride
   abstract void setResult(@ParametricNullness T result);
 
   @Override
@@ -206,7 +200,7 @@ abstract class AbstractTransformFuture<
    * #setFuture(ListenableFuture)}.
    */
   private static final class AsyncTransformFuture<
-          I extends @Nullable Object, O extends @Nullable Object>
+          I extends Object, O extends Object>
       extends AbstractTransformFuture<
           I, O, AsyncFunction<? super I, ? extends O>, ListenableFuture<? extends O>> {
     AsyncTransformFuture(
@@ -237,7 +231,7 @@ abstract class AbstractTransformFuture<
    * An {@link AbstractTransformFuture} that delegates to a {@link Function} and {@link
    * #set(Object)}.
    */
-  private static final class TransformFuture<I extends @Nullable Object, O extends @Nullable Object>
+  private static final class TransformFuture<I extends Object, O extends Object>
       extends AbstractTransformFuture<I, O, Function<? super I, ? extends O>, O> {
     TransformFuture(
         ListenableFuture<? extends I> inputFuture, Function<? super I, ? extends O> function) {
diff --git a/guava/src/com/google/common/util/concurrent/AggregateFuture.java b/guava/src/com/google/common/util/concurrent/AggregateFuture.java
index a32e76c..1ebbc1b 100644
--- a/guava/src/com/google/common/util/concurrent/AggregateFuture.java
+++ b/guava/src/com/google/common/util/concurrent/AggregateFuture.java
@@ -20,19 +20,13 @@ import static com.google.common.util.concurrent.AggregateFuture.ReleaseResources
 import static com.google.common.util.concurrent.AggregateFuture.ReleaseResourcesReason.OUTPUT_FUTURE_DONE;
 import static com.google.common.util.concurrent.Futures.getDone;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
-import static java.util.Objects.requireNonNull;
 import static java.util.logging.Level.SEVERE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableCollection;
-import com.google.errorprone.annotations.ForOverride;
-import com.google.errorprone.annotations.OverridingMethodsMustInvokeSuper;
 import java.util.Set;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A future whose value is derived from a collection of input futures.
@@ -40,9 +34,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @param <InputT> the type of the individual inputs
  * @param <OutputT> the type of the output (i.e. this) future
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-abstract class AggregateFuture<InputT extends @Nullable Object, OutputT extends @Nullable Object>
+abstract class AggregateFuture<InputT extends Object, OutputT extends Object>
     extends AggregateFutureState<OutputT> {
   private static final Logger logger = Logger.getLogger(AggregateFuture.class.getName());
 
@@ -318,8 +311,6 @@ abstract class AggregateFuture<InputT extends @Nullable Object, OutputT extends
    * description of CL 265462958.
    */
   // TODO(user): Write more tests for memory retention.
-  @ForOverride
-  @OverridingMethodsMustInvokeSuper
   void releaseResources(ReleaseResourcesReason reason) {
     checkNotNull(reason);
     /*
diff --git a/guava/src/com/google/common/util/concurrent/AggregateFutureState.java b/guava/src/com/google/common/util/concurrent/AggregateFutureState.java
index ee23ca0..dc4bdeb 100644
--- a/guava/src/com/google/common/util/concurrent/AggregateFutureState.java
+++ b/guava/src/com/google/common/util/concurrent/AggregateFutureState.java
@@ -15,19 +15,15 @@
 package com.google.common.util.concurrent;
 
 import static com.google.common.collect.Sets.newConcurrentHashSet;
-import static java.util.Objects.requireNonNull;
 import static java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater;
 import static java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.j2objc.annotations.ReflectionSupport;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A helper which does some thread-safe operations for aggregate futures, which must be implemented
@@ -38,10 +34,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *   <li>Decrements a counter atomically
  * </ul>
  */
-@GwtCompatible(emulated = true)
-@ReflectionSupport(value = ReflectionSupport.Level.FULL)
 @ElementTypesAreNonnullByDefault
-abstract class AggregateFutureState<OutputT extends @Nullable Object>
+abstract class AggregateFutureState<OutputT extends Object>
     extends AbstractFuture.TrustedFuture<OutputT> {
   // Lazily initialized the first time we see an exception; not released until all the input futures
   // have completed and we have processed them all.
diff --git a/guava/src/com/google/common/util/concurrent/AsyncCallable.java b/guava/src/com/google/common/util/concurrent/AsyncCallable.java
index 826f3c2..3f257a0 100644
--- a/guava/src/com/google/common/util/concurrent/AsyncCallable.java
+++ b/guava/src/com/google/common/util/concurrent/AsyncCallable.java
@@ -14,10 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.Future;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Computes a value, possibly asynchronously. For an example usage and more information, see {@link
@@ -28,11 +25,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 20.0
  */
-@Beta
 @FunctionalInterface
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface AsyncCallable<V extends @Nullable Object> {
+public interface AsyncCallable<V extends Object> {
   /**
    * Computes a result {@code Future}. The output {@code Future} need not be {@linkplain
    * Future#isDone done}, making {@code AsyncCallable} suitable for asynchronous derivations.
diff --git a/guava/src/com/google/common/util/concurrent/AsyncFunction.java b/guava/src/com/google/common/util/concurrent/AsyncFunction.java
index 3a19db4..37da9c6 100644
--- a/guava/src/com/google/common/util/concurrent/AsyncFunction.java
+++ b/guava/src/com/google/common/util/concurrent/AsyncFunction.java
@@ -14,9 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.Future;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Transforms a value, possibly asynchronously. For an example usage and more information, see
@@ -25,10 +23,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Povirk
  * @since 11.0
  */
-@GwtCompatible
 @FunctionalInterface
 @ElementTypesAreNonnullByDefault
-public interface AsyncFunction<I extends @Nullable Object, O extends @Nullable Object> {
+public interface AsyncFunction<I extends Object, O extends Object> {
   /**
    * Returns an output {@code Future} to use in place of the given {@code input}. The output {@code
    * Future} need not be {@linkplain Future#isDone done}, making {@code AsyncFunction} suitable for
diff --git a/guava/src/com/google/common/util/concurrent/AtomicDouble.java b/guava/src/com/google/common/util/concurrent/AtomicDouble.java
index 81da695..f130be3 100644
--- a/guava/src/com/google/common/util/concurrent/AtomicDouble.java
+++ b/guava/src/com/google/common/util/concurrent/AtomicDouble.java
@@ -17,9 +17,6 @@ package com.google.common.util.concurrent;
 import static java.lang.Double.doubleToRawLongBits;
 import static java.lang.Double.longBitsToDouble;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.ReflectionSupport;
 import java.util.concurrent.atomic.AtomicLongFieldUpdater;
 
 /**
@@ -51,8 +48,6 @@ import java.util.concurrent.atomic.AtomicLongFieldUpdater;
  * @author Martin Buchholz
  * @since 11.0
  */
-@GwtIncompatible
-@ReflectionSupport(value = ReflectionSupport.Level.FULL)
 @ElementTypesAreNonnullByDefault
 public class AtomicDouble extends Number implements java.io.Serializable {
   private static final long serialVersionUID = 0L;
@@ -153,7 +148,6 @@ public class AtomicDouble extends Number implements java.io.Serializable {
    * @param delta the value to add
    * @return the previous value
    */
-  @CanIgnoreReturnValue
   public final double getAndAdd(double delta) {
     while (true) {
       long current = value;
@@ -172,7 +166,6 @@ public class AtomicDouble extends Number implements java.io.Serializable {
    * @param delta the value to add
    * @return the updated value
    */
-  @CanIgnoreReturnValue
   public final double addAndGet(double delta) {
     while (true) {
       long current = value;
diff --git a/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java b/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java
index 58407f5..9b86f62 100644
--- a/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java
+++ b/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java
@@ -16,9 +16,6 @@ package com.google.common.util.concurrent;
 import static java.lang.Double.doubleToRawLongBits;
 import static java.lang.Double.longBitsToDouble;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.primitives.ImmutableLongArray;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.atomic.AtomicLongArray;
 
 /**
@@ -43,7 +40,6 @@ import java.util.concurrent.atomic.AtomicLongArray;
  * @author Martin Buchholz
  * @since 11.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public class AtomicDoubleArray implements java.io.Serializable {
   private static final long serialVersionUID = 0L;
@@ -169,7 +165,6 @@ public class AtomicDoubleArray implements java.io.Serializable {
    * @param delta the value to add
    * @return the previous value
    */
-  @CanIgnoreReturnValue
   public final double getAndAdd(int i, double delta) {
     while (true) {
       long current = longs.get(i);
@@ -189,7 +184,6 @@ public class AtomicDoubleArray implements java.io.Serializable {
    * @param delta the value to add
    * @return the updated value
    */
-  @CanIgnoreReturnValue
   public double addAndGet(int i, double delta) {
     while (true) {
       long current = longs.get(i);
diff --git a/guava/src/com/google/common/util/concurrent/AtomicLongMap.java b/guava/src/com/google/common/util/concurrent/AtomicLongMap.java
index 456b3ac..9f8ec65 100644
--- a/guava/src/com/google/common/util/concurrent/AtomicLongMap.java
+++ b/guava/src/com/google/common/util/concurrent/AtomicLongMap.java
@@ -18,9 +18,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Serializable;
 import java.util.Collections;
 import java.util.Map;
@@ -54,7 +51,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 11.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class AtomicLongMap<K> implements Serializable {
   private final ConcurrentHashMap<K, Long> map;
@@ -86,7 +82,6 @@ public final class AtomicLongMap<K> implements Serializable {
   /**
    * Increments by one the value currently associated with {@code key}, and returns the new value.
    */
-  @CanIgnoreReturnValue
   public long incrementAndGet(K key) {
     return addAndGet(key, 1);
   }
@@ -94,7 +89,6 @@ public final class AtomicLongMap<K> implements Serializable {
   /**
    * Decrements by one the value currently associated with {@code key}, and returns the new value.
    */
-  @CanIgnoreReturnValue
   public long decrementAndGet(K key) {
     return addAndGet(key, -1);
   }
@@ -103,7 +97,6 @@ public final class AtomicLongMap<K> implements Serializable {
    * Adds {@code delta} to the value currently associated with {@code key}, and returns the new
    * value.
    */
-  @CanIgnoreReturnValue
   public long addAndGet(K key, long delta) {
     return accumulateAndGet(key, delta, Long::sum);
   }
@@ -111,7 +104,6 @@ public final class AtomicLongMap<K> implements Serializable {
   /**
    * Increments by one the value currently associated with {@code key}, and returns the old value.
    */
-  @CanIgnoreReturnValue
   public long getAndIncrement(K key) {
     return getAndAdd(key, 1);
   }
@@ -119,7 +111,6 @@ public final class AtomicLongMap<K> implements Serializable {
   /**
    * Decrements by one the value currently associated with {@code key}, and returns the old value.
    */
-  @CanIgnoreReturnValue
   public long getAndDecrement(K key) {
     return getAndAdd(key, -1);
   }
@@ -128,7 +119,6 @@ public final class AtomicLongMap<K> implements Serializable {
    * Adds {@code delta} to the value currently associated with {@code key}, and returns the old
    * value.
    */
-  @CanIgnoreReturnValue
   public long getAndAdd(K key, long delta) {
     return getAndAccumulate(key, delta, Long::sum);
   }
@@ -140,7 +130,6 @@ public final class AtomicLongMap<K> implements Serializable {
    *
    * @since 21.0
    */
-  @CanIgnoreReturnValue
   public long updateAndGet(K key, LongUnaryOperator updaterFunction) {
     checkNotNull(updaterFunction);
     return map.compute(
@@ -154,7 +143,6 @@ public final class AtomicLongMap<K> implements Serializable {
    *
    * @since 21.0
    */
-  @CanIgnoreReturnValue
   public long getAndUpdate(K key, LongUnaryOperator updaterFunction) {
     checkNotNull(updaterFunction);
     AtomicLong holder = new AtomicLong();
@@ -176,7 +164,6 @@ public final class AtomicLongMap<K> implements Serializable {
    *
    * @since 21.0
    */
-  @CanIgnoreReturnValue
   public long accumulateAndGet(K key, long x, LongBinaryOperator accumulatorFunction) {
     checkNotNull(accumulatorFunction);
     return updateAndGet(key, oldValue -> accumulatorFunction.applyAsLong(oldValue, x));
@@ -190,7 +177,6 @@ public final class AtomicLongMap<K> implements Serializable {
    *
    * @since 21.0
    */
-  @CanIgnoreReturnValue
   public long getAndAccumulate(K key, long x, LongBinaryOperator accumulatorFunction) {
     checkNotNull(accumulatorFunction);
     return getAndUpdate(key, oldValue -> accumulatorFunction.applyAsLong(oldValue, x));
@@ -200,7 +186,6 @@ public final class AtomicLongMap<K> implements Serializable {
    * Associates {@code newValue} with {@code key} in this map, and returns the value previously
    * associated with {@code key}, or zero if there was no such value.
    */
-  @CanIgnoreReturnValue
   public long put(K key, long newValue) {
     return getAndUpdate(key, x -> newValue);
   }
@@ -219,7 +204,6 @@ public final class AtomicLongMap<K> implements Serializable {
    * Removes and returns the value associated with {@code key}. If {@code key} is not in the map,
    * this method has no effect and returns zero.
    */
-  @CanIgnoreReturnValue
   public long remove(K key) {
     Long result = map.remove(key);
     return (result == null) ? 0L : result.longValue();
@@ -238,8 +222,6 @@ public final class AtomicLongMap<K> implements Serializable {
    *
    * @since 20.0
    */
-  @Beta
-  @CanIgnoreReturnValue
   public boolean removeIfZero(K key) {
     return remove(key, 0);
   }
diff --git a/guava/src/com/google/common/util/concurrent/Atomics.java b/guava/src/com/google/common/util/concurrent/Atomics.java
index c1b6964..4fde232 100644
--- a/guava/src/com/google/common/util/concurrent/Atomics.java
+++ b/guava/src/com/google/common/util/concurrent/Atomics.java
@@ -14,10 +14,8 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.atomic.AtomicReferenceArray;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to classes in the {@code java.util.concurrent.atomic} package.
@@ -25,7 +23,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 10.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class Atomics {
   private Atomics() {}
@@ -35,7 +32,7 @@ public final class Atomics {
    *
    * @return a new {@code AtomicReference} with no initial value
    */
-  public static <V> AtomicReference<@Nullable V> newReference() {
+  public static <V> AtomicReference<V> newReference() {
     return new AtomicReference<>();
   }
 
@@ -45,7 +42,7 @@ public final class Atomics {
    * @param initialValue the initial value
    * @return a new {@code AtomicReference} with the given initial value
    */
-  public static <V extends @Nullable Object> AtomicReference<V> newReference(
+  public static <V extends Object> AtomicReference<V> newReference(
       @ParametricNullness V initialValue) {
     return new AtomicReference<>(initialValue);
   }
@@ -56,7 +53,7 @@ public final class Atomics {
    * @param length the length of the array
    * @return a new {@code AtomicReferenceArray} with the given length
    */
-  public static <E> AtomicReferenceArray<@Nullable E> newReferenceArray(int length) {
+  public static <E> AtomicReferenceArray<E> newReferenceArray(int length) {
     return new AtomicReferenceArray<>(length);
   }
 
@@ -67,7 +64,7 @@ public final class Atomics {
    * @param array the array to copy elements from
    * @return a new {@code AtomicReferenceArray} copied from the given array
    */
-  public static <E extends @Nullable Object> AtomicReferenceArray<E> newReferenceArray(E[] array) {
+  public static <E extends Object> AtomicReferenceArray<E> newReferenceArray(E[] array) {
     return new AtomicReferenceArray<>(array);
   }
 }
diff --git a/guava/src/com/google/common/util/concurrent/Callables.java b/guava/src/com/google/common/util/concurrent/Callables.java
index 47b5264..b6c0f91 100644
--- a/guava/src/com/google/common/util/concurrent/Callables.java
+++ b/guava/src/com/google/common/util/concurrent/Callables.java
@@ -16,12 +16,8 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Supplier;
 import java.util.concurrent.Callable;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to the {@link Callable} interface.
@@ -29,13 +25,12 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Isaac Shum
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Callables {
   private Callables() {}
 
   /** Creates a {@code Callable} which immediately returns a preset value each time it is called. */
-  public static <T extends @Nullable Object> Callable<T> returning(
+  public static <T extends Object> Callable<T> returning(
       @ParametricNullness final T value) {
     return new Callable<T>() {
       @Override
@@ -54,9 +49,7 @@ public final class Callables {
    *
    * @since 20.0
    */
-  @Beta
-  @GwtIncompatible
-  public static <T extends @Nullable Object> AsyncCallable<T> asAsyncCallable(
+  public static <T extends Object> AsyncCallable<T> asAsyncCallable(
       final Callable<T> callable, final ListeningExecutorService listeningExecutorService) {
     checkNotNull(callable);
     checkNotNull(listeningExecutorService);
@@ -76,8 +69,8 @@ public final class Callables {
    * @param nameSupplier The supplier of thread names, {@link Supplier#get get} will be called once
    *     for each invocation of the wrapped callable.
    */
-  @GwtIncompatible // threads
-  static <T extends @Nullable Object> Callable<T> threadRenaming(
+  // threads
+  static <T extends Object> Callable<T> threadRenaming(
       final Callable<T> callable, final Supplier<String> nameSupplier) {
     checkNotNull(nameSupplier);
     checkNotNull(callable);
@@ -107,7 +100,7 @@ public final class Callables {
    * @param nameSupplier The supplier of thread names, {@link Supplier#get get} will be called once
    *     for each invocation of the wrapped callable.
    */
-  @GwtIncompatible // threads
+  // threads
   static Runnable threadRenaming(final Runnable task, final Supplier<String> nameSupplier) {
     checkNotNull(nameSupplier);
     checkNotNull(task);
@@ -129,7 +122,7 @@ public final class Callables {
   }
 
   /** Tries to set name of the given {@link Thread}, returns true if successful. */
-  @GwtIncompatible // threads
+  // threads
   private static boolean trySetName(final String threadName, Thread currentThread) {
     /*
      * setName should usually succeed, but the security manager can prohibit it. Is there a way to
diff --git a/guava/src/com/google/common/util/concurrent/ClosingFuture.java b/guava/src/com/google/common/util/concurrent/ClosingFuture.java
index 8859fbc..787c59c 100644
--- a/guava/src/com/google/common/util/concurrent/ClosingFuture.java
+++ b/guava/src/com/google/common/util/concurrent/ClosingFuture.java
@@ -36,17 +36,11 @@ import static java.util.logging.Level.FINER;
 import static java.util.logging.Level.SEVERE;
 import static java.util.logging.Level.WARNING;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.ClosingFuture.Combiner.AsyncCombiningCallable;
 import com.google.common.util.concurrent.ClosingFuture.Combiner.CombiningCallable;
 import com.google.common.util.concurrent.Futures.FutureCombiner;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
-import com.google.j2objc.annotations.RetainedWith;
 import java.io.Closeable;
 import java.util.IdentityHashMap;
 import java.util.Map;
@@ -60,7 +54,6 @@ import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.logging.Logger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A step in a pipeline of an asynchronous computation. When the last step in the computation is
@@ -190,11 +183,10 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @since 30.0
  */
 // TODO(dpb): Consider reusing one CloseableList for the entire pipeline, modulo combinations.
-@Beta // @Beta for one release.
-@DoNotMock("Use ClosingFuture.from(Futures.immediate*Future)")
+// @Beta for one release.
 @ElementTypesAreNonnullByDefault
 // TODO(dpb): GWT compatibility.
-public final class ClosingFuture<V extends @Nullable Object> {
+public final class ClosingFuture<V extends Object> {
 
   private static final Logger logger = Logger.getLogger(ClosingFuture.class.getName());
 
@@ -203,7 +195,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * done.
    */
   public static final class DeferredCloser {
-    @RetainedWith private final CloseableList list;
+    private final CloseableList list;
 
     DeferredCloser(CloseableList list) {
       this.list = list;
@@ -232,9 +224,8 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param closingExecutor the object will be closed on this executor
      * @return the first argument
      */
-    @CanIgnoreReturnValue
     @ParametricNullness
-    public <C extends @Nullable Object & @Nullable AutoCloseable> C eventuallyClose(
+    public <C extends Object & AutoCloseable> C eventuallyClose(
         @ParametricNullness C closeable, Executor closingExecutor) {
       checkNotNull(closingExecutor);
       if (closeable != null) {
@@ -250,7 +241,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V> the type of the result
    */
   @FunctionalInterface
-  public interface ClosingCallable<V extends @Nullable Object> {
+  public interface ClosingCallable<V extends Object> {
     /**
      * Computes a result, or throws an exception if unable to do so.
      *
@@ -269,7 +260,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @since 30.1
    */
   @FunctionalInterface
-  public interface AsyncClosingCallable<V extends @Nullable Object> {
+  public interface AsyncClosingCallable<V extends Object> {
     /**
      * Computes a result, or throws an exception if unable to do so.
      *
@@ -287,7 +278,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <U> the type of the result of the function
    */
   @FunctionalInterface
-  public interface ClosingFunction<T extends @Nullable Object, U extends @Nullable Object> {
+  public interface ClosingFunction<T extends Object, U extends Object> {
 
     /**
      * Applies this function to an input, or throws an exception if unable to do so.
@@ -307,7 +298,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <U> the type of the result of the function
    */
   @FunctionalInterface
-  public interface AsyncClosingFunction<T extends @Nullable Object, U extends @Nullable Object> {
+  public interface AsyncClosingFunction<T extends Object, U extends Object> {
     /**
      * Applies this function to an input, or throws an exception if unable to do so.
      *
@@ -328,7 +319,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V> the type of the value of a successful operation
    * @see ClosingFuture#finishToValueAndCloser(ValueAndCloserConsumer, Executor)
    */
-  public static final class ValueAndCloser<V extends @Nullable Object> {
+  public static final class ValueAndCloser<V extends Object> {
 
     private final ClosingFuture<? extends V> closingFuture;
 
@@ -374,7 +365,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @see ClosingFuture#finishToValueAndCloser(ValueAndCloserConsumer, Executor)
    */
   @FunctionalInterface
-  public interface ValueAndCloserConsumer<V extends @Nullable Object> {
+  public interface ValueAndCloserConsumer<V extends Object> {
 
     /** Accepts a {@link ValueAndCloser} for the last step in a {@link ClosingFuture} pipeline. */
     void accept(ValueAndCloser<V> valueAndCloser);
@@ -386,7 +377,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @throws java.util.concurrent.RejectedExecutionException if the task cannot be scheduled for
    *     execution
    */
-  public static <V extends @Nullable Object> ClosingFuture<V> submit(
+  public static <V extends Object> ClosingFuture<V> submit(
       ClosingCallable<V> callable, Executor executor) {
     return new ClosingFuture<>(callable, executor);
   }
@@ -398,7 +389,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     execution
    * @since 30.1
    */
-  public static <V extends @Nullable Object> ClosingFuture<V> submitAsync(
+  public static <V extends Object> ClosingFuture<V> submitAsync(
       AsyncClosingCallable<V> callable, Executor executor) {
     return new ClosingFuture<>(callable, executor);
   }
@@ -410,7 +401,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * implements {@link Closeable}. In order to start a pipeline with a value that will be closed
    * when the pipeline is done, use {@link #submit(ClosingCallable, Executor)} instead.
    */
-  public static <V extends @Nullable Object> ClosingFuture<V> from(ListenableFuture<V> future) {
+  public static <V extends Object> ClosingFuture<V> from(ListenableFuture<V> future) {
     return new ClosingFuture<V>(future);
   }
 
@@ -436,7 +427,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     ClosingFuture#from}.
    */
   @Deprecated
-  public static <C extends @Nullable Object & @Nullable AutoCloseable>
+  public static <C extends Object & AutoCloseable>
       ClosingFuture<C> eventuallyClosing(
           ListenableFuture<C> future, final Executor closingExecutor) {
     checkNotNull(closingExecutor);
@@ -498,7 +489,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @throws IllegalStateException if a {@code ClosingFuture} has already been derived from any of
    *     the arguments, or if any has already been {@linkplain #finishToFuture() finished}
    */
-  public static <V1 extends @Nullable Object, V2 extends @Nullable Object>
+  public static <V1 extends Object, V2 extends Object>
       Combiner2<V1, V2> whenAllSucceed(ClosingFuture<V1> future1, ClosingFuture<V2> future2) {
     return new Combiner2<>(future1, future2);
   }
@@ -514,7 +505,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     the arguments, or if any has already been {@linkplain #finishToFuture() finished}
    */
   public static <
-          V1 extends @Nullable Object, V2 extends @Nullable Object, V3 extends @Nullable Object>
+          V1 extends Object, V2 extends Object, V3 extends Object>
       Combiner3<V1, V2, V3> whenAllSucceed(
           ClosingFuture<V1> future1, ClosingFuture<V2> future2, ClosingFuture<V3> future3) {
     return new Combiner3<>(future1, future2, future3);
@@ -531,10 +522,10 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     the arguments, or if any has already been {@linkplain #finishToFuture() finished}
    */
   public static <
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object,
-          V3 extends @Nullable Object,
-          V4 extends @Nullable Object>
+          V1 extends Object,
+          V2 extends Object,
+          V3 extends Object,
+          V4 extends Object>
       Combiner4<V1, V2, V3, V4> whenAllSucceed(
           ClosingFuture<V1> future1,
           ClosingFuture<V2> future2,
@@ -554,11 +545,11 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     the arguments, or if any has already been {@linkplain #finishToFuture() finished}
    */
   public static <
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object,
-          V3 extends @Nullable Object,
-          V4 extends @Nullable Object,
-          V5 extends @Nullable Object>
+          V1 extends Object,
+          V2 extends Object,
+          V3 extends Object,
+          V4 extends Object,
+          V5 extends Object>
       Combiner5<V1, V2, V3, V4, V5> whenAllSucceed(
           ClosingFuture<V1> future1,
           ClosingFuture<V2> future2,
@@ -690,7 +681,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     one, or if this {@code ClosingFuture} has already been {@linkplain #finishToFuture()
    *     finished}
    */
-  public <U extends @Nullable Object> ClosingFuture<U> transform(
+  public <U extends Object> ClosingFuture<U> transform(
       final ClosingFunction<? super V, U> function, Executor executor) {
     checkNotNull(function);
     AsyncFunction<V, U> applyFunction =
@@ -784,7 +775,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    *     one, or if this {@code ClosingFuture} has already been {@linkplain #finishToFuture()
    *     finished}
    */
-  public <U extends @Nullable Object> ClosingFuture<U> transformAsync(
+  public <U extends Object> ClosingFuture<U> transformAsync(
       final AsyncClosingFunction<? super V, U> function, Executor executor) {
     checkNotNull(function);
     AsyncFunction<V, U> applyFunction =
@@ -828,7 +819,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param function transforms the value of a {@code ClosingFuture} step to a {@link
    *     ListenableFuture} with the value of a derived step
    */
-  public static <V extends @Nullable Object, U extends @Nullable Object>
+  public static <V extends Object, U extends Object>
       AsyncClosingFunction<V, U> withoutCloser(final AsyncFunction<V, U> function) {
     checkNotNull(function);
     return new AsyncClosingFunction<V, U>() {
@@ -1098,7 +1089,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
         executor);
   }
 
-  private static <C extends @Nullable Object, V extends C> void provideValueAndCloser(
+  private static <C extends Object, V extends C> void provideValueAndCloser(
       ValueAndCloserConsumer<C> consumer, ClosingFuture<V> closingFuture) {
     consumer.accept(new ValueAndCloser<C>(closingFuture));
   }
@@ -1119,7 +1110,6 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @return {@code false} if the step could not be cancelled, typically because it has already
    *     completed normally; {@code true} otherwise
    */
-  @CanIgnoreReturnValue
   public boolean cancel(boolean mayInterruptIfRunning) {
     logger.log(FINER, "cancelling {0}", this);
     boolean cancelled = future.cancel(mayInterruptIfRunning);
@@ -1134,7 +1124,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
     closeables.close();
   }
 
-  private <U extends @Nullable Object> ClosingFuture<U> derive(FluentFuture<U> future) {
+  private <U extends Object> ClosingFuture<U> derive(FluentFuture<U> future) {
     ClosingFuture<U> derived = new ClosingFuture<>(future);
     becomeSubsumedInto(derived.closeables);
     return derived;
@@ -1171,7 +1161,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      *     AsyncCombiningCallable#call(DeferredCloser, Peeker)}
      */
     @ParametricNullness
-    public final <D extends @Nullable Object> D getDone(ClosingFuture<D> closingFuture)
+    public final <D extends Object> D getDone(ClosingFuture<D> closingFuture)
         throws ExecutionException {
       checkState(beingCalled);
       checkArgument(futures.contains(closingFuture));
@@ -1179,7 +1169,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
     }
 
     @ParametricNullness
-    private <V extends @Nullable Object> V call(
+    private <V extends Object> V call(
         CombiningCallable<V> combiner, CloseableList closeables) throws Exception {
       beingCalled = true;
       CloseableList newCloseables = new CloseableList();
@@ -1191,7 +1181,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
       }
     }
 
-    private <V extends @Nullable Object> FluentFuture<V> callAsync(
+    private <V extends Object> FluentFuture<V> callAsync(
         AsyncCombiningCallable<V> combiner, CloseableList closeables) throws Exception {
       beingCalled = true;
       CloseableList newCloseables = new CloseableList();
@@ -1230,8 +1220,6 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * }</pre>
    */
   // TODO(cpovirk): Use simple name instead of fully qualified after we stop building with JDK 8.
-  @com.google.errorprone.annotations.DoNotMock(
-      "Use ClosingFuture.whenAllSucceed() or .whenAllComplete() instead.")
   public static class Combiner {
 
     private final CloseableList closeables = new CloseableList();
@@ -1242,7 +1230,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param <V> the type of the result
      */
     @FunctionalInterface
-    public interface CombiningCallable<V extends @Nullable Object> {
+    public interface CombiningCallable<V extends Object> {
       /**
        * Computes a result, or throws an exception if unable to do so.
        *
@@ -1263,7 +1251,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * @param <V> the type of the result
      */
     @FunctionalInterface
-    public interface AsyncCombiningCallable<V extends @Nullable Object> {
+    public interface AsyncCombiningCallable<V extends Object> {
       /**
        * Computes a {@link ClosingFuture} result, or throws an exception if unable to do so.
        *
@@ -1302,7 +1290,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>If the combiningCallable throws an {@code ExecutionException}, the cause of the thrown
      * {@code ExecutionException} will be extracted and used as the failure of the derived step.
      */
-    public <V extends @Nullable Object> ClosingFuture<V> call(
+    public <V extends Object> ClosingFuture<V> call(
         final CombiningCallable<V> combiningCallable, Executor executor) {
       Callable<V> callable =
           new Callable<V>() {
@@ -1359,7 +1347,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>The same warnings about doing heavyweight operations within {@link
      * ClosingFuture#transformAsync(AsyncClosingFunction, Executor)} apply here.
      */
-    public <V extends @Nullable Object> ClosingFuture<V> callAsync(
+    public <V extends Object> ClosingFuture<V> callAsync(
         final AsyncCombiningCallable<V> combiningCallable, Executor executor) {
       AsyncCallable<V> asyncCallable =
           new AsyncCallable<V>() {
@@ -1379,7 +1367,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
       return derived;
     }
 
-    private FutureCombiner<@Nullable Object> futureCombiner() {
+    private FutureCombiner<Object> futureCombiner() {
       return allMustSucceed
           ? Futures.whenAllSucceed(inputFutures())
           : Futures.whenAllComplete(inputFutures());
@@ -1406,7 +1394,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V1> the type returned by the first future
    * @param <V2> the type returned by the second future
    */
-  public static final class Combiner2<V1 extends @Nullable Object, V2 extends @Nullable Object>
+  public static final class Combiner2<V1 extends Object, V2 extends Object>
       extends Combiner {
 
     /**
@@ -1419,7 +1407,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      */
     @FunctionalInterface
     public interface ClosingFunction2<
-        V1 extends @Nullable Object, V2 extends @Nullable Object, U extends @Nullable Object> {
+        V1 extends Object, V2 extends Object, U extends Object> {
 
       /**
        * Applies this function to two inputs, or throws an exception if unable to do so.
@@ -1444,7 +1432,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      */
     @FunctionalInterface
     public interface AsyncClosingFunction2<
-        V1 extends @Nullable Object, V2 extends @Nullable Object, U extends @Nullable Object> {
+        V1 extends Object, V2 extends Object, U extends Object> {
 
       /**
        * Applies this function to two inputs, or throws an exception if unable to do so.
@@ -1481,7 +1469,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>If the function throws an {@code ExecutionException}, the cause of the thrown {@code
      * ExecutionException} will be extracted and used as the failure of the derived step.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> call(
+    public <U extends Object> ClosingFuture<U> call(
         final ClosingFunction2<V1, V2, U> function, Executor executor) {
       return call(
           new CombiningCallable<U>() {
@@ -1535,7 +1523,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>The same warnings about doing heavyweight operations within {@link
      * ClosingFuture#transformAsync(AsyncClosingFunction, Executor)} apply here.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> callAsync(
+    public <U extends Object> ClosingFuture<U> callAsync(
         final AsyncClosingFunction2<V1, V2, U> function, Executor executor) {
       return callAsync(
           new AsyncCombiningCallable<U>() {
@@ -1563,7 +1551,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V3> the type returned by the third future
    */
   public static final class Combiner3<
-          V1 extends @Nullable Object, V2 extends @Nullable Object, V3 extends @Nullable Object>
+          V1 extends Object, V2 extends Object, V3 extends Object>
       extends Combiner {
     /**
      * A function that returns a value when applied to the values of the three futures passed to
@@ -1576,10 +1564,10 @@ public final class ClosingFuture<V extends @Nullable Object> {
      */
     @FunctionalInterface
     public interface ClosingFunction3<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        U extends Object> {
       /**
        * Applies this function to three inputs, or throws an exception if unable to do so.
        *
@@ -1608,10 +1596,10 @@ public final class ClosingFuture<V extends @Nullable Object> {
      */
     @FunctionalInterface
     public interface AsyncClosingFunction3<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        U extends Object> {
       /**
        * Applies this function to three inputs, or throws an exception if unable to do so.
        *
@@ -1653,7 +1641,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>If the function throws an {@code ExecutionException}, the cause of the thrown {@code
      * ExecutionException} will be extracted and used as the failure of the derived step.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> call(
+    public <U extends Object> ClosingFuture<U> call(
         final ClosingFunction3<V1, V2, V3, U> function, Executor executor) {
       return call(
           new CombiningCallable<U>() {
@@ -1711,7 +1699,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>The same warnings about doing heavyweight operations within {@link
      * ClosingFuture#transformAsync(AsyncClosingFunction, Executor)} apply here.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> callAsync(
+    public <U extends Object> ClosingFuture<U> callAsync(
         final AsyncClosingFunction3<V1, V2, V3, U> function, Executor executor) {
       return callAsync(
           new AsyncCombiningCallable<U>() {
@@ -1744,10 +1732,10 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V4> the type returned by the fourth future
    */
   public static final class Combiner4<
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object,
-          V3 extends @Nullable Object,
-          V4 extends @Nullable Object>
+          V1 extends Object,
+          V2 extends Object,
+          V3 extends Object,
+          V4 extends Object>
       extends Combiner {
     /**
      * A function that returns a value when applied to the values of the four futures passed to
@@ -1761,11 +1749,11 @@ public final class ClosingFuture<V extends @Nullable Object> {
      */
     @FunctionalInterface
     public interface ClosingFunction4<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        V4 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        V4 extends Object,
+        U extends Object> {
       /**
        * Applies this function to four inputs, or throws an exception if unable to do so.
        *
@@ -1797,11 +1785,11 @@ public final class ClosingFuture<V extends @Nullable Object> {
      */
     @FunctionalInterface
     public interface AsyncClosingFunction4<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        V4 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        V4 extends Object,
+        U extends Object> {
       /**
        * Applies this function to four inputs, or throws an exception if unable to do so.
        *
@@ -1849,7 +1837,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>If the function throws an {@code ExecutionException}, the cause of the thrown {@code
      * ExecutionException} will be extracted and used as the failure of the derived step.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> call(
+    public <U extends Object> ClosingFuture<U> call(
         final ClosingFunction4<V1, V2, V3, V4, U> function, Executor executor) {
       return call(
           new CombiningCallable<U>() {
@@ -1908,7 +1896,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>The same warnings about doing heavyweight operations within {@link
      * ClosingFuture#transformAsync(AsyncClosingFunction, Executor)} apply here.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> callAsync(
+    public <U extends Object> ClosingFuture<U> callAsync(
         final AsyncClosingFunction4<V1, V2, V3, V4, U> function, Executor executor) {
       return callAsync(
           new AsyncCombiningCallable<U>() {
@@ -1943,11 +1931,11 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * @param <V5> the type returned by the fifth future
    */
   public static final class Combiner5<
-          V1 extends @Nullable Object,
-          V2 extends @Nullable Object,
-          V3 extends @Nullable Object,
-          V4 extends @Nullable Object,
-          V5 extends @Nullable Object>
+          V1 extends Object,
+          V2 extends Object,
+          V3 extends Object,
+          V4 extends Object,
+          V5 extends Object>
       extends Combiner {
     /**
      * A function that returns a value when applied to the values of the five futures passed to
@@ -1963,12 +1951,12 @@ public final class ClosingFuture<V extends @Nullable Object> {
      */
     @FunctionalInterface
     public interface ClosingFunction5<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        V4 extends @Nullable Object,
-        V5 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        V4 extends Object,
+        V5 extends Object,
+        U extends Object> {
       /**
        * Applies this function to five inputs, or throws an exception if unable to do so.
        *
@@ -2002,12 +1990,12 @@ public final class ClosingFuture<V extends @Nullable Object> {
      */
     @FunctionalInterface
     public interface AsyncClosingFunction5<
-        V1 extends @Nullable Object,
-        V2 extends @Nullable Object,
-        V3 extends @Nullable Object,
-        V4 extends @Nullable Object,
-        V5 extends @Nullable Object,
-        U extends @Nullable Object> {
+        V1 extends Object,
+        V2 extends Object,
+        V3 extends Object,
+        V4 extends Object,
+        V5 extends Object,
+        U extends Object> {
       /**
        * Applies this function to five inputs, or throws an exception if unable to do so.
        *
@@ -2060,7 +2048,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>If the function throws an {@code ExecutionException}, the cause of the thrown {@code
      * ExecutionException} will be extracted and used as the failure of the derived step.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> call(
+    public <U extends Object> ClosingFuture<U> call(
         final ClosingFunction5<V1, V2, V3, V4, V5, U> function, Executor executor) {
       return call(
           new CombiningCallable<U>() {
@@ -2121,7 +2109,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
      * <p>The same warnings about doing heavyweight operations within {@link
      * ClosingFuture#transformAsync(AsyncClosingFunction, Executor)} apply here.
      */
-    public <U extends @Nullable Object> ClosingFuture<U> callAsync(
+    public <U extends Object> ClosingFuture<U> callAsync(
         final AsyncClosingFunction5<V1, V2, V3, V4, V5, U> function, Executor executor) {
       return callAsync(
           new AsyncCombiningCallable<U>() {
@@ -2203,7 +2191,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
     private volatile boolean closed;
     @CheckForNull private volatile CountDownLatch whenClosed;
 
-    <V extends @Nullable Object, U extends @Nullable Object>
+    <V extends Object, U extends Object>
         ListenableFuture<U> applyClosingFunction(
             ClosingFunction<? super V, U> transformation, @ParametricNullness V input)
             throws Exception {
@@ -2216,7 +2204,7 @@ public final class ClosingFuture<V extends @Nullable Object> {
       }
     }
 
-    <V extends @Nullable Object, U extends @Nullable Object>
+    <V extends Object, U extends Object>
         FluentFuture<U> applyAsyncClosingFunction(
             AsyncClosingFunction<V, U> transformation, @ParametricNullness V input)
             throws Exception {
@@ -2286,7 +2274,6 @@ public final class ClosingFuture<V extends @Nullable Object> {
    * Returns an object that can be used to wait until this objects' deferred closeables have all had
    * {@link Runnable}s that close them submitted to each one's closing {@link Executor}.
    */
-  @VisibleForTesting
   CountDownLatch whenClosedCountDown() {
     return closeables.whenClosedCountDown();
   }
diff --git a/guava/src/com/google/common/util/concurrent/CollectionFuture.java b/guava/src/com/google/common/util/concurrent/CollectionFuture.java
index c106c15..ac698af 100644
--- a/guava/src/com/google/common/util/concurrent/CollectionFuture.java
+++ b/guava/src/com/google/common/util/concurrent/CollectionFuture.java
@@ -17,18 +17,14 @@ package com.google.common.util.concurrent;
 import static com.google.common.collect.Lists.newArrayListWithCapacity;
 import static java.util.Collections.unmodifiableList;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableCollection;
 import com.google.common.collect.Lists;
 import java.util.Collections;
 import java.util.List;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Aggregate future that collects (stores) results of each future. */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable Object>
+abstract class CollectionFuture<V extends Object, C extends Object>
     extends AggregateFuture<V, C> {
   /*
    * We access this field racily but safely. For discussion of a similar situation, see the comments
@@ -36,17 +32,17 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
    * there: cancel() never reads this field, only writes to it. That makes the race here completely
    * harmless, rather than just 99.99% harmless.
    */
-  @CheckForNull private List<@Nullable Present<V>> values;
+  @CheckForNull private List<Present<V>> values;
 
   CollectionFuture(
       ImmutableCollection<? extends ListenableFuture<? extends V>> futures,
       boolean allMustSucceed) {
     super(futures, allMustSucceed, true);
 
-    List<@Nullable Present<V>> values =
+    List<Present<V>> values =
         futures.isEmpty()
-            ? Collections.<@Nullable Present<V>>emptyList()
-            : Lists.<@Nullable Present<V>>newArrayListWithCapacity(futures.size());
+            ? Collections.<Present<V>>emptyList()
+            : Lists.<Present<V>>newArrayListWithCapacity(futures.size());
 
     // Populate the results list with null initially.
     for (int i = 0; i < futures.size(); ++i) {
@@ -58,7 +54,7 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
 
   @Override
   final void collectOneValue(int index, @ParametricNullness V returnValue) {
-    List<@Nullable Present<V>> localValues = values;
+    List<Present<V>> localValues = values;
     if (localValues != null) {
       localValues.set(index, new Present<>(returnValue));
     }
@@ -66,7 +62,7 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
 
   @Override
   final void handleAllCompleted() {
-    List<@Nullable Present<V>> localValues = values;
+    List<Present<V>> localValues = values;
     if (localValues != null) {
       set(combine(localValues));
     }
@@ -81,8 +77,8 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
   abstract C combine(List<@Nullable Present<V>> values);
 
   /** Used for {@link Futures#allAsList} and {@link Futures#successfulAsList}. */
-  static final class ListFuture<V extends @Nullable Object>
-      extends CollectionFuture<V, List<@Nullable V>> {
+  static final class ListFuture<V extends Object>
+      extends CollectionFuture<V, List<V>> {
     ListFuture(
         ImmutableCollection<? extends ListenableFuture<? extends V>> futures,
         boolean allMustSucceed) {
@@ -91,8 +87,8 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
     }
 
     @Override
-    public List<@Nullable V> combine(List<@Nullable Present<V>> values) {
-      List<@Nullable V> result = newArrayListWithCapacity(values.size());
+    public List<V> combine(List<@Nullable Present<V>> values) {
+      List<V> result = newArrayListWithCapacity(values.size());
       for (Present<V> element : values) {
         result.add(element != null ? element.value : null);
       }
@@ -101,7 +97,7 @@ abstract class CollectionFuture<V extends @Nullable Object, C extends @Nullable
   }
 
   /** The result of a successful {@code Future}. */
-  private static final class Present<V extends @Nullable Object> {
+  private static final class Present<V extends Object> {
     V value;
 
     Present(V value) {
diff --git a/guava/src/com/google/common/util/concurrent/CombinedFuture.java b/guava/src/com/google/common/util/concurrent/CombinedFuture.java
index c222111..fd7c950 100644
--- a/guava/src/com/google/common/util/concurrent/CombinedFuture.java
+++ b/guava/src/com/google/common/util/concurrent/CombinedFuture.java
@@ -17,22 +17,17 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.AggregateFuture.ReleaseResourcesReason.OUTPUT_FUTURE_DONE;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableCollection;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.RejectedExecutionException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Aggregate future that computes its value by calling a callable. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class CombinedFuture<V extends @Nullable Object>
-    extends AggregateFuture<@Nullable Object, V> {
+final class CombinedFuture<V extends Object>
+    extends AggregateFuture<Object, V> {
   @CheckForNull private CombinedFutureInterruptibleTask<?> task;
 
   CombinedFuture(
@@ -89,8 +84,7 @@ final class CombinedFuture<V extends @Nullable Object>
     }
   }
 
-  @WeakOuter
-  private abstract class CombinedFutureInterruptibleTask<T extends @Nullable Object>
+  private abstract class CombinedFutureInterruptibleTask<T extends Object>
       extends InterruptibleTask<T> {
     private final Executor listenerExecutor;
 
@@ -150,7 +144,6 @@ final class CombinedFuture<V extends @Nullable Object>
     abstract void setValue(@ParametricNullness T value);
   }
 
-  @WeakOuter
   private final class AsyncCallableInterruptibleTask
       extends CombinedFutureInterruptibleTask<ListenableFuture<V>> {
     private final AsyncCallable<V> callable;
@@ -181,7 +174,6 @@ final class CombinedFuture<V extends @Nullable Object>
     }
   }
 
-  @WeakOuter
   private final class CallableInterruptibleTask extends CombinedFutureInterruptibleTask<V> {
     private final Callable<V> callable;
 
diff --git a/guava/src/com/google/common/util/concurrent/CycleDetectingLockFactory.java b/guava/src/com/google/common/util/concurrent/CycleDetectingLockFactory.java
index b6b161d..b98b068 100644
--- a/guava/src/com/google/common/util/concurrent/CycleDetectingLockFactory.java
+++ b/guava/src/com/google/common/util/concurrent/CycleDetectingLockFactory.java
@@ -15,20 +15,13 @@
 package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.MapMaker;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.Weak;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -160,9 +153,7 @@ import javax.annotation.CheckForNull;
  * @author Darick Tong
  * @since 13.0
  */
-@Beta
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 public class CycleDetectingLockFactory {
 
@@ -173,7 +164,6 @@ public class CycleDetectingLockFactory {
    *
    * @since 13.0
    */
-  @Beta
   public interface Policy {
 
     /**
@@ -193,7 +183,6 @@ public class CycleDetectingLockFactory {
    *
    * @since 13.0
    */
-  @Beta
   public enum Policies implements Policy {
     /**
      * When potential deadlock is detected, this policy results in the throwing of the {@code
@@ -304,7 +293,6 @@ public class CycleDetectingLockFactory {
    * disallowedPriorLocks} prepopulated with nodes according to the natural ordering of the
    * associated Enum values.
    */
-  @VisibleForTesting
   static <E extends Enum<E>> Map<E, LockGraphNode> createNodes(Class<E> clazz) {
     EnumMap<E, LockGraphNode> map = Maps.newEnumMap(clazz);
     E[] keys = clazz.getEnumConstants();
@@ -394,13 +382,11 @@ public class CycleDetectingLockFactory {
    * @param <E> The Enum type representing the explicit lock ordering.
    * @since 13.0
    */
-  @Beta
   public static final class WithExplicitOrdering<E extends Enum<E>>
       extends CycleDetectingLockFactory {
 
     private final Map<E, LockGraphNode> lockGraphNodes;
 
-    @VisibleForTesting
     WithExplicitOrdering(Policy policy, Map<E, LockGraphNode> lockGraphNodes) {
       super(policy);
       this.lockGraphNodes = lockGraphNodes;
@@ -534,7 +520,6 @@ public class CycleDetectingLockFactory {
    *
    * @since 13.0
    */
-  @Beta
   public static final class PotentialDeadlockException extends ExampleStackTrace {
 
     private final ExampleStackTrace conflictingStackTrace;
@@ -863,7 +848,7 @@ public class CycleDetectingLockFactory {
 
   private class CycleDetectingReentrantReadLock extends ReentrantReadWriteLock.ReadLock {
 
-    @Weak final CycleDetectingReentrantReadWriteLock readWriteLock;
+    final CycleDetectingReentrantReadWriteLock readWriteLock;
 
     CycleDetectingReentrantReadLock(CycleDetectingReentrantReadWriteLock readWriteLock) {
       super(readWriteLock);
@@ -922,7 +907,7 @@ public class CycleDetectingLockFactory {
 
   private class CycleDetectingReentrantWriteLock extends ReentrantReadWriteLock.WriteLock {
 
-    @Weak final CycleDetectingReentrantReadWriteLock readWriteLock;
+    final CycleDetectingReentrantReadWriteLock readWriteLock;
 
     CycleDetectingReentrantWriteLock(CycleDetectingReentrantReadWriteLock readWriteLock) {
       super(readWriteLock);
diff --git a/guava/src/com/google/common/util/concurrent/DirectExecutor.java b/guava/src/com/google/common/util/concurrent/DirectExecutor.java
index 0c3a46b..4d12e1e 100644
--- a/guava/src/com/google/common/util/concurrent/DirectExecutor.java
+++ b/guava/src/com/google/common/util/concurrent/DirectExecutor.java
@@ -14,14 +14,12 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.Executor;
 
 /**
  * An {@link Executor} that runs each task in the thread that invokes {@link Executor#execute
  * execute}.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 enum DirectExecutor implements Executor {
   INSTANCE;
diff --git a/guava/src/com/google/common/util/concurrent/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/util/concurrent/ElementTypesAreNonnullByDefault.java
index 3487125..669a53b 100644
--- a/guava/src/com/google/common/util/concurrent/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/util/concurrent/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/util/concurrent/ExecutionError.java b/guava/src/com/google/common/util/concurrent/ExecutionError.java
index deaff15..7df64a4 100644
--- a/guava/src/com/google/common/util/concurrent/ExecutionError.java
+++ b/guava/src/com/google/common/util/concurrent/ExecutionError.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -27,7 +26,6 @@ import javax.annotation.CheckForNull;
  * @author Chris Povirk
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class ExecutionError extends Error {
   /*
diff --git a/guava/src/com/google/common/util/concurrent/ExecutionList.java b/guava/src/com/google/common/util/concurrent/ExecutionList.java
index 96fc51c..35e6ce9 100644
--- a/guava/src/com/google/common/util/concurrent/ExecutionList.java
+++ b/guava/src/com/google/common/util/concurrent/ExecutionList.java
@@ -16,8 +16,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.util.concurrent.Executor;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -39,7 +37,6 @@ import javax.annotation.CheckForNull;
  * @author Sven Mawson
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ExecutionList {
   /** Logger to log exceptions caught when running runnables. */
@@ -49,11 +46,9 @@ public final class ExecutionList {
    * The runnable, executor pairs to execute. This acts as a stack threaded through the {@link
    * RunnableExecutorPair#next} field.
    */
-  @GuardedBy("this")
   @CheckForNull
   private RunnableExecutorPair runnables;
 
-  @GuardedBy("this")
   private boolean executed;
 
   /** Creates a new, empty {@link ExecutionList}. */
diff --git a/guava/src/com/google/common/util/concurrent/ExecutionSequencer.java b/guava/src/com/google/common/util/concurrent/ExecutionSequencer.java
index 148f50b..86a977f 100644
--- a/guava/src/com/google/common/util/concurrent/ExecutionSequencer.java
+++ b/guava/src/com/google/common/util/concurrent/ExecutionSequencer.java
@@ -23,14 +23,11 @@ import static com.google.common.util.concurrent.Futures.immediateCancelledFuture
 import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static com.google.common.util.concurrent.Futures.immediateVoidFuture;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Executor;
 import java.util.concurrent.atomic.AtomicReference;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Serializes execution of tasks, somewhat like an "asynchronous {@code synchronized} block." Each
@@ -80,7 +77,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 26.0
  */
-@Beta
 @ElementTypesAreNonnullByDefault
 public final class ExecutionSequencer {
 
@@ -92,7 +88,7 @@ public final class ExecutionSequencer {
   }
 
   /** This reference acts as a pointer tracking the head of a linked list of ListenableFutures. */
-  private final AtomicReference<ListenableFuture<@Nullable Void>> ref =
+  private final AtomicReference<ListenableFuture<Void>> ref =
       new AtomicReference<>(immediateVoidFuture());
 
   private ThreadConfinedTaskQueue latestTaskQueue = new ThreadConfinedTaskQueue();
@@ -140,7 +136,7 @@ public final class ExecutionSequencer {
    * execute, but if the output future is cancelled before {@link Callable#call()} is invoked,
    * {@link Callable#call()} will not be invoked.
    */
-  public <T extends @Nullable Object> ListenableFuture<T> submit(
+  public <T extends Object> ListenableFuture<T> submit(
       final Callable<T> callable, Executor executor) {
     checkNotNull(callable);
     checkNotNull(executor);
@@ -166,7 +162,7 @@ public final class ExecutionSequencer {
    * callable} or a callable that has begun to execute, but if the output future is cancelled before
    * {@link AsyncCallable#call()} is invoked, {@link AsyncCallable#call()} will not be invoked.
    */
-  public <T extends @Nullable Object> ListenableFuture<T> submitAsync(
+  public <T extends Object> ListenableFuture<T> submitAsync(
       final AsyncCallable<T> callable, final Executor executor) {
     checkNotNull(callable);
     checkNotNull(executor);
@@ -197,9 +193,9 @@ public final class ExecutionSequencer {
      * have completed - namely after oldFuture is done, and taskFuture has either completed or been
      * cancelled before the callable started execution.
      */
-    final SettableFuture<@Nullable Void> newFuture = SettableFuture.create();
+    final SettableFuture<Void> newFuture = SettableFuture.create();
 
-    final ListenableFuture<@Nullable Void> oldFuture = ref.getAndSet(newFuture);
+    final ListenableFuture<Void> oldFuture = ref.getAndSet(newFuture);
 
     // Invoke our task once the previous future completes.
     final TrustedListenableFutureTask<T> taskFuture = TrustedListenableFutureTask.create(task);
diff --git a/guava/src/com/google/common/util/concurrent/FakeTimeLimiter.java b/guava/src/com/google/common/util/concurrent/FakeTimeLimiter.java
index ddc9440..dfdc9b7 100644
--- a/guava/src/com/google/common/util/concurrent/FakeTimeLimiter.java
+++ b/guava/src/com/google/common/util/concurrent/FakeTimeLimiter.java
@@ -16,13 +16,9 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A TimeLimiter implementation which actually does not attempt to limit time at all. This may be
@@ -34,9 +30,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jens Nyman
  * @since 1.0
  */
-@Beta
-@CanIgnoreReturnValue
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class FakeTimeLimiter implements TimeLimiter {
   @Override
@@ -50,7 +43,7 @@ public final class FakeTimeLimiter implements TimeLimiter {
 
   @Override
   @ParametricNullness
-  public <T extends @Nullable Object> T callWithTimeout(
+  public <T extends Object> T callWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit) throws ExecutionException {
     checkNotNull(callable);
     checkNotNull(timeoutUnit);
@@ -71,7 +64,7 @@ public final class FakeTimeLimiter implements TimeLimiter {
 
   @Override
   @ParametricNullness
-  public <T extends @Nullable Object> T callUninterruptiblyWithTimeout(
+  public <T extends Object> T callUninterruptiblyWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit) throws ExecutionException {
     return callWithTimeout(callable, timeoutDuration, timeoutUnit);
   }
diff --git a/guava/src/com/google/common/util/concurrent/FluentFuture.java b/guava/src/com/google/common/util/concurrent/FluentFuture.java
index 4320b78..cb97aec 100644
--- a/guava/src/com/google/common/util/concurrent/FluentFuture.java
+++ b/guava/src/com/google/common/util/concurrent/FluentFuture.java
@@ -17,19 +17,13 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.Internal.toNanosSaturated;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.time.Duration;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link ListenableFuture} that supports fluent chains of operations. For example:
@@ -72,27 +66,22 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @since 23.0
  */
-@Beta
-@DoNotMock("Use FluentFuture.from(Futures.immediate*Future) or SettableFuture")
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-public abstract class FluentFuture<V extends @Nullable Object>
+public abstract class FluentFuture<V extends Object>
     extends GwtFluentFutureCatchingSpecialization<V> {
 
   /**
    * A less abstract subclass of AbstractFuture. This can be used to optimize setFuture by ensuring
    * that {@link #get} calls exactly the implementation of {@link AbstractFuture#get}.
    */
-  abstract static class TrustedFuture<V extends @Nullable Object> extends FluentFuture<V>
+  abstract static class TrustedFuture<V extends Object> extends FluentFuture<V>
       implements AbstractFuture.Trusted<V> {
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public final V get() throws InterruptedException, ExecutionException {
       return super.get();
     }
 
-    @CanIgnoreReturnValue
     @Override
     @ParametricNullness
     public final V get(long timeout, TimeUnit unit)
@@ -115,7 +104,6 @@ public abstract class FluentFuture<V extends @Nullable Object>
       super.addListener(listener, executor);
     }
 
-    @CanIgnoreReturnValue
     @Override
     public final boolean cancel(boolean mayInterruptIfRunning) {
       return super.cancel(mayInterruptIfRunning);
@@ -131,7 +119,7 @@ public abstract class FluentFuture<V extends @Nullable Object>
    * directly. If not, it is wrapped in a {@code FluentFuture} that delegates all calls to the
    * original {@code ListenableFuture}.
    */
-  public static <V extends @Nullable Object> FluentFuture<V> from(ListenableFuture<V> future) {
+  public static <V extends Object> FluentFuture<V> from(ListenableFuture<V> future) {
     return future instanceof FluentFuture
         ? (FluentFuture<V>) future
         : new ForwardingFluentFuture<V>(future);
@@ -144,7 +132,7 @@ public abstract class FluentFuture<V extends @Nullable Object>
    * @since 28.0
    */
   @Deprecated
-  public static <V extends @Nullable Object> FluentFuture<V> from(FluentFuture<V> future) {
+  public static <V extends Object> FluentFuture<V> from(FluentFuture<V> future) {
     return checkNotNull(future);
   }
 
@@ -185,7 +173,6 @@ public abstract class FluentFuture<V extends @Nullable Object>
    *     {@code get()} throws a different kind of exception, that exception itself.
    * @param executor the executor that runs {@code fallback} if the input fails
    */
-  @Partially.GwtIncompatible("AVAILABLE but requires exceptionType to be Throwable.class")
   public final <X extends Throwable> FluentFuture<V> catching(
       Class<X> exceptionType, Function<? super X, ? extends V> fallback, Executor executor) {
     return (FluentFuture<V>) Futures.catching(this, exceptionType, fallback, executor);
@@ -249,7 +236,6 @@ public abstract class FluentFuture<V extends @Nullable Object>
    *     {@code get()} throws a different kind of exception, that exception itself.
    * @param executor the executor that runs {@code fallback} if the input fails
    */
-  @Partially.GwtIncompatible("AVAILABLE but requires exceptionType to be Throwable.class")
   public final <X extends Throwable> FluentFuture<V> catchingAsync(
       Class<X> exceptionType, AsyncFunction<? super X, ? extends V> fallback, Executor executor) {
     return (FluentFuture<V>) Futures.catchingAsync(this, exceptionType, fallback, executor);
@@ -265,7 +251,7 @@ public abstract class FluentFuture<V extends @Nullable Object>
    * @param scheduledExecutor The executor service to enforce the timeout.
    * @since 28.0
    */
-  @GwtIncompatible // ScheduledExecutorService
+  // ScheduledExecutorService
   public final FluentFuture<V> withTimeout(
       Duration timeout, ScheduledExecutorService scheduledExecutor) {
     return withTimeout(toNanosSaturated(timeout), TimeUnit.NANOSECONDS, scheduledExecutor);
@@ -281,7 +267,7 @@ public abstract class FluentFuture<V extends @Nullable Object>
    * @param unit the time unit of the time parameter
    * @param scheduledExecutor The executor service to enforce the timeout.
    */
-  @GwtIncompatible // ScheduledExecutorService
+  // ScheduledExecutorService
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public final FluentFuture<V> withTimeout(
       long timeout, TimeUnit unit, ScheduledExecutorService scheduledExecutor) {
@@ -327,7 +313,7 @@ public abstract class FluentFuture<V extends @Nullable Object>
    * @return A future that holds result of the function (if the input succeeded) or the original
    *     input's failure (if not)
    */
-  public final <T extends @Nullable Object> FluentFuture<T> transformAsync(
+  public final <T extends Object> FluentFuture<T> transformAsync(
       AsyncFunction<? super V, T> function, Executor executor) {
     return (FluentFuture<T>) Futures.transformAsync(this, function, executor);
   }
@@ -364,7 +350,7 @@ public abstract class FluentFuture<V extends @Nullable Object>
    * @param executor Executor to run the function in.
    * @return A future that holds result of the transformation.
    */
-  public final <T extends @Nullable Object> FluentFuture<T> transform(
+  public final <T extends Object> FluentFuture<T> transform(
       Function<? super V, T> function, Executor executor) {
     return (FluentFuture<T>) Futures.transform(this, function, executor);
   }
diff --git a/guava/src/com/google/common/util/concurrent/ForwardingBlockingDeque.java b/guava/src/com/google/common/util/concurrent/ForwardingBlockingDeque.java
index d0d72a8..7506825 100644
--- a/guava/src/com/google/common/util/concurrent/ForwardingBlockingDeque.java
+++ b/guava/src/com/google/common/util/concurrent/ForwardingBlockingDeque.java
@@ -16,7 +16,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ForwardingDeque;
 import java.util.Collection;
 import java.util.concurrent.BlockingDeque;
@@ -44,7 +43,6 @@ import javax.annotation.CheckForNull;
  * @author Emily Soldal
  * @since 21.0 (since 14.0 as {@link com.google.common.collect.ForwardingBlockingDeque})
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingBlockingDeque<E> extends ForwardingDeque<E>
     implements BlockingDeque<E> {
diff --git a/guava/src/com/google/common/util/concurrent/ForwardingBlockingQueue.java b/guava/src/com/google/common/util/concurrent/ForwardingBlockingQueue.java
index dc8511d..088804c 100644
--- a/guava/src/com/google/common/util/concurrent/ForwardingBlockingQueue.java
+++ b/guava/src/com/google/common/util/concurrent/ForwardingBlockingQueue.java
@@ -14,9 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ForwardingQueue;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.TimeUnit;
@@ -36,8 +34,7 @@ import javax.annotation.CheckForNull;
  * @param <E> the type of elements held in this collection
  * @since 4.0
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingBlockingQueue<E> extends ForwardingQueue<E>
     implements BlockingQueue<E> {
diff --git a/guava/src/com/google/common/util/concurrent/ForwardingExecutorService.java b/guava/src/com/google/common/util/concurrent/ForwardingExecutorService.java
index ed78b86..0122143 100644
--- a/guava/src/com/google/common/util/concurrent/ForwardingExecutorService.java
+++ b/guava/src/com/google/common/util/concurrent/ForwardingExecutorService.java
@@ -14,9 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ForwardingObject;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -25,7 +23,6 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An executor service which forwards all its method calls to another executor service. Subclasses
@@ -35,8 +32,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Kurt Alfred Kluever
  * @since 10.0
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingExecutorService extends ForwardingObject
     implements ExecutorService {
@@ -52,26 +48,26 @@ public abstract class ForwardingExecutorService extends ForwardingObject
   }
 
   @Override
-  public <T extends @Nullable Object> List<Future<T>> invokeAll(
+  public <T extends Object> List<Future<T>> invokeAll(
       Collection<? extends Callable<T>> tasks) throws InterruptedException {
     return delegate().invokeAll(tasks);
   }
 
   @Override
-  public <T extends @Nullable Object> List<Future<T>> invokeAll(
+  public <T extends Object> List<Future<T>> invokeAll(
       Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
       throws InterruptedException {
     return delegate().invokeAll(tasks, timeout, unit);
   }
 
   @Override
-  public <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)
+  public <T extends Object> T invokeAny(Collection<? extends Callable<T>> tasks)
       throws InterruptedException, ExecutionException {
     return delegate().invokeAny(tasks);
   }
 
   @Override
-  public <T extends @Nullable Object> T invokeAny(
+  public <T extends Object> T invokeAny(
       Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
       throws InterruptedException, ExecutionException, TimeoutException {
     return delegate().invokeAny(tasks, timeout, unit);
@@ -103,7 +99,7 @@ public abstract class ForwardingExecutorService extends ForwardingObject
   }
 
   @Override
-  public <T extends @Nullable Object> Future<T> submit(Callable<T> task) {
+  public <T extends Object> Future<T> submit(Callable<T> task) {
     return delegate().submit(task);
   }
 
@@ -113,7 +109,7 @@ public abstract class ForwardingExecutorService extends ForwardingObject
   }
 
   @Override
-  public <T extends @Nullable Object> Future<T> submit(
+  public <T extends Object> Future<T> submit(
       Runnable task, @ParametricNullness T result) {
     return delegate().submit(task, result);
   }
diff --git a/guava/src/com/google/common/util/concurrent/ForwardingFluentFuture.java b/guava/src/com/google/common/util/concurrent/ForwardingFluentFuture.java
index cb779c3..ce517a2 100644
--- a/guava/src/com/google/common/util/concurrent/ForwardingFluentFuture.java
+++ b/guava/src/com/google/common/util/concurrent/ForwardingFluentFuture.java
@@ -16,12 +16,10 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * {@link FluentFuture} that forwards all calls to a delegate.
@@ -33,9 +31,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * existing {@code ListenableFuture}, implemented atop a {@link ForwardingListenableFuture} that
  * forwards to that future and adds the desired methods.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-final class ForwardingFluentFuture<V extends @Nullable Object> extends FluentFuture<V> {
+final class ForwardingFluentFuture<V extends Object> extends FluentFuture<V> {
   private final ListenableFuture<V> delegate;
 
   ForwardingFluentFuture(ListenableFuture<V> delegate) {
diff --git a/guava/src/com/google/common/util/concurrent/ForwardingFuture.java b/guava/src/com/google/common/util/concurrent/ForwardingFuture.java
index 47002b0..2c1d21a 100644
--- a/guava/src/com/google/common/util/concurrent/ForwardingFuture.java
+++ b/guava/src/com/google/common/util/concurrent/ForwardingFuture.java
@@ -14,15 +14,12 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ForwardingObject;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Future} which forwards all its method calls to another future. Subclasses should
@@ -34,10 +31,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 1.0
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtCompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingFuture<V extends @Nullable Object> extends ForwardingObject
+public abstract class ForwardingFuture<V extends Object> extends ForwardingObject
     implements Future<V> {
   /** Constructor for use by subclasses. */
   protected ForwardingFuture() {}
@@ -80,7 +76,7 @@ public abstract class ForwardingFuture<V extends @Nullable Object> extends Forwa
    *
    * @since 9.0
    */
-  public abstract static class SimpleForwardingFuture<V extends @Nullable Object>
+  public abstract static class SimpleForwardingFuture<V extends Object>
       extends ForwardingFuture<V> {
     private final Future<V> delegate;
 
diff --git a/guava/src/com/google/common/util/concurrent/ForwardingListenableFuture.java b/guava/src/com/google/common/util/concurrent/ForwardingListenableFuture.java
index 3868091..078e6d3 100644
--- a/guava/src/com/google/common/util/concurrent/ForwardingListenableFuture.java
+++ b/guava/src/com/google/common/util/concurrent/ForwardingListenableFuture.java
@@ -14,11 +14,8 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.Executor;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link ListenableFuture} which forwards all its method calls to another future. Subclasses
@@ -30,10 +27,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Shardul Deo
  * @since 4.0
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtCompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
-public abstract class ForwardingListenableFuture<V extends @Nullable Object>
+public abstract class ForwardingListenableFuture<V extends Object>
     extends ForwardingFuture<V> implements ListenableFuture<V> {
 
   /** Constructor for use by subclasses. */
@@ -54,7 +50,7 @@ public abstract class ForwardingListenableFuture<V extends @Nullable Object>
    *
    * @since 9.0
    */
-  public abstract static class SimpleForwardingListenableFuture<V extends @Nullable Object>
+  public abstract static class SimpleForwardingListenableFuture<V extends Object>
       extends ForwardingListenableFuture<V> {
     private final ListenableFuture<V> delegate;
 
diff --git a/guava/src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java b/guava/src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java
index fe25b86..12fdb81 100644
--- a/guava/src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java
+++ b/guava/src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java
@@ -14,10 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.Callable;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A listening executor service which forwards all its method calls to another listening executor
@@ -28,8 +25,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Isaac Shum
  * @since 10.0
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 public abstract class ForwardingListeningExecutorService extends ForwardingExecutorService
     implements ListeningExecutorService {
@@ -40,7 +36,7 @@ public abstract class ForwardingListeningExecutorService extends ForwardingExecu
   protected abstract ListeningExecutorService delegate();
 
   @Override
-  public <T extends @Nullable Object> ListenableFuture<T> submit(Callable<T> task) {
+  public <T extends Object> ListenableFuture<T> submit(Callable<T> task) {
     return delegate().submit(task);
   }
 
@@ -50,7 +46,7 @@ public abstract class ForwardingListeningExecutorService extends ForwardingExecu
   }
 
   @Override
-  public <T extends @Nullable Object> ListenableFuture<T> submit(
+  public <T extends Object> ListenableFuture<T> submit(
       Runnable task, @ParametricNullness T result) {
     return delegate().submit(task, result);
   }
diff --git a/guava/src/com/google/common/util/concurrent/FutureCallback.java b/guava/src/com/google/common/util/concurrent/FutureCallback.java
index f5684e7..0abb16c 100644
--- a/guava/src/com/google/common/util/concurrent/FutureCallback.java
+++ b/guava/src/com/google/common/util/concurrent/FutureCallback.java
@@ -14,10 +14,8 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A callback for accepting the results of a {@link java.util.concurrent.Future} computation
@@ -28,9 +26,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Anthony Zana
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface FutureCallback<V extends @Nullable Object> {
+public interface FutureCallback<V extends Object> {
   /** Invoked with the result of the {@code Future} computation when it is successful. */
   void onSuccess(@ParametricNullness V result);
 
diff --git a/guava/src/com/google/common/util/concurrent/Futures.java b/guava/src/com/google/common/util/concurrent/Futures.java
index 43205b8..181e5bc 100644
--- a/guava/src/com/google/common/util/concurrent/Futures.java
+++ b/guava/src/com/google/common/util/concurrent/Futures.java
@@ -19,21 +19,15 @@ import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.util.concurrent.Internal.toNanosSaturated;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.CollectionFuture.ListFuture;
 import com.google.common.util.concurrent.ImmediateFuture.ImmediateCancelledFuture;
 import com.google.common.util.concurrent.ImmediateFuture.ImmediateFailedFuture;
 import com.google.common.util.concurrent.internal.InternalFutureFailureAccess;
 import com.google.common.util.concurrent.internal.InternalFutures;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.time.Duration;
 import java.util.Collection;
 import java.util.List;
@@ -48,7 +42,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicInteger;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Static utility methods pertaining to the {@link Future} interface.
@@ -74,7 +67,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 1.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Futures extends GwtFuturesCatchingSpecialization {
 
@@ -130,7 +122,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * getters just return the value. This {@code Future} can't be canceled or timed out and its
    * {@code isDone()} method always returns {@code true}.
    */
-  public static <V extends @Nullable Object> ListenableFuture<V> immediateFuture(
+  public static <V extends Object> ListenableFuture<V> immediateFuture(
       @ParametricNullness V value) {
     if (value == null) {
       // This cast is safe because null is assignable to V for all V (i.e. it is bivariant)
@@ -148,7 +140,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @since 29.0
    */
   @SuppressWarnings("unchecked")
-  public static ListenableFuture<@Nullable Void> immediateVoidFuture() {
+  public static ListenableFuture<Void> immediateVoidFuture() {
     return (ListenableFuture<@Nullable Void>) ImmediateFuture.NULL;
   }
 
@@ -159,7 +151,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * returns {@code true}. Calling {@code get()} will immediately throw the provided {@code
    * Throwable} wrapped in an {@code ExecutionException}.
    */
-  public static <V extends @Nullable Object> ListenableFuture<V> immediateFailedFuture(
+  public static <V extends Object> ListenableFuture<V> immediateFailedFuture(
       Throwable throwable) {
     checkNotNull(throwable);
     return new ImmediateFailedFuture<V>(throwable);
@@ -171,7 +163,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 14.0
    */
-  public static <V extends @Nullable Object> ListenableFuture<V> immediateCancelledFuture() {
+  public static <V extends Object> ListenableFuture<V> immediateCancelledFuture() {
     return new ImmediateCancelledFuture<V>();
   }
 
@@ -181,8 +173,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws RejectedExecutionException if the task cannot be scheduled for execution
    * @since 28.2
    */
-  @Beta
-  public static <O extends @Nullable Object> ListenableFuture<O> submit(
+  public static <O extends Object> ListenableFuture<O> submit(
       Callable<O> callable, Executor executor) {
     TrustedListenableFutureTask<O> task = TrustedListenableFutureTask.create(callable);
     executor.execute(task);
@@ -196,9 +187,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws RejectedExecutionException if the task cannot be scheduled for execution
    * @since 28.2
    */
-  @Beta
-  public static ListenableFuture<@Nullable Void> submit(Runnable runnable, Executor executor) {
-    TrustedListenableFutureTask<@Nullable Void> task =
+  public static ListenableFuture<Void> submit(Runnable runnable, Executor executor) {
+    TrustedListenableFutureTask<Void> task =
         TrustedListenableFutureTask.create(runnable, null);
     executor.execute(task);
     return task;
@@ -210,8 +200,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws RejectedExecutionException if the task cannot be scheduled for execution
    * @since 23.0
    */
-  @Beta
-  public static <O extends @Nullable Object> ListenableFuture<O> submitAsync(
+  public static <O extends Object> ListenableFuture<O> submitAsync(
       AsyncCallable<O> callable, Executor executor) {
     TrustedListenableFutureTask<O> task = TrustedListenableFutureTask.create(callable);
     executor.execute(task);
@@ -224,9 +213,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws RejectedExecutionException if the task cannot be scheduled for execution
    * @since 28.0
    */
-  @Beta
-  @GwtIncompatible // java.util.concurrent.ScheduledExecutorService
-  public static <O extends @Nullable Object> ListenableFuture<O> scheduleAsync(
+  // java.util.concurrent.ScheduledExecutorService
+  public static <O extends Object> ListenableFuture<O> scheduleAsync(
       AsyncCallable<O> callable, Duration delay, ScheduledExecutorService executorService) {
     return scheduleAsync(callable, toNanosSaturated(delay), TimeUnit.NANOSECONDS, executorService);
   }
@@ -237,10 +225,9 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws RejectedExecutionException if the task cannot be scheduled for execution
    * @since 23.0
    */
-  @Beta
-  @GwtIncompatible // java.util.concurrent.ScheduledExecutorService
+  // java.util.concurrent.ScheduledExecutorService
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
-  public static <O extends @Nullable Object> ListenableFuture<O> scheduleAsync(
+  public static <O extends Object> ListenableFuture<O> scheduleAsync(
       AsyncCallable<O> callable,
       long delay,
       TimeUnit timeUnit,
@@ -295,9 +282,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @param executor the executor that runs {@code fallback} if {@code input} fails
    * @since 19.0
    */
-  @Beta
-  @Partially.GwtIncompatible("AVAILABLE but requires exceptionType to be Throwable.class")
-  public static <V extends @Nullable Object, X extends Throwable> ListenableFuture<V> catching(
+  public static <V extends Object, X extends Throwable> ListenableFuture<V> catching(
       ListenableFuture<? extends V> input,
       Class<X> exceptionType,
       Function<? super X, ? extends V> fallback,
@@ -360,9 +345,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @param executor the executor that runs {@code fallback} if {@code input} fails
    * @since 19.0 (similar functionality in 14.0 as {@code withFallback})
    */
-  @Beta
-  @Partially.GwtIncompatible("AVAILABLE but requires exceptionType to be Throwable.class")
-  public static <V extends @Nullable Object, X extends Throwable> ListenableFuture<V> catchingAsync(
+  public static <V extends Object, X extends Throwable> ListenableFuture<V> catchingAsync(
       ListenableFuture<? extends V> input,
       Class<X> exceptionType,
       AsyncFunction<? super X, ? extends V> fallback,
@@ -381,9 +364,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @param scheduledExecutor The executor service to enforce the timeout.
    * @since 28.0
    */
-  @Beta
-  @GwtIncompatible // java.util.concurrent.ScheduledExecutorService
-  public static <V extends @Nullable Object> ListenableFuture<V> withTimeout(
+  // java.util.concurrent.ScheduledExecutorService
+  public static <V extends Object> ListenableFuture<V> withTimeout(
       ListenableFuture<V> delegate, Duration time, ScheduledExecutorService scheduledExecutor) {
     return withTimeout(delegate, toNanosSaturated(time), TimeUnit.NANOSECONDS, scheduledExecutor);
   }
@@ -400,10 +382,9 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @param scheduledExecutor The executor service to enforce the timeout.
    * @since 19.0
    */
-  @Beta
-  @GwtIncompatible // java.util.concurrent.ScheduledExecutorService
+  // java.util.concurrent.ScheduledExecutorService
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
-  public static <V extends @Nullable Object> ListenableFuture<V> withTimeout(
+  public static <V extends Object> ListenableFuture<V> withTimeout(
       ListenableFuture<V> delegate,
       long time,
       TimeUnit unit,
@@ -446,8 +427,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *     input's failure (if not)
    * @since 19.0 (in 11.0 as {@code transform})
    */
-  @Beta
-  public static <I extends @Nullable Object, O extends @Nullable Object>
+  public static <I extends Object, O extends Object>
       ListenableFuture<O> transformAsync(
           ListenableFuture<I> input,
           AsyncFunction<? super I, ? extends O> function,
@@ -484,8 +464,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @return A future that holds result of the transformation.
    * @since 9.0 (in 2.0 as {@code compose})
    */
-  @Beta
-  public static <I extends @Nullable Object, O extends @Nullable Object>
+  public static <I extends Object, O extends Object>
       ListenableFuture<O> transform(
           ListenableFuture<I> input, Function<? super I, ? extends O> function, Executor executor) {
     return AbstractTransformFuture.create(input, function, executor);
@@ -511,9 +490,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @return A future that returns the result of the transformation.
    * @since 10.0
    */
-  @Beta
-  @GwtIncompatible // TODO
-  public static <I extends @Nullable Object, O extends @Nullable Object> Future<O> lazyTransform(
+  // TODO
+  public static <I extends Object, O extends Object> Future<O> lazyTransform(
       final Future<I> input, final Function<? super I, ? extends O> function) {
     checkNotNull(input);
     checkNotNull(function);
@@ -571,11 +549,10 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @return a future that provides a list of the results of the component futures
    * @since 10.0
    */
-  @Beta
   @SafeVarargs
-  public static <V extends @Nullable Object> ListenableFuture<List<V>> allAsList(
+  public static <V extends Object> ListenableFuture<List<V>> allAsList(
       ListenableFuture<? extends V>... futures) {
-    ListenableFuture<List<@Nullable V>> nullable =
+    ListenableFuture<List<V>> nullable =
         new ListFuture<V>(ImmutableList.copyOf(futures), true);
     // allAsList ensures that it fills the output list with V instances.
     @SuppressWarnings("nullness")
@@ -599,10 +576,9 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @return a future that provides a list of the results of the component futures
    * @since 10.0
    */
-  @Beta
-  public static <V extends @Nullable Object> ListenableFuture<List<V>> allAsList(
+  public static <V extends Object> ListenableFuture<List<V>> allAsList(
       Iterable<? extends ListenableFuture<? extends V>> futures) {
-    ListenableFuture<List<@Nullable V>> nullable =
+    ListenableFuture<List<V>> nullable =
         new ListFuture<V>(ImmutableList.copyOf(futures), true);
     // allAsList ensures that it fills the output list with V instances.
     @SuppressWarnings("nullness")
@@ -618,9 +594,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 20.0
    */
-  @Beta
   @SafeVarargs
-  public static <V extends @Nullable Object> FutureCombiner<V> whenAllComplete(
+  public static <V extends Object> FutureCombiner<V> whenAllComplete(
       ListenableFuture<? extends V>... futures) {
     return new FutureCombiner<V>(false, ImmutableList.copyOf(futures));
   }
@@ -633,8 +608,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 20.0
    */
-  @Beta
-  public static <V extends @Nullable Object> FutureCombiner<V> whenAllComplete(
+  public static <V extends Object> FutureCombiner<V> whenAllComplete(
       Iterable<? extends ListenableFuture<? extends V>> futures) {
     return new FutureCombiner<V>(false, ImmutableList.copyOf(futures));
   }
@@ -646,9 +620,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 20.0
    */
-  @Beta
   @SafeVarargs
-  public static <V extends @Nullable Object> FutureCombiner<V> whenAllSucceed(
+  public static <V extends Object> FutureCombiner<V> whenAllSucceed(
       ListenableFuture<? extends V>... futures) {
     return new FutureCombiner<V>(true, ImmutableList.copyOf(futures));
   }
@@ -660,8 +633,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 20.0
    */
-  @Beta
-  public static <V extends @Nullable Object> FutureCombiner<V> whenAllSucceed(
+  public static <V extends Object> FutureCombiner<V> whenAllSucceed(
       Iterable<? extends ListenableFuture<? extends V>> futures) {
     return new FutureCombiner<V>(true, ImmutableList.copyOf(futures));
   }
@@ -692,10 +664,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 20.0
    */
-  @Beta
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider removing, especially if we provide run(Runnable)
-  @GwtCompatible
-  public static final class FutureCombiner<V extends @Nullable Object> {
+  // TODO(cpovirk): Consider removing, especially if we provide run(Runnable)
+  public static final class FutureCombiner<V extends Object> {
     private final boolean allMustSucceed;
     private final ImmutableList<ListenableFuture<? extends V>> futures;
 
@@ -719,7 +689,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
      *
      * <p>Canceling this future will attempt to cancel all the component futures.
      */
-    public <C extends @Nullable Object> ListenableFuture<C> callAsync(
+    public <C extends Object> ListenableFuture<C> callAsync(
         AsyncCallable<C> combiner, Executor executor) {
       return new CombinedFuture<C>(futures, allMustSucceed, executor, combiner);
     }
@@ -738,8 +708,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
      *
      * <p>Canceling this future will attempt to cancel all the component futures.
      */
-    @CanIgnoreReturnValue // TODO(cpovirk): Remove this
-    public <C extends @Nullable Object> ListenableFuture<C> call(
+    // TODO(cpovirk): Remove this
+    public <C extends Object> ListenableFuture<C> call(
         Callable<C> combiner, Executor executor) {
       return new CombinedFuture<C>(futures, allMustSucceed, executor, combiner);
     }
@@ -776,8 +746,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 15.0
    */
-  @Beta
-  public static <V extends @Nullable Object> ListenableFuture<V> nonCancellationPropagating(
+  public static <V extends Object> ListenableFuture<V> nonCancellationPropagating(
       ListenableFuture<V> future) {
     if (future.isDone()) {
       return future;
@@ -788,7 +757,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
   }
 
   /** A wrapped future that does not propagate cancellation to its delegate. */
-  private static final class NonCancellationPropagatingFuture<V extends @Nullable Object>
+  private static final class NonCancellationPropagatingFuture<V extends Object>
       extends AbstractFuture.TrustedFuture<V> implements Runnable {
     @CheckForNull private ListenableFuture<V> delegate;
 
@@ -852,9 +821,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * whenAllComplete().collectSuccesses(). That API would have a signature more like the current
    * one.
    */
-  @Beta
   @SafeVarargs
-  public static <V extends @Nullable Object> ListenableFuture<List<@Nullable V>> successfulAsList(
+  public static <V extends Object> ListenableFuture<List<V>> successfulAsList(
       ListenableFuture<? extends V>... futures) {
     return new ListFuture<V>(ImmutableList.copyOf(futures), false);
   }
@@ -877,8 +845,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @return a future that provides a list of the results of the component futures
    * @since 10.0
    */
-  @Beta
-  public static <V extends @Nullable Object> ListenableFuture<List<@Nullable V>> successfulAsList(
+  public static <V extends Object> ListenableFuture<List<V>> successfulAsList(
       Iterable<? extends ListenableFuture<? extends V>> futures) {
     return new ListFuture<V>(ImmutableList.copyOf(futures), false);
   }
@@ -904,8 +871,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *
    * @since 17.0
    */
-  @Beta
-  public static <T extends @Nullable Object> ImmutableList<ListenableFuture<T>> inCompletionOrder(
+  public static <T extends Object> ImmutableList<ListenableFuture<T>> inCompletionOrder(
       Iterable<? extends ListenableFuture<? extends T>> futures) {
     ListenableFuture<? extends T>[] copy = gwtCompatibleToArray(futures);
     final InCompletionOrderState<T> state = new InCompletionOrderState<>(copy);
@@ -935,7 +901,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
 
   /** Can't use Iterables.toArray because it's not gwt compatible */
   @SuppressWarnings("unchecked")
-  private static <T extends @Nullable Object> ListenableFuture<? extends T>[] gwtCompatibleToArray(
+  private static <T extends Object> ListenableFuture<? extends T>[] gwtCompatibleToArray(
       Iterable<? extends ListenableFuture<? extends T>> futures) {
     final Collection<ListenableFuture<? extends T>> collection;
     if (futures instanceof Collection) {
@@ -949,7 +915,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
   // This can't be a TrustedFuture, because TrustedFuture has clever optimizations that
   // mean cancel won't be called if this Future is passed into setFuture, and then
   // cancelled.
-  private static final class InCompletionOrderFuture<T extends @Nullable Object>
+  private static final class InCompletionOrderFuture<T extends Object>
       extends AbstractFuture<T> {
     @CheckForNull private InCompletionOrderState<T> state;
 
@@ -997,7 +963,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
     }
   }
 
-  private static final class InCompletionOrderState<T extends @Nullable Object> {
+  private static final class InCompletionOrderState<T extends Object> {
     // A happens-before edge between the writes of these fields and their reads exists, because
     // in order to read these fields, the corresponding write to incompleteOutputCount must have
     // been read.
@@ -1005,7 +971,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
     private boolean shouldInterrupt = true;
     private final AtomicInteger incompleteOutputCount;
     // We set the elements of the array to null as they complete.
-    private final @Nullable ListenableFuture<? extends T>[] inputFutures;
+    private final ListenableFuture<? extends T>[] inputFutures;
     private volatile int delegateIndex = 0;
 
     private InCompletionOrderState(ListenableFuture<? extends T>[] inputFutures) {
@@ -1098,7 +1064,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @param executor The executor to run {@code callback} when the future completes.
    * @since 10.0
    */
-  public static <V extends @Nullable Object> void addCallback(
+  public static <V extends Object> void addCallback(
       final ListenableFuture<V> future,
       final FutureCallback<? super V> callback,
       Executor executor) {
@@ -1107,7 +1073,7 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
   }
 
   /** See {@link #addCallback(ListenableFuture, FutureCallback, Executor)} for behavioral notes. */
-  private static final class CallbackListener<V extends @Nullable Object> implements Runnable {
+  private static final class CallbackListener<V extends Object> implements Runnable {
     final Future<V> future;
     final FutureCallback<? super V> callback;
 
@@ -1164,10 +1130,9 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws IllegalStateException if the {@code Future} is not done
    * @since 20.0
    */
-  @CanIgnoreReturnValue
   // TODO(cpovirk): Consider calling getDone() in our own code.
   @ParametricNullness
-  public static <V extends @Nullable Object> V getDone(Future<V> future) throws ExecutionException {
+  public static <V extends Object> V getDone(Future<V> future) throws ExecutionException {
     /*
      * We throw IllegalStateException, since the call could succeed later. Perhaps we "should" throw
      * IllegalArgumentException, since the call could succeed with a different argument. Those
@@ -1224,11 +1189,9 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *     does not have a suitable constructor
    * @since 19.0 (in 10.0 as {@code get})
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // reflection
+  // reflection
   @ParametricNullness
-  public static <V extends @Nullable Object, X extends Exception> V getChecked(
+  public static <V extends Object, X extends Exception> V getChecked(
       Future<V> future, Class<X> exceptionClass) throws X {
     return FuturesGetChecked.getChecked(future, exceptionClass);
   }
@@ -1276,11 +1239,9 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *     does not have a suitable constructor
    * @since 28.0
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // reflection
+  // reflection
   @ParametricNullness
-  public static <V extends @Nullable Object, X extends Exception> V getChecked(
+  public static <V extends Object, X extends Exception> V getChecked(
       Future<V> future, Class<X> exceptionClass, Duration timeout) throws X {
     return getChecked(future, exceptionClass, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
   }
@@ -1328,12 +1289,10 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    *     does not have a suitable constructor
    * @since 19.0 (in 10.0 as {@code get} and with different parameter order)
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // reflection
+  // reflection
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   @ParametricNullness
-  public static <V extends @Nullable Object, X extends Exception> V getChecked(
+  public static <V extends Object, X extends Exception> V getChecked(
       Future<V> future, Class<X> exceptionClass, long timeout, TimeUnit unit) throws X {
     return FuturesGetChecked.getChecked(future, exceptionClass, timeout, unit);
   }
@@ -1372,9 +1331,8 @@ public final class Futures extends GwtFuturesCatchingSpecialization {
    * @throws CancellationException if {@code get} throws a {@code CancellationException}
    * @since 10.0
    */
-  @CanIgnoreReturnValue
   @ParametricNullness
-  public static <V extends @Nullable Object> V getUnchecked(Future<V> future) {
+  public static <V extends Object> V getUnchecked(Future<V> future) {
     checkNotNull(future);
     try {
       return getUninterruptibly(future);
diff --git a/guava/src/com/google/common/util/concurrent/FuturesGetChecked.java b/guava/src/com/google/common/util/concurrent/FuturesGetChecked.java
index 6f09b80..4d24452 100644
--- a/guava/src/com/google/common/util/concurrent/FuturesGetChecked.java
+++ b/guava/src/com/google/common/util/concurrent/FuturesGetChecked.java
@@ -18,13 +18,8 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static java.lang.Thread.currentThread;
 import static java.util.Arrays.asList;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.collect.Ordering;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
-import java.lang.ref.WeakReference;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Arrays;
@@ -36,24 +31,19 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Static methods used to implement {@link Futures#getChecked(Future, Class)}. */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class FuturesGetChecked {
-  @CanIgnoreReturnValue
   @ParametricNullness
-  static <V extends @Nullable Object, X extends Exception> V getChecked(
+  static <V extends Object, X extends Exception> V getChecked(
       Future<V> future, Class<X> exceptionClass) throws X {
     return getChecked(bestGetCheckedTypeValidator(), future, exceptionClass);
   }
 
   /** Implementation of {@link Futures#getChecked(Future, Class)}. */
-  @CanIgnoreReturnValue
-  @VisibleForTesting
   @ParametricNullness
-  static <V extends @Nullable Object, X extends Exception> V getChecked(
+  static <V extends Object, X extends Exception> V getChecked(
       GetCheckedTypeValidator validator, Future<V> future, Class<X> exceptionClass) throws X {
     validator.validateClass(exceptionClass);
     try {
@@ -68,9 +58,8 @@ final class FuturesGetChecked {
   }
 
   /** Implementation of {@link Futures#getChecked(Future, Class, long, TimeUnit)}. */
-  @CanIgnoreReturnValue
   @ParametricNullness
-  static <V extends @Nullable Object, X extends Exception> V getChecked(
+  static <V extends Object, X extends Exception> V getChecked(
       Future<V> future, Class<X> exceptionClass, long timeout, TimeUnit unit) throws X {
     // TODO(cpovirk): benchmark a version of this method that accepts a GetCheckedTypeValidator
     bestGetCheckedTypeValidator().validateClass(exceptionClass);
@@ -87,7 +76,6 @@ final class FuturesGetChecked {
     }
   }
 
-  @VisibleForTesting
   interface GetCheckedTypeValidator {
     void validateClass(Class<? extends Exception> exceptionClass);
   }
@@ -96,13 +84,11 @@ final class FuturesGetChecked {
     return GetCheckedTypeValidatorHolder.BEST_VALIDATOR;
   }
 
-  @VisibleForTesting
   static GetCheckedTypeValidator weakSetValidator() {
     return GetCheckedTypeValidatorHolder.WeakSetValidator.INSTANCE;
   }
 
-  @J2ObjCIncompatible // ClassValue
-  @VisibleForTesting
+  // ClassValue
   static GetCheckedTypeValidator classValueValidator() {
     return GetCheckedTypeValidatorHolder.ClassValueValidator.INSTANCE;
   }
@@ -113,14 +99,13 @@ final class FuturesGetChecked {
    *
    * <p>Uses reflection to gracefully fall back to when certain implementations aren't available.
    */
-  @VisibleForTesting
   static class GetCheckedTypeValidatorHolder {
     static final String CLASS_VALUE_VALIDATOR_NAME =
         GetCheckedTypeValidatorHolder.class.getName() + "$ClassValueValidator";
 
     static final GetCheckedTypeValidator BEST_VALIDATOR = getBestValidator();
 
-    @J2ObjCIncompatible // ClassValue
+    // ClassValue
     enum ClassValueValidator implements GetCheckedTypeValidator {
       INSTANCE;
 
@@ -286,12 +271,10 @@ final class FuturesGetChecked {
     }
   }
 
-  @VisibleForTesting
   static boolean isCheckedException(Class<? extends Exception> type) {
     return !RuntimeException.class.isAssignableFrom(type);
   }
 
-  @VisibleForTesting
   static void checkExceptionClassValidity(Class<? extends Exception> exceptionClass) {
     checkArgument(
         isCheckedException(exceptionClass),
diff --git a/guava/src/com/google/common/util/concurrent/GwtFluentFutureCatchingSpecialization.java b/guava/src/com/google/common/util/concurrent/GwtFluentFutureCatchingSpecialization.java
index d29a673..0545c34 100644
--- a/guava/src/com/google/common/util/concurrent/GwtFluentFutureCatchingSpecialization.java
+++ b/guava/src/com/google/common/util/concurrent/GwtFluentFutureCatchingSpecialization.java
@@ -14,17 +14,14 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Hidden superclass of {@link FluentFuture} that provides us a place to declare special GWT
  * versions of the {@link FluentFuture#catching(Class, com.google.common.base.Function)
  * FluentFuture.catching} family of methods. Those versions have slightly different signatures.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
-abstract class GwtFluentFutureCatchingSpecialization<V extends @Nullable Object>
+abstract class GwtFluentFutureCatchingSpecialization<V extends Object>
     extends AbstractFuture<V> {
   /*
    * This server copy of the class is empty. The corresponding GWT copy contains alternative
diff --git a/guava/src/com/google/common/util/concurrent/GwtFuturesCatchingSpecialization.java b/guava/src/com/google/common/util/concurrent/GwtFuturesCatchingSpecialization.java
index 95131ce..1be8753 100644
--- a/guava/src/com/google/common/util/concurrent/GwtFuturesCatchingSpecialization.java
+++ b/guava/src/com/google/common/util/concurrent/GwtFuturesCatchingSpecialization.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Hidden superclass of {@link Futures} that provides us a place to declare special GWT versions of
@@ -22,7 +21,6 @@ import com.google.common.annotations.GwtCompatible;
  * java.util.concurrent.Executor) Futures.catching} family of methods. Those versions have slightly
  * different signatures.
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 abstract class GwtFuturesCatchingSpecialization {
   /*
diff --git a/guava/src/com/google/common/util/concurrent/ImmediateFuture.java b/guava/src/com/google/common/util/concurrent/ImmediateFuture.java
index 81912f5..43b247c 100644
--- a/guava/src/com/google/common/util/concurrent/ImmediateFuture.java
+++ b/guava/src/com/google/common/util/concurrent/ImmediateFuture.java
@@ -16,21 +16,18 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.util.concurrent.AbstractFuture.TrustedFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** Implementation of {@link Futures#immediateFuture}. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 // TODO(cpovirk): Make this final (but that may break Mockito spy calls).
-class ImmediateFuture<V extends @Nullable Object> implements ListenableFuture<V> {
-  static final ListenableFuture<?> NULL = new ImmediateFuture<@Nullable Object>(null);
+class ImmediateFuture<V extends Object> implements ListenableFuture<V> {
+  static final ListenableFuture<?> NULL = new ImmediateFuture<Object>(null);
 
   private static final Logger log = Logger.getLogger(ImmediateFuture.class.getName());
 
@@ -91,13 +88,13 @@ class ImmediateFuture<V extends @Nullable Object> implements ListenableFuture<V>
     return super.toString() + "[status=SUCCESS, result=[" + value + "]]";
   }
 
-  static final class ImmediateFailedFuture<V extends @Nullable Object> extends TrustedFuture<V> {
+  static final class ImmediateFailedFuture<V extends Object> extends TrustedFuture<V> {
     ImmediateFailedFuture(Throwable thrown) {
       setException(thrown);
     }
   }
 
-  static final class ImmediateCancelledFuture<V extends @Nullable Object> extends TrustedFuture<V> {
+  static final class ImmediateCancelledFuture<V extends Object> extends TrustedFuture<V> {
     ImmediateCancelledFuture() {
       cancel(false);
     }
diff --git a/guava/src/com/google/common/util/concurrent/Internal.java b/guava/src/com/google/common/util/concurrent/Internal.java
index 06bee2e..b8fc26a 100644
--- a/guava/src/com/google/common/util/concurrent/Internal.java
+++ b/guava/src/com/google/common/util/concurrent/Internal.java
@@ -14,11 +14,10 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.time.Duration;
 
 /** This class is for {@code com.google.common.util.concurrent} use only! */
-@GwtIncompatible // java.time.Duration
+// java.time.Duration
 @ElementTypesAreNonnullByDefault
 final class Internal {
 
diff --git a/guava/src/com/google/common/util/concurrent/InterruptibleTask.java b/guava/src/com/google/common/util/concurrent/InterruptibleTask.java
index 168adf2..bf8eb01 100644
--- a/guava/src/com/google/common/util/concurrent/InterruptibleTask.java
+++ b/guava/src/com/google/common/util/concurrent/InterruptibleTask.java
@@ -14,26 +14,19 @@
 
 package com.google.common.util.concurrent;
 
-import static com.google.common.util.concurrent.NullnessCasts.uncheckedCastNullableTToT;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.j2objc.annotations.ReflectionSupport;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.locks.AbstractOwnableSynchronizer;
 import java.util.concurrent.locks.LockSupport;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
-@GwtCompatible(emulated = true)
-@ReflectionSupport(value = ReflectionSupport.Level.FULL)
 @ElementTypesAreNonnullByDefault
 // Some Android 5.0.x Samsung devices have bugs in JDK reflection APIs that cause
 // getDeclaredField to throw a NoSuchFieldException when the field is definitely there.
 // Since this class only needs CAS on one field, we can avoid this bug by extending AtomicReference
 // instead of using an AtomicReferenceFieldUpdater. This reference stores Thread instances
 // and DONE/INTERRUPTED - they have a common ancestor of Runnable.
-abstract class InterruptibleTask<T extends @Nullable Object>
-    extends AtomicReference<@Nullable Runnable> implements Runnable {
+abstract class InterruptibleTask<T extends Object>
+    extends AtomicReference<Runnable> implements Runnable {
   static {
     // Prevent rare disastrous classloading in first call to LockSupport.park.
     // See: https://bugs.openjdk.java.net/browse/JDK-8074773
@@ -216,7 +209,6 @@ abstract class InterruptibleTask<T extends @Nullable Object>
    * currentRunner thread is blocked on the progress of the interruptor thread, which can help
    * identify deadlocks.
    */
-  @VisibleForTesting
   static final class Blocker extends AbstractOwnableSynchronizer implements Runnable {
     private final InterruptibleTask<?> task;
 
diff --git a/guava/src/com/google/common/util/concurrent/JdkFutureAdapters.java b/guava/src/com/google/common/util/concurrent/JdkFutureAdapters.java
index 82f8d95..7f11423 100644
--- a/guava/src/com/google/common/util/concurrent/JdkFutureAdapters.java
+++ b/guava/src/com/google/common/util/concurrent/JdkFutureAdapters.java
@@ -17,14 +17,11 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicBoolean;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Utilities necessary for working with libraries that supply plain {@link Future} instances. Note
@@ -34,8 +31,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 10.0 (replacing {@code Futures.makeListenable}, which existed in 1.0)
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class JdkFutureAdapters {
   /**
@@ -51,7 +46,7 @@ public final class JdkFutureAdapters {
    * ListenableFutureTask}, {@link AbstractFuture}, and other utilities over creating plain {@code
    * Future} instances to be upgraded to {@code ListenableFuture} after the fact.
    */
-  public static <V extends @Nullable Object> ListenableFuture<V> listenInPoolThread(
+  public static <V extends Object> ListenableFuture<V> listenInPoolThread(
       Future<V> future) {
     if (future instanceof ListenableFuture) {
       return (ListenableFuture<V>) future;
@@ -79,7 +74,7 @@ public final class JdkFutureAdapters {
    *
    * @since 12.0
    */
-  public static <V extends @Nullable Object> ListenableFuture<V> listenInPoolThread(
+  public static <V extends Object> ListenableFuture<V> listenInPoolThread(
       Future<V> future, Executor executor) {
     checkNotNull(executor);
     if (future instanceof ListenableFuture) {
@@ -97,7 +92,7 @@ public final class JdkFutureAdapters {
    * <p>If the delegate future is interrupted or throws an unexpected unchecked exception, the
    * listeners will not be invoked.
    */
-  private static class ListenableFutureAdapter<V extends @Nullable Object>
+  private static class ListenableFutureAdapter<V extends Object>
       extends ForwardingFuture<V> implements ListenableFuture<V> {
 
     private static final ThreadFactory threadFactory =
diff --git a/guava/src/com/google/common/util/concurrent/ListenableFuture.java b/guava/src/com/google/common/util/concurrent/ListenableFuture.java
index cf0199a..70d9342 100644
--- a/guava/src/com/google/common/util/concurrent/ListenableFuture.java
+++ b/guava/src/com/google/common/util/concurrent/ListenableFuture.java
@@ -14,11 +14,9 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
 import java.util.concurrent.RejectedExecutionException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link Future} that accepts completion listeners. Each listener has an associated executor, and
@@ -115,7 +113,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * that affects users, especially users of the Android Gradle Plugin, since the plugin developers
  * put in a special hack for us: https://issuetracker.google.com/issues/131431257)
  */
-@DoNotMock("Use the methods in Futures (like immediateFuture) or SettableFuture")
 /*
  * It would make sense to also annotate this class with @ElementTypesAreNonnullByDefault. However,
  * it makes no difference because this class is already covered by the package-level
@@ -125,7 +122,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * we're seeing a breakage internally when we add that annotation :)
  *
  */
-public interface ListenableFuture<V extends @Nullable Object> extends Future<V> {
+public interface ListenableFuture<V extends Object> extends Future<V> {
   /**
    * Registers a listener to be {@linkplain Executor#execute(Runnable) run} on the given executor.
    * The listener will run when the {@code Future}'s computation is {@linkplain Future#isDone()
diff --git a/guava/src/com/google/common/util/concurrent/ListenableFutureTask.java b/guava/src/com/google/common/util/concurrent/ListenableFutureTask.java
index 9fdcc53..a49cbd8 100644
--- a/guava/src/com/google/common/util/concurrent/ListenableFutureTask.java
+++ b/guava/src/com/google/common/util/concurrent/ListenableFutureTask.java
@@ -17,15 +17,12 @@ package com.google.common.util.concurrent;
 import static java.lang.Math.min;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link FutureTask} that also implements the {@link ListenableFuture} interface. Unlike {@code
@@ -40,9 +37,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-public class ListenableFutureTask<V extends @Nullable Object> extends FutureTask<V>
+public class ListenableFutureTask<V extends Object> extends FutureTask<V>
     implements ListenableFuture<V> {
   // TODO(cpovirk): explore ways of making ListenableFutureTask final. There are some valid reasons
   // such as BoundedQueueExecutorService to allow extends but it would be nice to make it final to
@@ -58,7 +54,7 @@ public class ListenableFutureTask<V extends @Nullable Object> extends FutureTask
    * @param callable the callable task
    * @since 10.0
    */
-  public static <V extends @Nullable Object> ListenableFutureTask<V> create(Callable<V> callable) {
+  public static <V extends Object> ListenableFutureTask<V> create(Callable<V> callable) {
     return new ListenableFutureTask<V>(callable);
   }
 
@@ -72,7 +68,7 @@ public class ListenableFutureTask<V extends @Nullable Object> extends FutureTask
    *     ListenableFutureTask.create(runnable, null)}
    * @since 10.0
    */
-  public static <V extends @Nullable Object> ListenableFutureTask<V> create(
+  public static <V extends Object> ListenableFutureTask<V> create(
       Runnable runnable, @ParametricNullness V result) {
     return new ListenableFutureTask<V>(runnable, result);
   }
@@ -90,7 +86,6 @@ public class ListenableFutureTask<V extends @Nullable Object> extends FutureTask
     executionList.add(listener, exec);
   }
 
-  @CanIgnoreReturnValue
   @Override
   @ParametricNullness
   public V get(long timeout, TimeUnit unit)
diff --git a/guava/src/com/google/common/util/concurrent/ListenableScheduledFuture.java b/guava/src/com/google/common/util/concurrent/ListenableScheduledFuture.java
index e5aa5e3..823b660 100644
--- a/guava/src/com/google/common/util/concurrent/ListenableScheduledFuture.java
+++ b/guava/src/com/google/common/util/concurrent/ListenableScheduledFuture.java
@@ -14,10 +14,7 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import java.util.concurrent.ScheduledFuture;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Helper interface to implement both {@link ListenableFuture} and {@link ScheduledFuture}.
@@ -25,8 +22,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Anthony Zana
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public interface ListenableScheduledFuture<V extends @Nullable Object>
+public interface ListenableScheduledFuture<V extends Object>
     extends ScheduledFuture<V>, ListenableFuture<V> {}
diff --git a/guava/src/com/google/common/util/concurrent/ListenerCallQueue.java b/guava/src/com/google/common/util/concurrent/ListenerCallQueue.java
index ed8c906..12dca44 100644
--- a/guava/src/com/google/common/util/concurrent/ListenerCallQueue.java
+++ b/guava/src/com/google/common/util/concurrent/ListenerCallQueue.java
@@ -16,10 +16,8 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Queues;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -52,7 +50,6 @@ import java.util.logging.Logger;
  * the listeners can be delayed slightly so that locks can be dropped. Also, because {@link
  * #dispatch} is expected to be called concurrently, it is idempotent.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class ListenerCallQueue<L> {
   // TODO(cpovirk): consider using the logger associated with listener.getClass().
@@ -133,13 +130,10 @@ final class ListenerCallQueue<L> {
     final L listener;
     final Executor executor;
 
-    @GuardedBy("this")
     final Queue<ListenerCallQueue.Event<L>> waitQueue = Queues.newArrayDeque();
 
-    @GuardedBy("this")
     final Queue<Object> labelQueue = Queues.newArrayDeque();
 
-    @GuardedBy("this")
     boolean isThreadScheduled;
 
     PerListenerQueue(L listener, Executor executor) {
diff --git a/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java b/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
index 83ea759..dc96275 100644
--- a/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
+++ b/guava/src/com/google/common/util/concurrent/ListeningExecutorService.java
@@ -14,8 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.DoNotMock;
 import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -23,7 +21,6 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An {@link ExecutorService} that returns {@link ListenableFuture} instances. To create an instance
@@ -33,10 +30,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Povirk
  * @since 10.0
  */
-@DoNotMock(
-    "Use TestingExecutors.sameThreadScheduledExecutor, or wrap a real Executor from "
-        + "java.util.concurrent.Executors with MoreExecutors.listeningDecorator")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface ListeningExecutorService extends ExecutorService {
   /**
@@ -44,7 +37,7 @@ public interface ListeningExecutorService extends ExecutorService {
    * @throws RejectedExecutionException {@inheritDoc}
    */
   @Override
-  <T extends @Nullable Object> ListenableFuture<T> submit(Callable<T> task);
+  <T extends Object> ListenableFuture<T> submit(Callable<T> task);
 
   /**
    * @return a {@code ListenableFuture} representing pending completion of the task
@@ -58,7 +51,7 @@ public interface ListeningExecutorService extends ExecutorService {
    * @throws RejectedExecutionException {@inheritDoc}
    */
   @Override
-  <T extends @Nullable Object> ListenableFuture<T> submit(
+  <T extends Object> ListenableFuture<T> submit(
       Runnable task, @ParametricNullness T result);
 
   /**
@@ -80,7 +73,7 @@ public interface ListeningExecutorService extends ExecutorService {
    * @throws NullPointerException if any task is null
    */
   @Override
-  <T extends @Nullable Object> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
+  <T extends Object> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
       throws InterruptedException;
 
   /**
@@ -103,7 +96,7 @@ public interface ListeningExecutorService extends ExecutorService {
    * @throws NullPointerException if any task is null
    */
   @Override
-  <T extends @Nullable Object> List<Future<T>> invokeAll(
+  <T extends Object> List<Future<T>> invokeAll(
       Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
       throws InterruptedException;
 }
diff --git a/guava/src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java b/guava/src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java
index 25185b9..58d5c02 100644
--- a/guava/src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java
+++ b/guava/src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java
@@ -16,12 +16,10 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.util.concurrent.Internal.toNanosSaturated;
 
-import com.google.common.annotations.GwtIncompatible;
 import java.time.Duration;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link ScheduledExecutorService} that returns {@link ListenableFuture} instances from its
@@ -32,7 +30,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Chris Povirk
  * @since 10.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface ListeningScheduledExecutorService
     extends ScheduledExecutorService, ListeningExecutorService {
@@ -52,7 +49,7 @@ public interface ListeningScheduledExecutorService
 
   /** @since 15.0 (previously returned ScheduledFuture) */
   @Override
-  <V extends @Nullable Object> ListenableScheduledFuture<V> schedule(
+  <V extends Object> ListenableScheduledFuture<V> schedule(
       Callable<V> callable, long delay, TimeUnit unit);
 
   /**
@@ -60,7 +57,7 @@ public interface ListeningScheduledExecutorService
    *
    * @since 29.0
    */
-  default <V extends @Nullable Object> ListenableScheduledFuture<V> schedule(
+  default <V extends Object> ListenableScheduledFuture<V> schedule(
       Callable<V> callable, Duration delay) {
     return schedule(callable, toNanosSaturated(delay), TimeUnit.NANOSECONDS);
   }
diff --git a/guava/src/com/google/common/util/concurrent/Monitor.java b/guava/src/com/google/common/util/concurrent/Monitor.java
index 6696b97..c77aab5 100644
--- a/guava/src/com/google/common/util/concurrent/Monitor.java
+++ b/guava/src/com/google/common/util/concurrent/Monitor.java
@@ -17,11 +17,7 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.Internal.toNanosSaturated;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.primitives.Longs;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.Weak;
 import java.time.Duration;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Condition;
@@ -200,8 +196,6 @@ import javax.annotation.CheckForNull;
  * @author Martin Buchholz
  * @since 10.0
  */
-@Beta
-@GwtIncompatible
 @SuppressWarnings("GuardedBy") // TODO(b/35466881): Fix or suppress.
 @ElementTypesAreNonnullByDefault
 public final class Monitor {
@@ -304,17 +298,14 @@ public final class Monitor {
    *
    * @since 10.0
    */
-  @Beta
   public abstract static class Guard {
 
-    @Weak final Monitor monitor;
+    final Monitor monitor;
     final Condition condition;
 
-    @GuardedBy("monitor.lock")
     int waiterCount = 0;
 
     /** The next active guard */
-    @GuardedBy("monitor.lock")
     @CheckForNull
     Guard next;
 
@@ -341,7 +332,6 @@ public final class Monitor {
    * The guards associated with this monitor that currently have waiters ({@code waiterCount > 0}).
    * A linked list threaded through the Guard.next field.
    */
-  @GuardedBy("lock")
   @CheckForNull
   private Guard activeGuards = null;
 
@@ -1088,7 +1078,6 @@ public final class Monitor {
    * <p>This method must not be called from within a beginWaitingFor/endWaitingFor block, or else
    * the current thread's guard might be mistakenly signalled, leading to a lost signal.
    */
-  @GuardedBy("lock")
   private void signalNextWaiter() {
     for (Guard guard = activeGuards; guard != null; guard = guard.next) {
       if (isSatisfied(guard)) {
@@ -1120,7 +1109,6 @@ public final class Monitor {
    * Exactly like guard.isSatisfied(), but in addition signals all waiting threads in the (hopefully
    * unlikely) event that isSatisfied() throws.
    */
-  @GuardedBy("lock")
   private boolean isSatisfied(Guard guard) {
     try {
       return guard.isSatisfied();
@@ -1131,7 +1119,6 @@ public final class Monitor {
   }
 
   /** Signals all threads waiting on guards. */
-  @GuardedBy("lock")
   private void signalAllWaiters() {
     for (Guard guard = activeGuards; guard != null; guard = guard.next) {
       guard.condition.signalAll();
@@ -1139,7 +1126,6 @@ public final class Monitor {
   }
 
   /** Records that the current thread is about to wait on the specified guard. */
-  @GuardedBy("lock")
   private void beginWaitingFor(Guard guard) {
     int waiters = guard.waiterCount++;
     if (waiters == 0) {
@@ -1150,7 +1136,6 @@ public final class Monitor {
   }
 
   /** Records that the current thread is no longer waiting on the specified guard. */
-  @GuardedBy("lock")
   private void endWaitingFor(Guard guard) {
     int waiters = --guard.waiterCount;
     if (waiters == 0) {
@@ -1175,7 +1160,6 @@ public final class Monitor {
    * responsibility to ensure that the guard is *not* currently satisfied.
    */
 
-  @GuardedBy("lock")
   private void await(Guard guard, boolean signalBeforeWaiting) throws InterruptedException {
     if (signalBeforeWaiting) {
       signalNextWaiter();
@@ -1190,7 +1174,6 @@ public final class Monitor {
     }
   }
 
-  @GuardedBy("lock")
   private void awaitUninterruptibly(Guard guard, boolean signalBeforeWaiting) {
     if (signalBeforeWaiting) {
       signalNextWaiter();
@@ -1206,7 +1189,6 @@ public final class Monitor {
   }
 
   /** Caller should check before calling that guard is not satisfied. */
-  @GuardedBy("lock")
   private boolean awaitNanos(Guard guard, long nanos, boolean signalBeforeWaiting)
       throws InterruptedException {
     boolean firstTime = true;
diff --git a/guava/src/com/google/common/util/concurrent/MoreExecutors.java b/guava/src/com/google/common/util/concurrent/MoreExecutors.java
index fc61fba..878db96 100644
--- a/guava/src/com/google/common/util/concurrent/MoreExecutors.java
+++ b/guava/src/com/google/common/util/concurrent/MoreExecutors.java
@@ -18,17 +18,11 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.Internal.toNanosSaturated;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Supplier;
 import com.google.common.base.Throwables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Queues;
 import com.google.common.util.concurrent.ForwardingListenableFuture.SimpleForwardingListenableFuture;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
 import java.lang.reflect.InvocationTargetException;
 import java.time.Duration;
 import java.util.Collection;
@@ -51,7 +45,6 @@ import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Factory and utility methods for {@link java.util.concurrent.Executor}, {@link ExecutorService},
@@ -62,7 +55,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Justin Mahoney
  * @since 3.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class MoreExecutors {
   private MoreExecutors() {}
@@ -80,8 +72,7 @@ public final class MoreExecutors {
    * @return an unmodifiable version of the input which will not hang the JVM
    * @since 28.0
    */
-  @Beta
-  @GwtIncompatible // TODO
+  // TODO
   public static ExecutorService getExitingExecutorService(
       ThreadPoolExecutor executor, Duration terminationTimeout) {
     return getExitingExecutorService(
@@ -101,8 +92,7 @@ public final class MoreExecutors {
    * @param timeUnit unit of time for the time parameter
    * @return an unmodifiable version of the input which will not hang the JVM
    */
-  @Beta
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static ExecutorService getExitingExecutorService(
       ThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) {
@@ -122,8 +112,7 @@ public final class MoreExecutors {
    * @param executor the executor to modify to make sure it exits when the application is finished
    * @return an unmodifiable version of the input which will not hang the JVM
    */
-  @Beta
-  @GwtIncompatible // concurrency
+  // concurrency
   public static ExecutorService getExitingExecutorService(ThreadPoolExecutor executor) {
     return new Application().getExitingExecutorService(executor);
   }
@@ -141,8 +130,7 @@ public final class MoreExecutors {
    * @return an unmodifiable version of the input which will not hang the JVM
    * @since 28.0
    */
-  @Beta
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public static ScheduledExecutorService getExitingScheduledExecutorService(
       ScheduledThreadPoolExecutor executor, Duration terminationTimeout) {
     return getExitingScheduledExecutorService(
@@ -162,8 +150,7 @@ public final class MoreExecutors {
    * @param timeUnit unit of time for the time parameter
    * @return an unmodifiable version of the input which will not hang the JVM
    */
-  @Beta
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static ScheduledExecutorService getExitingScheduledExecutorService(
       ScheduledThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) {
@@ -184,8 +171,7 @@ public final class MoreExecutors {
    * @param executor the executor to modify to make sure it exits when the application is finished
    * @return an unmodifiable version of the input which will not hang the JVM
    */
-  @Beta
-  @GwtIncompatible // TODO
+  // TODO
   public static ScheduledExecutorService getExitingScheduledExecutorService(
       ScheduledThreadPoolExecutor executor) {
     return new Application().getExitingScheduledExecutorService(executor);
@@ -202,8 +188,7 @@ public final class MoreExecutors {
    *     JVM
    * @since 28.0
    */
-  @Beta
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public static void addDelayedShutdownHook(ExecutorService service, Duration terminationTimeout) {
     addDelayedShutdownHook(service, toNanosSaturated(terminationTimeout), TimeUnit.NANOSECONDS);
   }
@@ -219,8 +204,7 @@ public final class MoreExecutors {
    *     JVM
    * @param timeUnit unit of time for the time parameter
    */
-  @Beta
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static void addDelayedShutdownHook(
       ExecutorService service, long terminationTimeout, TimeUnit timeUnit) {
@@ -228,8 +212,7 @@ public final class MoreExecutors {
   }
 
   /** Represents the current application to register shutdown hooks. */
-  @GwtIncompatible // TODO
-  @VisibleForTesting
+  // TODO
   static class Application {
 
     final ExecutorService getExitingExecutorService(
@@ -282,13 +265,12 @@ public final class MoreExecutors {
               }));
     }
 
-    @VisibleForTesting
     void addShutdownHook(Thread hook) {
       Runtime.getRuntime().addShutdownHook(hook);
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static void useDaemonThreadFactory(ThreadPoolExecutor executor) {
     executor.setThreadFactory(
         new ThreadFactoryBuilder()
@@ -298,7 +280,7 @@ public final class MoreExecutors {
   }
 
   // See newDirectExecutorService javadoc for behavioral notes.
-  @GwtIncompatible // TODO
+  // TODO
   private static final class DirectExecutorService extends AbstractListeningExecutorService {
     /** Lock used whenever accessing the state variables (runningTasks, shutdown) of the executor */
     private final Object lock = new Object();
@@ -310,10 +292,8 @@ public final class MoreExecutors {
      *   - Shutdown: runningTasks > 0 and shutdown == true
      *   - Terminated: runningTasks == 0 and shutdown == true
      */
-    @GuardedBy("lock")
     private int runningTasks = 0;
 
-    @GuardedBy("lock")
     private boolean shutdown = false;
 
     @Override
@@ -426,7 +406,7 @@ public final class MoreExecutors {
    *
    * @since 18.0 (present as MoreExecutors.sameThreadExecutor() since 10.0)
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static ListeningExecutorService newDirectExecutorService() {
     return new DirectExecutorService();
   }
@@ -527,8 +507,6 @@ public final class MoreExecutors {
    *
    * @since 23.3 (since 23.1 as {@code sequentialExecutor})
    */
-  @Beta
-  @GwtIncompatible
   public static Executor newSequentialExecutor(Executor delegate) {
     return new SequentialExecutor(delegate);
   }
@@ -548,7 +526,7 @@ public final class MoreExecutors {
    *
    * @since 10.0
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static ListeningExecutorService listeningDecorator(ExecutorService delegate) {
     return (delegate instanceof ListeningExecutorService)
         ? (ListeningExecutorService) delegate
@@ -573,7 +551,7 @@ public final class MoreExecutors {
    *
    * @since 10.0
    */
-  @GwtIncompatible // TODO
+  // TODO
   public static ListeningScheduledExecutorService listeningDecorator(
       ScheduledExecutorService delegate) {
     return (delegate instanceof ListeningScheduledExecutorService)
@@ -581,7 +559,7 @@ public final class MoreExecutors {
         : new ScheduledListeningDecorator(delegate);
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static class ListeningDecorator extends AbstractListeningExecutorService {
     private final ExecutorService delegate;
 
@@ -625,7 +603,7 @@ public final class MoreExecutors {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static final class ScheduledListeningDecorator extends ListeningDecorator
       implements ListeningScheduledExecutorService {
     @SuppressWarnings("hiding")
@@ -638,14 +616,14 @@ public final class MoreExecutors {
 
     @Override
     public ListenableScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) {
-      TrustedListenableFutureTask<@Nullable Void> task =
+      TrustedListenableFutureTask<Void> task =
           TrustedListenableFutureTask.create(command, null);
       ScheduledFuture<?> scheduled = delegate.schedule(task, delay, unit);
-      return new ListenableScheduledTask<@Nullable Void>(task, scheduled);
+      return new ListenableScheduledTask<Void>(task, scheduled);
     }
 
     @Override
-    public <V extends @Nullable Object> ListenableScheduledFuture<V> schedule(
+    public <V extends Object> ListenableScheduledFuture<V> schedule(
         Callable<V> callable, long delay, TimeUnit unit) {
       TrustedListenableFutureTask<V> task = TrustedListenableFutureTask.create(callable);
       ScheduledFuture<?> scheduled = delegate.schedule(task, delay, unit);
@@ -657,7 +635,7 @@ public final class MoreExecutors {
         Runnable command, long initialDelay, long period, TimeUnit unit) {
       NeverSuccessfulListenableFutureTask task = new NeverSuccessfulListenableFutureTask(command);
       ScheduledFuture<?> scheduled = delegate.scheduleAtFixedRate(task, initialDelay, period, unit);
-      return new ListenableScheduledTask<@Nullable Void>(task, scheduled);
+      return new ListenableScheduledTask<Void>(task, scheduled);
     }
 
     @Override
@@ -666,10 +644,10 @@ public final class MoreExecutors {
       NeverSuccessfulListenableFutureTask task = new NeverSuccessfulListenableFutureTask(command);
       ScheduledFuture<?> scheduled =
           delegate.scheduleWithFixedDelay(task, initialDelay, delay, unit);
-      return new ListenableScheduledTask<@Nullable Void>(task, scheduled);
+      return new ListenableScheduledTask<Void>(task, scheduled);
     }
 
-    private static final class ListenableScheduledTask<V extends @Nullable Object>
+    private static final class ListenableScheduledTask<V extends Object>
         extends SimpleForwardingListenableFuture<V> implements ListenableScheduledFuture<V> {
 
       private final ScheduledFuture<?> scheduledDelegate;
@@ -703,9 +681,9 @@ public final class MoreExecutors {
       }
     }
 
-    @GwtIncompatible // TODO
+    // TODO
     private static final class NeverSuccessfulListenableFutureTask
-        extends AbstractFuture.TrustedFuture<@Nullable Void> implements Runnable {
+        extends AbstractFuture.TrustedFuture<Void> implements Runnable {
       private final Runnable delegate;
 
       public NeverSuccessfulListenableFutureTask(Runnable delegate) {
@@ -744,9 +722,8 @@ public final class MoreExecutors {
    * An implementation of {@link ExecutorService#invokeAny} for {@link ListeningExecutorService}
    * implementations.
    */
-  @GwtIncompatible
   @ParametricNullness
-  static <T extends @Nullable Object> T invokeAnyImpl(
+  static <T extends Object> T invokeAnyImpl(
       ListeningExecutorService executorService,
       Collection<? extends Callable<T>> tasks,
       boolean timed,
@@ -761,9 +738,8 @@ public final class MoreExecutors {
    * implementations.
    */
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
-  @GwtIncompatible
   @ParametricNullness
-  static <T extends @Nullable Object> T invokeAnyImpl(
+  static <T extends Object> T invokeAnyImpl(
       ListeningExecutorService executorService,
       Collection<? extends Callable<T>> tasks,
       boolean timed,
@@ -842,8 +818,8 @@ public final class MoreExecutors {
   /**
    * Submits the task and adds a listener that adds the future to {@code queue} when it completes.
    */
-  @GwtIncompatible // TODO
-  private static <T extends @Nullable Object> ListenableFuture<T> submitAndAddQueueListener(
+  // TODO
+  private static <T extends Object> ListenableFuture<T> submitAndAddQueueListener(
       ListeningExecutorService executorService,
       Callable<T> task,
       final BlockingQueue<Future<T>> queue) {
@@ -869,8 +845,7 @@ public final class MoreExecutors {
    *
    * @since 14.0
    */
-  @Beta
-  @GwtIncompatible // concurrency
+  // concurrency
   public static ThreadFactory platformThreadFactory() {
     if (!isAppEngineWithApiClasses()) {
       return Executors.defaultThreadFactory();
@@ -896,7 +871,7 @@ public final class MoreExecutors {
     }
   }
 
-  @GwtIncompatible // TODO
+  // TODO
   private static boolean isAppEngineWithApiClasses() {
     if (System.getProperty("com.google.appengine.runtime.environment") == null) {
       return false;
@@ -931,7 +906,7 @@ public final class MoreExecutors {
    * Creates a thread using {@link #platformThreadFactory}, and sets its name to {@code name} unless
    * changing the name is forbidden by the security manager.
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   static Thread newThread(String name, Runnable runnable) {
     checkNotNull(name);
     checkNotNull(runnable);
@@ -958,7 +933,7 @@ public final class MoreExecutors {
    * @param executor The executor to decorate
    * @param nameSupplier The source of names for each task
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   static Executor renamingDecorator(final Executor executor, final Supplier<String> nameSupplier) {
     checkNotNull(executor);
     checkNotNull(nameSupplier);
@@ -981,14 +956,14 @@ public final class MoreExecutors {
    * @param service The executor to decorate
    * @param nameSupplier The source of names for each task
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   static ExecutorService renamingDecorator(
       final ExecutorService service, final Supplier<String> nameSupplier) {
     checkNotNull(service);
     checkNotNull(nameSupplier);
     return new WrappingExecutorService(service) {
       @Override
-      protected <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable) {
+      protected <T extends Object> Callable<T> wrapTask(Callable<T> callable) {
         return Callables.threadRenaming(callable, nameSupplier);
       }
 
@@ -1010,14 +985,14 @@ public final class MoreExecutors {
    * @param service The executor to decorate
    * @param nameSupplier The source of names for each task
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   static ScheduledExecutorService renamingDecorator(
       final ScheduledExecutorService service, final Supplier<String> nameSupplier) {
     checkNotNull(service);
     checkNotNull(nameSupplier);
     return new WrappingScheduledExecutorService(service) {
       @Override
-      protected <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable) {
+      protected <T extends Object> Callable<T> wrapTask(Callable<T> callable) {
         return Callables.threadRenaming(callable, nameSupplier);
       }
 
@@ -1051,9 +1026,7 @@ public final class MoreExecutors {
    *     if the call timed out or was interrupted
    * @since 28.0
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // java.time.Duration
+  // java.time.Duration
   public static boolean shutdownAndAwaitTermination(ExecutorService service, Duration timeout) {
     return shutdownAndAwaitTermination(service, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
   }
@@ -1082,9 +1055,7 @@ public final class MoreExecutors {
    *     if the call timed out or was interrupted
    * @since 17.0
    */
-  @Beta
-  @CanIgnoreReturnValue
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean shutdownAndAwaitTermination(
       ExecutorService service, long timeout, TimeUnit unit) {
diff --git a/guava/src/com/google/common/util/concurrent/NullnessCasts.java b/guava/src/com/google/common/util/concurrent/NullnessCasts.java
index 0a0d719..73a074a 100644
--- a/guava/src/com/google/common/util/concurrent/NullnessCasts.java
+++ b/guava/src/com/google/common/util/concurrent/NullnessCasts.java
@@ -14,12 +14,9 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** A utility method to perform unchecked casts to suppress errors produced by nullness analyses. */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class NullnessCasts {
   /**
@@ -52,7 +49,7 @@ final class NullnessCasts {
    */
   @SuppressWarnings("nullness")
   @ParametricNullness
-  static <T extends @Nullable Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
+  static <T extends Object> T uncheckedCastNullableTToT(@CheckForNull T t) {
     return t;
   }
 
@@ -67,7 +64,7 @@ final class NullnessCasts {
    */
   @SuppressWarnings("nullness")
   @ParametricNullness
-  static <T extends @Nullable Object> T uncheckedNull() {
+  static <T extends Object> T uncheckedNull() {
     return null;
   }
 
diff --git a/guava/src/com/google/common/util/concurrent/ParametricNullness.java b/guava/src/com/google/common/util/concurrent/ParametricNullness.java
index ebc5928..7a8b24a 100644
--- a/guava/src/com/google/common/util/concurrent/ParametricNullness.java
+++ b/guava/src/com/google/common/util/concurrent/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/util/concurrent/Partially.java b/guava/src/com/google/common/util/concurrent/Partially.java
index 7aa16e7..be93681 100644
--- a/guava/src/com/google/common/util/concurrent/Partially.java
+++ b/guava/src/com/google/common/util/concurrent/Partially.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
@@ -31,7 +30,6 @@ import java.lang.annotation.Target;
  * compiler to autostrip the normal server method in order to expose the special, inherited GWT
  * version.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 final class Partially {
   /**
diff --git a/guava/src/com/google/common/util/concurrent/Platform.java b/guava/src/com/google/common/util/concurrent/Platform.java
index cfb96a0..9e7916d 100644
--- a/guava/src/com/google/common/util/concurrent/Platform.java
+++ b/guava/src/com/google/common/util/concurrent/Platform.java
@@ -14,11 +14,9 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /** Methods factored out so that they can be emulated differently in GWT. */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 final class Platform {
   static boolean isInstanceOfThrowableClass(
diff --git a/guava/src/com/google/common/util/concurrent/RateLimiter.java b/guava/src/com/google/common/util/concurrent/RateLimiter.java
index 4b8b025..123e512 100644
--- a/guava/src/com/google/common/util/concurrent/RateLimiter.java
+++ b/guava/src/com/google/common/util/concurrent/RateLimiter.java
@@ -21,13 +21,9 @@ import static java.lang.Math.max;
 import static java.util.concurrent.TimeUnit.MICROSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Stopwatch;
 import com.google.common.util.concurrent.SmoothRateLimiter.SmoothBursty;
 import com.google.common.util.concurrent.SmoothRateLimiter.SmoothWarmingUp;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.time.Duration;
 import java.util.Locale;
 import java.util.concurrent.TimeUnit;
@@ -92,8 +88,6 @@ import javax.annotation.CheckForNull;
  */
 // TODO(user): switch to nano precision. A natural unit of cost is "bytes", and a micro precision
 // would mean a maximum rate of "1MB/s", which might be small in some cases.
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class RateLimiter {
   /**
@@ -130,7 +124,6 @@ public abstract class RateLimiter {
     return create(permitsPerSecond, SleepingStopwatch.createFromSystemTimer());
   }
 
-  @VisibleForTesting
   static RateLimiter create(double permitsPerSecond, SleepingStopwatch stopwatch) {
     RateLimiter rateLimiter = new SmoothBursty(stopwatch, 1.0 /* maxBurstSeconds */);
     rateLimiter.setRate(permitsPerSecond);
@@ -196,7 +189,6 @@ public abstract class RateLimiter {
         permitsPerSecond, warmupPeriod, unit, 3.0, SleepingStopwatch.createFromSystemTimer());
   }
 
-  @VisibleForTesting
   static RateLimiter create(
       double permitsPerSecond,
       long warmupPeriod,
@@ -285,7 +277,6 @@ public abstract class RateLimiter {
    * @return time spent sleeping to enforce rate, in seconds; 0.0 if not rate-limited
    * @since 16.0 (present in 13.0 with {@code void} return type})
    */
-  @CanIgnoreReturnValue
   public double acquire() {
     return acquire(1);
   }
@@ -299,7 +290,6 @@ public abstract class RateLimiter {
    * @throws IllegalArgumentException if the requested number of permits is negative or zero
    * @since 16.0 (present in 13.0 with {@code void} return type})
    */
-  @CanIgnoreReturnValue
   public double acquire(int permits) {
     long microsToWait = reserve(permits);
     stopwatch.sleepMicrosUninterruptibly(microsToWait);
diff --git a/guava/src/com/google/common/util/concurrent/Runnables.java b/guava/src/com/google/common/util/concurrent/Runnables.java
index 5503f68..a0610ef 100644
--- a/guava/src/com/google/common/util/concurrent/Runnables.java
+++ b/guava/src/com/google/common/util/concurrent/Runnables.java
@@ -14,16 +14,12 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * Static utility methods pertaining to the {@link Runnable} interface.
  *
  * @since 16.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public final class Runnables {
 
diff --git a/guava/src/com/google/common/util/concurrent/SequentialExecutor.java b/guava/src/com/google/common/util/concurrent/SequentialExecutor.java
index 052c7e0..8f29b93 100644
--- a/guava/src/com/google/common/util/concurrent/SequentialExecutor.java
+++ b/guava/src/com/google/common/util/concurrent/SequentialExecutor.java
@@ -21,10 +21,7 @@ import static com.google.common.util.concurrent.SequentialExecutor.WorkerRunning
 import static com.google.common.util.concurrent.SequentialExecutor.WorkerRunningState.RUNNING;
 import static java.lang.System.identityHashCode;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.RetainedWith;
 import java.util.ArrayDeque;
 import java.util.Deque;
 import java.util.concurrent.Executor;
@@ -47,7 +44,6 @@ import javax.annotation.CheckForNull;
  * If an {@code Error} is thrown, the error will propagate and execution will stop until it is
  * restarted by a call to {@link #execute}.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 final class SequentialExecutor implements Executor {
   private static final Logger log = Logger.getLogger(SequentialExecutor.class.getName());
@@ -65,11 +61,9 @@ final class SequentialExecutor implements Executor {
   /** Underlying executor that all submitted Runnable objects are run on. */
   private final Executor executor;
 
-  @GuardedBy("queue")
   private final Deque<Runnable> queue = new ArrayDeque<>();
 
   /** see {@link WorkerRunningState} */
-  @GuardedBy("queue")
   private WorkerRunningState workerRunningState = IDLE;
 
   /**
@@ -79,10 +73,9 @@ final class SequentialExecutor implements Executor {
    * it would observe the QUEUING state and set it to QUEUED, and the worker would never be
    * scheduled again for future submissions.
    */
-  @GuardedBy("queue")
   private long workerRunCount = 0;
 
-  @RetainedWith private final QueueWorker worker = new QueueWorker();
+  private final QueueWorker worker = new QueueWorker();
 
   /** Use {@link MoreExecutors#newSequentialExecutor} */
   SequentialExecutor(Executor executor) {
diff --git a/guava/src/com/google/common/util/concurrent/Service.java b/guava/src/com/google/common/util/concurrent/Service.java
index dd0c7e6..e0b2924 100644
--- a/guava/src/com/google/common/util/concurrent/Service.java
+++ b/guava/src/com/google/common/util/concurrent/Service.java
@@ -16,9 +16,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.util.concurrent.Internal.toNanosSaturated;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.time.Duration;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
@@ -54,8 +51,6 @@ import java.util.concurrent.TimeoutException;
  * @author Luke Sandberg
  * @since 9.0 (in 1.0 as {@code com.google.common.base.Service})
  */
-@DoNotMock("Create an AbstractIdleService")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface Service {
   /**
@@ -66,7 +61,6 @@ public interface Service {
    * @throws IllegalStateException if the service is not {@link State#NEW}
    * @since 15.0
    */
-  @CanIgnoreReturnValue
   Service startAsync();
 
   /** Returns {@code true} if this service is {@linkplain State#RUNNING running}. */
@@ -85,7 +79,6 @@ public interface Service {
    * @return this
    * @since 15.0
    */
-  @CanIgnoreReturnValue
   Service stopAsync();
 
   /**
diff --git a/guava/src/com/google/common/util/concurrent/ServiceManager.java b/guava/src/com/google/common/util/concurrent/ServiceManager.java
index d2dda7a..817684e 100644
--- a/guava/src/com/google/common/util/concurrent/ServiceManager.java
+++ b/guava/src/com/google/common/util/concurrent/ServiceManager.java
@@ -31,16 +31,10 @@ import static com.google.common.util.concurrent.Service.State.STOPPING;
 import static com.google.common.util.concurrent.Service.State.TERMINATED;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Function;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Stopwatch;
 import com.google.common.collect.Collections2;
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSetMultimap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.MultimapBuilder;
@@ -49,11 +43,6 @@ import com.google.common.collect.Multiset;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.SetMultimap;
 import com.google.common.util.concurrent.Service.State;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.concurrent.GuardedBy;
-import com.google.j2objc.annotations.J2ObjCIncompatible;
-import com.google.j2objc.annotations.WeakOuter;
-import java.lang.ref.WeakReference;
 import java.time.Duration;
 import java.util.Collections;
 import java.util.EnumSet;
@@ -120,7 +109,6 @@ import java.util.logging.Logger;
  * @author Luke Sandberg
  * @since 14.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ServiceManager implements ServiceManagerBridge {
   private static final Logger logger = Logger.getLogger(ServiceManager.class.getName());
@@ -262,7 +250,6 @@ public final class ServiceManager implements ServiceManagerBridge {
    * @throws IllegalStateException if any of the Services are not {@link State#NEW new} when the
    *     method is called.
    */
-  @CanIgnoreReturnValue
   public ServiceManager startAsync() {
     for (Service service : services) {
       State state = service.state();
@@ -332,7 +319,6 @@ public final class ServiceManager implements ServiceManagerBridge {
    *
    * @return this
    */
-  @CanIgnoreReturnValue
   public ServiceManager stopAsync() {
     for (Service service : services) {
       service.stopAsync();
@@ -423,7 +409,6 @@ public final class ServiceManager implements ServiceManagerBridge {
    *     by startup time.
    * @since 31.0
    */
-  @J2ObjCIncompatible
   public ImmutableMap<Service, Duration> startupDurations() {
     return ImmutableMap.copyOf(
         Maps.<Service, Long, Duration>transformValues(startupTimes(), Duration::ofMillis));
@@ -443,14 +428,11 @@ public final class ServiceManager implements ServiceManagerBridge {
   private static final class ServiceManagerState {
     final Monitor monitor = new Monitor();
 
-    @GuardedBy("monitor")
     final SetMultimap<State, Service> servicesByState =
         MultimapBuilder.enumKeys(State.class).linkedHashSetValues().build();
 
-    @GuardedBy("monitor")
     final Multiset<State> states = servicesByState.keys();
 
-    @GuardedBy("monitor")
     final Map<Service, Stopwatch> startupTimers = Maps.newIdentityHashMap();
 
     /**
@@ -466,10 +448,8 @@ public final class ServiceManager implements ServiceManagerBridge {
      * to any service performing a transition, then we can fail in the ServiceManager constructor
      * rather than in a Service.Listener callback.
      */
-    @GuardedBy("monitor")
     boolean ready;
 
-    @GuardedBy("monitor")
     boolean transitioned;
 
     final int numberOfServices;
@@ -480,14 +460,12 @@ public final class ServiceManager implements ServiceManagerBridge {
      */
     final Monitor.Guard awaitHealthGuard = new AwaitHealthGuard();
 
-    @WeakOuter
     final class AwaitHealthGuard extends Monitor.Guard {
       AwaitHealthGuard() {
         super(ServiceManagerState.this.monitor);
       }
 
       @Override
-      @GuardedBy("ServiceManagerState.this.monitor")
       public boolean isSatisfied() {
         // All services have started or some service has terminated/failed.
         return states.count(RUNNING) == numberOfServices
@@ -500,14 +478,12 @@ public final class ServiceManager implements ServiceManagerBridge {
     /** Controls how long to wait for all services to reach a terminal state. */
     final Monitor.Guard stoppedGuard = new StoppedGuard();
 
-    @WeakOuter
     final class StoppedGuard extends Monitor.Guard {
       StoppedGuard() {
         super(ServiceManagerState.this.monitor);
       }
 
       @Override
-      @GuardedBy("ServiceManagerState.this.monitor")
       public boolean isSatisfied() {
         return states.count(TERMINATED) + states.count(FAILED) == numberOfServices;
       }
@@ -760,7 +736,6 @@ public final class ServiceManager implements ServiceManagerBridge {
       listeners.dispatch();
     }
 
-    @GuardedBy("monitor")
     void checkHealthy() {
       if (states.count(RUNNING) != numberOfServices) {
         IllegalStateException exception =
diff --git a/guava/src/com/google/common/util/concurrent/ServiceManagerBridge.java b/guava/src/com/google/common/util/concurrent/ServiceManagerBridge.java
index 7ae430e..d139bc2 100644
--- a/guava/src/com/google/common/util/concurrent/ServiceManagerBridge.java
+++ b/guava/src/com/google/common/util/concurrent/ServiceManagerBridge.java
@@ -16,8 +16,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableMultimap;
 import com.google.common.util.concurrent.Service.State;
 
 /**
@@ -25,7 +23,6 @@ import com.google.common.util.concurrent.Service.State;
  * servicesByState()}, to ensure binary compatibility with older Guava versions that specified
  * {@code servicesByState()} to return {@code ImmutableMultimap}.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 interface ServiceManagerBridge {
   ImmutableMultimap<State, Service> servicesByState();
diff --git a/guava/src/com/google/common/util/concurrent/SettableFuture.java b/guava/src/com/google/common/util/concurrent/SettableFuture.java
index 893161e..e721982 100644
--- a/guava/src/com/google/common/util/concurrent/SettableFuture.java
+++ b/guava/src/com/google/common/util/concurrent/SettableFuture.java
@@ -14,9 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link ListenableFuture} whose result can be set by a {@link #set(Object)}, {@link
@@ -32,30 +29,26 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Sven Mawson
  * @since 9.0 (in 1.0 as {@code ValueFuture})
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-public final class SettableFuture<V extends @Nullable Object>
+public final class SettableFuture<V extends Object>
     extends AbstractFuture.TrustedFuture<V> {
   /**
    * Creates a new {@code SettableFuture} that can be completed or cancelled by a later method call.
    */
-  public static <V extends @Nullable Object> SettableFuture<V> create() {
+  public static <V extends Object> SettableFuture<V> create() {
     return new SettableFuture<V>();
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean set(@ParametricNullness V value) {
     return super.set(value);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean setException(Throwable throwable) {
     return super.setException(throwable);
   }
 
-  @CanIgnoreReturnValue
   @Override
   public boolean setFuture(ListenableFuture<? extends V> future) {
     return super.setFuture(future);
diff --git a/guava/src/com/google/common/util/concurrent/SimpleTimeLimiter.java b/guava/src/com/google/common/util/concurrent/SimpleTimeLimiter.java
index 5a1969e..3f9b5a4 100644
--- a/guava/src/com/google/common/util/concurrent/SimpleTimeLimiter.java
+++ b/guava/src/com/google/common/util/concurrent/SimpleTimeLimiter.java
@@ -17,11 +17,8 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.collect.ObjectArrays;
 import com.google.common.collect.Sets;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -35,7 +32,6 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A TimeLimiter that runs method calls in the background using an {@link ExecutorService}. If the
@@ -45,8 +41,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jens Nyman
  * @since 1.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class SimpleTimeLimiter implements TimeLimiter {
 
@@ -92,8 +86,8 @@ public final class SimpleTimeLimiter implements TimeLimiter {
           public Object invoke(
               Object obj, final Method method, @CheckForNull final @Nullable Object[] args)
               throws Throwable {
-            Callable<@Nullable Object> callable =
-                new Callable<@Nullable Object>() {
+            Callable<Object> callable =
+                new Callable<Object>() {
                   @Override
                   @CheckForNull
                   public Object call() throws Exception {
@@ -119,7 +113,7 @@ public final class SimpleTimeLimiter implements TimeLimiter {
     return interfaceType.cast(object);
   }
 
-  private <T extends @Nullable Object> T callWithTimeout(
+  private <T extends Object> T callWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit, boolean amInterruptible)
       throws Exception {
     checkNotNull(callable);
@@ -147,9 +141,8 @@ public final class SimpleTimeLimiter implements TimeLimiter {
     }
   }
 
-  @CanIgnoreReturnValue
   @Override
-  public <T extends @Nullable Object> T callWithTimeout(
+  public <T extends Object> T callWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit)
       throws TimeoutException, InterruptedException, ExecutionException {
     checkNotNull(callable);
@@ -169,9 +162,8 @@ public final class SimpleTimeLimiter implements TimeLimiter {
     }
   }
 
-  @CanIgnoreReturnValue
   @Override
-  public <T extends @Nullable Object> T callUninterruptiblyWithTimeout(
+  public <T extends Object> T callUninterruptiblyWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit)
       throws TimeoutException, ExecutionException {
     checkNotNull(callable);
diff --git a/guava/src/com/google/common/util/concurrent/SmoothRateLimiter.java b/guava/src/com/google/common/util/concurrent/SmoothRateLimiter.java
index ca78905..9314fd8 100644
--- a/guava/src/com/google/common/util/concurrent/SmoothRateLimiter.java
+++ b/guava/src/com/google/common/util/concurrent/SmoothRateLimiter.java
@@ -17,11 +17,9 @@ package com.google.common.util.concurrent;
 import static java.lang.Math.min;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.math.LongMath;
 import java.util.concurrent.TimeUnit;
 
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 abstract class SmoothRateLimiter extends RateLimiter {
   /*
diff --git a/guava/src/com/google/common/util/concurrent/Striped.java b/guava/src/com/google/common/util/concurrent/Striped.java
index fc8bcd8..c7c09bb 100644
--- a/guava/src/com/google/common/util/concurrent/Striped.java
+++ b/guava/src/com/google/common/util/concurrent/Striped.java
@@ -16,19 +16,14 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.collect.Lists.newArrayList;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.MapMaker;
 import com.google.common.math.IntMath;
 import com.google.common.primitives.Ints;
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
 import java.math.RoundingMode;
 import java.util.Arrays;
 import java.util.Collections;
@@ -41,7 +36,6 @@ import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A striped {@code Lock/Semaphore/ReadWriteLock}. This offers the underlying lock striping similar
@@ -82,8 +76,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Dimitris Andreou
  * @since 13.0
  */
-@Beta
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public abstract class Striped<L> {
   /**
@@ -436,9 +428,8 @@ public abstract class Striped<L> {
    * AtomicReferenceArray of size 2^k. To map a user key into a stripe, we take a k-bit slice of the
    * user key's (smeared) hashCode(). The stripes are lazily initialized and are weakly referenced.
    */
-  @VisibleForTesting
   static class SmallLazyStriped<L> extends PowerOfTwoStriped<L> {
-    final AtomicReferenceArray<@Nullable ArrayReference<? extends L>> locks;
+    final AtomicReferenceArray<ArrayReference<? extends L>> locks;
     final Supplier<L> supplier;
     final int size;
     final ReferenceQueue<L> queue = new ReferenceQueue<L>();
@@ -508,7 +499,6 @@ public abstract class Striped<L> {
    * where the key domain is [0..2^k). To map a user key into a stripe, we take a k-bit slice of the
    * user key's (smeared) hashCode(). The stripes are lazily initialized and are weakly referenced.
    */
-  @VisibleForTesting
   static class LargeLazyStriped<L> extends PowerOfTwoStriped<L> {
     final ConcurrentMap<Integer, L> locks;
     final Supplier<L> supplier;
diff --git a/guava/src/com/google/common/util/concurrent/ThreadFactoryBuilder.java b/guava/src/com/google/common/util/concurrent/ThreadFactoryBuilder.java
index 1027f3c..146e43b 100644
--- a/guava/src/com/google/common/util/concurrent/ThreadFactoryBuilder.java
+++ b/guava/src/com/google/common/util/concurrent/ThreadFactoryBuilder.java
@@ -16,11 +16,7 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.CheckReturnValue;
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.util.Locale;
 import java.util.concurrent.Executors;
@@ -45,8 +41,6 @@ import javax.annotation.CheckForNull;
  * @author Kurt Alfred Kluever
  * @since 4.0
  */
-@CanIgnoreReturnValue
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class ThreadFactoryBuilder {
   @CheckForNull private String nameFormat = null;
@@ -143,7 +137,6 @@ public final class ThreadFactoryBuilder {
    *
    * @return the fully constructed {@link ThreadFactory}
    */
-  @CheckReturnValue
   public ThreadFactory build() {
     return doBuild(this);
   }
diff --git a/guava/src/com/google/common/util/concurrent/TimeLimiter.java b/guava/src/com/google/common/util/concurrent/TimeLimiter.java
index 0245fec..3c1a089 100644
--- a/guava/src/com/google/common/util/concurrent/TimeLimiter.java
+++ b/guava/src/com/google/common/util/concurrent/TimeLimiter.java
@@ -16,16 +16,11 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.util.concurrent.Internal.toNanosSaturated;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import com.google.errorprone.annotations.DoNotMock;
 import java.time.Duration;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Imposes a time limit on method calls.
@@ -34,9 +29,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Jens Nyman
  * @since 1.0
  */
-@Beta
-@DoNotMock("Use FakeTimeLimiter")
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public interface TimeLimiter {
 
@@ -145,8 +137,7 @@ public interface TimeLimiter {
    * @since 22.0
    */
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
-  @CanIgnoreReturnValue
-  <T extends @Nullable Object> T callWithTimeout(
+  <T extends Object> T callWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit)
       throws TimeoutException, InterruptedException, ExecutionException;
 
@@ -166,8 +157,7 @@ public interface TimeLimiter {
    * @throws ExecutionError if {@code callable} throws an {@code Error}
    * @since 28.0
    */
-  @CanIgnoreReturnValue
-  default <T extends @Nullable Object> T callWithTimeout(Callable<T> callable, Duration timeout)
+  default <T extends Object> T callWithTimeout(Callable<T> callable, Duration timeout)
       throws TimeoutException, InterruptedException, ExecutionException {
     return callWithTimeout(callable, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
   }
@@ -192,8 +182,7 @@ public interface TimeLimiter {
    * @since 22.0
    */
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
-  @CanIgnoreReturnValue
-  <T extends @Nullable Object> T callUninterruptiblyWithTimeout(
+  <T extends Object> T callUninterruptiblyWithTimeout(
       Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit)
       throws TimeoutException, ExecutionException;
 
@@ -215,8 +204,7 @@ public interface TimeLimiter {
    * @throws ExecutionError if {@code callable} throws an {@code Error}
    * @since 28.0
    */
-  @CanIgnoreReturnValue
-  default <T extends @Nullable Object> T callUninterruptiblyWithTimeout(
+  default <T extends Object> T callUninterruptiblyWithTimeout(
       Callable<T> callable, Duration timeout) throws TimeoutException, ExecutionException {
     return callUninterruptiblyWithTimeout(
         callable, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
diff --git a/guava/src/com/google/common/util/concurrent/TimeoutFuture.java b/guava/src/com/google/common/util/concurrent/TimeoutFuture.java
index 219a098..3e6d5a6 100644
--- a/guava/src/com/google/common/util/concurrent/TimeoutFuture.java
+++ b/guava/src/com/google/common/util/concurrent/TimeoutFuture.java
@@ -16,7 +16,6 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
@@ -25,7 +24,6 @@ import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Implementation of {@code Futures#withTimeout}.
@@ -34,10 +32,9 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * in an {@link ExecutionException}) if the specified duration expires. The delegate future is
  * interrupted and cancelled if it times out.
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
-final class TimeoutFuture<V extends @Nullable Object> extends FluentFuture.TrustedFuture<V> {
-  static <V extends @Nullable Object> ListenableFuture<V> create(
+final class TimeoutFuture<V extends Object> extends FluentFuture.TrustedFuture<V> {
+  static <V extends Object> ListenableFuture<V> create(
       ListenableFuture<V> delegate,
       long time,
       TimeUnit unit,
@@ -81,7 +78,7 @@ final class TimeoutFuture<V extends @Nullable Object> extends FluentFuture.Trust
   }
 
   /** A runnable that is called when the delegate or the timer completes. */
-  private static final class Fire<V extends @Nullable Object> implements Runnable {
+  private static final class Fire<V extends Object> implements Runnable {
     @CheckForNull TimeoutFuture<V> timeoutFutureRef;
 
     Fire(TimeoutFuture<V> timeoutFuture) {
diff --git a/guava/src/com/google/common/util/concurrent/TrustedListenableFutureTask.java b/guava/src/com/google/common/util/concurrent/TrustedListenableFutureTask.java
index a2c2115..aafe622 100644
--- a/guava/src/com/google/common/util/concurrent/TrustedListenableFutureTask.java
+++ b/guava/src/com/google/common/util/concurrent/TrustedListenableFutureTask.java
@@ -16,13 +16,10 @@ package com.google.common.util.concurrent;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.annotations.GwtCompatible;
-import com.google.j2objc.annotations.WeakOuter;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Executors;
 import java.util.concurrent.RunnableFuture;
 import javax.annotation.CheckForNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * A {@link RunnableFuture} that also implements the {@link ListenableFuture} interface.
@@ -30,17 +27,16 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * <p>This should be used in preference to {@link ListenableFutureTask} when possible for
  * performance reasons.
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
-class TrustedListenableFutureTask<V extends @Nullable Object> extends FluentFuture.TrustedFuture<V>
+class TrustedListenableFutureTask<V extends Object> extends FluentFuture.TrustedFuture<V>
     implements RunnableFuture<V> {
 
-  static <V extends @Nullable Object> TrustedListenableFutureTask<V> create(
+  static <V extends Object> TrustedListenableFutureTask<V> create(
       AsyncCallable<V> callable) {
     return new TrustedListenableFutureTask<V>(callable);
   }
 
-  static <V extends @Nullable Object> TrustedListenableFutureTask<V> create(Callable<V> callable) {
+  static <V extends Object> TrustedListenableFutureTask<V> create(Callable<V> callable) {
     return new TrustedListenableFutureTask<V>(callable);
   }
 
@@ -53,7 +49,7 @@ class TrustedListenableFutureTask<V extends @Nullable Object> extends FluentFutu
    *     result, consider using constructions of the form: {@code ListenableFuture<?> f =
    *     ListenableFutureTask.create(runnable, null)}
    */
-  static <V extends @Nullable Object> TrustedListenableFutureTask<V> create(
+  static <V extends Object> TrustedListenableFutureTask<V> create(
       Runnable runnable, @ParametricNullness V result) {
     return new TrustedListenableFutureTask<V>(Executors.callable(runnable, result));
   }
@@ -112,7 +108,6 @@ class TrustedListenableFutureTask<V extends @Nullable Object> extends FluentFutu
     return super.pendingToString();
   }
 
-  @WeakOuter
   private final class TrustedFutureInterruptibleTask extends InterruptibleTask<V> {
     private final Callable<V> callable;
 
@@ -147,7 +142,6 @@ class TrustedListenableFutureTask<V extends @Nullable Object> extends FluentFutu
     }
   }
 
-  @WeakOuter
   private final class TrustedFutureInterruptibleAsyncTask
       extends InterruptibleTask<ListenableFuture<V>> {
     private final AsyncCallable<V> callable;
diff --git a/guava/src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java b/guava/src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java
index a1add8b..5d543e8 100644
--- a/guava/src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java
+++ b/guava/src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java
@@ -16,8 +16,6 @@ package com.google.common.util.concurrent;
 
 import static java.util.logging.Level.SEVERE;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.annotations.VisibleForTesting;
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.util.Locale;
 import java.util.logging.Logger;
@@ -28,7 +26,6 @@ import java.util.logging.Logger;
  * @author Gregory Kick
  * @since 8.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public final class UncaughtExceptionHandlers {
   private UncaughtExceptionHandlers() {}
@@ -53,7 +50,6 @@ public final class UncaughtExceptionHandlers {
     return new Exiter(Runtime.getRuntime());
   }
 
-  @VisibleForTesting
   static final class Exiter implements UncaughtExceptionHandler {
     private static final Logger logger = Logger.getLogger(Exiter.class.getName());
 
diff --git a/guava/src/com/google/common/util/concurrent/UncheckedExecutionException.java b/guava/src/com/google/common/util/concurrent/UncheckedExecutionException.java
index 713f4a6..9fe4b10 100644
--- a/guava/src/com/google/common/util/concurrent/UncheckedExecutionException.java
+++ b/guava/src/com/google/common/util/concurrent/UncheckedExecutionException.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtCompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -32,7 +31,6 @@ import javax.annotation.CheckForNull;
  * @author Charles Fry
  * @since 10.0
  */
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class UncheckedExecutionException extends RuntimeException {
   /*
diff --git a/guava/src/com/google/common/util/concurrent/UncheckedTimeoutException.java b/guava/src/com/google/common/util/concurrent/UncheckedTimeoutException.java
index 8e30fca..9a02731 100644
--- a/guava/src/com/google/common/util/concurrent/UncheckedTimeoutException.java
+++ b/guava/src/com/google/common/util/concurrent/UncheckedTimeoutException.java
@@ -14,7 +14,6 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
 import javax.annotation.CheckForNull;
 
 /**
@@ -23,7 +22,6 @@ import javax.annotation.CheckForNull;
  * @author Kevin Bourrillion
  * @since 1.0
  */
-@GwtIncompatible
 @ElementTypesAreNonnullByDefault
 public class UncheckedTimeoutException extends RuntimeException {
   public UncheckedTimeoutException() {}
diff --git a/guava/src/com/google/common/util/concurrent/Uninterruptibles.java b/guava/src/com/google/common/util/concurrent/Uninterruptibles.java
index 94678ec..33d323c 100644
--- a/guava/src/com/google/common/util/concurrent/Uninterruptibles.java
+++ b/guava/src/com/google/common/util/concurrent/Uninterruptibles.java
@@ -18,11 +18,7 @@ import static com.google.common.base.Verify.verify;
 import static com.google.common.util.concurrent.Internal.toNanosSaturated;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
 import com.google.common.base.Preconditions;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.time.Duration;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.CancellationException;
@@ -35,7 +31,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Utilities for treating interruptible operations as uninterruptible. In all cases, if a thread is
@@ -45,7 +40,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * @author Anthony Zana
  * @since 10.0
  */
-@GwtCompatible(emulated = true)
 @ElementTypesAreNonnullByDefault
 public final class Uninterruptibles {
 
@@ -53,7 +47,7 @@ public final class Uninterruptibles {
   // methods is identical, save for method being invoked.
 
   /** Invokes {@code latch.}{@link CountDownLatch#await() await()} uninterruptibly. */
-  @GwtIncompatible // concurrency
+  // concurrency
   public static void awaitUninterruptibly(CountDownLatch latch) {
     boolean interrupted = false;
     try {
@@ -78,9 +72,8 @@ public final class Uninterruptibles {
    *
    * @since 28.0
    */
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-  @GwtIncompatible // concurrency
-  @Beta
+  // TODO(cpovirk): Consider being more strict.
+  // concurrency
   public static boolean awaitUninterruptibly(CountDownLatch latch, Duration timeout) {
     return awaitUninterruptibly(latch, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
   }
@@ -89,8 +82,8 @@ public final class Uninterruptibles {
    * Invokes {@code latch.}{@link CountDownLatch#await(long, TimeUnit) await(timeout, unit)}
    * uninterruptibly.
    */
-  @CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-  @GwtIncompatible // concurrency
+  // TODO(cpovirk): Consider being more strict.
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean awaitUninterruptibly(CountDownLatch latch, long timeout, TimeUnit unit) {
     boolean interrupted = false;
@@ -120,8 +113,7 @@ public final class Uninterruptibles {
    *
    * @since 28.0
    */
-  @GwtIncompatible // concurrency
-  @Beta
+  // concurrency
   public static boolean awaitUninterruptibly(Condition condition, Duration timeout) {
     return awaitUninterruptibly(condition, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
   }
@@ -132,7 +124,7 @@ public final class Uninterruptibles {
    *
    * @since 23.6
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean awaitUninterruptibly(Condition condition, long timeout, TimeUnit unit) {
     boolean interrupted = false;
@@ -156,7 +148,7 @@ public final class Uninterruptibles {
   }
 
   /** Invokes {@code toJoin.}{@link Thread#join() join()} uninterruptibly. */
-  @GwtIncompatible // concurrency
+  // concurrency
   public static void joinUninterruptibly(Thread toJoin) {
     boolean interrupted = false;
     try {
@@ -181,8 +173,7 @@ public final class Uninterruptibles {
    *
    * @since 28.0
    */
-  @GwtIncompatible // concurrency
-  @Beta
+  // concurrency
   public static void joinUninterruptibly(Thread toJoin, Duration timeout) {
     joinUninterruptibly(toJoin, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
   }
@@ -191,7 +182,7 @@ public final class Uninterruptibles {
    * Invokes {@code unit.}{@link TimeUnit#timedJoin(Thread, long) timedJoin(toJoin, timeout)}
    * uninterruptibly.
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static void joinUninterruptibly(Thread toJoin, long timeout, TimeUnit unit) {
     Preconditions.checkNotNull(toJoin);
@@ -233,9 +224,8 @@ public final class Uninterruptibles {
    * @throws ExecutionException if the computation threw an exception
    * @throws CancellationException if the computation was cancelled
    */
-  @CanIgnoreReturnValue
   @ParametricNullness
-  public static <V extends @Nullable Object> V getUninterruptibly(Future<V> future)
+  public static <V extends Object> V getUninterruptibly(Future<V> future)
       throws ExecutionException {
     boolean interrupted = false;
     try {
@@ -272,11 +262,9 @@ public final class Uninterruptibles {
    * @throws TimeoutException if the wait timed out
    * @since 28.0
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // java.time.Duration
-  @Beta
+  // java.time.Duration
   @ParametricNullness
-  public static <V extends @Nullable Object> V getUninterruptibly(
+  public static <V extends Object> V getUninterruptibly(
       Future<V> future, Duration timeout) throws ExecutionException, TimeoutException {
     return getUninterruptibly(future, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
   }
@@ -299,11 +287,10 @@ public final class Uninterruptibles {
    * @throws CancellationException if the computation was cancelled
    * @throws TimeoutException if the wait timed out
    */
-  @CanIgnoreReturnValue
-  @GwtIncompatible // TODO
+  // TODO
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   @ParametricNullness
-  public static <V extends @Nullable Object> V getUninterruptibly(
+  public static <V extends Object> V getUninterruptibly(
       Future<V> future, long timeout, TimeUnit unit) throws ExecutionException, TimeoutException {
     boolean interrupted = false;
     try {
@@ -327,7 +314,7 @@ public final class Uninterruptibles {
   }
 
   /** Invokes {@code queue.}{@link BlockingQueue#take() take()} uninterruptibly. */
-  @GwtIncompatible // concurrency
+  // concurrency
   public static <E> E takeUninterruptibly(BlockingQueue<E> queue) {
     boolean interrupted = false;
     try {
@@ -353,7 +340,7 @@ public final class Uninterruptibles {
    * @throws IllegalArgumentException if some property of the specified element prevents it from
    *     being added to the given queue
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   public static <E> void putUninterruptibly(BlockingQueue<E> queue, E element) {
     boolean interrupted = false;
     try {
@@ -378,15 +365,14 @@ public final class Uninterruptibles {
    *
    * @since 28.0
    */
-  @GwtIncompatible // concurrency
-  @Beta
+  // concurrency
   public static void sleepUninterruptibly(Duration sleepFor) {
     sleepUninterruptibly(toNanosSaturated(sleepFor), TimeUnit.NANOSECONDS);
   }
 
   // TODO(user): Support Sleeper somehow (wrapper or interface method)?
   /** Invokes {@code unit.}{@link TimeUnit#sleep(long) sleep(sleepFor)} uninterruptibly. */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static void sleepUninterruptibly(long sleepFor, TimeUnit unit) {
     boolean interrupted = false;
@@ -416,8 +402,7 @@ public final class Uninterruptibles {
    *
    * @since 28.0
    */
-  @GwtIncompatible // concurrency
-  @Beta
+  // concurrency
   public static boolean tryAcquireUninterruptibly(Semaphore semaphore, Duration timeout) {
     return tryAcquireUninterruptibly(semaphore, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
   }
@@ -428,7 +413,7 @@ public final class Uninterruptibles {
    *
    * @since 18.0
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean tryAcquireUninterruptibly(
       Semaphore semaphore, long timeout, TimeUnit unit) {
@@ -441,8 +426,7 @@ public final class Uninterruptibles {
    *
    * @since 28.0
    */
-  @GwtIncompatible // concurrency
-  @Beta
+  // concurrency
   public static boolean tryAcquireUninterruptibly(
       Semaphore semaphore, int permits, Duration timeout) {
     return tryAcquireUninterruptibly(
@@ -455,7 +439,7 @@ public final class Uninterruptibles {
    *
    * @since 18.0
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean tryAcquireUninterruptibly(
       Semaphore semaphore, int permits, long timeout, TimeUnit unit) {
@@ -486,8 +470,7 @@ public final class Uninterruptibles {
    *
    * @since 30.0
    */
-  @GwtIncompatible // concurrency
-  @Beta
+  // concurrency
   public static boolean tryLockUninterruptibly(Lock lock, Duration timeout) {
     return tryLockUninterruptibly(lock, toNanosSaturated(timeout), TimeUnit.NANOSECONDS);
   }
@@ -498,7 +481,7 @@ public final class Uninterruptibles {
    *
    * @since 30.0
    */
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime") // should accept a java.time.Duration
   public static boolean tryLockUninterruptibly(Lock lock, long timeout, TimeUnit unit) {
     boolean interrupted = false;
@@ -527,8 +510,7 @@ public final class Uninterruptibles {
    *
    * @since 30.0
    */
-  @Beta
-  @GwtIncompatible // concurrency
+  // concurrency
   public static void awaitTerminationUninterruptibly(ExecutorService executor) {
     // TODO(cpovirk): We could optimize this to avoid calling nanoTime() at all.
     verify(awaitTerminationUninterruptibly(executor, Long.MAX_VALUE, NANOSECONDS));
@@ -540,8 +522,7 @@ public final class Uninterruptibles {
    *
    * @since 30.0
    */
-  @Beta
-  @GwtIncompatible // concurrency
+  // concurrency
   public static boolean awaitTerminationUninterruptibly(
       ExecutorService executor, Duration timeout) {
     return awaitTerminationUninterruptibly(executor, toNanosSaturated(timeout), NANOSECONDS);
@@ -553,8 +534,7 @@ public final class Uninterruptibles {
    *
    * @since 30.0
    */
-  @Beta
-  @GwtIncompatible // concurrency
+  // concurrency
   @SuppressWarnings("GoodTime")
   public static boolean awaitTerminationUninterruptibly(
       ExecutorService executor, long timeout, TimeUnit unit) {
diff --git a/guava/src/com/google/common/util/concurrent/WrappingExecutorService.java b/guava/src/com/google/common/util/concurrent/WrappingExecutorService.java
index 03c08cc..95fc84b 100644
--- a/guava/src/com/google/common/util/concurrent/WrappingExecutorService.java
+++ b/guava/src/com/google/common/util/concurrent/WrappingExecutorService.java
@@ -17,9 +17,6 @@ package com.google.common.util.concurrent;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.throwIfUnchecked;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.collect.ImmutableList;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -29,7 +26,6 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)
@@ -41,8 +37,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Chris Nokleberg
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 abstract class WrappingExecutorService implements ExecutorService {
   private final ExecutorService delegate;
@@ -55,7 +50,7 @@ abstract class WrappingExecutorService implements ExecutorService {
    * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied
    * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.
    */
-  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);
+  protected abstract <T extends Object> Callable<T> wrapTask(Callable<T> callable);
 
   /**
    * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation
@@ -81,7 +76,7 @@ abstract class WrappingExecutorService implements ExecutorService {
    *
    * @throws NullPointerException if any element of {@code tasks} is null
    */
-  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(
+  private <T extends Object> ImmutableList<Callable<T>> wrapTasks(
       Collection<? extends Callable<T>> tasks) {
     ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();
     for (Callable<T> task : tasks) {
@@ -97,7 +92,7 @@ abstract class WrappingExecutorService implements ExecutorService {
   }
 
   @Override
-  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {
+  public final <T extends Object> Future<T> submit(Callable<T> task) {
     return delegate.submit(wrapTask(checkNotNull(task)));
   }
 
@@ -107,32 +102,32 @@ abstract class WrappingExecutorService implements ExecutorService {
   }
 
   @Override
-  public final <T extends @Nullable Object> Future<T> submit(
+  public final <T extends Object> Future<T> submit(
       Runnable task, @ParametricNullness T result) {
     return delegate.submit(wrapTask(task), result);
   }
 
   @Override
-  public final <T extends @Nullable Object> List<Future<T>> invokeAll(
+  public final <T extends Object> List<Future<T>> invokeAll(
       Collection<? extends Callable<T>> tasks) throws InterruptedException {
     return delegate.invokeAll(wrapTasks(tasks));
   }
 
   @Override
-  public final <T extends @Nullable Object> List<Future<T>> invokeAll(
+  public final <T extends Object> List<Future<T>> invokeAll(
       Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
       throws InterruptedException {
     return delegate.invokeAll(wrapTasks(tasks), timeout, unit);
   }
 
   @Override
-  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)
+  public final <T extends Object> T invokeAny(Collection<? extends Callable<T>> tasks)
       throws InterruptedException, ExecutionException {
     return delegate.invokeAny(wrapTasks(tasks));
   }
 
   @Override
-  public final <T extends @Nullable Object> T invokeAny(
+  public final <T extends Object> T invokeAny(
       Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
       throws InterruptedException, ExecutionException, TimeoutException {
     return delegate.invokeAny(wrapTasks(tasks), timeout, unit);
diff --git a/guava/src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java b/guava/src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java
index 48f23c1..7d52c99 100644
--- a/guava/src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java
+++ b/guava/src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java
@@ -14,13 +14,10 @@
 
 package com.google.common.util.concurrent;
 
-import com.google.common.annotations.GwtIncompatible;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * An abstract {@code ScheduledExecutorService} that allows subclasses to {@linkplain
@@ -30,8 +27,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  *
  * @author Luke Sandberg
  */
-@CanIgnoreReturnValue // TODO(cpovirk): Consider being more strict.
-@GwtIncompatible
+// TODO(cpovirk): Consider being more strict.
 @ElementTypesAreNonnullByDefault
 abstract class WrappingScheduledExecutorService extends WrappingExecutorService
     implements ScheduledExecutorService {
@@ -48,7 +44,7 @@ abstract class WrappingScheduledExecutorService extends WrappingExecutorService
   }
 
   @Override
-  public final <V extends @Nullable Object> ScheduledFuture<V> schedule(
+  public final <V extends Object> ScheduledFuture<V> schedule(
       Callable<V> task, long delay, TimeUnit unit) {
     return delegate.schedule(wrapTask(task), delay, unit);
   }
diff --git a/guava/src/com/google/common/util/concurrent/package-info.java b/guava/src/com/google/common/util/concurrent/package-info.java
index a2533c1..ab9565a 100644
--- a/guava/src/com/google/common/util/concurrent/package-info.java
+++ b/guava/src/com/google/common/util/concurrent/package-info.java
@@ -25,9 +25,7 @@
  * <p>This package is a part of the open-source <a href="http://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.util.concurrent;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/common/xml/ElementTypesAreNonnullByDefault.java b/guava/src/com/google/common/xml/ElementTypesAreNonnullByDefault.java
index b4fb4e3..c4dc0b2 100644
--- a/guava/src/com/google/common/xml/ElementTypesAreNonnullByDefault.java
+++ b/guava/src/com/google/common/xml/ElementTypesAreNonnullByDefault.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -33,7 +32,6 @@ import javax.annotation.meta.TypeQualifierDefault;
  * unfortunately includes type-variable usages, so we also provide {@link ParametricNullness} to
  * "undo" it as best we can.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target(TYPE)
 @TypeQualifierDefault({FIELD, METHOD, PARAMETER})
diff --git a/guava/src/com/google/common/xml/ParametricNullness.java b/guava/src/com/google/common/xml/ParametricNullness.java
index a476558..42f29cd 100644
--- a/guava/src/com/google/common/xml/ParametricNullness.java
+++ b/guava/src/com/google/common/xml/ParametricNullness.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static javax.annotation.meta.When.UNKNOWN;
 
-import com.google.common.annotations.GwtCompatible;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import javax.annotation.Nonnull;
@@ -35,7 +34,6 @@ import javax.annotation.meta.TypeQualifierNickname;
  * href="https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/NullFromTypeParam.java">{@code
  * NullFromTypeParam}</a>). We use this to "undo" {@link ElementTypesAreNonnullByDefault}.
  */
-@GwtCompatible
 @Retention(RUNTIME)
 @Target({FIELD, METHOD, PARAMETER})
 @TypeQualifierNickname
diff --git a/guava/src/com/google/common/xml/XmlEscapers.java b/guava/src/com/google/common/xml/XmlEscapers.java
index a1c637c..7d73cef 100644
--- a/guava/src/com/google/common/xml/XmlEscapers.java
+++ b/guava/src/com/google/common/xml/XmlEscapers.java
@@ -14,8 +14,6 @@
 
 package com.google.common.xml;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.escape.Escaper;
 import com.google.common.escape.Escapers;
 
@@ -38,8 +36,6 @@ import com.google.common.escape.Escapers;
  * @author David Beaumont
  * @since 15.0
  */
-@Beta
-@GwtCompatible
 @ElementTypesAreNonnullByDefault
 public class XmlEscapers {
   private XmlEscapers() {}
diff --git a/guava/src/com/google/common/xml/package-info.java b/guava/src/com/google/common/xml/package-info.java
index bd4c952..87eafd4 100644
--- a/guava/src/com/google/common/xml/package-info.java
+++ b/guava/src/com/google/common/xml/package-info.java
@@ -20,9 +20,7 @@
  * <p>This package is a part of the open-source <a href="http://github.com/google/guava">Guava</a>
  * library.
  */
-@CheckReturnValue
 @ParametersAreNonnullByDefault
 package com.google.common.xml;
 
-import com.google.errorprone.annotations.CheckReturnValue;
 import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixPatterns.java b/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixPatterns.java
index 9e5f173..67534d2 100644
--- a/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixPatterns.java
+++ b/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixPatterns.java
@@ -18,9 +18,6 @@
 
 package com.google.thirdparty.publicsuffix;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.collect.ImmutableMap;
 
 /**
  * <b>Do not use this class directly. For access to public-suffix information, use {@link
@@ -34,8 +31,6 @@ import com.google.common.collect.ImmutableMap;
  *
  * @since 16.0
  */
-@GwtCompatible
-@Beta
 public final class PublicSuffixPatterns {
   private PublicSuffixPatterns() {}
 
diff --git a/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixType.java b/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixType.java
index be1d07f..af4ba69 100644
--- a/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixType.java
+++ b/guava/src/com/google/thirdparty/publicsuffix/PublicSuffixType.java
@@ -14,8 +14,6 @@
 
 package com.google.thirdparty.publicsuffix;
 
-import com.google.common.annotations.Beta;
-import com.google.common.annotations.GwtCompatible;
 
 /**
  * <b>Do not use this class directly. For access to public-suffix information, use {@link
@@ -25,8 +23,6 @@ import com.google.common.annotations.GwtCompatible;
  *
  * @since 23.3
  */
-@Beta
-@GwtCompatible
 public enum PublicSuffixType {
 
   /** Public suffix that is provided by a private company, e.g. "blogspot.com" */
diff --git a/guava/src/com/google/thirdparty/publicsuffix/TrieParser.java b/guava/src/com/google/thirdparty/publicsuffix/TrieParser.java
index dd77780..4207567 100644
--- a/guava/src/com/google/thirdparty/publicsuffix/TrieParser.java
+++ b/guava/src/com/google/thirdparty/publicsuffix/TrieParser.java
@@ -14,14 +14,11 @@
 
 package com.google.thirdparty.publicsuffix;
 
-import com.google.common.annotations.GwtCompatible;
 import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Queues;
 import java.util.Deque;
 
 /** Parser for a map of reversed domain names stored as a serialized radix tree. */
-@GwtCompatible
 final class TrieParser {
   private static final Joiner PREFIX_JOINER = Joiner.on("");
 
