Handle collision in instance initializer merger

Bug: b/335209102
Change-Id: If66589ea6906f2ef5f03b5b61132bdb3f20cc5ae
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/InstanceInitializerMergerCollection.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/InstanceInitializerMergerCollection.java
index 5b9e401..362a9e0 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/InstanceInitializerMergerCollection.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/InstanceInitializerMergerCollection.java
@@ -12,6 +12,7 @@
 import com.android.tools.r8.graph.DexProto;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.horizontalclassmerging.InstanceInitializerMerger.Builder;
+import com.android.tools.r8.utils.IterableUtils;
 import com.android.tools.r8.utils.collections.ProgramMethodSet;
 import it.unimi.dsi.fastutil.objects.Reference2IntMap;
 import java.util.ArrayList;
@@ -25,12 +26,12 @@
 public class InstanceInitializerMergerCollection {
 
   private final List<InstanceInitializerMerger> instanceInitializerMergers;
-  private final Map<InstanceInitializerDescription, InstanceInitializerMerger>
+  private final Map<InstanceInitializerDescription, List<InstanceInitializerMerger>>
       equivalentInstanceInitializerMergers;
 
   private InstanceInitializerMergerCollection(
       List<InstanceInitializerMerger> instanceInitializerMergers,
-      Map<InstanceInitializerDescription, InstanceInitializerMerger>
+      Map<InstanceInitializerDescription, List<InstanceInitializerMerger>>
           equivalentInstanceInitializerMergers) {
     this.instanceInitializerMergers = instanceInitializerMergers;
     this.equivalentInstanceInitializerMergers = equivalentInstanceInitializerMergers;
@@ -75,7 +76,7 @@
                   }
                 }));
 
-    Map<InstanceInitializerDescription, InstanceInitializerMerger>
+    Map<InstanceInitializerDescription, List<InstanceInitializerMerger>>
         equivalentInstanceInitializerMergers = new LinkedHashMap<>();
     buildersByDescription.forEach(
         (description, builder) -> {
@@ -88,7 +89,9 @@
               buildersWithoutDescription.addAll(
                   instanceInitializerMerger.getInstanceInitializers());
             } else {
-              equivalentInstanceInitializerMergers.put(description, instanceInitializerMerger);
+              equivalentInstanceInitializerMergers
+                  .computeIfAbsent(description, ignoreKey(ArrayList::new))
+                  .add(instanceInitializerMerger);
             }
           }
         });
@@ -127,7 +130,7 @@
 
   public void forEach(Consumer<InstanceInitializerMerger> consumer) {
     instanceInitializerMergers.forEach(consumer);
-    equivalentInstanceInitializerMergers.values().forEach(consumer);
+    IterableUtils.flatten(equivalentInstanceInitializerMergers.values()).forEach(consumer);
   }
 
   public void setObsolete() {