Use a concurrent TreeSet implementation for direct sub types

This set can be updated by synthesized classes added during IR processing.

Bug: 149516488
Change-Id: If564eb6e140adbd3cfe6ba3badb0af212578bce6
diff --git a/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java b/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
index 3381ea2..813ea84 100644
--- a/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
+++ b/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
@@ -22,8 +22,8 @@
 import java.util.IdentityHashMap;
 import java.util.Map;
 import java.util.Set;
-import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentSkipListSet;
 import java.util.function.Consumer;
 import java.util.function.Function;
 
@@ -82,7 +82,7 @@
 
     private void ensureDirectSubTypeSet() {
       if (directSubtypes == NO_DIRECT_SUBTYPE) {
-        directSubtypes = new TreeSet<>(DexType::slowCompareTo);
+        directSubtypes = new ConcurrentSkipListSet<>(DexType::slowCompareTo);
       }
     }