Make Enqueuer#createAppInfo virtual

Change-Id: I6272b89e9bf1c6a531e99a239095f7267d363112
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 66bfe83..9d43839 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -1550,68 +1550,63 @@
         .visit(appView.appInfo().classes(), this::markAllLibraryVirtualMethodsReachable);
     trace(executorService, timing);
     options.reporter.failIfPendingErrors();
-    return createAppInfo(appInfo, this);
+    return createAppInfo(appInfo);
   }
 
-  private static AppInfoWithLiveness createAppInfo(
-      AppInfoWithSubtyping appInfo, Enqueuer enqueuer) {
+  private AppInfoWithLiveness createAppInfo(AppInfoWithSubtyping appInfo) {
     ImmutableSortedSet.Builder<DexType> builder =
         ImmutableSortedSet.orderedBy(PresortedComparable::slowCompareTo);
-    enqueuer.liveAnnotations.items.forEach(annotation -> builder.add(annotation.annotation.type));
+    liveAnnotations.items.forEach(annotation -> builder.add(annotation.annotation.type));
 
     // Remove the temporary mappings that have been inserted into the field access info collection
     // and verify that the mapping is then one-to-one.
-    enqueuer.fieldAccessInfoCollection.removeIf(
+    fieldAccessInfoCollection.removeIf(
         (field, info) -> field != info.getField() || info == MISSING_FIELD_ACCESS_INFO);
-    assert enqueuer.fieldAccessInfoCollection.verifyMappingIsOneToOne();
+    assert fieldAccessInfoCollection.verifyMappingIsOneToOne();
 
     AppInfoWithLiveness appInfoWithLiveness =
         new AppInfoWithLiveness(
             appInfo,
-            ImmutableSortedSet.copyOf(PresortedComparable::slowCompareTo, enqueuer.liveTypes),
+            ImmutableSortedSet.copyOf(PresortedComparable::slowCompareTo, liveTypes),
             builder.build(),
+            ImmutableSortedSet.copyOf(PresortedComparable::slowCompareTo, instantiatedAppServices),
             ImmutableSortedSet.copyOf(
-                PresortedComparable::slowCompareTo, enqueuer.instantiatedAppServices),
+                PresortedComparable::slowCompareTo, instantiatedTypes.getItems()),
+            Enqueuer.toSortedDescriptorSet(targetedMethods.getItems()),
+            ImmutableSortedSet.copyOf(DexMethod::slowCompareTo, bootstrapMethods),
+            ImmutableSortedSet.copyOf(DexMethod::slowCompareTo, methodsTargetedByInvokeDynamic),
             ImmutableSortedSet.copyOf(
-                PresortedComparable::slowCompareTo, enqueuer.instantiatedTypes.getItems()),
-            Enqueuer.toSortedDescriptorSet(enqueuer.targetedMethods.getItems()),
-            ImmutableSortedSet.copyOf(DexMethod::slowCompareTo, enqueuer.bootstrapMethods),
+                DexMethod::slowCompareTo, virtualMethodsTargetedByInvokeDirect),
+            toSortedDescriptorSet(liveMethods.getItems()),
+            fieldAccessInfoCollection,
             ImmutableSortedSet.copyOf(
-                DexMethod::slowCompareTo, enqueuer.methodsTargetedByInvokeDynamic),
-            ImmutableSortedSet.copyOf(
-                DexMethod::slowCompareTo, enqueuer.virtualMethodsTargetedByInvokeDirect),
-            toSortedDescriptorSet(enqueuer.liveMethods.getItems()),
-            enqueuer.fieldAccessInfoCollection,
-            ImmutableSortedSet.copyOf(
-                DexField::slowCompareTo,
-                enqueuer.staticFieldsWrittenOnlyInEnclosingStaticInitializer()),
+                DexField::slowCompareTo, staticFieldsWrittenOnlyInEnclosingStaticInitializer()),
             // TODO(b/132593519): Do we require these sets to be sorted for determinism?
-            toImmutableSortedMap(enqueuer.virtualInvokes, PresortedComparable::slowCompare),
-            toImmutableSortedMap(enqueuer.interfaceInvokes, PresortedComparable::slowCompare),
-            toImmutableSortedMap(enqueuer.superInvokes, PresortedComparable::slowCompare),
-            toImmutableSortedMap(enqueuer.directInvokes, PresortedComparable::slowCompare),
-            toImmutableSortedMap(enqueuer.staticInvokes, PresortedComparable::slowCompare),
-            enqueuer.callSites,
-            ImmutableSortedSet.copyOf(DexMethod::slowCompareTo, enqueuer.brokenSuperInvokes),
-            enqueuer.pinnedItems,
-            enqueuer.rootSet.mayHaveSideEffects,
-            enqueuer.rootSet.noSideEffects,
-            enqueuer.rootSet.assumedValues,
-            enqueuer.rootSet.alwaysInline,
-            enqueuer.rootSet.forceInline,
-            enqueuer.rootSet.neverInline,
-            enqueuer.rootSet.keepConstantArguments,
-            enqueuer.rootSet.keepUnusedArguments,
-            enqueuer.rootSet.neverClassInline,
-            enqueuer.rootSet.neverMerge,
-            enqueuer.rootSet.neverPropagateValue,
-            joinIdentifierNameStrings(
-                enqueuer.rootSet.identifierNameStrings, enqueuer.identifierNameStrings),
+            toImmutableSortedMap(virtualInvokes, PresortedComparable::slowCompare),
+            toImmutableSortedMap(interfaceInvokes, PresortedComparable::slowCompare),
+            toImmutableSortedMap(superInvokes, PresortedComparable::slowCompare),
+            toImmutableSortedMap(directInvokes, PresortedComparable::slowCompare),
+            toImmutableSortedMap(staticInvokes, PresortedComparable::slowCompare),
+            callSites,
+            ImmutableSortedSet.copyOf(DexMethod::slowCompareTo, brokenSuperInvokes),
+            pinnedItems,
+            rootSet.mayHaveSideEffects,
+            rootSet.noSideEffects,
+            rootSet.assumedValues,
+            rootSet.alwaysInline,
+            rootSet.forceInline,
+            rootSet.neverInline,
+            rootSet.keepConstantArguments,
+            rootSet.keepUnusedArguments,
+            rootSet.neverClassInline,
+            rootSet.neverMerge,
+            rootSet.neverPropagateValue,
+            joinIdentifierNameStrings(rootSet.identifierNameStrings, identifierNameStrings),
             Collections.emptySet(),
             Collections.emptyMap(),
             Collections.emptyMap(),
             ImmutableSortedSet.copyOf(
-                PresortedComparable::slowCompareTo, enqueuer.instantiatedLambdas.getItems()));
+                PresortedComparable::slowCompareTo, instantiatedLambdas.getItems()));
     appInfo.markObsolete();
     return appInfoWithLiveness;
   }