diff --git a/src/main/java/com/android/tools/r8/graph/AccessFlags.java b/src/main/java/com/android/tools/r8/graph/AccessFlags.java
index 54fecaa..fe6e49c 100644
--- a/src/main/java/com/android/tools/r8/graph/AccessFlags.java
+++ b/src/main/java/com/android/tools/r8/graph/AccessFlags.java
@@ -146,6 +146,10 @@
     return !isPublic() && !isPrivate();
   }
 
+  public boolean isPackagePrivateOrPublic() {
+    return !isPrivate() && !isProtected();
+  }
+
   public boolean isPublic() {
     return isSet(Constants.ACC_PUBLIC);
   }
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index 67082ae..5452bf2 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -465,7 +465,6 @@
   public boolean willBeInlinedIntoInstanceInitializer(DexItemFactory dexItemFactory) {
     checkIfObsolete();
     if (getName().startsWith(dexItemFactory.temporaryConstructorMethodPrefix)) {
-      assert isPrivate();
       assert !isStatic();
       return true;
     }
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java b/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java
index 51de538..857ea01 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java
@@ -42,6 +42,7 @@
 import com.android.tools.r8.ir.optimize.info.OptimizationFeedbackSimple;
 import com.android.tools.r8.ir.optimize.inliner.FixedInliningReasonStrategy;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.shaking.DependentMinimumKeepInfoCollection;
 import com.android.tools.r8.shaking.Enqueuer;
 import com.android.tools.r8.shaking.EnqueuerWorklist;
 import com.android.tools.r8.utils.Box;
@@ -314,6 +315,14 @@
         .extend(subtypingInfo);
   }
 
+  public void extendRootSet(DependentMinimumKeepInfoCollection dependentMinimumKeepInfo) {
+    dependentMinimumKeepInfo
+        .getOrCreateUnconditionalMinimumKeepInfoFor(
+            references.generatedMessageLiteBuilderMethods.constructorMethod)
+        .asMethodJoiner()
+        .disallowInlining();
+  }
+
   public void preprocessCallGraphBeforeCycleElimination(Map<DexMethod, Node> nodes) {
     Node node = nodes.get(references.generatedMessageLiteBuilderMethods.constructorMethod);
     if (node != null) {
diff --git a/src/main/java/com/android/tools/r8/naming/dexitembasedstring/RecordFieldNamesComputationInfo.java b/src/main/java/com/android/tools/r8/naming/dexitembasedstring/RecordFieldNamesComputationInfo.java
index 8c2f8b7..253aa47 100644
--- a/src/main/java/com/android/tools/r8/naming/dexitembasedstring/RecordFieldNamesComputationInfo.java
+++ b/src/main/java/com/android/tools/r8/naming/dexitembasedstring/RecordFieldNamesComputationInfo.java
@@ -16,7 +16,6 @@
 import com.android.tools.r8.naming.NamingLens;
 import com.android.tools.r8.utils.StringUtils;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.function.IntFunction;
 
@@ -119,7 +118,6 @@
       DexDefinitionSupplier definitions,
       GraphLens graphLens,
       IntFunction<String> nameSupplier) {
-    assert Arrays.stream(fields).allMatch(f -> f.holder == type);
     DexClass recordClass = definitions.contextIndependentDefinitionFor(type);
     assert recordClass != null;
     List<String> names = new ArrayList<>(fields.length);
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 471c6b0..98bc585 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -3495,7 +3495,11 @@
         DexProgramClass clazz = asProgramClassOrNull(definitionFor(referencedType, context));
         if (clazz != null) {
           applyMinimumKeepInfoWhenLive(
-              clazz, KeepClassInfo.newEmptyJoiner().disallowMinification().disallowOptimization());
+              clazz,
+              KeepClassInfo.newEmptyJoiner()
+                  .disallowMinification()
+                  .disallowOptimization()
+                  .disallowRepackaging());
         }
       }
     }
diff --git a/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java b/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
index 367a2fc..1797948 100644
--- a/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
+++ b/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
@@ -385,6 +385,8 @@
       }
       appView.withGeneratedMessageLiteShrinker(
           shrinker -> shrinker.extendRootSet(dependentMinimumKeepInfo));
+      appView.withGeneratedMessageLiteBuilderShrinker(
+          shrinker -> shrinker.extendRootSet(dependentMinimumKeepInfo));
       if (appView.options().protoShrinking().enableGeneratedMessageLiteBuilderShrinking) {
         GeneratedMessageLiteBuilderShrinker.addInliningHeuristicsForBuilderInlining(
             appView,
diff --git a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
index a7106fc..4ad6ef2 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -393,11 +393,7 @@
   // before merging [clazz] into its subtype.
   private boolean isStillMergeCandidate(DexProgramClass sourceClass, DexProgramClass targetClass) {
     assert isMergeCandidate(sourceClass, targetClass, pinnedTypes);
-    if (mergedClasses.containsValue(sourceClass.getType())) {
-      // Do not allow merging the resulting class into its subclass.
-      // TODO(christofferqa): Get rid of this limitation.
-      return false;
-    }
+    assert !mergedClasses.containsValue(sourceClass.getType());
     // For interface types, this is more complicated, see:
     // https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-5.html#jvms-5.5
     // We basically can't move the clinit, since it is not called when implementing classes have
@@ -447,13 +443,14 @@
   }
 
   private boolean mergeMayLeadToIllegalAccesses(DexProgramClass source, DexProgramClass target) {
-    if (source.type.isSamePackage(target.type)) {
+    if (source.isSamePackage(target)) {
       // When merging two classes from the same package, we only need to make sure that [source]
       // does not get less visible, since that could make a valid access to [source] from another
       // package illegal after [source] has been merged into [target].
-      int accessLevel = source.isPrivate() ? 0 : (source.isPublic() ? 2 : 1);
-      int otherAccessLevel = target.isPrivate() ? 0 : (target.isPublic() ? 2 : 1);
-      return accessLevel > otherAccessLevel;
+      assert source.getAccessFlags().isPackagePrivateOrPublic();
+      assert target.getAccessFlags().isPackagePrivateOrPublic();
+      // TODO(b/287891322): Allow merging if `source` is only accessed from inside its own package.
+      return source.getAccessFlags().isPublic() && target.getAccessFlags().isPackagePrivate();
     }
 
     // Check that all accesses to [source] and its members from inside the current package of
@@ -801,12 +798,12 @@
 
     DexType singleSubtype = subtypingInfo.getSingleDirectSubtype(clazz.type);
     DexProgramClass targetClass = appView.definitionFor(singleSubtype).asProgramClass();
-    assert isMergeCandidate(clazz, targetClass, pinnedTypes);
     assert !mergedClasses.containsKey(targetClass.type);
-
-    boolean clazzOrTargetClassHasBeenMerged =
-        mergedClasses.containsValue(clazz.type) || mergedClasses.containsValue(targetClass.type);
-    if (clazzOrTargetClassHasBeenMerged) {
+    if (mergedClasses.containsValue(clazz.type)) {
+      return;
+    }
+    assert isMergeCandidate(clazz, targetClass, pinnedTypes);
+    if (mergedClasses.containsValue(targetClass.type)) {
       if (!isStillMergeCandidate(clazz, targetClass)) {
         return;
       }
@@ -907,7 +904,11 @@
             DexEncodedMethod definition = directMethod.getDefinition();
             if (definition.isInstanceInitializer()) {
               DexEncodedMethod resultingConstructor =
-                  renameConstructor(definition, availableMethodSignatures);
+                  renameConstructor(
+                      definition,
+                      candidate ->
+                          availableMethodSignatures.test(candidate)
+                              && source.lookupVirtualMethod(candidate) == null);
               add(directMethods, resultingConstructor, MethodSignatureEquivalence.get());
               blockRedirectionOfSuperCalls(resultingConstructor.getReference());
             } else {
