Remove support for synthetic matchers in startup profiles

This removes the support for startup profile rules such as `SLfoo/bar/Baz;` for matching all synthetic classes and methods derived from `Lfoo/bar/Baz;`.

Instead R8 should include synthetics in the startup profile using the framework for rewriting baseline profiles.

Bug: b/271822426
Change-Id: Icb91eed84f07b6aec7082ce5efba72976661a589
diff --git a/src/main/java/com/android/tools/r8/dex/StartupMixedSectionLayoutStrategy.java b/src/main/java/com/android/tools/r8/dex/StartupMixedSectionLayoutStrategy.java
index 0833358..ffbbc4f 100644
--- a/src/main/java/com/android/tools/r8/dex/StartupMixedSectionLayoutStrategy.java
+++ b/src/main/java/com/android/tools/r8/dex/StartupMixedSectionLayoutStrategy.java
@@ -88,12 +88,7 @@
               collectStartupItems(startupClass, indexedItemCollection, virtualFileDefinitions),
           startupMethod ->
               collectStartupItems(
-                  startupMethod, indexedItemCollection, virtualFileDefinitions, rewriter),
-          syntheticStartupMethod -> {
-            // All synthetic startup items should be removed after calling
-            // StartupOrder#toStartupOrderForWriting.
-            assert false;
-          });
+                  startupMethod, indexedItemCollection, virtualFileDefinitions, rewriter));
     }
   }
 
diff --git a/src/main/java/com/android/tools/r8/dex/VirtualFile.java b/src/main/java/com/android/tools/r8/dex/VirtualFile.java
index 692192d..ef76e8a 100644
--- a/src/main/java/com/android/tools/r8/dex/VirtualFile.java
+++ b/src/main/java/com/android/tools/r8/dex/VirtualFile.java
@@ -30,7 +30,6 @@
 import com.android.tools.r8.naming.ClassNameMapper;
 import com.android.tools.r8.naming.NamingLens;
 import com.android.tools.r8.shaking.MainDexInfo;
-import com.android.tools.r8.synthesis.SyntheticItems;
 import com.android.tools.r8.synthesis.SyntheticNaming;
 import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.FileUtils;
@@ -1279,12 +1278,11 @@
       public static PackageSplitClassPartioning create(
           Collection<DexProgramClass> classes,
           Map<DexProgramClass, String> originalNames,
-          StartupOrder startupOrder,
-          SyntheticItems syntheticItems) {
+          StartupOrder startupOrder) {
         return create(
             classes,
             getClassesByPackageComparator(originalNames),
-            getStartupClassPredicate(startupOrder, syntheticItems));
+            getStartupClassPredicate(startupOrder));
       }
 
       private static PackageSplitClassPartioning create(
@@ -1335,8 +1333,8 @@
       }
 
       private static Predicate<DexProgramClass> getStartupClassPredicate(
-          StartupOrder startupOrder, SyntheticItems syntheticItems) {
-        return clazz -> startupOrder.contains(clazz.getType(), syntheticItems);
+          StartupOrder startupOrder) {
+        return clazz -> startupOrder.contains(clazz.getType());
       }
 
       public List<DexProgramClass> getStartupClasses() {
@@ -1375,8 +1373,7 @@
         StartupOrder startupOrder,
         IntBox nextFileId) {
       this.classPartioning =
-          PackageSplitClassPartioning.create(
-              classes, originalNames, startupOrder, appView.getSyntheticItems());
+          PackageSplitClassPartioning.create(classes, originalNames, startupOrder);
       this.originalNames = originalNames;
       this.dexItemFactory = appView.dexItemFactory();
       this.options = appView.options();
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/EmptyStartupOrder.java b/src/main/java/com/android/tools/r8/experimental/startup/EmptyStartupOrder.java
index 032e0b8..ad4d364 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/EmptyStartupOrder.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/EmptyStartupOrder.java
@@ -19,12 +19,12 @@
   EmptyStartupOrder() {}
 
   @Override
-  public boolean contains(DexMethod method, SyntheticItems syntheticItems) {
+  public boolean contains(DexMethod method) {
     return false;
   }
 
   @Override
-  public boolean contains(DexType type, SyntheticItems syntheticItems) {
+  public boolean contains(DexType type) {
     return false;
   }
 
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/NonEmptyStartupOrder.java b/src/main/java/com/android/tools/r8/experimental/startup/NonEmptyStartupOrder.java
index 25188c0..10dc344 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/NonEmptyStartupOrder.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/NonEmptyStartupOrder.java
@@ -7,86 +7,39 @@
 import com.android.tools.r8.experimental.startup.profile.StartupClass;
 import com.android.tools.r8.experimental.startup.profile.StartupItem;
 import com.android.tools.r8.experimental.startup.profile.StartupMethod;
-import com.android.tools.r8.experimental.startup.profile.SyntheticStartupMethod;
 import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexApplication;
 import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.graph.DexProgramClass;
+import com.android.tools.r8.graph.DexReference;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.GraphLens;
 import com.android.tools.r8.graph.PrunedItems;
 import com.android.tools.r8.synthesis.SyntheticItems;
-import com.android.tools.r8.utils.LazyBox;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.LinkedHashMap;
 
 public class NonEmptyStartupOrder extends StartupOrder {
 
-  private final LinkedHashSet<StartupItem> startupItems;
+  private final LinkedHashMap<DexReference, StartupItem> startupItems;
 
-  // Sets to allow efficient querying without boxing.
-  private final Set<DexType> nonSyntheticStartupClasses = Sets.newIdentityHashSet();
-  private final Set<DexType> syntheticStartupClasses = Sets.newIdentityHashSet();
-
-  private final Set<DexMethod> nonSyntheticStartupMethods = Sets.newIdentityHashSet();
-
-  NonEmptyStartupOrder(LinkedHashSet<StartupItem> startupItems) {
+  NonEmptyStartupOrder(LinkedHashMap<DexReference, StartupItem> startupItems) {
     assert !startupItems.isEmpty();
     this.startupItems = startupItems;
-    for (StartupItem startupItem : startupItems) {
-      startupItem.accept(
-          startupClass -> nonSyntheticStartupClasses.add(startupClass.getReference()),
-          startupMethod -> {
-            nonSyntheticStartupClasses.add(startupMethod.getReference().getHolderType());
-            nonSyntheticStartupMethods.add(startupMethod.getReference());
-          },
-          syntheticStartupMethod ->
-              syntheticStartupClasses.add(syntheticStartupMethod.getSyntheticContextType()));
-    }
   }
 
   @Override
-  public boolean contains(DexMethod method, SyntheticItems syntheticItems) {
-    if (nonSyntheticStartupMethods.contains(method)) {
-      return true;
-    }
-    if (syntheticItems.isSyntheticClass(method.getHolderType())) {
-      return containsSyntheticClass(method.getHolderType(), syntheticItems);
-    }
-    return false;
+  public boolean contains(DexMethod method) {
+    return startupItems.containsKey(method);
   }
 
   @Override
-  public boolean contains(DexType type, SyntheticItems syntheticItems) {
-    return syntheticItems.isSyntheticClass(type)
-        ? containsSyntheticClass(type, syntheticItems)
-        : containsNonSyntheticClass(type);
-  }
-
-  private boolean containsNonSyntheticClass(DexType type) {
-    return nonSyntheticStartupClasses.contains(type);
-  }
-
-  private boolean containsSyntheticClass(DexType type, SyntheticItems syntheticItems) {
-    assert syntheticItems.isSyntheticClass(type);
-    return Iterables.any(
-        syntheticItems.getSynthesizingContextTypes(type),
-        this::containsSyntheticClassesSynthesizedFrom);
-  }
-
-  private boolean containsSyntheticClassesSynthesizedFrom(DexType synthesizingContextType) {
-    return syntheticStartupClasses.contains(synthesizingContextType);
+  public boolean contains(DexType type) {
+    return startupItems.containsKey(type);
   }
 
   @Override
   public Collection<StartupItem> getItems() {
-    return startupItems;
+    return startupItems.values();
   }
 
   @Override
@@ -96,27 +49,24 @@
 
   @Override
   public StartupOrder rewrittenWithLens(GraphLens graphLens) {
-    LinkedHashSet<StartupItem> rewrittenStartupItems = new LinkedHashSet<>(startupItems.size());
-    for (StartupItem startupItem : startupItems) {
-      // TODO(b/238173796): This should account for one-to-many mappings. e.g., when a bridge is
+    LinkedHashMap<DexReference, StartupItem> rewrittenStartupItems =
+        new LinkedHashMap<>(startupItems.size());
+    for (StartupItem startupItem : startupItems.values()) {
+      // TODO(b/271822426): This should account for one-to-many mappings. e.g., when a bridge is
       //  created.
       startupItem.apply(
           startupClass ->
-              rewrittenStartupItems.add(
+              rewrittenStartupItems.put(
+                  startupClass.getReference(),
                   StartupClass.builder()
                       .setClassReference(graphLens.lookupType(startupClass.getReference()))
                       .build()),
           startupMethod ->
-              rewrittenStartupItems.add(
+              rewrittenStartupItems.put(
+                  startupMethod.getReference(),
                   StartupMethod.builder()
                       .setMethodReference(
                           graphLens.getRenamedMethodSignature(startupMethod.getReference()))
-                      .build()),
-          syntheticStartupMethod ->
-              rewrittenStartupItems.add(
-                  SyntheticStartupMethod.builder()
-                      .setSyntheticContextReference(
-                          graphLens.lookupType(syntheticStartupMethod.getSyntheticContextType()))
                       .build()));
     }
     return createNonEmpty(rewrittenStartupItems);
@@ -143,49 +93,38 @@
    */
   @Override
   public StartupOrder toStartupOrderForWriting(AppView<?> appView) {
-    LinkedHashSet<StartupItem> rewrittenStartupItems = new LinkedHashSet<>(startupItems.size());
-    Map<DexType, List<DexProgramClass>> syntheticContextsToSyntheticClasses =
-        appView.getSyntheticItems().computeSyntheticContextsToSyntheticClasses(appView);
-    for (StartupItem startupItem : startupItems) {
-      addStartupItem(
-          startupItem, rewrittenStartupItems, syntheticContextsToSyntheticClasses, appView);
+    LinkedHashMap<DexReference, StartupItem> rewrittenStartupItems =
+        new LinkedHashMap<>(startupItems.size());
+    for (StartupItem startupItem : startupItems.values()) {
+      addStartupItem(startupItem, rewrittenStartupItems, appView);
     }
-    assert rewrittenStartupItems.stream().noneMatch(StartupItem::isSyntheticStartupMethod);
     return createNonEmpty(rewrittenStartupItems);
   }
 
   private static void addStartupItem(
       StartupItem startupItem,
-      LinkedHashSet<StartupItem> rewrittenStartupItems,
-      Map<DexType, List<DexProgramClass>> syntheticContextsToSyntheticClasses,
+      LinkedHashMap<DexReference, StartupItem> rewrittenStartupItems,
       AppView<?> appView) {
-    if (startupItem.isSyntheticStartupMethod()) {
-      SyntheticStartupMethod syntheticStartupMethod = startupItem.asSyntheticStartupMethod();
-      List<DexProgramClass> syntheticClassesForContext =
-          syntheticContextsToSyntheticClasses.getOrDefault(
-              syntheticStartupMethod.getSyntheticContextType(), Collections.emptyList());
-      for (DexProgramClass clazz : syntheticClassesForContext) {
-        addClassAndParentClasses(clazz, rewrittenStartupItems, appView);
-        addAllMethods(clazz, rewrittenStartupItems);
-      }
+    if (startupItem.isStartupClass()) {
+      addClassAndParentClasses(
+          startupItem.asStartupClass().getReference(), rewrittenStartupItems, appView);
     } else {
-      if (startupItem.isStartupClass()) {
-        addClassAndParentClasses(
-            startupItem.asStartupClass().getReference(), rewrittenStartupItems, appView);
-      } else {
-        rewrittenStartupItems.add(startupItem);
-      }
+      rewrittenStartupItems.put(startupItem.getReference(), startupItem);
     }
   }
 
   private static boolean addClass(
-      DexProgramClass clazz, LinkedHashSet<StartupItem> rewrittenStartupItems) {
-    return rewrittenStartupItems.add(
-        StartupClass.builder().setClassReference(clazz.getType()).build());
+      DexProgramClass clazz, LinkedHashMap<DexReference, StartupItem> rewrittenStartupItems) {
+    StartupItem previous =
+        rewrittenStartupItems.put(
+            clazz.getType(), StartupClass.builder().setClassReference(clazz.getType()).build());
+    return previous == null;
   }
 
   private static void addClassAndParentClasses(
-      DexType type, LinkedHashSet<StartupItem> rewrittenStartupItems, AppView<?> appView) {
+      DexType type,
+      LinkedHashMap<DexReference, StartupItem> rewrittenStartupItems,
+      AppView<?> appView) {
     DexProgramClass definition = appView.app().programDefinitionFor(type);
     if (definition != null) {
       addClassAndParentClasses(definition, rewrittenStartupItems, appView);
@@ -193,70 +132,45 @@
   }
 
   private static void addClassAndParentClasses(
-      DexProgramClass clazz, LinkedHashSet<StartupItem> rewrittenStartupItems, AppView<?> appView) {
+      DexProgramClass clazz,
+      LinkedHashMap<DexReference, StartupItem> rewrittenStartupItems,
+      AppView<?> appView) {
     if (addClass(clazz, rewrittenStartupItems)) {
       addParentClasses(clazz, rewrittenStartupItems, appView);
     }
   }
 
   private static void addParentClasses(
-      DexProgramClass clazz, LinkedHashSet<StartupItem> rewrittenStartupItems, AppView<?> appView) {
+      DexProgramClass clazz,
+      LinkedHashMap<DexReference, StartupItem> rewrittenStartupItems,
+      AppView<?> appView) {
     clazz.forEachImmediateSupertype(
         supertype -> addClassAndParentClasses(supertype, rewrittenStartupItems, appView));
   }
 
-  private static void addAllMethods(
-      DexProgramClass clazz, LinkedHashSet<StartupItem> rewrittenStartupItems) {
-    clazz.forEachProgramMethod(
-        method ->
-            rewrittenStartupItems.add(
-                StartupMethod.builder().setMethodReference(method.getReference()).build()));
-  }
-
   @Override
   public StartupOrder withoutPrunedItems(PrunedItems prunedItems, SyntheticItems syntheticItems) {
-    LinkedHashSet<StartupItem> rewrittenStartupItems = new LinkedHashSet<>(startupItems.size());
-    LazyBox<Set<DexType>> contextsOfLiveSynthetics =
-        new LazyBox<>(
-            () -> computeContextsOfLiveSynthetics(prunedItems.getPrunedApp(), syntheticItems));
-    for (StartupItem startupItem : startupItems) {
+    LinkedHashMap<DexReference, StartupItem> rewrittenStartupItems =
+        new LinkedHashMap<>(startupItems.size());
+    for (StartupItem startupItem : startupItems.values()) {
       // Only prune non-synthetic classes, since the pruning of a class does not imply that all
       // classes synthesized from it have been pruned.
       startupItem.accept(
           startupClass -> {
             if (!prunedItems.isRemoved(startupClass.getReference())) {
-              rewrittenStartupItems.add(startupItem);
+              rewrittenStartupItems.put(startupClass.getReference(), startupItem);
             }
           },
           startupMethod -> {
             if (!prunedItems.isRemoved(startupMethod.getReference())) {
-              rewrittenStartupItems.add(startupItem);
-            }
-          },
-          syntheticStartupMethod -> {
-            if (contextsOfLiveSynthetics
-                .computeIfAbsent()
-                .contains(syntheticStartupMethod.getSyntheticContextType())) {
-              rewrittenStartupItems.add(syntheticStartupMethod);
+              rewrittenStartupItems.put(startupMethod.getReference(), startupItem);
             }
           });
     }
     return createNonEmpty(rewrittenStartupItems);
   }
 
-  private Set<DexType> computeContextsOfLiveSynthetics(
-      DexApplication app, SyntheticItems syntheticItems) {
-    Set<DexType> contextsOfLiveSynthetics = Sets.newIdentityHashSet();
-    for (DexProgramClass clazz : app.classes()) {
-      if (syntheticItems.isSyntheticClass(clazz)) {
-        contextsOfLiveSynthetics.addAll(
-            syntheticItems.getSynthesizingContextTypes(clazz.getType()));
-      }
-    }
-    return contextsOfLiveSynthetics;
-  }
-
-  private StartupOrder createNonEmpty(LinkedHashSet<StartupItem> startupItems) {
+  private StartupOrder createNonEmpty(LinkedHashMap<DexReference, StartupItem> startupItems) {
     if (startupItems.isEmpty()) {
       assert false;
       return empty();
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/StartupCompleteness.java b/src/main/java/com/android/tools/r8/experimental/startup/StartupCompleteness.java
index 6291d1e..456b3a2 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/StartupCompleteness.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/StartupCompleteness.java
@@ -9,17 +9,12 @@
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.DexReference;
-import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.MethodAccessFlags;
 import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.graph.ThrowNullCode;
-import com.android.tools.r8.profile.art.ArtProfileBuilderUtils.SyntheticToSyntheticContextGeneralization;
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.common.collect.Sets;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceMaps;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
 public class StartupCompleteness {
@@ -28,16 +23,11 @@
   private final StartupOrder startupOrder;
 
   private StartupCompleteness(AppView<?> appView) {
-    SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization =
-        appView.enableWholeProgramOptimizations()
-            ? SyntheticToSyntheticContextGeneralization.createForR8()
-            : SyntheticToSyntheticContextGeneralization.createForD8();
     this.appView = appView;
     this.startupOrder =
         appView.hasClassHierarchy()
             ? appView.getStartupOrder()
-            : StartupOrder.createInitialStartupOrder(
-                appView.options(), null, syntheticToSyntheticContextGeneralization);
+            : StartupOrder.createInitialStartupOrder(appView.options(), null);
   }
 
   /**
@@ -82,22 +72,10 @@
 
   private Set<DexReference> computeStartupItems() {
     Set<DexReference> startupItems = Sets.newIdentityHashSet();
-    Map<DexType, List<DexProgramClass>> syntheticContextsToSyntheticClasses =
-        appView.getSyntheticItems().computeSyntheticContextsToSyntheticClasses(appView);
     for (StartupItem startupItem : startupOrder.getItems()) {
       startupItem.accept(
           startupClass -> startupItems.add(startupClass.getReference()),
-          startupMethod -> startupItems.add(startupMethod.getReference()),
-          syntheticStartupMethod -> {
-            List<DexProgramClass> syntheticClasses =
-                syntheticContextsToSyntheticClasses.getOrDefault(
-                    syntheticStartupMethod.getSyntheticContextType(), Collections.emptyList());
-            for (DexProgramClass syntheticClass : syntheticClasses) {
-              startupItems.add(syntheticClass.getType());
-              syntheticClass.forEachProgramMethod(
-                  method -> startupItems.add(method.getReference()));
-            }
-          });
+          startupMethod -> startupItems.add(startupMethod.getReference()));
     }
     return startupItems;
   }
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/StartupOrder.java b/src/main/java/com/android/tools/r8/experimental/startup/StartupOrder.java
index b369a94..e1e8408 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/StartupOrder.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/StartupOrder.java
@@ -10,49 +10,48 @@
 import com.android.tools.r8.graph.DexApplication;
 import com.android.tools.r8.graph.DexDefinitionSupplier;
 import com.android.tools.r8.graph.DexMethod;
+import com.android.tools.r8.graph.DexReference;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.GraphLens;
 import com.android.tools.r8.graph.PrunedItems;
-import com.android.tools.r8.profile.art.ArtProfileBuilderUtils.SyntheticToSyntheticContextGeneralization;
 import com.android.tools.r8.synthesis.SyntheticItems;
 import com.android.tools.r8.utils.InternalOptions;
 import java.util.Collection;
-import java.util.LinkedHashSet;
+import java.util.LinkedHashMap;
 
 public abstract class StartupOrder {
 
   StartupOrder() {}
 
   public static StartupOrder createInitialStartupOrder(
-      InternalOptions options,
-      DexDefinitionSupplier definitions,
-      SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization) {
-    StartupProfile startupProfile =
-        StartupProfile.parseStartupProfile(
-            options, definitions, syntheticToSyntheticContextGeneralization);
+      InternalOptions options, DexDefinitionSupplier definitions) {
+    StartupProfile startupProfile = StartupProfile.parseStartupProfile(options, definitions);
     if (startupProfile == null || startupProfile.getStartupItems().isEmpty()) {
       return empty();
     }
-    return new NonEmptyStartupOrder(new LinkedHashSet<>(startupProfile.getStartupItems()));
+    LinkedHashMap<DexReference, StartupItem> startupItems =
+        new LinkedHashMap<>(startupProfile.size());
+    for (StartupItem startupItem : startupProfile.getStartupItems()) {
+      startupItems.put(startupItem.getReference(), startupItem);
+    }
+    return new NonEmptyStartupOrder(new LinkedHashMap<>(startupItems));
   }
 
   public static StartupOrder createInitialStartupOrderForD8(AppView<?> appView) {
-    return createInitialStartupOrder(
-        appView.options(), appView, SyntheticToSyntheticContextGeneralization.createForD8());
+    return createInitialStartupOrder(appView.options(), appView);
   }
 
   public static StartupOrder createInitialStartupOrderForR8(DexApplication application) {
-    return createInitialStartupOrder(
-        application.options, application, SyntheticToSyntheticContextGeneralization.createForR8());
+    return createInitialStartupOrder(application.options, application);
   }
 
   public static StartupOrder empty() {
     return new EmptyStartupOrder();
   }
 
-  public abstract boolean contains(DexMethod method, SyntheticItems syntheticItems);
+  public abstract boolean contains(DexMethod method);
 
-  public abstract boolean contains(DexType type, SyntheticItems syntheticItems);
+  public abstract boolean contains(DexType type);
 
   public abstract Collection<StartupItem> getItems();
 
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/StartupProfileProviderUtils.java b/src/main/java/com/android/tools/r8/experimental/startup/StartupProfileProviderUtils.java
index a4b0f5e..4c8ea1b 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/StartupProfileProviderUtils.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/StartupProfileProviderUtils.java
@@ -10,7 +10,6 @@
 import com.android.tools.r8.experimental.startup.profile.StartupProfile;
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.origin.PathOrigin;
-import com.android.tools.r8.profile.art.ArtProfileBuilderUtils.SyntheticToSyntheticContextGeneralization;
 import com.android.tools.r8.profile.art.HumanReadableArtProfileParserBuilder;
 import com.android.tools.r8.startup.StartupProfileBuilder;
 import com.android.tools.r8.startup.StartupProfileProvider;
@@ -55,15 +54,8 @@
     // Do not report missing items.
     MissingStartupProfileItemsDiagnostic.Builder missingItemsDiagnosticBuilder =
         MissingStartupProfileItemsDiagnostic.Builder.nop();
-    // Do not generalize synthetic items to their synthetic context.
-    SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization =
-        SyntheticToSyntheticContextGeneralization.createForD8();
     StartupProfile.Builder startupProfileBuilder =
-        StartupProfile.builder(
-            options,
-            missingItemsDiagnosticBuilder,
-            startupProfileProvider,
-            syntheticToSyntheticContextGeneralization);
+        StartupProfile.builder(options, missingItemsDiagnosticBuilder, startupProfileProvider);
     // Do not report warnings for lines that cannot be parsed.
     startupProfileBuilder.setIgnoreWarnings();
     // Populate the startup profile builder.
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupClass.java b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupClass.java
index d281a65..9ab1224 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupClass.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupClass.java
@@ -29,21 +29,17 @@
   }
 
   @Override
-  public void accept(
-      Consumer<StartupClass> classConsumer,
-      Consumer<StartupMethod> methodConsumer,
-      Consumer<SyntheticStartupMethod> syntheticMethodConsumer) {
+  public void accept(Consumer<StartupClass> classConsumer, Consumer<StartupMethod> methodConsumer) {
     classConsumer.accept(this);
   }
 
   @Override
   public <T> T apply(
-      Function<StartupClass, T> classFunction,
-      Function<StartupMethod, T> methodFunction,
-      Function<SyntheticStartupMethod, T> syntheticMethodFunction) {
+      Function<StartupClass, T> classFunction, Function<StartupMethod, T> methodFunction) {
     return classFunction.apply(this);
   }
 
+  @Override
   public DexType getReference() {
     return type;
   }
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupItem.java b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupItem.java
index b7e6f1c..91a615e 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupItem.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupItem.java
@@ -4,20 +4,19 @@
 
 package com.android.tools.r8.experimental.startup.profile;
 
+import com.android.tools.r8.graph.DexReference;
 import java.util.function.Consumer;
 import java.util.function.Function;
 
 public abstract class StartupItem {
 
   public abstract void accept(
-      Consumer<StartupClass> classConsumer,
-      Consumer<StartupMethod> methodConsumer,
-      Consumer<SyntheticStartupMethod> syntheticMethodConsumer);
+      Consumer<StartupClass> classConsumer, Consumer<StartupMethod> methodConsumer);
 
   public abstract <T> T apply(
-      Function<StartupClass, T> classFunction,
-      Function<StartupMethod, T> methodFunction,
-      Function<SyntheticStartupMethod, T> syntheticMethodFunction);
+      Function<StartupClass, T> classFunction, Function<StartupMethod, T> methodFunction);
+
+  public abstract DexReference getReference();
 
   public boolean isStartupClass() {
     return false;
@@ -37,14 +36,5 @@
     return null;
   }
 
-  public boolean isSyntheticStartupMethod() {
-    return false;
-  }
-
-  public SyntheticStartupMethod asSyntheticStartupMethod() {
-    assert false;
-    return null;
-  }
-
   public abstract String serializeToString();
 }
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupMethod.java b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupMethod.java
index 18045ef..e245260 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupMethod.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupMethod.java
@@ -29,21 +29,17 @@
   }
 
   @Override
-  public void accept(
-      Consumer<StartupClass> classConsumer,
-      Consumer<StartupMethod> methodConsumer,
-      Consumer<SyntheticStartupMethod> syntheticMethodConsumer) {
+  public void accept(Consumer<StartupClass> classConsumer, Consumer<StartupMethod> methodConsumer) {
     methodConsumer.accept(this);
   }
 
   @Override
   public <T> T apply(
-      Function<StartupClass, T> classFunction,
-      Function<StartupMethod, T> methodFunction,
-      Function<SyntheticStartupMethod, T> syntheticMethodFunction) {
+      Function<StartupClass, T> classFunction, Function<StartupMethod, T> methodFunction) {
     return methodFunction.apply(this);
   }
 
+  @Override
   public DexMethod getReference() {
     return method;
   }
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupProfile.java b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupProfile.java
index 3a63098..f2f66a2 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupProfile.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupProfile.java
@@ -8,14 +8,12 @@
 import com.android.tools.r8.graph.DexDefinitionSupplier;
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.profile.art.ArtProfileBuilderUtils;
-import com.android.tools.r8.profile.art.ArtProfileBuilderUtils.SyntheticToSyntheticContextGeneralization;
 import com.android.tools.r8.profile.art.HumanReadableArtProfileParser;
 import com.android.tools.r8.profile.art.HumanReadableArtProfileParserBuilder;
 import com.android.tools.r8.startup.StartupClassBuilder;
 import com.android.tools.r8.startup.StartupMethodBuilder;
 import com.android.tools.r8.startup.StartupProfileBuilder;
 import com.android.tools.r8.startup.StartupProfileProvider;
-import com.android.tools.r8.startup.SyntheticStartupMethodBuilder;
 import com.android.tools.r8.startup.diagnostic.MissingStartupProfileItemsDiagnostic;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.Reporter;
@@ -36,13 +34,8 @@
   public static Builder builder(
       InternalOptions options,
       MissingStartupProfileItemsDiagnostic.Builder missingItemsDiagnosticBuilder,
-      StartupProfileProvider startupProfileProvider,
-      SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization) {
-    return new Builder(
-        options,
-        missingItemsDiagnosticBuilder,
-        startupProfileProvider,
-        syntheticToSyntheticContextGeneralization);
+      StartupProfileProvider startupProfileProvider) {
+    return new Builder(options, missingItemsDiagnosticBuilder, startupProfileProvider);
   }
 
   public static StartupProfile merge(Collection<StartupProfile> startupProfiles) {
@@ -69,9 +62,7 @@
    * </pre>
    */
   public static StartupProfile parseStartupProfile(
-      InternalOptions options,
-      DexDefinitionSupplier definitions,
-      SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization) {
+      InternalOptions options, DexDefinitionSupplier definitions) {
     if (!options.getStartupOptions().hasStartupProfileProviders()) {
       return null;
     }
@@ -83,11 +74,7 @@
           new MissingStartupProfileItemsDiagnostic.Builder(definitions)
               .setOrigin(startupProfileProvider.getOrigin());
       StartupProfile.Builder startupProfileBuilder =
-          StartupProfile.builder(
-              options,
-              missingItemsDiagnosticBuilder,
-              startupProfileProvider,
-              syntheticToSyntheticContextGeneralization);
+          StartupProfile.builder(options, missingItemsDiagnosticBuilder, startupProfileProvider);
       startupProfileProvider.getStartupProfile(startupProfileBuilder);
       startupProfiles.add(startupProfileBuilder.build());
       if (missingItemsDiagnosticBuilder.hasMissingStartupItems()) {
@@ -101,27 +88,27 @@
     return startupItems;
   }
 
+  public int size() {
+    return startupItems.size();
+  }
+
   public static class Builder implements StartupProfileBuilder {
 
     private final DexItemFactory dexItemFactory;
     private final MissingStartupProfileItemsDiagnostic.Builder missingItemsDiagnosticBuilder;
     private Reporter reporter;
     private final StartupProfileProvider startupProfileProvider;
-    private final SyntheticToSyntheticContextGeneralization
-        syntheticToSyntheticContextGeneralization;
 
     private final LinkedHashSet<StartupItem> startupItems = new LinkedHashSet<>();
 
     Builder(
         InternalOptions options,
         MissingStartupProfileItemsDiagnostic.Builder missingItemsDiagnosticBuilder,
-        StartupProfileProvider startupProfileProvider,
-        SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization) {
+        StartupProfileProvider startupProfileProvider) {
       this.dexItemFactory = options.dexItemFactory();
       this.missingItemsDiagnosticBuilder = missingItemsDiagnosticBuilder;
       this.reporter = options.reporter;
       this.startupProfileProvider = startupProfileProvider;
-      this.syntheticToSyntheticContextGeneralization = syntheticToSyntheticContextGeneralization;
     }
 
     @Override
@@ -147,19 +134,6 @@
     }
 
     @Override
-    public StartupProfileBuilder addSyntheticStartupMethod(
-        Consumer<SyntheticStartupMethodBuilder> syntheticStartupMethodBuilderConsumer) {
-      SyntheticStartupMethod.Builder syntheticStartupMethodBuilder =
-          SyntheticStartupMethod.builder(dexItemFactory);
-      syntheticStartupMethodBuilderConsumer.accept(syntheticStartupMethodBuilder);
-      SyntheticStartupMethod syntheticStartupMethod = syntheticStartupMethodBuilder.build();
-      if (missingItemsDiagnosticBuilder.registerSyntheticStartupMethod(syntheticStartupMethod)) {
-        return this;
-      }
-      return addStartupItem(syntheticStartupMethod);
-    }
-
-    @Override
     public StartupProfileBuilder addHumanReadableArtProfile(
         TextInputStream textInputStream,
         Consumer<HumanReadableArtProfileParserBuilder> parserBuilderConsumer) {
@@ -168,7 +142,7 @@
               .setReporter(reporter)
               .setProfileBuilder(
                   ArtProfileBuilderUtils.createBuilderForArtProfileToStartupProfileConversion(
-                      this, syntheticToSyntheticContextGeneralization));
+                      this));
       parserBuilderConsumer.accept(parserBuilder);
       HumanReadableArtProfileParser parser = parserBuilder.build();
       parser.parse(textInputStream, startupProfileProvider.getOrigin());
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/profile/SyntheticStartupMethod.java b/src/main/java/com/android/tools/r8/experimental/startup/profile/SyntheticStartupMethod.java
deleted file mode 100644
index c68a198..0000000
--- a/src/main/java/com/android/tools/r8/experimental/startup/profile/SyntheticStartupMethod.java
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.experimental.startup.profile;
-
-import com.android.tools.r8.graph.DexItemFactory;
-import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.references.ClassReference;
-import com.android.tools.r8.startup.SyntheticStartupMethodBuilder;
-import com.android.tools.r8.utils.ClassReferenceUtils;
-import java.util.function.Consumer;
-import java.util.function.Function;
-
-public class SyntheticStartupMethod extends StartupItem {
-
-  private final DexType syntheticContextType;
-
-  SyntheticStartupMethod(DexType syntheticContextType) {
-    this.syntheticContextType = syntheticContextType;
-  }
-
-  public static Builder builder() {
-    return new Builder();
-  }
-
-  public static Builder builder(DexItemFactory dexItemFactory) {
-    return new Builder(dexItemFactory);
-  }
-
-  @Override
-  public void accept(
-      Consumer<StartupClass> classConsumer,
-      Consumer<StartupMethod> methodConsumer,
-      Consumer<SyntheticStartupMethod> syntheticMethodConsumer) {
-    syntheticMethodConsumer.accept(this);
-  }
-
-  @Override
-  public <T> T apply(
-      Function<StartupClass, T> classFunction,
-      Function<StartupMethod, T> methodFunction,
-      Function<SyntheticStartupMethod, T> syntheticMethodFunction) {
-    return syntheticMethodFunction.apply(this);
-  }
-
-  public DexType getSyntheticContextType() {
-    return syntheticContextType;
-  }
-
-  @Override
-  public boolean isSyntheticStartupMethod() {
-    return true;
-  }
-
-  @Override
-  public SyntheticStartupMethod asSyntheticStartupMethod() {
-    return this;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    SyntheticStartupMethod that = (SyntheticStartupMethod) o;
-    return syntheticContextType == that.syntheticContextType;
-  }
-
-  @Override
-  public int hashCode() {
-    return syntheticContextType.hashCode();
-  }
-
-  @Override
-  public String serializeToString() {
-    return 'S' + syntheticContextType.toDescriptorString();
-  }
-
-  public static class Builder implements SyntheticStartupMethodBuilder {
-
-    private final DexItemFactory dexItemFactory;
-
-    private DexType syntheticContextReference;
-
-    Builder() {
-      this(null);
-    }
-
-    Builder(DexItemFactory dexItemFactory) {
-      this.dexItemFactory = dexItemFactory;
-    }
-
-    @Override
-    public Builder setSyntheticContextReference(ClassReference syntheticContextReference) {
-      assert dexItemFactory != null;
-      return setSyntheticContextReference(
-          ClassReferenceUtils.toDexType(syntheticContextReference, dexItemFactory));
-    }
-
-    public Builder setSyntheticContextReference(DexType syntheticContextReference) {
-      this.syntheticContextReference = syntheticContextReference;
-      return this;
-    }
-
-    public SyntheticStartupMethod build() {
-      return new SyntheticStartupMethod(syntheticContextReference);
-    }
-  }
-}
diff --git a/src/main/java/com/android/tools/r8/features/ClassToFeatureSplitMap.java b/src/main/java/com/android/tools/r8/features/ClassToFeatureSplitMap.java
index 84c8a96..cb6c4ac 100644
--- a/src/main/java/com/android/tools/r8/features/ClassToFeatureSplitMap.java
+++ b/src/main/java/com/android/tools/r8/features/ClassToFeatureSplitMap.java
@@ -175,7 +175,7 @@
       feature = classToFeatureSplitMap.getOrDefault(type, FeatureSplit.BASE);
     }
     if (feature.isBase()) {
-      return !startupOrder.contains(type, syntheticItems)
+      return !startupOrder.contains(type)
               || options.getStartupOptions().isStartupBoundaryOptimizationsEnabled()
           ? FeatureSplit.BASE
           : FeatureSplit.BASE_STARTUP;
diff --git a/src/main/java/com/android/tools/r8/features/FeatureSplitBoundaryOptimizationUtils.java b/src/main/java/com/android/tools/r8/features/FeatureSplitBoundaryOptimizationUtils.java
index 68cf4a9..d88be72 100644
--- a/src/main/java/com/android/tools/r8/features/FeatureSplitBoundaryOptimizationUtils.java
+++ b/src/main/java/com/android/tools/r8/features/FeatureSplitBoundaryOptimizationUtils.java
@@ -67,33 +67,31 @@
 
     // Next perform startup checks.
     StartupOrder startupOrder = appView.getStartupOrder();
-    SyntheticItems syntheticItems = appView.getSyntheticItems();
-    OptionalBool callerIsStartupMethod = isStartupMethod(caller, startupOrder, syntheticItems);
+    OptionalBool callerIsStartupMethod = isStartupMethod(caller, startupOrder);
     if (callerIsStartupMethod.isTrue()) {
       // If the caller is a startup method, then only allow inlining if the callee is also a startup
       // method.
-      if (isStartupMethod(callee, startupOrder, syntheticItems).isFalse()) {
+      if (isStartupMethod(callee, startupOrder).isFalse()) {
         return false;
       }
     } else if (callerIsStartupMethod.isFalse()) {
       // If the caller is not a startup method, then only allow inlining if the caller is not a
       // startup class or the callee is a startup class.
-      if (startupOrder.contains(caller.getHolderType(), syntheticItems)
-          && !startupOrder.contains(callee.getHolderType(), syntheticItems)) {
+      if (startupOrder.contains(caller.getHolderType())
+          && !startupOrder.contains(callee.getHolderType())) {
         return false;
       }
     }
     return true;
   }
 
-  private static OptionalBool isStartupMethod(
-      ProgramMethod method, StartupOrder startupOrder, SyntheticItems syntheticItems) {
+  private static OptionalBool isStartupMethod(ProgramMethod method, StartupOrder startupOrder) {
     if (method.getDefinition().isD8R8Synthesized()) {
       // Due to inadequate rewriting of the startup list during desugaring, we do not give an
       // accurate result in this case.
       return OptionalBool.unknown();
     }
-    return OptionalBool.of(startupOrder.contains(method.getReference(), syntheticItems));
+    return OptionalBool.of(startupOrder.contains(method.getReference()));
   }
 
   public static boolean isSafeForVerticalClassMerging(
@@ -116,9 +114,8 @@
     // If the source class is a startup class then require that the target class is also a startup
     // class.
     StartupOrder startupOrder = appView.getStartupOrder();
-    SyntheticItems syntheticItems = appView.getSyntheticItems();
-    if (startupOrder.contains(sourceClass.getType(), syntheticItems)
-        && !startupOrder.contains(targetClass.getType(), syntheticItems)) {
+    if (startupOrder.contains(sourceClass.getType())
+        && !startupOrder.contains(targetClass.getType())) {
       return false;
     }
     return true;
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileBuilderUtils.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileBuilderUtils.java
index 77d0005..bbfe13e 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileBuilderUtils.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileBuilderUtils.java
@@ -4,14 +4,11 @@
 
 package com.android.tools.r8.profile.art;
 
-import static com.android.tools.r8.synthesis.SyntheticNaming.COMPANION_CLASS_SUFFIX;
-import static com.android.tools.r8.synthesis.SyntheticNaming.EXTERNAL_SYNTHETIC_CLASS_SEPARATOR;
 
 import com.android.tools.r8.TextInputStream;
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.references.ClassReference;
 import com.android.tools.r8.references.MethodReference;
-import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.startup.StartupProfileBuilder;
 import com.android.tools.r8.utils.MethodReferenceUtils;
 import java.io.IOException;
@@ -20,60 +17,12 @@
 
 public class ArtProfileBuilderUtils {
 
-  public interface SyntheticToSyntheticContextGeneralization {
-
-    ClassReference getSyntheticContextReference(ClassReference classReference);
-
-    /**
-     * When a startup profile is given to D8, the program input should be dex and the startup
-     * profile should have been generated by launching the dex that is given on input. Therefore,
-     * synthetic items in the ART profile should be present in the program input to D8 with the
-     * exact same synthetic names as in the ART profile. This means that there is no need to
-     * generalize synthetic items to their synthetic context.
-     */
-    static SyntheticToSyntheticContextGeneralization createForD8() {
-      return classReference -> null;
-    }
-
-    /**
-     * When a startup profile is given to R8, the program input is class files and the startup
-     * profile should have been generated by dexing the program input (in release and intermediate
-     * mode) and then launching the resulting app. The synthetic items in the resulting ART profile
-     * do not exist in the program input to R8 (and the same synthetics may receive different names
-     * in the R8 compilation). Therefore, synthetic items in the ART profile are generalized into
-     * matching all synthetics from their synthetic context.
-     */
-    static SyntheticToSyntheticContextGeneralization createForR8() {
-      return classReference -> {
-        // TODO(b/243777722): Move this logic into synthetic items and extend the mapping from
-        //  synthetic classes to their synthetic context to all synthetic kinds.
-        String classDescriptor = classReference.getDescriptor();
-        for (int i = 1; i < classDescriptor.length() - 1; i++) {
-          if (classDescriptor.charAt(i) != '$') {
-            continue;
-          }
-          if (classDescriptor.regionMatches(
-                  i, COMPANION_CLASS_SUFFIX, 0, COMPANION_CLASS_SUFFIX.length())
-              || classDescriptor.regionMatches(
-                  i,
-                  EXTERNAL_SYNTHETIC_CLASS_SEPARATOR,
-                  0,
-                  EXTERNAL_SYNTHETIC_CLASS_SEPARATOR.length())) {
-            return Reference.classFromDescriptor(classDescriptor.substring(0, i) + ";");
-          }
-        }
-        return null;
-      };
-    }
-  }
-
   /**
    * Helper for creating an {@link ArtProfileBuilder} that performs callbacks on the given {@param
    * startupProfileBuilder}.
    */
   public static ArtProfileBuilder createBuilderForArtProfileToStartupProfileConversion(
-      StartupProfileBuilder startupProfileBuilder,
-      SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization) {
+      StartupProfileBuilder startupProfileBuilder) {
     return new ArtProfileBuilder() {
 
       @Override
@@ -81,19 +30,9 @@
           Consumer<ArtProfileClassRuleBuilder> classRuleBuilderConsumer) {
         MutableArtProfileClassRule classRule = new MutableArtProfileClassRule();
         classRuleBuilderConsumer.accept(classRule);
-        ClassReference syntheticContextReference =
-            syntheticToSyntheticContextGeneralization.getSyntheticContextReference(
-                classRule.getClassReference());
-        if (syntheticContextReference == null) {
-          startupProfileBuilder.addStartupClass(
-              startupClassBuilder ->
-                  startupClassBuilder.setClassReference(classRule.getClassReference()));
-        } else {
-          startupProfileBuilder.addSyntheticStartupMethod(
-              syntheticStartupMethodBuilder ->
-                  syntheticStartupMethodBuilder.setSyntheticContextReference(
-                      syntheticContextReference));
-        }
+        startupProfileBuilder.addStartupClass(
+            startupClassBuilder ->
+                startupClassBuilder.setClassReference(classRule.getClassReference()));
         return this;
       }
 
@@ -102,19 +41,9 @@
           Consumer<ArtProfileMethodRuleBuilder> methodRuleBuilderConsumer) {
         MutableArtProfileMethodRule methodRule = new MutableArtProfileMethodRule();
         methodRuleBuilderConsumer.accept(methodRule);
-        ClassReference syntheticContextReference =
-            syntheticToSyntheticContextGeneralization.getSyntheticContextReference(
-                methodRule.getMethodReference().getHolderClass());
-        if (syntheticContextReference == null) {
-          startupProfileBuilder.addStartupMethod(
-              startupMethodBuilder ->
-                  startupMethodBuilder.setMethodReference(methodRule.getMethodReference()));
-        } else {
-          startupProfileBuilder.addSyntheticStartupMethod(
-              syntheticStartupMethodBuilder ->
-                  syntheticStartupMethodBuilder.setSyntheticContextReference(
-                      syntheticContextReference));
-        }
+        startupProfileBuilder.addStartupMethod(
+            startupMethodBuilder ->
+                startupMethodBuilder.setMethodReference(methodRule.getMethodReference()));
         return this;
       }
 
diff --git a/src/main/java/com/android/tools/r8/startup/StartupProfileBuilder.java b/src/main/java/com/android/tools/r8/startup/StartupProfileBuilder.java
index 47916c1..3ee53c7 100644
--- a/src/main/java/com/android/tools/r8/startup/StartupProfileBuilder.java
+++ b/src/main/java/com/android/tools/r8/startup/StartupProfileBuilder.java
@@ -21,29 +21,6 @@
       Consumer<StartupMethodBuilder> startupMethodBuilderConsumer);
 
   /**
-   * API for adding information about a synthetic startup method to the compiler.
-   *
-   * <p>When shrinking an app using R8, the names of synthetic classes may differ from the synthetic
-   * names that arise from dexing the app using D8. Therefore, synthetic classes and methods should
-   * not be added to the startup profile using {@link #addStartupClass(Consumer)} and {@link
-   * #addStartupMethod(Consumer)}.
-   *
-   * <p>Instead, synthetic items should be added to the startup profile using this method, which
-   * takes the name of the synthetic context instead of the synthetic name. The addition of the
-   * synthetic context will be interpreted as the presence of any method on any synthetic class that
-   * has been synthesized from the synthetic context.
-   *
-   * <p>Example: Instead of adding "Lcom/example/MainActivity$ExternalSynthetic0;->m()V" as a
-   * (non-synthetic) startup method, a synthetic startup method should be added with synthetic
-   * context "Lcom/example/MainActivity;".
-   *
-   * <p>NOTE: This should only be used when supplying a startup profile that is generated from an
-   * unobfuscated build of the app to R8.
-   */
-  StartupProfileBuilder addSyntheticStartupMethod(
-      Consumer<SyntheticStartupMethodBuilder> syntheticStartupMethodBuilderConsumer);
-
-  /**
    * Adds the rules from the given human-readable ART profile to the startup profile and then closes
    * the stream.
    *
diff --git a/src/main/java/com/android/tools/r8/startup/SyntheticStartupMethodBuilder.java b/src/main/java/com/android/tools/r8/startup/SyntheticStartupMethodBuilder.java
deleted file mode 100644
index 281bac7..0000000
--- a/src/main/java/com/android/tools/r8/startup/SyntheticStartupMethodBuilder.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.startup;
-
-import com.android.tools.r8.Keep;
-import com.android.tools.r8.references.ClassReference;
-
-/** Interface for providing information about a synthetic startup method to the compiler. */
-@Keep
-public interface SyntheticStartupMethodBuilder {
-
-  SyntheticStartupMethodBuilder setSyntheticContextReference(ClassReference classReference);
-}
diff --git a/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java b/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java
index 6fa28ea..272684d 100644
--- a/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java
@@ -8,7 +8,6 @@
 import com.android.tools.r8.Keep;
 import com.android.tools.r8.experimental.startup.profile.StartupClass;
 import com.android.tools.r8.experimental.startup.profile.StartupMethod;
-import com.android.tools.r8.experimental.startup.profile.SyntheticStartupMethod;
 import com.android.tools.r8.graph.DexDefinitionSupplier;
 import com.android.tools.r8.graph.DexReference;
 import com.android.tools.r8.graph.DexString;
@@ -102,15 +101,6 @@
       return false;
     }
 
-    public boolean registerSyntheticStartupMethod(SyntheticStartupMethod syntheticStartupMethod) {
-      if (definitions != null
-          && !definitions.hasDefinitionFor(syntheticStartupMethod.getSyntheticContextType())) {
-        addMissingStartupItem(syntheticStartupMethod.getSyntheticContextType());
-        return true;
-      }
-      return false;
-    }
-
     private void addMissingStartupItem(DexReference reference) {
       DexString jDollarDescriptorPrefix = definitions.dexItemFactory().jDollarDescriptorPrefix;
       if (!reference.getContextType().getDescriptor().startsWith(jDollarDescriptorPrefix)) {
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
index 4b0c8ea..4ec6686 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
@@ -539,22 +539,6 @@
     return oracle.getSynthesizingContexts(clazz);
   }
 
-  public Map<DexType, List<DexProgramClass>> computeSyntheticContextsToSyntheticClasses(
-      AppView<?> appView) {
-    Map<DexType, List<DexProgramClass>> syntheticContextsToSyntheticClasses =
-        new IdentityHashMap<>();
-    for (DexProgramClass clazz : appView.appInfo().classes()) {
-      if (isSyntheticClass(clazz)) {
-        for (DexType synthesizingContextType : getSynthesizingContextTypes(clazz.getType())) {
-          syntheticContextsToSyntheticClasses
-              .computeIfAbsent(synthesizingContextType, ignoreKey -> new ArrayList<>())
-              .add(clazz);
-        }
-      }
-    }
-    return syntheticContextsToSyntheticClasses;
-  }
-
   public Collection<Origin> getSynthesizingOrigin(DexType type) {
     if (!isSynthetic(type)) {
       return Collections.emptyList();
diff --git a/src/main/java/com/android/tools/r8/utils/CompileDumpUtils.java b/src/main/java/com/android/tools/r8/utils/CompileDumpUtils.java
index f0275f5..4356671 100644
--- a/src/main/java/com/android/tools/r8/utils/CompileDumpUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/CompileDumpUtils.java
@@ -43,26 +43,16 @@
           try (BufferedReader bufferedReader = Files.newBufferedReader(path)) {
             while (bufferedReader.ready()) {
               String rule = bufferedReader.readLine();
-              if (rule.charAt(0) == 'S') {
-                String classDescriptor = rule.substring(1);
-                assert DescriptorUtils.isClassDescriptor(classDescriptor);
-                startupProfileBuilder.addSyntheticStartupMethod(
-                    syntheticStartupMethodBuilder ->
-                        syntheticStartupMethodBuilder.setSyntheticContextReference(
-                            Reference.classFromDescriptor(classDescriptor)));
+              MethodReference methodReference = MethodReferenceUtils.parseSmaliString(rule);
+              if (methodReference != null) {
+                startupProfileBuilder.addStartupMethod(
+                    startupMethodBuilder ->
+                        startupMethodBuilder.setMethodReference(methodReference));
               } else {
-                MethodReference methodReference = MethodReferenceUtils.parseSmaliString(rule);
-                if (methodReference != null) {
-                  startupProfileBuilder.addStartupMethod(
-                      startupMethodBuilder ->
-                          startupMethodBuilder.setMethodReference(methodReference));
-                } else {
-                  assert DescriptorUtils.isClassDescriptor(rule);
-                  startupProfileBuilder.addStartupClass(
-                      startupClassBuilder ->
-                          startupClassBuilder.setClassReference(
-                              Reference.classFromDescriptor(rule)));
-                }
+                assert DescriptorUtils.isClassDescriptor(rule);
+                startupProfileBuilder.addStartupClass(
+                    startupClassBuilder ->
+                        startupClassBuilder.setClassReference(Reference.classFromDescriptor(rule)));
               }
             }
           }
diff --git a/src/test/java/com/android/tools/r8/D8CommandTest.java b/src/test/java/com/android/tools/r8/D8CommandTest.java
index 487451f..2eda6e7 100644
--- a/src/test/java/com/android/tools/r8/D8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/D8CommandTest.java
@@ -26,7 +26,6 @@
 import com.android.tools.r8.experimental.startup.profile.StartupProfile;
 import com.android.tools.r8.origin.EmbeddedOrigin;
 import com.android.tools.r8.origin.Origin;
-import com.android.tools.r8.profile.art.ArtProfileBuilderUtils.SyntheticToSyntheticContextGeneralization;
 import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.startup.StartupProfileProvider;
 import com.android.tools.r8.startup.diagnostic.MissingStartupProfileItemsDiagnostic;
@@ -807,14 +806,9 @@
     MissingStartupProfileItemsDiagnostic.Builder missingStartupProfileItemsDiagnosticBuilder =
         MissingStartupProfileItemsDiagnostic.Builder.nop();
     StartupProfileProvider startupProfileProvider = startupProfileProviders.get(0);
-    SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization =
-        SyntheticToSyntheticContextGeneralization.createForD8();
     StartupProfile.Builder startupProfileBuilder =
         StartupProfile.builder(
-            options,
-            missingStartupProfileItemsDiagnosticBuilder,
-            startupProfileProvider,
-            syntheticToSyntheticContextGeneralization);
+            options, missingStartupProfileItemsDiagnosticBuilder, startupProfileProvider);
     startupProfileProvider.getStartupProfile(startupProfileBuilder);
 
     // Verify we found the same rule.
diff --git a/src/test/java/com/android/tools/r8/startup/MinimalStartupDexTest.java b/src/test/java/com/android/tools/r8/startup/MinimalStartupDexTest.java
index fa1dd30..53c02be 100644
--- a/src/test/java/com/android/tools/r8/startup/MinimalStartupDexTest.java
+++ b/src/test/java/com/android/tools/r8/startup/MinimalStartupDexTest.java
@@ -12,7 +12,6 @@
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.profile.art.ArtProfileBuilderUtils.SyntheticToSyntheticContextGeneralization;
 import com.android.tools.r8.startup.profile.ExternalStartupItem;
 import com.android.tools.r8.startup.utils.StartupTestingUtils;
 import com.android.tools.r8.utils.AndroidApiLevel;
@@ -55,9 +54,7 @@
         .compile()
         .addRunClasspathFiles(StartupTestingUtils.getAndroidUtilLog(temp))
         .run(parameters.getRuntime(), Main.class)
-        .apply(
-            StartupTestingUtils.removeStartupListFromStdout(
-                startupList::add, SyntheticToSyntheticContextGeneralization.createForR8()))
+        .apply(StartupTestingUtils.removeStartupListFromStdout(startupList::add))
         .assertSuccessWithOutputLines(getExpectedOutput());
 
     testForR8(parameters.getBackend())
diff --git a/src/test/java/com/android/tools/r8/startup/StartupInstrumentationTest.java b/src/test/java/com/android/tools/r8/startup/StartupInstrumentationTest.java
index 8399d05..d53257c 100644
--- a/src/test/java/com/android/tools/r8/startup/StartupInstrumentationTest.java
+++ b/src/test/java/com/android/tools/r8/startup/StartupInstrumentationTest.java
@@ -9,7 +9,6 @@
 import com.android.tools.r8.NeverInline;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.profile.art.ArtProfileBuilderUtils.SyntheticToSyntheticContextGeneralization;
 import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.startup.profile.ExternalStartupClass;
 import com.android.tools.r8.startup.profile.ExternalStartupItem;
@@ -50,8 +49,6 @@
   public void test() throws Exception {
     Path out = temp.newFolder().toPath().resolve("out.txt").toAbsolutePath();
     Set<ExternalStartupItem> startupList = new LinkedHashSet<>();
-    SyntheticToSyntheticContextGeneralization syntheticGeneralization =
-        SyntheticToSyntheticContextGeneralization.createForD8();
     testForD8(parameters.getBackend())
         .addInnerClasses(getClass())
         .applyIf(
@@ -68,11 +65,8 @@
         .run(parameters.getRuntime(), Main.class, Boolean.toString(logcat), out.toString())
         .applyIf(
             logcat,
-            StartupTestingUtils.removeStartupListFromStdout(
-                startupList::add, syntheticGeneralization),
-            runResult ->
-                StartupTestingUtils.readStartupListFromFile(
-                    out, startupList::add, syntheticGeneralization))
+            StartupTestingUtils.removeStartupListFromStdout(startupList::add),
+            runResult -> StartupTestingUtils.readStartupListFromFile(out, startupList::add))
         .assertSuccessWithOutputLines(getExpectedOutput());
     assertEquals(getExpectedStartupList(), startupList);
   }
diff --git a/src/test/java/com/android/tools/r8/startup/StartupSyntheticPlacementTest.java b/src/test/java/com/android/tools/r8/startup/StartupSyntheticPlacementTest.java
index 742361e..703c916 100644
--- a/src/test/java/com/android/tools/r8/startup/StartupSyntheticPlacementTest.java
+++ b/src/test/java/com/android/tools/r8/startup/StartupSyntheticPlacementTest.java
@@ -18,13 +18,11 @@
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.ir.desugar.LambdaClass;
-import com.android.tools.r8.profile.art.ArtProfileBuilderUtils.SyntheticToSyntheticContextGeneralization;
 import com.android.tools.r8.references.ClassReference;
 import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.startup.profile.ExternalStartupClass;
 import com.android.tools.r8.startup.profile.ExternalStartupItem;
 import com.android.tools.r8.startup.profile.ExternalStartupMethod;
-import com.android.tools.r8.startup.profile.ExternalSyntheticStartupMethod;
 import com.android.tools.r8.startup.utils.MixedSectionLayoutInspector;
 import com.android.tools.r8.startup.utils.StartupTestingUtils;
 import com.android.tools.r8.synthesis.SyntheticItemsTestUtils;
@@ -42,6 +40,7 @@
 import java.util.List;
 import java.util.Set;
 import java.util.function.Consumer;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -103,9 +102,7 @@
         .compile()
         .addRunClasspathFiles(StartupTestingUtils.getAndroidUtilLog(temp))
         .run(parameters.getRuntime(), Main.class, Boolean.toString(useLambda))
-        .apply(
-            StartupTestingUtils.removeStartupListFromStdout(
-                startupList::add, SyntheticToSyntheticContextGeneralization.createForD8()))
+        .apply(StartupTestingUtils.removeStartupListFromStdout(startupList::add))
         .assertSuccessWithOutputLines(getExpectedOutput())
         .apply(
             runResult ->
@@ -127,6 +124,8 @@
         .assertSuccessWithOutputLines(getExpectedOutput());
   }
 
+  // TODO(b/271822426): Reenable test.
+  @Ignore("b/271822426")
   @Test
   public void testLayoutUsingR8() throws Exception {
     // First generate a startup list for the original app.
@@ -144,9 +143,7 @@
     instrumentationCompileResult
         .addRunClasspathFiles(StartupTestingUtils.getAndroidUtilLog(temp))
         .run(parameters.getRuntime(), Main.class, Boolean.toString(useLambda))
-        .apply(
-            StartupTestingUtils.removeStartupListFromStdout(
-                startupList::add, SyntheticToSyntheticContextGeneralization.createForR8()))
+        .apply(StartupTestingUtils.removeStartupListFromStdout(startupList::add))
         .assertSuccessWithOutputLines(getExpectedOutput())
         .apply(
             runResult ->
@@ -216,10 +213,11 @@
             .build());
     if (useLambda) {
       if (isStartupListForOriginalApp) {
-        builder.add(
-            ExternalSyntheticStartupMethod.builder()
-                .setSyntheticContextReference(Reference.classFromClass(B.class))
-                .build());
+        // TODO(b/271822426): Update after rewriting startup profile.
+        /*builder.add(
+        ExternalSyntheticStartupMethod.builder()
+            .setSyntheticContextReference(Reference.classFromClass(B.class))
+            .build());*/
       } else {
         ClassSubject bClassSubject = inspector.clazz(B.class);
 
diff --git a/src/test/java/com/android/tools/r8/startup/StartupSyntheticWithoutContextTest.java b/src/test/java/com/android/tools/r8/startup/StartupSyntheticWithoutContextTest.java
index 815b50d..9bde49b 100644
--- a/src/test/java/com/android/tools/r8/startup/StartupSyntheticWithoutContextTest.java
+++ b/src/test/java/com/android/tools/r8/startup/StartupSyntheticWithoutContextTest.java
@@ -15,13 +15,11 @@
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.graph.DexProgramClass;
-import com.android.tools.r8.profile.art.ArtProfileBuilderUtils.SyntheticToSyntheticContextGeneralization;
 import com.android.tools.r8.references.ClassReference;
 import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.startup.profile.ExternalStartupClass;
 import com.android.tools.r8.startup.profile.ExternalStartupItem;
 import com.android.tools.r8.startup.profile.ExternalStartupMethod;
-import com.android.tools.r8.startup.profile.ExternalSyntheticStartupMethod;
 import com.android.tools.r8.startup.utils.MixedSectionLayoutInspector;
 import com.android.tools.r8.startup.utils.StartupTestingUtils;
 import com.android.tools.r8.synthesis.SyntheticItemsTestUtils;
@@ -35,6 +33,7 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -62,6 +61,8 @@
         BooleanUtils.values());
   }
 
+  // TODO(b/271822426): Reenable test.
+  @Ignore("b/271822426")
   @Test
   public void test() throws Exception {
     LinkedHashSet<ExternalStartupItem> startupList = new LinkedHashSet<>();
@@ -74,9 +75,7 @@
         .compile()
         .addRunClasspathFiles(StartupTestingUtils.getAndroidUtilLog(temp))
         .run(parameters.getRuntime(), Main.class)
-        .apply(
-            StartupTestingUtils.removeStartupListFromStdout(
-                startupList::add, SyntheticToSyntheticContextGeneralization.createForR8()))
+        .apply(StartupTestingUtils.removeStartupListFromStdout(startupList::add))
         .assertSuccessWithOutputLines(getExpectedOutput());
     assertEquals(getExpectedStartupList(), startupList);
 
@@ -122,9 +121,10 @@
         ExternalStartupMethod.builder()
             .setMethodReference(Reference.methodFromMethod(B.class.getDeclaredMethod("b")))
             .build(),
-        ExternalSyntheticStartupMethod.builder()
-            .setSyntheticContextReference(Reference.classFromClass(B.class))
-            .build(),
+        // TODO(b/271822426): Update after rewriting startup profile.
+        /*ExternalSyntheticStartupMethod.builder()
+        .setSyntheticContextReference(Reference.classFromClass(B.class))
+        .build(),*/
         ExternalStartupMethod.builder()
             .setMethodReference(Reference.methodFromMethod(B.class.getDeclaredMethod("lambda$b$0")))
             .build(),
diff --git a/src/test/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnosticTest.java b/src/test/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnosticTest.java
index d9ed155..c7c5eef 100644
--- a/src/test/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnosticTest.java
+++ b/src/test/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnosticTest.java
@@ -23,6 +23,7 @@
 import com.android.tools.r8.utils.StringUtils;
 import java.util.Collection;
 import java.util.Collections;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -40,6 +41,8 @@
     return getTestParameters().withNoneRuntime().build();
   }
 
+  // TODO(b/271822426): Reenable test.
+  @Ignore("b/271822426")
   @Test
   public void testD8() throws Exception {
     testForD8(Backend.DEX)
@@ -50,6 +53,8 @@
         .compileWithExpectedDiagnostics(this::inspectDiagnostics);
   }
 
+  // TODO(b/271822426): Reenable test.
+  @Ignore("b/271822426")
   @Test
   public void testR8() throws Exception {
     testForR8(Backend.DEX)
@@ -77,10 +82,11 @@
                     startupMethodBuilder ->
                         startupMethodBuilder.setMethodReference(
                             MethodReferenceUtils.mainMethod(barClassReference)))
-                .addSyntheticStartupMethod(
-                    syntheticStartupMethodBuilder ->
-                        syntheticStartupMethodBuilder.setSyntheticContextReference(
-                            bazClassReference))
+                // TODO(b/271822426): Update after rewriting startup profile.
+                /*.addSyntheticStartupMethod(
+                syntheticStartupMethodBuilder ->
+                    syntheticStartupMethodBuilder.setSyntheticContextReference(
+                        bazClassReference))*/
                 .addStartupClass(
                     startupClassBuilder ->
                         startupClassBuilder.setClassReference(jDollarClassReference));
diff --git a/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupClass.java b/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupClass.java
index 4eee018..1bcbb45 100644
--- a/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupClass.java
+++ b/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupClass.java
@@ -23,8 +23,7 @@
   @Override
   public <T> T apply(
       Function<ExternalStartupClass, T> classFunction,
-      Function<ExternalStartupMethod, T> methodFunction,
-      Function<ExternalSyntheticStartupMethod, T> syntheticMethodFunction) {
+      Function<ExternalStartupMethod, T> methodFunction) {
     return classFunction.apply(this);
   }
 
diff --git a/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupItem.java b/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupItem.java
index e3aa745..6009d74 100644
--- a/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupItem.java
+++ b/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupItem.java
@@ -10,6 +10,5 @@
 
   public abstract <T> T apply(
       Function<ExternalStartupClass, T> classFunction,
-      Function<ExternalStartupMethod, T> methodFunction,
-      Function<ExternalSyntheticStartupMethod, T> syntheticMethodFunction);
+      Function<ExternalStartupMethod, T> methodFunction);
 }
diff --git a/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupMethod.java b/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupMethod.java
index 109a028..55775ea 100644
--- a/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupMethod.java
+++ b/src/test/java/com/android/tools/r8/startup/profile/ExternalStartupMethod.java
@@ -24,8 +24,7 @@
   @Override
   public <T> T apply(
       Function<ExternalStartupClass, T> classFunction,
-      Function<ExternalStartupMethod, T> methodFunction,
-      Function<ExternalSyntheticStartupMethod, T> syntheticMethodFunction) {
+      Function<ExternalStartupMethod, T> methodFunction) {
     return methodFunction.apply(this);
   }
 
diff --git a/src/test/java/com/android/tools/r8/startup/profile/ExternalSyntheticStartupMethod.java b/src/test/java/com/android/tools/r8/startup/profile/ExternalSyntheticStartupMethod.java
deleted file mode 100644
index 6d07638..0000000
--- a/src/test/java/com/android/tools/r8/startup/profile/ExternalSyntheticStartupMethod.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.startup.profile;
-
-import com.android.tools.r8.references.ClassReference;
-import com.android.tools.r8.startup.SyntheticStartupMethodBuilder;
-import java.util.function.Function;
-
-public class ExternalSyntheticStartupMethod extends ExternalStartupItem {
-
-  private final ClassReference syntheticContextReference;
-
-  ExternalSyntheticStartupMethod(ClassReference syntheticContextReference) {
-    this.syntheticContextReference = syntheticContextReference;
-  }
-
-  public static Builder builder() {
-    return new Builder();
-  }
-
-  @Override
-  public <T> T apply(
-      Function<ExternalStartupClass, T> classFunction,
-      Function<ExternalStartupMethod, T> methodFunction,
-      Function<ExternalSyntheticStartupMethod, T> syntheticMethodFunction) {
-    return syntheticMethodFunction.apply(this);
-  }
-
-  public ClassReference getSyntheticContextReference() {
-    return syntheticContextReference;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    ExternalSyntheticStartupMethod that = (ExternalSyntheticStartupMethod) o;
-    return syntheticContextReference.equals(that.syntheticContextReference);
-  }
-
-  @Override
-  public int hashCode() {
-    return syntheticContextReference.hashCode();
-  }
-
-  @Override
-  public String toString() {
-    return "S(" + syntheticContextReference.getTypeName() + ")";
-  }
-
-  public static class Builder implements SyntheticStartupMethodBuilder {
-
-    private ClassReference syntheticContextReference;
-
-    @Override
-    public Builder setSyntheticContextReference(ClassReference syntheticContextReference) {
-      this.syntheticContextReference = syntheticContextReference;
-      return this;
-    }
-
-    public ExternalSyntheticStartupMethod build() {
-      return new ExternalSyntheticStartupMethod(syntheticContextReference);
-    }
-  }
-}
diff --git a/src/test/java/com/android/tools/r8/startup/utils/StartupTestingUtils.java b/src/test/java/com/android/tools/r8/startup/utils/StartupTestingUtils.java
index b6e08bf..93dc0a0 100644
--- a/src/test/java/com/android/tools/r8/startup/utils/StartupTestingUtils.java
+++ b/src/test/java/com/android/tools/r8/startup/utils/StartupTestingUtils.java
@@ -21,18 +21,15 @@
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.profile.art.ArtProfileBuilder;
 import com.android.tools.r8.profile.art.ArtProfileBuilderUtils;
-import com.android.tools.r8.profile.art.ArtProfileBuilderUtils.SyntheticToSyntheticContextGeneralization;
 import com.android.tools.r8.profile.art.HumanReadableArtProfileParser;
 import com.android.tools.r8.profile.art.HumanReadableArtProfileParserBuilder;
 import com.android.tools.r8.startup.StartupClassBuilder;
 import com.android.tools.r8.startup.StartupMethodBuilder;
 import com.android.tools.r8.startup.StartupProfileBuilder;
 import com.android.tools.r8.startup.StartupProfileProvider;
-import com.android.tools.r8.startup.SyntheticStartupMethodBuilder;
 import com.android.tools.r8.startup.profile.ExternalStartupClass;
 import com.android.tools.r8.startup.profile.ExternalStartupItem;
 import com.android.tools.r8.startup.profile.ExternalStartupMethod;
-import com.android.tools.r8.startup.profile.ExternalSyntheticStartupMethod;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.Reporter;
 import com.android.tools.r8.utils.StringUtils;
@@ -49,8 +46,7 @@
   private static String startupInstrumentationTag = "startup";
 
   private static ArtProfileBuilder createStartupItemFactory(
-      Consumer<ExternalStartupItem> startupItemConsumer,
-      SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization) {
+      Consumer<ExternalStartupItem> startupItemConsumer) {
     StartupProfileBuilder startupProfileBuilder =
         new StartupProfileBuilder() {
           @Override
@@ -72,16 +68,6 @@
           }
 
           @Override
-          public StartupProfileBuilder addSyntheticStartupMethod(
-              Consumer<SyntheticStartupMethodBuilder> syntheticStartupMethodBuilderConsumer) {
-            ExternalSyntheticStartupMethod.Builder syntheticStartupMethodBuilder =
-                ExternalSyntheticStartupMethod.builder();
-            syntheticStartupMethodBuilderConsumer.accept(syntheticStartupMethodBuilder);
-            startupItemConsumer.accept(syntheticStartupMethodBuilder.build());
-            return this;
-          }
-
-          @Override
           public StartupProfileBuilder addHumanReadableArtProfile(
               TextInputStream textInputStream,
               Consumer<HumanReadableArtProfileParserBuilder> parserBuilderConsumer) {
@@ -90,8 +76,7 @@
           }
         };
     return ArtProfileBuilderUtils.createBuilderForArtProfileToStartupProfileConversion(
-        startupProfileBuilder,
-        syntheticToSyntheticContextGeneralization);
+        startupProfileBuilder);
   }
 
   public static ThrowableConsumer<D8TestBuilder>
@@ -135,41 +120,29 @@
   }
 
   public static void readStartupListFromFile(
-      Path path,
-      Consumer<ExternalStartupItem> startupItemConsumer,
-      SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization)
-      throws IOException {
+      Path path, Consumer<ExternalStartupItem> startupItemConsumer) throws IOException {
     TestDiagnosticMessagesImpl diagnostics = new TestDiagnosticMessagesImpl();
     HumanReadableArtProfileParser parser =
         HumanReadableArtProfileParser.builder()
             .setReporter(new Reporter(diagnostics))
-            .setProfileBuilder(
-                createStartupItemFactory(
-                    startupItemConsumer, syntheticToSyntheticContextGeneralization))
+            .setProfileBuilder(createStartupItemFactory(startupItemConsumer))
             .build();
     parser.parse(new UTF8TextInputStream(path), Origin.unknown());
     diagnostics.assertNoMessages();
   }
 
   public static ThrowingConsumer<D8TestRunResult, RuntimeException> removeStartupListFromStdout(
-      Consumer<ExternalStartupItem> startupItemConsumer,
-      SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization) {
-    return runResult ->
-        removeStartupListFromStdout(
-            runResult, startupItemConsumer, syntheticToSyntheticContextGeneralization);
+      Consumer<ExternalStartupItem> startupItemConsumer) {
+    return runResult -> removeStartupListFromStdout(runResult, startupItemConsumer);
   }
 
   public static void removeStartupListFromStdout(
-      D8TestRunResult runResult,
-      Consumer<ExternalStartupItem> startupItemConsumer,
-      SyntheticToSyntheticContextGeneralization syntheticToSyntheticContextGeneralization) {
+      D8TestRunResult runResult, Consumer<ExternalStartupItem> startupItemConsumer) {
     TestDiagnosticMessagesImpl diagnostics = new TestDiagnosticMessagesImpl();
     HumanReadableArtProfileParser parser =
         HumanReadableArtProfileParser.builder()
             .setReporter(new Reporter(diagnostics))
-            .setProfileBuilder(
-                createStartupItemFactory(
-                    startupItemConsumer, syntheticToSyntheticContextGeneralization))
+            .setProfileBuilder(createStartupItemFactory(startupItemConsumer))
             .build();
     StringBuilder stdoutBuilder = new StringBuilder();
     String startupDescriptorPrefix = "[" + startupInstrumentationTag + "] ";
@@ -202,12 +175,7 @@
                       startupProfileBuilder.addStartupMethod(
                           startupMethodBuilder ->
                               startupMethodBuilder.setMethodReference(
-                                  startupMethod.getReference())),
-                  syntheticStartupMethod ->
-                      startupProfileBuilder.addSyntheticStartupMethod(
-                          syntheticStartupMethodBuilder ->
-                              syntheticStartupMethodBuilder.setSyntheticContextReference(
-                                  syntheticStartupMethod.getSyntheticContextReference())));
+                                  startupMethod.getReference())));
             }
           }