Remove use of guava Sets.newConcurrentHashSet

Change-Id: I2a2c769ecf8d0719f34bda7851f8aef0a49911e4
diff --git a/src/main/java/com/android/tools/r8/androidapi/AndroidApiReferenceLevelCache.java b/src/main/java/com/android/tools/r8/androidapi/AndroidApiReferenceLevelCache.java
index 627063c..83a0f5e 100644
--- a/src/main/java/com/android/tools/r8/androidapi/AndroidApiReferenceLevelCache.java
+++ b/src/main/java/com/android/tools/r8/androidapi/AndroidApiReferenceLevelCache.java
@@ -11,8 +11,8 @@
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.ConsumerUtils;
+import com.android.tools.r8.utils.SetUtils;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Sets;
 import java.util.List;
 import java.util.Set;
 import java.util.function.BiConsumer;
@@ -25,7 +25,7 @@
   private final DexItemFactory factory;
 
   // Collection of unknown references attempteed to be looked up.
-  private final Set<DexReference> unknownReferencesToReport = Sets.newConcurrentHashSet();
+  private final Set<DexReference> unknownReferencesToReport = SetUtils.newConcurrentHashSet();
   private final boolean reportUnknownReferences;
 
   private AndroidApiReferenceLevelCache(
diff --git a/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java b/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
index 07261a9..9aa3575 100644
--- a/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
+++ b/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
@@ -28,6 +28,7 @@
 import com.android.tools.r8.synthesis.SyntheticItems;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.ListUtils;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.WorkList;
 import com.google.common.collect.Sets;
@@ -50,8 +51,8 @@
   private final AppView<?> appView;
   private final Map<DexLibraryClass, Set<DexProgramClass>> referencingContexts =
       new ConcurrentHashMap<>();
-  private final Set<DexLibraryClass> libraryClassesToMock = Sets.newConcurrentHashSet();
-  private final Set<DexType> seenTypes = Sets.newConcurrentHashSet();
+  private final Set<DexLibraryClass> libraryClassesToMock = SetUtils.newConcurrentHashSet();
+  private final Set<DexType> seenTypes = SetUtils.newConcurrentHashSet();
   private final AndroidApiLevelCompute apiLevelCompute;
   private final ApiReferenceStubberEventConsumer eventConsumer;
 
diff --git a/src/main/java/com/android/tools/r8/dex/CodeToKeep.java b/src/main/java/com/android/tools/r8/dex/CodeToKeep.java
index 24d6362..7fbe5b1 100644
--- a/src/main/java/com/android/tools/r8/dex/CodeToKeep.java
+++ b/src/main/java/com/android/tools/r8/dex/CodeToKeep.java
@@ -19,7 +19,7 @@
 import com.android.tools.r8.utils.CollectionUtils;
 import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.InternalOptions;
-import com.google.common.collect.Sets;
+import com.android.tools.r8.utils.SetUtils;
 import java.util.Comparator;
 import java.util.Map;
 import java.util.Set;
@@ -58,8 +58,8 @@
 
     private static class KeepStruct {
 
-      Set<DexField> fields = Sets.newConcurrentHashSet();
-      Set<DexMethod> methods = Sets.newConcurrentHashSet();
+      Set<DexField> fields = SetUtils.newConcurrentHashSet();
+      Set<DexMethod> methods = SetUtils.newConcurrentHashSet();
       boolean all = false;
     }
 
diff --git a/src/main/java/com/android/tools/r8/graph/PrunedItems.java b/src/main/java/com/android/tools/r8/graph/PrunedItems.java
index 200b351..3084436 100644
--- a/src/main/java/com/android/tools/r8/graph/PrunedItems.java
+++ b/src/main/java/com/android/tools/r8/graph/PrunedItems.java
@@ -4,6 +4,7 @@
 
 package com.android.tools.r8.graph;
 
+import com.android.tools.r8.utils.SetUtils;
 import com.google.common.collect.Sets;
 import java.util.Collection;
 import java.util.Set;
@@ -216,7 +217,7 @@
 
     @Override
     <T> Set<T> newEmptySet() {
-      return Sets.newConcurrentHashSet();
+      return SetUtils.newConcurrentHashSet();
     }
 
     @Override
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java
index 22a478f..a938964 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java
@@ -36,10 +36,10 @@
 import com.android.tools.r8.ir.conversion.PostMethodProcessor;
 import com.android.tools.r8.ir.optimize.info.OptimizationFeedbackDelayed;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.Timing;
 import com.android.tools.r8.utils.collections.ProgramMethodSet;
-import com.google.common.collect.Sets;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -67,10 +67,10 @@
       new ConcurrentHashMap<>();
 
   /** Updated concurrently from {@link #processClass(DexProgramClass)}. */
-  private final Set<DexEncodedField> constantFields = Sets.newConcurrentHashSet();
+  private final Set<DexEncodedField> constantFields = SetUtils.newConcurrentHashSet();
 
   /** Updated concurrently from {@link #processClass(DexProgramClass)}. */
-  private final Set<DexEncodedField> nonConstantFields = Sets.newConcurrentHashSet();
+  private final Set<DexEncodedField> nonConstantFields = SetUtils.newConcurrentHashSet();
 
   /** Updated concurrently from {@link #processClass(DexProgramClass)}. */
   private final ProgramMethodSet methodsToReprocess = ProgramMethodSet.createConcurrent();
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/ClassConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/ClassConverter.java
index ac5cc44..4cd864a 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/ClassConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/ClassConverter.java
@@ -15,10 +15,10 @@
 import com.android.tools.r8.ir.desugar.itf.InterfaceProcessor;
 import com.android.tools.r8.profile.rewriting.ProfileCollectionAdditions;
 import com.android.tools.r8.utils.MapUtils;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.collections.ImmutableDeque;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Sets;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -253,7 +253,7 @@
 
   static class LibraryDesugaredClassConverter extends ClassConverter {
 
-    private final Set<DexType> alreadyLibraryDesugared = Sets.newConcurrentHashSet();
+    private final Set<DexType> alreadyLibraryDesugared = SetUtils.newConcurrentHashSet();
 
     LibraryDesugaredClassConverter(
         AppView<?> appView,
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringEventConsumer.java b/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringEventConsumer.java
index ca51bd8..1c9ad52 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringEventConsumer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringEventConsumer.java
@@ -16,7 +16,7 @@
 import com.android.tools.r8.ir.desugar.varhandle.VarHandleDesugaringEventConsumer;
 import com.android.tools.r8.profile.rewriting.ProfileCollectionAdditions;
 import com.android.tools.r8.profile.rewriting.ProfileRewritingCfClassSynthesizerDesugaringEventConsumer;
-import com.google.common.collect.Sets;
+import com.android.tools.r8.utils.SetUtils;
 import java.util.Set;
 
 public abstract class CfClassSynthesizerDesugaringEventConsumer
@@ -50,7 +50,7 @@
   private static class D8R8CfClassSynthesizerDesugaringEventConsumer
       extends CfClassSynthesizerDesugaringEventConsumer {
 
-    private final Set<DexProgramClass> synthesizedClasses = Sets.newConcurrentHashSet();
+    private final Set<DexProgramClass> synthesizedClasses = SetUtils.newConcurrentHashSet();
 
     @Override
     public void acceptProgramEmulatedInterface(DexProgramClass clazz) {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java b/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java
index 2e14022..51976fb 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java
@@ -37,9 +37,9 @@
 import com.android.tools.r8.position.Position;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.SetUtils;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableList.Builder;
-import com.google.common.collect.Sets;
 import java.util.List;
 import java.util.Set;
 import org.objectweb.asm.Opcodes;
@@ -57,7 +57,7 @@
     final AndroidApiLevel supportedApiLevel;
     // TODO(b/237250957): Using ConcurrentHashMap.newKeySet() causes failures on:
     //  HelloWorldCompiledOnArtTest.testHelloCompiledWithX8Dex[Y, api:21, spec: JDK8, D8_L8DEBUG]
-    final Set<DexMethod> reported = Sets.newConcurrentHashSet();
+    final Set<DexMethod> reported = SetUtils.newConcurrentHashSet();
 
     InstructionMatcher(AppView<?> appView, String descriptor, AndroidApiLevel supportedApiLevel) {
       this.appView = appView;
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
index 8f6ad62..b14bc1d 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
@@ -20,8 +20,8 @@
 import com.android.tools.r8.ir.desugar.CfPostProcessingDesugaring;
 import com.android.tools.r8.ir.desugar.CfPostProcessingDesugaringEventConsumer;
 import com.android.tools.r8.ir.desugar.desugaredlibrary.machinespecification.MachineDesugaredLibrarySpecification;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.WorkList;
-import com.google.common.collect.Sets;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Set;
@@ -45,7 +45,7 @@
     this.isLiveMethod = isLiveMethod;
     this.wrapperSynthesizor = new DesugaredLibraryWrapperSynthesizer(appView);
     if (appView.options().testing.trackDesugaredAPIConversions) {
-      trackedCallBackAPIs = Sets.newConcurrentHashSet();
+      trackedCallBackAPIs = SetUtils.newConcurrentHashSet();
     } else {
       trackedCallBackAPIs = null;
     }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java
index f3e4457..afeb568 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java
@@ -23,9 +23,9 @@
 import com.android.tools.r8.ir.desugar.FreshLocalProvider;
 import com.android.tools.r8.ir.desugar.LocalStackAllocator;
 import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.StringDiagnostic;
 import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
@@ -68,7 +68,7 @@
     this.emulatedMethods = emulatedMethods;
     this.wrapperSynthesizor = new DesugaredLibraryWrapperSynthesizer(appView);
     if (appView.options().testing.trackDesugaredAPIConversions) {
-      trackedAPIs = Sets.newConcurrentHashSet();
+      trackedAPIs = SetUtils.newConcurrentHashSet();
     } else {
       trackedAPIs = null;
     }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
index 7f4b1ce..f1aba56 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
@@ -109,6 +109,7 @@
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.shaking.KeepInfoCollection;
 import com.android.tools.r8.utils.Reporter;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.StringDiagnostic;
 import com.android.tools.r8.utils.Timing;
 import com.android.tools.r8.utils.TraversalContinuation;
@@ -152,7 +153,7 @@
   // Map the enum candidates with their dependencies, i.e., the methods to reprocess for the given
   // enum if the optimization eventually decides to unbox it.
   private EnumUnboxingCandidateInfoCollection enumUnboxingCandidatesInfo;
-  private final Set<DexProgramClass> candidatesToRemoveInWave = Sets.newConcurrentHashSet();
+  private final Set<DexProgramClass> candidatesToRemoveInWave = SetUtils.newConcurrentHashSet();
   private final Map<DexType, EnumStaticFieldValues> staticFieldValuesMap =
       new ConcurrentHashMap<>();
 
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateInfoCollection.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateInfoCollection.java
index 06cf453..6235749 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateInfoCollection.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateInfoCollection.java
@@ -18,7 +18,6 @@
 import com.android.tools.r8.utils.collections.ProgramMethodSet;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
 import java.util.IdentityHashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -30,7 +29,7 @@
 
   private final Map<DexType, EnumUnboxingCandidateInfo> enumTypeToInfo = new ConcurrentHashMap<>();
   private final Map<DexType, DexType> subEnumToSuperEnumMap = new IdentityHashMap<>();
-  private final Set<DexMethod> prunedMethods = Sets.newConcurrentHashSet();
+  private final Set<DexMethod> prunedMethods = SetUtils.newConcurrentHashSet();
 
   public void addCandidate(
       AppView<AppInfoWithLiveness> appView,
@@ -167,7 +166,7 @@
 
     private final DexProgramClass enumClass;
     private final LongLivedProgramMethodSetBuilder<ProgramMethodSet> methodDependencies;
-    private final Set<DexField> requiredInstanceFieldData = Sets.newConcurrentHashSet();
+    private final Set<DexField> requiredInstanceFieldData = SetUtils.newConcurrentHashSet();
 
     private Set<DexProgramClass> subclasses = null;
 
diff --git a/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java b/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
index 41b4f59..8749939 100644
--- a/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
+++ b/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
@@ -30,11 +30,11 @@
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.OptionalBool;
 import com.android.tools.r8.utils.Pair;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.TriConsumer;
 import com.android.tools.r8.utils.collections.ProgramMethodSet;
 import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.IdentityHashMap;
@@ -554,7 +554,7 @@
 
   private Set<DexField> computeNonReboundFieldReferences(ExecutorService executorService)
       throws ExecutionException {
-    Set<DexField> nonReboundFieldReferences = Sets.newConcurrentHashSet();
+    Set<DexField> nonReboundFieldReferences = SetUtils.newConcurrentHashSet();
     ThreadUtils.processItems(
         appView.appInfo()::forEachMethod,
         method -> {
diff --git a/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLensFactory.java b/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLensFactory.java
index 6ae7365..d95c587 100644
--- a/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLensFactory.java
+++ b/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLensFactory.java
@@ -19,9 +19,9 @@
 import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.graph.UseRegistry;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.collections.ProgramMethodSet;
-import com.google.common.collect.Sets;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -84,8 +84,8 @@
       MethodAccessInfoCollection.ConcurrentBuilder methodAccessInfoCollectionBuilder,
       ExecutorService executorService)
       throws ExecutionException {
-    Set<DexField> seenFieldReferences = Sets.newConcurrentHashSet();
-    Set<DexMethod> seenMethodReferences = Sets.newConcurrentHashSet();
+    Set<DexField> seenFieldReferences = SetUtils.newConcurrentHashSet();
+    Set<DexMethod> seenMethodReferences = SetUtils.newConcurrentHashSet();
     ThreadUtils.processItems(
         appView.appInfo()::forEachMethod,
         method ->
diff --git a/src/main/java/com/android/tools/r8/optimize/accessmodification/AccessModifierLens.java b/src/main/java/com/android/tools/r8/optimize/accessmodification/AccessModifierLens.java
index 76da486..8810cd6 100644
--- a/src/main/java/com/android/tools/r8/optimize/accessmodification/AccessModifierLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/accessmodification/AccessModifierLens.java
@@ -12,10 +12,10 @@
 import com.android.tools.r8.graph.lens.MethodLookupResult;
 import com.android.tools.r8.ir.code.InvokeType;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.collections.BidirectionalOneToOneHashMap;
 import com.android.tools.r8.utils.collections.BidirectionalOneToOneMap;
 import com.android.tools.r8.utils.collections.MutableBidirectionalOneToOneMap;
-import com.google.common.collect.Sets;
 import java.util.Set;
 
 public class AccessModifierLens extends DefaultNonIdentityGraphLens {
@@ -82,8 +82,9 @@
 
     private final MutableBidirectionalOneToOneMap<DexMethod, DexMethod> methodMap =
         new BidirectionalOneToOneHashMap<>();
-    private final Set<DexMethod> publicizedPrivateInterfaceMethods = Sets.newConcurrentHashSet();
-    private final Set<DexMethod> publicizedPrivateVirtualMethods = Sets.newConcurrentHashSet();
+    private final Set<DexMethod> publicizedPrivateInterfaceMethods =
+        SetUtils.newConcurrentHashSet();
+    private final Set<DexMethod> publicizedPrivateVirtualMethods = SetUtils.newConcurrentHashSet();
 
     public Builder addPublicizedPrivateVirtualMethod(DexProgramClass holder, DexMethod method) {
       if (holder.isInterface()) {
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagator.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagator.java
index 8a00318..f7baed9 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagator.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagator.java
@@ -21,10 +21,10 @@
 import com.android.tools.r8.optimize.argumentpropagation.unusedarguments.EffectivelyUnusedArgumentsAnalysis;
 import com.android.tools.r8.optimize.argumentpropagation.utils.ProgramClassesBidirectedGraph;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.Timing;
 import com.android.tools.r8.utils.collections.DexMethodSignatureSet;
-import com.google.common.collect.Sets;
 import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Map;
@@ -178,7 +178,7 @@
 
     // Using the computed optimization info, build a graph lens that describes the mapping from
     // methods with constant parameters to methods with the constant parameters removed.
-    Set<DexProgramClass> affectedClasses = Sets.newConcurrentHashSet();
+    Set<DexProgramClass> affectedClasses = SetUtils.newConcurrentHashSet();
     ArgumentPropagatorGraphLens graphLens =
         new ArgumentPropagatorProgramOptimizer(
                 appView, immediateSubtypingInfo, interfaceDispatchOutsideProgram)
diff --git a/src/main/java/com/android/tools/r8/optimize/interfaces/analysis/CfOpenClosedInterfacesAnalysis.java b/src/main/java/com/android/tools/r8/optimize/interfaces/analysis/CfOpenClosedInterfacesAnalysis.java
index 5d149ed..b870c4a 100644
--- a/src/main/java/com/android/tools/r8/optimize/interfaces/analysis/CfOpenClosedInterfacesAnalysis.java
+++ b/src/main/java/com/android/tools/r8/optimize/interfaces/analysis/CfOpenClosedInterfacesAnalysis.java
@@ -39,7 +39,6 @@
 import com.android.tools.r8.utils.UnverifiableCfCodeDiagnostic;
 import com.android.tools.r8.utils.WorkList;
 import com.android.tools.r8.utils.collections.ProgramMethodMap;
-import com.google.common.collect.Sets;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -55,7 +54,7 @@
   private final CfAssignability assignability;
   private final InternalOptions options;
 
-  private final Set<DexClass> openInterfaces = Sets.newConcurrentHashSet();
+  private final Set<DexClass> openInterfaces = SetUtils.newConcurrentHashSet();
 
   private final ProgramMethodMap<UnverifiableCfCodeDiagnostic> unverifiableCodeDiagnostics =
       ProgramMethodMap.createConcurrent();
diff --git a/src/main/java/com/android/tools/r8/profile/rewriting/ProfileAdditions.java b/src/main/java/com/android/tools/r8/profile/rewriting/ProfileAdditions.java
index c21af30..b33a217 100644
--- a/src/main/java/com/android/tools/r8/profile/rewriting/ProfileAdditions.java
+++ b/src/main/java/com/android/tools/r8/profile/rewriting/ProfileAdditions.java
@@ -17,6 +17,7 @@
 import com.android.tools.r8.profile.AbstractProfileClassRule;
 import com.android.tools.r8.profile.AbstractProfileMethodRule;
 import com.android.tools.r8.profile.AbstractProfileRule;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.WorkList;
 import com.google.common.collect.Sets;
 import java.util.ArrayList;
@@ -80,7 +81,7 @@
 
   final Map<DexType, ClassRuleBuilder> classRuleAdditions = new ConcurrentHashMap<>();
   final Map<DexMethod, MethodRuleBuilder> methodRuleAdditions = new ConcurrentHashMap<>();
-  private final Set<DexMethod> methodRuleRemovals = Sets.newConcurrentHashSet();
+  private final Set<DexMethod> methodRuleRemovals = SetUtils.newConcurrentHashSet();
 
   private final NestedMethodRuleAdditionsGraph<MethodRule, MethodRuleBuilder>
       nestedMethodRuleAdditionsGraph = new NestedMethodRuleAdditionsGraph<>();
diff --git a/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java b/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java
index 8145a9b..50e39b4 100644
--- a/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java
+++ b/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java
@@ -14,6 +14,7 @@
 import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.graph.ProgramPackage;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.WorkList;
 import com.google.common.collect.Sets;
@@ -202,7 +203,7 @@
   static class Node {
 
     private final DexDefinition definitionForDebugging;
-    private final Set<Node> neighbors = Sets.newConcurrentHashSet();
+    private final Set<Node> neighbors = SetUtils.newConcurrentHashSet();
 
     Node(DexDefinition definitionForDebugging) {
       this.definitionForDebugging = definitionForDebugging;
diff --git a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLivenessModifier.java b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLivenessModifier.java
index 32a8501..bf91868 100644
--- a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLivenessModifier.java
+++ b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLivenessModifier.java
@@ -8,14 +8,14 @@
 import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.FieldAccessInfoCollectionImpl;
 import com.android.tools.r8.graph.FieldAccessInfoImpl;
-import com.google.common.collect.Sets;
+import com.android.tools.r8.utils.SetUtils;
 import java.util.Set;
 
 /** Used to mutate AppInfoWithLiveness between waves. */
 public class AppInfoWithLivenessModifier {
 
-  private final Set<DexProgramClass> noLongerInstantiatedClasses = Sets.newConcurrentHashSet();
-  private final Set<DexField> noLongerWrittenFields = Sets.newConcurrentHashSet();
+  private final Set<DexProgramClass> noLongerInstantiatedClasses = SetUtils.newConcurrentHashSet();
+  private final Set<DexField> noLongerWrittenFields = SetUtils.newConcurrentHashSet();
 
   AppInfoWithLivenessModifier() {}
 
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index d1a5e2c..c2b3460 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -3956,7 +3956,7 @@
 
     public void injectInterface(DexProgramClass clazz, DexClass newInterface) {
       Set<DexClass> newInterfaces =
-          injectedInterfaces.computeIfAbsent(clazz, ignored -> Sets.newConcurrentHashSet());
+          injectedInterfaces.computeIfAbsent(clazz, ignored -> SetUtils.newConcurrentHashSet());
       newInterfaces.add(newInterface);
     }
 
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index d361126..ea3b56f 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -111,7 +111,6 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
 import java.io.IOException;
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -1199,11 +1198,11 @@
   }
 
   /** A set of dexitems we have reported missing to dedupe warnings. */
-  private final Set<DexItem> reportedMissingForDesugaring = Sets.newConcurrentHashSet();
+  private final Set<DexItem> reportedMissingForDesugaring = SetUtils.newConcurrentHashSet();
 
   private final AtomicBoolean reportedErrorReadingKotlinMetadataReflectively =
       new AtomicBoolean(false);
-  private final Set<DexItem> invalidLibraryClasses = Sets.newConcurrentHashSet();
+  private final Set<DexItem> invalidLibraryClasses = SetUtils.newConcurrentHashSet();
 
   public RuntimeException errorMissingNestHost(DexClass clazz) {
     throw reporter.fatalError(
diff --git a/src/main/java/com/android/tools/r8/utils/SetUtils.java b/src/main/java/com/android/tools/r8/utils/SetUtils.java
index 05af36b..be05c5d 100644
--- a/src/main/java/com/android/tools/r8/utils/SetUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/SetUtils.java
@@ -27,8 +27,12 @@
     return false;
   }
 
+  public static <T> Set<T> newConcurrentHashSet() {
+    return ConcurrentHashMap.newKeySet();
+  }
+
   public static <T> Set<T> newConcurrentHashSet(int capacity) {
-    return Collections.newSetFromMap(new ConcurrentHashMap<>(capacity));
+    return ConcurrentHashMap.newKeySet(capacity);
   }
 
   public static <T> HashSet<T> newHashSet(T element) {
diff --git a/src/main/java/com/android/tools/r8/utils/collections/DexMethodSignatureSet.java b/src/main/java/com/android/tools/r8/utils/collections/DexMethodSignatureSet.java
index 901ef75..21c6032 100644
--- a/src/main/java/com/android/tools/r8/utils/collections/DexMethodSignatureSet.java
+++ b/src/main/java/com/android/tools/r8/utils/collections/DexMethodSignatureSet.java
@@ -8,8 +8,8 @@
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.graph.DexMethodSignature;
+import com.android.tools.r8.utils.SetUtils;
 import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
@@ -38,7 +38,7 @@
   }
 
   public static DexMethodSignatureSet createConcurrent() {
-    return new DexMethodSignatureSet(Sets.newConcurrentHashSet());
+    return new DexMethodSignatureSet(SetUtils.newConcurrentHashSet());
   }
 
   public static DexMethodSignatureSet createLinked() {
diff --git a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
index 1bc4f03..3e17faf 100644
--- a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
@@ -20,13 +20,13 @@
 import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.ForwardingOutputStream;
 import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.ThrowingOutputStream;
 import com.android.tools.r8.utils.codeinspector.ArgumentPropagatorCodeScannerResultInspector;
 import com.android.tools.r8.utils.codeinspector.EnumUnboxingInspector;
 import com.android.tools.r8.utils.codeinspector.HorizontallyMergedClassesInspector;
 import com.android.tools.r8.utils.codeinspector.VerticallyMergedClassesInspector;
 import com.google.common.base.Suppliers;
-import com.google.common.collect.Sets;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
@@ -586,7 +586,7 @@
 
   private static Set<String> computeAllGlobalSynthetics(int minApiLevel) {
     try {
-      Set<String> generatedGlobalSynthetics = Sets.newConcurrentHashSet();
+      Set<String> generatedGlobalSynthetics = SetUtils.newConcurrentHashSet();
       GlobalSyntheticsGeneratorCommand command =
           GlobalSyntheticsGeneratorCommand.builder()
               .addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.API_DATABASE_LEVEL))
diff --git a/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java b/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
index bda012e..ff2afbe 100644
--- a/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
+++ b/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
@@ -16,9 +16,9 @@
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.SetUtils;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.android.tools.r8.utils.codeinspector.FoundClassSubject;
-import com.google.common.collect.Sets;
 import java.nio.file.Path;
 import java.util.HashSet;
 import java.util.Set;
@@ -78,7 +78,7 @@
 
   @Test
   public void testClassFileListOutput() throws Exception {
-    Set<String> generatedGlobalSynthetics = Sets.newConcurrentHashSet();
+    Set<String> generatedGlobalSynthetics = SetUtils.newConcurrentHashSet();
     Path output = temp.newFolder().toPath().resolve("output.zip");
     runGlobalSyntheticsGenerator(
         GlobalSyntheticsGeneratorCommand.builder()
diff --git a/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java b/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java
index e6b6f0a..bc561cf 100644
--- a/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java
+++ b/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java
@@ -5,8 +5,6 @@
 
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.core.AnyOf.anyOf;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 
 import com.android.tools.r8.D8TestBuilder;
 import com.android.tools.r8.D8TestCompileResult;
@@ -18,10 +16,8 @@
 import com.android.tools.r8.ThrowableConsumer;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.utils.AndroidApiLevel;
-import com.google.common.collect.Sets;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.Set;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;