diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataJvmExtensionUtils.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataJvmExtensionUtils.java
index 66208ad..85e3540 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataJvmExtensionUtils.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataJvmExtensionUtils.java
@@ -6,6 +6,9 @@
 import com.google.common.collect.ImmutableList;
 import java.util.Arrays;
 import java.util.List;
+import kotlinx.metadata.KmConstructor;
+import kotlinx.metadata.KmConstructorExtensionVisitor;
+import kotlinx.metadata.KmConstructorVisitor;
 import kotlinx.metadata.KmExtensionType;
 import kotlinx.metadata.KmFunction;
 import kotlinx.metadata.KmFunctionExtensionVisitor;
@@ -13,6 +16,7 @@
 import kotlinx.metadata.KmProperty;
 import kotlinx.metadata.KmPropertyExtensionVisitor;
 import kotlinx.metadata.KmPropertyVisitor;
+import kotlinx.metadata.jvm.JvmConstructorExtensionVisitor;
 import kotlinx.metadata.jvm.JvmFieldSignature;
 import kotlinx.metadata.jvm.JvmFunctionExtensionVisitor;
 import kotlinx.metadata.jvm.JvmMethodSignature;
@@ -73,6 +77,32 @@
     }
   }
 
+  static class KmConstructorProcessor {
+    private JvmMethodSignature signature = null;
+
+    KmConstructorProcessor(KmConstructor kmConstructor) {
+      kmConstructor.accept(new KmConstructorVisitor() {
+        @Override
+        public KmConstructorExtensionVisitor visitExtensions(KmExtensionType type) {
+          if (type != JvmConstructorExtensionVisitor.TYPE) {
+            return null;
+          }
+          return new JvmConstructorExtensionVisitor() {
+            @Override
+            public void visit(JvmMethodSignature desc) {
+              assert signature == null : signature.asString();
+              signature = desc;
+            }
+          };
+        }
+      });
+    }
+
+    JvmMethodSignature signature() {
+      return signature;
+    }
+  }
+
   static class KmFunctionProcessor {
     // Custom name via @JvmName("..."). Otherwise, null.
     private JvmMethodSignature signature = null;
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataSynthesizer.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataSynthesizer.java
index 80069a2..5f7843f 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataSynthesizer.java
@@ -16,11 +16,11 @@
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.kotlin.KotlinMetadataJvmExtensionUtils.KmConstructorProcessor;
 import com.android.tools.r8.kotlin.KotlinMetadataJvmExtensionUtils.KmFunctionProcessor;
 import com.android.tools.r8.kotlin.KotlinMetadataJvmExtensionUtils.KmPropertyProcessor;
 import com.android.tools.r8.naming.NamingLens;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
-import com.android.tools.r8.utils.Box;
 import java.util.List;
 import kotlinx.metadata.KmConstructor;
 import kotlinx.metadata.KmFunction;
@@ -263,9 +263,10 @@
     }
     // TODO(b/70169921): {@link KmConstructor.extensions} is private, i.e., no way to alter!
     //   Thus, we rely on original metadata for now.
-    Box<Boolean> hasJvmExtension = new Box<>(false);
+    KmConstructorProcessor kmConstructorProcessor = new KmConstructorProcessor(original);
+    JvmMethodSignature jvmMethodSignature = kmConstructorProcessor.signature();
     KmConstructor kmConstructor =
-        hasJvmExtension.get()
+        jvmMethodSignature != null
             ? original
             // TODO(b/70169921): Consult kotlinx.metadata.Flag.Constructor to set IS_PRIMARY.
             : new KmConstructor(method.accessFlags.getAsKotlinFlags());
