diff --git a/LIBRARY-LICENSE b/LIBRARY-LICENSE
index 9808c03..617af93 100644
--- a/LIBRARY-LICENSE
+++ b/LIBRARY-LICENSE
@@ -68,8 +68,8 @@
   license: The Apache License, Version 2.0
   licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
   url: https://kotlinlang.org/
-- artifact: org.jetbrains.kotlinx:kotlinx-metadata-jvm:+
-  name: org.jetbrains.kotlinx:kotlinx-metadata-jvm
+- artifact: org.jetbrains.kotlin:kotlin-metadata-jvm:+
+  name: org.jetbrains.kotlin:kotlin-metadata-jvm
   copyrightHolder: JetBrains s.r.o.
   license: The Apache License, Version 2.0
   licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
index 99d3f6c..d3426d8 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
@@ -399,7 +399,7 @@
   const val javassist = "3.29.2-GA"
   const val junitVersion = "4.13-beta-2"
   const val kotlinVersion = "1.9.0"
-  const val kotlinMetadataVersion = "0.9.0"
+  const val kotlinMetadataVersion = "2.0.0-Beta5"
   const val mockito = "2.10.0"
   const val smaliVersion = "3.0.3"
 }
@@ -415,7 +415,7 @@
   val javassist by lazy { "org.javassist:javassist:${Versions.javassist}"}
   val junit by lazy { "junit:junit:${Versions.junitVersion}"}
   val kotlinMetadata by lazy {
-    "org.jetbrains.kotlinx:kotlinx-metadata-jvm:${Versions.kotlinMetadataVersion}" }
+    "org.jetbrains.kotlin:kotlin-metadata-jvm:${Versions.kotlinMetadataVersion}" }
   val kotlinStdLib by lazy { "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlinVersion}" }
   val kotlinReflect by lazy { "org.jetbrains.kotlin:kotlin-reflect:${Versions.kotlinVersion}" }
   val mockito by lazy { "org.mockito:mockito-core:${Versions.mockito}" }
diff --git a/d8_r8/test/build.gradle.kts b/d8_r8/test/build.gradle.kts
index 5452757..14b066a 100644
--- a/d8_r8/test/build.gradle.kts
+++ b/d8_r8/test/build.gradle.kts
@@ -108,11 +108,11 @@
              "--output",
              "$outputJar",
              "--map",
-             "kotlinx.metadata.**->com.android.tools.r8.jetbrains.kotlinx.metadata"))
+             "kotlin.metadata.**->com.android.tools.r8.jetbrains.kotlin.metadata"))
   }
 
-  // When testing R8 lib with relocated deps we must relocate kotlinx.metadata in the tests, since
-  // types from kotlinx.metadata are used on the R8 main/R8 test boundary.
+  // When testing R8 lib with relocated deps we must relocate kotlin.metadata in the tests, since
+  // types from kotlin.metadata are used on the R8 main/R8 test boundary.
   //
   // This is not needed when testing R8 lib excluding deps since we simply include the deps on the
   // classpath at runtime.
diff --git a/src/main/java/com/android/tools/r8/kotlin/ConcreteKotlinPropertyInfo.java b/src/main/java/com/android/tools/r8/kotlin/ConcreteKotlinPropertyInfo.java
index f826283..526068d 100644
--- a/src/main/java/com/android/tools/r8/kotlin/ConcreteKotlinPropertyInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/ConcreteKotlinPropertyInfo.java
@@ -18,8 +18,8 @@
 import com.android.tools.r8.utils.Reporter;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmProperty;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.KmProperty;
+import kotlin.metadata.jvm.JvmExtensionsKt;
 
 // Holds information about KmProperty
 public class ConcreteKotlinPropertyInfo implements KotlinPropertyInfo {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java
index 2c05e8f..329dbbe 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java
@@ -16,11 +16,11 @@
 import java.util.List;
 import java.util.Map;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmAnnotationArgument;
-import kotlinx.metadata.KmAnnotationArgument.AnnotationValue;
-import kotlinx.metadata.KmAnnotationArgument.ArrayValue;
-import kotlinx.metadata.KmAnnotationArgument.EnumValue;
-import kotlinx.metadata.KmAnnotationArgument.KClassValue;
+import kotlin.metadata.KmAnnotationArgument;
+import kotlin.metadata.KmAnnotationArgument.AnnotationValue;
+import kotlin.metadata.KmAnnotationArgument.ArrayValue;
+import kotlin.metadata.KmAnnotationArgument.EnumValue;
+import kotlin.metadata.KmAnnotationArgument.KClassValue;
 
 abstract class KotlinAnnotationArgumentInfo implements EnqueuerMetadataTraceable {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java
index 0904502..85fd152 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java
@@ -15,8 +15,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmAnnotation;
-import kotlinx.metadata.KmAnnotationArgument;
+import kotlin.metadata.KmAnnotation;
+import kotlin.metadata.KmAnnotationArgument;
 
 // Holds information about a KmAnnotation
 public class KotlinAnnotationInfo implements EnqueuerMetadataTraceable {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java
index cc2634a..0480ba2 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java
@@ -9,7 +9,7 @@
 import static com.android.tools.r8.kotlin.KotlinMetadataUtils.toJvmFieldSignature;
 import static com.android.tools.r8.kotlin.KotlinMetadataUtils.toJvmMethodSignature;
 import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
-import static kotlinx.metadata.jvm.KotlinClassMetadata.Companion;
+import static kotlin.metadata.jvm.KotlinClassMetadata.Companion;
 
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexClass;
@@ -32,12 +32,12 @@
 import java.util.Map;
 import java.util.function.Consumer;
 import kotlin.Metadata;
-import kotlinx.metadata.KmClass;
-import kotlinx.metadata.KmConstructor;
-import kotlinx.metadata.KmType;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
-import kotlinx.metadata.jvm.JvmMethodSignature;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.KmClass;
+import kotlin.metadata.KmConstructor;
+import kotlin.metadata.KmType;
+import kotlin.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 
 public class KotlinClassInfo implements KotlinClassLevelInfo {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java b/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
index 7ade086..4a66565 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
@@ -25,12 +25,12 @@
 import java.util.function.Consumer;
 import java.util.function.Supplier;
 import kotlin.Metadata;
-import kotlinx.metadata.jvm.JvmMetadataVersion;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
-import kotlinx.metadata.jvm.KotlinClassMetadata.FileFacade;
-import kotlinx.metadata.jvm.KotlinClassMetadata.MultiFileClassFacade;
-import kotlinx.metadata.jvm.KotlinClassMetadata.MultiFileClassPart;
-import kotlinx.metadata.jvm.KotlinClassMetadata.SyntheticClass;
+import kotlin.metadata.jvm.JvmMetadataVersion;
+import kotlin.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.jvm.KotlinClassMetadata.FileFacade;
+import kotlin.metadata.jvm.KotlinClassMetadata.MultiFileClassFacade;
+import kotlin.metadata.jvm.KotlinClassMetadata.MultiFileClassPart;
+import kotlin.metadata.jvm.KotlinClassMetadata.SyntheticClass;
 
 public final class KotlinClassMetadataReader {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinClassifierInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinClassifierInfo.java
index 4eb0dca..ef21b62 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassifierInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassifierInfo.java
@@ -15,10 +15,10 @@
 import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
 import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.Reporter;
-import kotlinx.metadata.KmClassifier;
-import kotlinx.metadata.KmClassifier.TypeAlias;
-import kotlinx.metadata.KmClassifier.TypeParameter;
-import kotlinx.metadata.KmTypeVisitor;
+import kotlin.metadata.KmClassifier;
+import kotlin.metadata.KmClassifier.TypeAlias;
+import kotlin.metadata.KmClassifier.TypeParameter;
+import kotlin.metadata.KmTypeVisitor;
 
 public abstract class KotlinClassifierInfo implements EnqueuerMetadataTraceable {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinCompanionInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinCompanionInfo.java
index f90ed3a..c6981c9 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinCompanionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinCompanionInfo.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexString;
 import com.android.tools.r8.naming.NamingLens;
-import kotlinx.metadata.KmClassVisitor;
+import kotlin.metadata.KmClassVisitor;
 
 // Structure around a kotlin companion object that can be assigned to a field.
 public class KotlinCompanionInfo implements KotlinFieldLevelInfo {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinConstructorInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinConstructorInfo.java
index a60cf6b..28de1a1 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinConstructorInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinConstructorInfo.java
@@ -13,9 +13,9 @@
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.utils.Reporter;
 import java.util.List;
-import kotlinx.metadata.KmClass;
-import kotlinx.metadata.KmConstructor;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.KmClass;
+import kotlin.metadata.KmConstructor;
+import kotlin.metadata.jvm.JvmExtensionsKt;
 
 // Holds information about a KmConstructor object.
 public class KotlinConstructorInfo implements KotlinMethodLevelInfo {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinContractInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinContractInfo.java
index 57466ae..1306045 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinContractInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinContractInfo.java
@@ -16,8 +16,8 @@
 import com.google.common.collect.ImmutableList;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmContract;
-import kotlinx.metadata.KmEffect;
+import kotlin.metadata.KmContract;
+import kotlin.metadata.KmEffect;
 
 public class KotlinContractInfo implements EnqueuerMetadataTraceable {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java
index 7fd23e9..b435950 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java
@@ -26,13 +26,13 @@
 import java.util.List;
 import java.util.Map;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmDeclarationContainer;
-import kotlinx.metadata.KmFunction;
-import kotlinx.metadata.KmProperty;
-import kotlinx.metadata.KmTypeAlias;
-import kotlinx.metadata.internal.metadata.deserialization.Flags;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
-import kotlinx.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.KmDeclarationContainer;
+import kotlin.metadata.KmFunction;
+import kotlin.metadata.KmProperty;
+import kotlin.metadata.KmTypeAlias;
+import kotlin.metadata.internal.metadata.deserialization.Flags;
+import kotlin.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.jvm.JvmMethodSignature;
 
 // Holds information about KmDeclarationContainer
 public class KotlinDeclarationContainerInfo implements EnqueuerMetadataTraceable {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java
index 4268f32..ae218d2 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java
@@ -17,8 +17,8 @@
 import com.google.common.collect.ImmutableList;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmConstantValue;
-import kotlinx.metadata.KmEffectExpression;
+import kotlin.metadata.KmConstantValue;
+import kotlin.metadata.KmEffectExpression;
 
 public class KotlinEffectExpressionInfo implements EnqueuerMetadataTraceable {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinEffectInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinEffectInfo.java
index 4f38113..0a973a1 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinEffectInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinEffectInfo.java
@@ -15,9 +15,9 @@
 import com.android.tools.r8.utils.Reporter;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmEffect;
-import kotlinx.metadata.KmEffectInvocationKind;
-import kotlinx.metadata.KmEffectType;
+import kotlin.metadata.KmEffect;
+import kotlin.metadata.KmEffectInvocationKind;
+import kotlin.metadata.KmEffectType;
 
 public class KotlinEffectInfo implements EnqueuerMetadataTraceable {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinEnumEntryInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinEnumEntryInfo.java
index 25e4ca7..ff1336d 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinEnumEntryInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinEnumEntryInfo.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexString;
 import com.android.tools.r8.naming.NamingLens;
-import kotlinx.metadata.KmClassVisitor;
+import kotlin.metadata.KmClassVisitor;
 
 // Structure around a kotlin enum value that can be assigned to a field.
 public class KotlinEnumEntryInfo implements KotlinFieldLevelInfo {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinFileFacadeInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinFileFacadeInfo.java
index 228aee9..2c46b82 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinFileFacadeInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinFileFacadeInfo.java
@@ -5,7 +5,7 @@
 package com.android.tools.r8.kotlin;
 
 import static com.android.tools.r8.kotlin.KotlinMetadataUtils.getCompatibleKotlinInfo;
-import static kotlinx.metadata.jvm.KotlinClassMetadata.Companion;
+import static kotlin.metadata.jvm.KotlinClassMetadata.Companion;
 
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexClass;
@@ -14,8 +14,8 @@
 import com.android.tools.r8.utils.Pair;
 import java.util.function.Consumer;
 import kotlin.Metadata;
-import kotlinx.metadata.KmPackage;
-import kotlinx.metadata.jvm.KotlinClassMetadata.FileFacade;
+import kotlin.metadata.KmPackage;
+import kotlin.metadata.jvm.KotlinClassMetadata.FileFacade;
 
 // Holds information about Metadata.FileFacade
 public class KotlinFileFacadeInfo implements KotlinClassLevelInfo {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinFlexibleTypeUpperBoundInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinFlexibleTypeUpperBoundInfo.java
index 1edbe51..08e7085 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinFlexibleTypeUpperBoundInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinFlexibleTypeUpperBoundInfo.java
@@ -10,7 +10,7 @@
 import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
 import com.android.tools.r8.utils.Reporter;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmFlexibleTypeUpperBound;
+import kotlin.metadata.KmFlexibleTypeUpperBound;
 
 public class KotlinFlexibleTypeUpperBoundInfo implements EnqueuerMetadataTraceable {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinFunctionInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinFunctionInfo.java
index dc949fc..aa453f6 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinFunctionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinFunctionInfo.java
@@ -17,8 +17,8 @@
 import com.android.tools.r8.utils.Reporter;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmFunction;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.KmFunction;
+import kotlin.metadata.jvm.JvmExtensionsKt;
 
 // Holds information about KmFunction
 public final class KotlinFunctionInfo implements KotlinMethodLevelInfo {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmFieldSignatureInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmFieldSignatureInfo.java
index a7a8f78..bcf19a1 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmFieldSignatureInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmFieldSignatureInfo.java
@@ -11,7 +11,7 @@
 import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
 import com.android.tools.r8.utils.Box;
 import java.util.function.Consumer;
-import kotlinx.metadata.jvm.JvmFieldSignature;
+import kotlin.metadata.jvm.JvmFieldSignature;
 
 /**
  * The JvmSignature for a method or property does not always correspond to the actual signature, see
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMetadataVersionUtils.java b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMetadataVersionUtils.java
index acf75d3..c1908ea 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMetadataVersionUtils.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMetadataVersionUtils.java
@@ -4,7 +4,7 @@
 
 package com.android.tools.r8.kotlin;
 
-import kotlinx.metadata.jvm.JvmMetadataVersion;
+import kotlin.metadata.jvm.JvmMetadataVersion;
 
 public class KotlinJvmMetadataVersionUtils {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMethodSignatureInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMethodSignatureInfo.java
index 2c5e817..687156e 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMethodSignatureInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMethodSignatureInfo.java
@@ -15,7 +15,7 @@
 import com.google.common.collect.ImmutableList;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.jvm.JvmMethodSignature;
 
 /**
  * The JvmSignature for a method or property does not always correspond to the actual signature, see
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinLambdaInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinLambdaInfo.java
index 6f04aba..09f6a41 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinLambdaInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinLambdaInfo.java
@@ -15,9 +15,9 @@
 import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
 import com.android.tools.r8.utils.Reporter;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmLambda;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
-import kotlinx.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.KmLambda;
+import kotlin.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.jvm.JvmMethodSignature;
 
 // Holds information about a KmLambda
 public class KotlinLambdaInfo implements EnqueuerMetadataTraceable {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinLocalDelegatedPropertyInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinLocalDelegatedPropertyInfo.java
index 566d8b6..94a2001 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinLocalDelegatedPropertyInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinLocalDelegatedPropertyInfo.java
@@ -15,7 +15,7 @@
 import com.google.common.collect.ImmutableList;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmProperty;
+import kotlin.metadata.KmProperty;
 
 public class KotlinLocalDelegatedPropertyInfo implements EnqueuerMetadataTraceable {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataAnnotationWrapper.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataAnnotationWrapper.java
index 149fec9..ab74441 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataAnnotationWrapper.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataAnnotationWrapper.java
@@ -7,7 +7,7 @@
 import com.android.tools.r8.errors.Unreachable;
 import java.lang.annotation.Annotation;
 import kotlin.Metadata;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 
 /***
  * This is a wrapper around kotlin.Metadata needed for tests to access the internal data. The need
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataUtils.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataUtils.java
index e7ffaec..6e532a3 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataUtils.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataUtils.java
@@ -24,14 +24,14 @@
 import java.util.List;
 import java.util.function.Consumer;
 import kotlin.Metadata;
-import kotlinx.metadata.KmExtensionType;
-import kotlinx.metadata.KmProperty;
-import kotlinx.metadata.KmPropertyExtensionVisitor;
-import kotlinx.metadata.KmPropertyVisitor;
-import kotlinx.metadata.jvm.JvmFieldSignature;
-import kotlinx.metadata.jvm.JvmMethodSignature;
-import kotlinx.metadata.jvm.JvmPropertyExtensionVisitor;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.KmExtensionType;
+import kotlin.metadata.KmProperty;
+import kotlin.metadata.KmPropertyExtensionVisitor;
+import kotlin.metadata.KmPropertyVisitor;
+import kotlin.metadata.jvm.JvmFieldSignature;
+import kotlin.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.jvm.JvmPropertyExtensionVisitor;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 
 public class KotlinMetadataUtils {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
index a06a9a2..15883d2 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
@@ -18,31 +18,30 @@
 import java.util.function.BiConsumer;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
-import kotlinx.metadata.InconsistentKotlinMetadataException;
-import kotlinx.metadata.KmAnnotation;
-import kotlinx.metadata.KmAnnotationArgument;
-import kotlinx.metadata.KmAnnotationArgument.ArrayValue;
-import kotlinx.metadata.KmClass;
-import kotlinx.metadata.KmConstructor;
-import kotlinx.metadata.KmContract;
-import kotlinx.metadata.KmDeclarationContainer;
-import kotlinx.metadata.KmEffect;
-import kotlinx.metadata.KmEffectExpression;
-import kotlinx.metadata.KmFlexibleTypeUpperBound;
-import kotlinx.metadata.KmFunction;
-import kotlinx.metadata.KmLambda;
-import kotlinx.metadata.KmPackage;
-import kotlinx.metadata.KmProperty;
-import kotlinx.metadata.KmType;
-import kotlinx.metadata.KmTypeAlias;
-import kotlinx.metadata.KmTypeParameter;
-import kotlinx.metadata.KmTypeProjection;
-import kotlinx.metadata.KmValueParameter;
-import kotlinx.metadata.KmVersionRequirement;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
-import kotlinx.metadata.jvm.JvmFieldSignature;
-import kotlinx.metadata.jvm.JvmMethodSignature;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.KmAnnotation;
+import kotlin.metadata.KmAnnotationArgument;
+import kotlin.metadata.KmAnnotationArgument.ArrayValue;
+import kotlin.metadata.KmClass;
+import kotlin.metadata.KmConstructor;
+import kotlin.metadata.KmContract;
+import kotlin.metadata.KmDeclarationContainer;
+import kotlin.metadata.KmEffect;
+import kotlin.metadata.KmEffectExpression;
+import kotlin.metadata.KmFlexibleTypeUpperBound;
+import kotlin.metadata.KmFunction;
+import kotlin.metadata.KmLambda;
+import kotlin.metadata.KmPackage;
+import kotlin.metadata.KmProperty;
+import kotlin.metadata.KmType;
+import kotlin.metadata.KmTypeAlias;
+import kotlin.metadata.KmTypeParameter;
+import kotlin.metadata.KmTypeProjection;
+import kotlin.metadata.KmValueParameter;
+import kotlin.metadata.KmVersionRequirement;
+import kotlin.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.jvm.JvmFieldSignature;
+import kotlin.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 
 public class KotlinMetadataWriter {
 
@@ -151,7 +150,7 @@
             } else {
               KotlinMetadataWriter.appendKeyValue(newIndent, "function", sb, "null");
             }
-          } catch (InconsistentKotlinMetadataException ex) {
+          } catch (Exception ex) {
             appendKeyValue(newIndent, "function", sb, ex.getMessage());
           }
         });
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassFacadeInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassFacadeInfo.java
index 0833a1c..db4ab66 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassFacadeInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassFacadeInfo.java
@@ -6,7 +6,7 @@
 
 import static com.android.tools.r8.kotlin.KotlinMetadataUtils.getCompatibleKotlinInfo;
 import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
-import static kotlinx.metadata.jvm.KotlinClassMetadata.Companion;
+import static kotlin.metadata.jvm.KotlinClassMetadata.Companion;
 
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexClass;
@@ -17,7 +17,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import kotlin.Metadata;
-import kotlinx.metadata.jvm.KotlinClassMetadata.MultiFileClassFacade;
+import kotlin.metadata.jvm.KotlinClassMetadata.MultiFileClassFacade;
 
 // Holds information about Metadata.MultiFileClassFace
 public class KotlinMultiFileClassFacadeInfo implements KotlinClassLevelInfo {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassPartInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassPartInfo.java
index a317760..6c00f88 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassPartInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassPartInfo.java
@@ -5,7 +5,7 @@
 package com.android.tools.r8.kotlin;
 
 import static com.android.tools.r8.kotlin.KotlinMetadataUtils.getCompatibleKotlinInfo;
-import static kotlinx.metadata.jvm.KotlinClassMetadata.Companion;
+import static kotlin.metadata.jvm.KotlinClassMetadata.Companion;
 
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexClass;
@@ -14,8 +14,8 @@
 import com.android.tools.r8.utils.Pair;
 import java.util.function.Consumer;
 import kotlin.Metadata;
-import kotlinx.metadata.KmPackage;
-import kotlinx.metadata.jvm.KotlinClassMetadata.MultiFileClassPart;
+import kotlin.metadata.KmPackage;
+import kotlin.metadata.jvm.KotlinClassMetadata.MultiFileClassPart;
 
 // Holds information about Metadata.MultiFileClassPartInfo
 public class KotlinMultiFileClassPartInfo implements KotlinClassLevelInfo {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinPackageInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinPackageInfo.java
index 8455829..c4cb846 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinPackageInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinPackageInfo.java
@@ -16,8 +16,8 @@
 import java.util.HashMap;
 import java.util.Map;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmPackage;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.KmPackage;
+import kotlin.metadata.jvm.JvmExtensionsKt;
 
 // Holds information about a KmPackage object.
 public class KotlinPackageInfo implements EnqueuerMetadataTraceable {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfo.java
index 2bd70d4..1e66fbd 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfo.java
@@ -9,7 +9,7 @@
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.kotlin.KotlinPropertyInfoDelegate.PropertyType;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmProperty;
+import kotlin.metadata.KmProperty;
 
 public interface KotlinPropertyInfo extends KotlinFieldLevelInfo, KotlinMethodLevelInfo {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfoDelegate.java b/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfoDelegate.java
index d658fa5..095f87a 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfoDelegate.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfoDelegate.java
@@ -9,7 +9,7 @@
 import com.android.tools.r8.graph.DexEncodedField;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmProperty;
+import kotlin.metadata.KmProperty;
 
 public class KotlinPropertyInfoDelegate implements KotlinPropertyInfo {
 
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java
index 4449beb..5e31efb 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java
@@ -5,7 +5,7 @@
 package com.android.tools.r8.kotlin;
 
 import static com.android.tools.r8.kotlin.KotlinMetadataUtils.getCompatibleKotlinInfo;
-import static kotlinx.metadata.jvm.KotlinClassMetadata.Companion;
+import static kotlin.metadata.jvm.KotlinClassMetadata.Companion;
 
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexClass;
@@ -13,8 +13,8 @@
 import com.android.tools.r8.utils.Box;
 import com.android.tools.r8.utils.Pair;
 import kotlin.Metadata;
-import kotlinx.metadata.KmLambda;
-import kotlinx.metadata.jvm.KotlinClassMetadata.SyntheticClass;
+import kotlin.metadata.KmLambda;
+import kotlin.metadata.jvm.KotlinClassMetadata.SyntheticClass;
 
 // Holds information about a Metadata.SyntheticClass object.
 public class KotlinSyntheticClassInfo implements KotlinClassLevelInfo {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeAliasInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeAliasInfo.java
index 6bb9e59..038f838 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeAliasInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeAliasInfo.java
@@ -15,7 +15,7 @@
 import com.android.tools.r8.utils.Reporter;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmTypeAlias;
+import kotlin.metadata.KmTypeAlias;
 
 // Holds information about KmTypeAlias
 public class KotlinTypeAliasInfo implements EnqueuerMetadataTraceable {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java
index ba82c7d..a0090b0 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java
@@ -19,9 +19,9 @@
 import com.google.common.collect.ImmutableList;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmType;
-import kotlinx.metadata.KmTypeProjection;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.KmType;
+import kotlin.metadata.KmTypeProjection;
+import kotlin.metadata.jvm.JvmExtensionsKt;
 
 // Provides access to Kotlin information about a kotlin type.
 public class KotlinTypeInfo implements EnqueuerMetadataTraceable {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeParameterInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeParameterInfo.java
index 03bfcb5..ba2aaa9 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeParameterInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeParameterInfo.java
@@ -16,10 +16,10 @@
 import com.google.common.collect.ImmutableList;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmType;
-import kotlinx.metadata.KmTypeParameter;
-import kotlinx.metadata.KmVariance;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.KmType;
+import kotlin.metadata.KmTypeParameter;
+import kotlin.metadata.KmVariance;
+import kotlin.metadata.jvm.JvmExtensionsKt;
 
 // Provides access to Kotlin information about a type-parameter.
 public class KotlinTypeParameterInfo implements EnqueuerMetadataTraceable {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
index 5ac01e6..d526cfc 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
@@ -10,8 +10,8 @@
 import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
 import com.android.tools.r8.utils.Reporter;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmTypeProjection;
-import kotlinx.metadata.KmVariance;
+import kotlin.metadata.KmTypeProjection;
+import kotlin.metadata.KmVariance;
 
 // Provides access to Kotlin information about the type projection of a type (arguments).
 public class KotlinTypeProjectionInfo implements EnqueuerMetadataTraceable {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinValueParameterInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinValueParameterInfo.java
index 68a79f2..dca2632 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinValueParameterInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinValueParameterInfo.java
@@ -15,9 +15,9 @@
 import com.google.common.collect.ImmutableList;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmType;
-import kotlinx.metadata.KmValueParameter;
-import kotlinx.metadata.internal.metadata.deserialization.Flags;
+import kotlin.metadata.KmType;
+import kotlin.metadata.KmValueParameter;
+import kotlin.metadata.internal.metadata.deserialization.Flags;
 
 // Provides access to Kotlin information about value parameter.
 class KotlinValueParameterInfo implements EnqueuerMetadataTraceable {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinVersionRequirementInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinVersionRequirementInfo.java
index c82b039..7242cf5 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinVersionRequirementInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinVersionRequirementInfo.java
@@ -7,7 +7,7 @@
 import com.google.common.collect.ImmutableList;
 import java.util.List;
 import java.util.function.Consumer;
-import kotlinx.metadata.KmVersionRequirement;
+import kotlin.metadata.KmVersionRequirement;
 
 class KotlinVersionRequirementInfo {
 
diff --git a/src/main/java/com/android/tools/r8/naming/KotlinModuleSynthesizer.java b/src/main/java/com/android/tools/r8/naming/KotlinModuleSynthesizer.java
index 76c2314..39d4bd8 100644
--- a/src/main/java/com/android/tools/r8/naming/KotlinModuleSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/naming/KotlinModuleSynthesizer.java
@@ -24,9 +24,9 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-import kotlinx.metadata.jvm.JvmMetadataVersion;
-import kotlinx.metadata.jvm.KmModule;
-import kotlinx.metadata.jvm.KotlinModuleMetadata;
+import kotlin.metadata.jvm.JvmMetadataVersion;
+import kotlin.metadata.jvm.KmModule;
+import kotlin.metadata.jvm.KotlinModuleMetadata;
 
 /**
  * The kotlin module synthesizer will scan through all file facades and multiclass files to figure
diff --git a/src/test/bootstrap/com/android/tools/r8/bootstrap/SanityCheck.java b/src/test/bootstrap/com/android/tools/r8/bootstrap/SanityCheck.java
index a30a06f..d8429ea 100644
--- a/src/test/bootstrap/com/android/tools/r8/bootstrap/SanityCheck.java
+++ b/src/test/bootstrap/com/android/tools/r8/bootstrap/SanityCheck.java
@@ -38,7 +38,7 @@
 
   private static final String SRV_PREFIX = "META-INF/services/";
   private static final String METADATA_EXTENSION =
-      "com.android.tools.r8.jetbrains.kotlinx.metadata.internal.extensions.MetadataExtensions";
+      "com.android.tools.r8.jetbrains.kotlin.metadata.internal.extensions.MetadataExtensions";
   private static final String EXT_IN_SRV = SRV_PREFIX + METADATA_EXTENSION;
   private static final String THREADING_MODULE_SERVICE_FILE =
       "META-INF/services/com.android.tools.r8.threading.ThreadingModuleProvider";
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/kotlin/KotlinMetadataTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/kotlin/KotlinMetadataTest.java
index 6dfa8e8..510e5bb 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/kotlin/KotlinMetadataTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/kotlin/KotlinMetadataTest.java
@@ -30,7 +30,7 @@
 import com.google.common.collect.ImmutableList;
 import java.nio.file.Paths;
 import java.util.List;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java b/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
index fb0f2fa..e2339f6 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
@@ -32,7 +32,7 @@
 import java.util.function.BiConsumer;
 import java.util.stream.Collectors;
 import junit.framework.TestCase;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 import org.junit.Assert;
 
 public abstract class KotlinMetadataTestBase extends KotlinTestBase {
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAnnotationTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAnnotationTest.java
index 5909d6e..ff33776 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAnnotationTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAnnotationTest.java
@@ -24,9 +24,9 @@
 import java.nio.file.Path;
 import java.util.Collection;
 import java.util.Map;
-import kotlinx.metadata.KmAnnotation;
-import kotlinx.metadata.KmAnnotationArgument;
-import kotlinx.metadata.KmAnnotationArgument.ArrayValue;
+import kotlin.metadata.KmAnnotation;
+import kotlin.metadata.KmAnnotationArgument;
+import kotlin.metadata.KmAnnotationArgument.ArrayValue;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java
index e045850..7cf4852 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java
@@ -22,7 +22,7 @@
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import java.nio.file.Path;
 import java.util.Collection;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteFlexibleUpperBoundTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteFlexibleUpperBoundTest.java
index c5a02f0..f7fcc5d 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteFlexibleUpperBoundTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteFlexibleUpperBoundTest.java
@@ -25,7 +25,7 @@
 import java.nio.file.Path;
 import java.util.Collection;
 import java.util.List;
-import kotlinx.metadata.KmFlexibleTypeUpperBound;
+import kotlin.metadata.KmFlexibleTypeUpperBound;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java
index 6899803..e0d8bd1 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java
@@ -30,7 +30,7 @@
 import java.nio.file.Path;
 import java.util.Collection;
 import java.util.List;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeArgumentsTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeArgumentsTest.java
index 8c52bca..12fe3cb 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeArgumentsTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeArgumentsTest.java
@@ -31,8 +31,8 @@
 import java.nio.file.Path;
 import java.util.Collection;
 import java.util.List;
-import kotlinx.metadata.KmClassifier.TypeParameter;
-import kotlinx.metadata.KmVariance;
+import kotlin.metadata.KmClassifier.TypeParameter;
+import kotlin.metadata.KmVariance;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteKeepTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteKeepTest.java
index 30dbf27..c8299cc 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteKeepTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteKeepTest.java
@@ -15,7 +15,7 @@
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.android.tools.r8.utils.codeinspector.FoundClassSubject;
 import java.util.Collection;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/syntheticmethodforannotations/KotlinMetadataTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/syntheticmethodforannotations/KotlinMetadataTest.java
index b2f93a1..dfd2bd9 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/syntheticmethodforannotations/KotlinMetadataTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/syntheticmethodforannotations/KotlinMetadataTest.java
@@ -24,9 +24,9 @@
 import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
-import kotlinx.metadata.internal.extensions.KmPropertyExtension;
-import kotlinx.metadata.jvm.JvmMethodSignature;
-import kotlinx.metadata.jvm.internal.JvmPropertyExtension;
+import kotlin.metadata.internal.extensions.KmPropertyExtension;
+import kotlin.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.jvm.internal.JvmPropertyExtension;
 import org.junit.Assume;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -151,7 +151,7 @@
       KmPropertySubject kmPropertySubject = properties.get(i1);
       assertTrue(kmPropertySubject.name().equals("All") || kmPropertySubject.name().equals("All2"));
       List<KmPropertyExtension> extensions =
-          kmPropertySubject.getKmProperty().getExtensions$kotlinx_metadata();
+          kmPropertySubject.getKmProperty().getExtensions$kotlin_metadata();
       assertEquals(1, extensions.size());
       JvmMethodSignature syntheticMethodForAnnotations =
           ((JvmPropertyExtension) extensions.get(0)).getSyntheticMethodForAnnotations();
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentClassSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentClassSubject.java
index b515144..629ad82 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentClassSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentClassSubject.java
@@ -15,7 +15,7 @@
 import java.util.List;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 import org.junit.rules.TemporaryFolder;
 
 public class AbsentClassSubject extends ClassSubject {
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmClassSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmClassSubject.java
index 1da8375..a2b9a1a 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmClassSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmClassSubject.java
@@ -6,7 +6,7 @@
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.graph.DexClass;
 import java.util.List;
-import kotlinx.metadata.KmTypeParameter;
+import kotlin.metadata.KmTypeParameter;
 
 public class AbsentKmClassSubject extends KmClassSubject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmFunctionSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmFunctionSubject.java
index 7e8c837..3e905fb 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmFunctionSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmFunctionSubject.java
@@ -5,8 +5,8 @@
 
 import com.android.tools.r8.errors.Unreachable;
 import java.util.List;
-import kotlinx.metadata.KmTypeParameter;
-import kotlinx.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.KmTypeParameter;
+import kotlin.metadata.jvm.JvmMethodSignature;
 
 public class AbsentKmFunctionSubject extends KmFunctionSubject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmPropertySubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmPropertySubject.java
index 59773c5..8d1eb63 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmPropertySubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmPropertySubject.java
@@ -4,8 +4,8 @@
 package com.android.tools.r8.utils.codeinspector;
 
 import com.android.tools.r8.errors.Unreachable;
-import kotlinx.metadata.jvm.JvmFieldSignature;
-import kotlinx.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.jvm.JvmFieldSignature;
+import kotlin.metadata.jvm.JvmMethodSignature;
 
 public class AbsentKmPropertySubject extends KmPropertySubject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmTypeAliasSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmTypeAliasSubject.java
index 622db02..32e9249 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmTypeAliasSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmTypeAliasSubject.java
@@ -7,7 +7,7 @@
 import com.android.tools.r8.errors.Unreachable;
 import com.google.common.collect.ImmutableList;
 import java.util.List;
-import kotlinx.metadata.KmAnnotation;
+import kotlin.metadata.KmAnnotation;
 
 public class AbsentKmTypeAliasSubject extends KmTypeAliasSubject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmTypeParameterSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmTypeParameterSubject.java
index 9bb0998..87e4427 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmTypeParameterSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/AbsentKmTypeParameterSubject.java
@@ -6,7 +6,7 @@
 
 import com.android.tools.r8.errors.Unreachable;
 import java.util.List;
-import kotlinx.metadata.KmVariance;
+import kotlin.metadata.KmVariance;
 
 public class AbsentKmTypeParameterSubject extends KmTypeParameterSubject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/ClassSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/ClassSubject.java
index 8833c9f..5428914 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/ClassSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/ClassSubject.java
@@ -27,7 +27,7 @@
 import java.util.function.Consumer;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 import org.junit.rules.TemporaryFolder;
 
 public abstract class ClassSubject extends ClassOrMemberSubject {
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java
index 67a41c1..b656632 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java
@@ -58,7 +58,7 @@
 import java.util.Set;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
+import kotlin.metadata.jvm.KotlinClassMetadata;
 import org.junit.rules.TemporaryFolder;
 
 public class FoundClassSubject extends ClassSubject {
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmClassSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmClassSubject.java
index 34f7c4c..a39aca1 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmClassSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmClassSubject.java
@@ -9,9 +9,9 @@
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
-import kotlinx.metadata.KmClass;
-import kotlinx.metadata.KmDeclarationContainer;
-import kotlinx.metadata.KmTypeParameter;
+import kotlin.metadata.KmClass;
+import kotlin.metadata.KmDeclarationContainer;
+import kotlin.metadata.KmTypeParameter;
 
 public class FoundKmClassSubject extends KmClassSubject
     implements FoundKmDeclarationContainerSubject {
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmConstructorSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmConstructorSubject.java
index 19a783f..392c9dd 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmConstructorSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmConstructorSubject.java
@@ -6,9 +6,9 @@
 
 import java.util.List;
 import java.util.stream.Collectors;
-import kotlinx.metadata.KmConstructor;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
-import kotlinx.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.KmConstructor;
+import kotlin.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.jvm.JvmMethodSignature;
 
 public class FoundKmConstructorSubject extends KmConstructorSubject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmDeclarationContainerSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmDeclarationContainerSubject.java
index a74c3d8..7a6ebc9 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmDeclarationContainerSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmDeclarationContainerSubject.java
@@ -9,20 +9,20 @@
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
-import kotlinx.metadata.KmDeclarationContainer;
-import kotlinx.metadata.KmExtensionType;
-import kotlinx.metadata.KmFunction;
-import kotlinx.metadata.KmFunctionExtensionVisitor;
-import kotlinx.metadata.KmFunctionVisitor;
-import kotlinx.metadata.KmProperty;
-import kotlinx.metadata.KmPropertyExtensionVisitor;
-import kotlinx.metadata.KmPropertyVisitor;
-import kotlinx.metadata.KmType;
-import kotlinx.metadata.KmTypeAlias;
-import kotlinx.metadata.jvm.JvmFieldSignature;
-import kotlinx.metadata.jvm.JvmFunctionExtensionVisitor;
-import kotlinx.metadata.jvm.JvmMethodSignature;
-import kotlinx.metadata.jvm.JvmPropertyExtensionVisitor;
+import kotlin.metadata.KmDeclarationContainer;
+import kotlin.metadata.KmExtensionType;
+import kotlin.metadata.KmFunction;
+import kotlin.metadata.KmFunctionExtensionVisitor;
+import kotlin.metadata.KmFunctionVisitor;
+import kotlin.metadata.KmProperty;
+import kotlin.metadata.KmPropertyExtensionVisitor;
+import kotlin.metadata.KmPropertyVisitor;
+import kotlin.metadata.KmType;
+import kotlin.metadata.KmTypeAlias;
+import kotlin.metadata.jvm.JvmFieldSignature;
+import kotlin.metadata.jvm.JvmFunctionExtensionVisitor;
+import kotlin.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.jvm.JvmPropertyExtensionVisitor;
 
 public interface FoundKmDeclarationContainerSubject extends KmDeclarationContainerSubject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmFunctionSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmFunctionSubject.java
index 93a2d96..8748af7 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmFunctionSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmFunctionSubject.java
@@ -6,10 +6,10 @@
 import com.android.tools.r8.utils.codeinspector.FoundKmDeclarationContainerSubject.KmFunctionProcessor;
 import java.util.List;
 import java.util.stream.Collectors;
-import kotlinx.metadata.KmFunction;
-import kotlinx.metadata.KmType;
-import kotlinx.metadata.KmTypeParameter;
-import kotlinx.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.KmFunction;
+import kotlin.metadata.KmType;
+import kotlin.metadata.KmTypeParameter;
+import kotlin.metadata.jvm.JvmMethodSignature;
 
 public class FoundKmFunctionSubject extends KmFunctionSubject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmPackageSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmPackageSubject.java
index 4c1f418..452d122 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmPackageSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmPackageSubject.java
@@ -5,8 +5,8 @@
 
 import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.kotlin.KotlinMetadataWriter;
-import kotlinx.metadata.KmDeclarationContainer;
-import kotlinx.metadata.KmPackage;
+import kotlin.metadata.KmDeclarationContainer;
+import kotlin.metadata.KmPackage;
 
 public class FoundKmPackageSubject extends KmPackageSubject
     implements FoundKmDeclarationContainerSubject {
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmPropertySubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmPropertySubject.java
index e2099f2..03c3de6 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmPropertySubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmPropertySubject.java
@@ -4,9 +4,9 @@
 package com.android.tools.r8.utils.codeinspector;
 
 import com.android.tools.r8.utils.codeinspector.FoundKmDeclarationContainerSubject.KmPropertyProcessor;
-import kotlinx.metadata.KmProperty;
-import kotlinx.metadata.jvm.JvmFieldSignature;
-import kotlinx.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.KmProperty;
+import kotlin.metadata.jvm.JvmFieldSignature;
+import kotlin.metadata.jvm.JvmMethodSignature;
 
 public class FoundKmPropertySubject extends KmPropertySubject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmTypeAliasSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmTypeAliasSubject.java
index 396ef98..8a19467 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmTypeAliasSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmTypeAliasSubject.java
@@ -9,8 +9,8 @@
 
 import java.util.List;
 import java.util.stream.Collectors;
-import kotlinx.metadata.KmAnnotation;
-import kotlinx.metadata.KmTypeAlias;
+import kotlin.metadata.KmAnnotation;
+import kotlin.metadata.KmTypeAlias;
 
 public class FoundKmTypeAliasSubject extends KmTypeAliasSubject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmTypeParameterSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmTypeParameterSubject.java
index c8057ce..7640064 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmTypeParameterSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/FoundKmTypeParameterSubject.java
@@ -2,8 +2,8 @@
 
 import java.util.List;
 import java.util.stream.Collectors;
-import kotlinx.metadata.KmTypeParameter;
-import kotlinx.metadata.KmVariance;
+import kotlin.metadata.KmTypeParameter;
+import kotlin.metadata.KmVariance;
 
 public class FoundKmTypeParameterSubject extends KmTypeParameterSubject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmClassifierSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmClassifierSubject.java
index 8adb293..839ca76 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmClassifierSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmClassifierSubject.java
@@ -4,7 +4,7 @@
 
 package com.android.tools.r8.utils.codeinspector;
 
-import kotlinx.metadata.KmClassifier;
+import kotlin.metadata.KmClassifier;
 
 public class KmClassifierSubject extends Subject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmConstructorSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmConstructorSubject.java
index 7a2e468..1f808f4 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmConstructorSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmConstructorSubject.java
@@ -4,7 +4,7 @@
 package com.android.tools.r8.utils.codeinspector;
 
 import java.util.List;
-import kotlinx.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.jvm.JvmMethodSignature;
 
 public abstract class KmConstructorSubject extends Subject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmFunctionSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmFunctionSubject.java
index 0f9dae1..b40a0db 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmFunctionSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmFunctionSubject.java
@@ -4,8 +4,8 @@
 package com.android.tools.r8.utils.codeinspector;
 
 import java.util.List;
-import kotlinx.metadata.KmFunction;
-import kotlinx.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.KmFunction;
+import kotlin.metadata.jvm.JvmMethodSignature;
 
 public abstract class KmFunctionSubject extends Subject implements KmTypeParameterSubjectMixin {
   // TODO(b/145824437): This is a dup of KotlinMetadataSynthesizer#isExtension
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmPropertySubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmPropertySubject.java
index 77a6b40..6ca5387 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmPropertySubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmPropertySubject.java
@@ -3,9 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.utils.codeinspector;
 
-import kotlinx.metadata.KmProperty;
-import kotlinx.metadata.jvm.JvmFieldSignature;
-import kotlinx.metadata.jvm.JvmMethodSignature;
+import kotlin.metadata.KmProperty;
+import kotlin.metadata.jvm.JvmFieldSignature;
+import kotlin.metadata.jvm.JvmMethodSignature;
 
 public abstract class KmPropertySubject extends Subject {
   // TODO(b/145824437): This is a dup of KotlinMetadataSynthesizer#isExtension
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeAliasSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeAliasSubject.java
index 8ff3c90..aaf2560 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeAliasSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeAliasSubject.java
@@ -5,7 +5,7 @@
 package com.android.tools.r8.utils.codeinspector;
 
 import java.util.List;
-import kotlinx.metadata.KmAnnotation;
+import kotlin.metadata.KmAnnotation;
 
 public abstract class KmTypeAliasSubject extends Subject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeParameterSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeParameterSubject.java
index 672ad09..bc70b90 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeParameterSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeParameterSubject.java
@@ -5,7 +5,7 @@
 package com.android.tools.r8.utils.codeinspector;
 
 import java.util.List;
-import kotlinx.metadata.KmVariance;
+import kotlin.metadata.KmVariance;
 
 public abstract class KmTypeParameterSubject extends Subject {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeParameterSubjectMixin.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeParameterSubjectMixin.java
index 257c109..dba6f50 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeParameterSubjectMixin.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeParameterSubjectMixin.java
@@ -6,7 +6,7 @@
 
 import java.util.List;
 import java.util.stream.Collectors;
-import kotlinx.metadata.KmTypeParameter;
+import kotlin.metadata.KmTypeParameter;
 
 public interface KmTypeParameterSubjectMixin {
 
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeProjectionSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeProjectionSubject.java
index 3ee66c9..9f850e0 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeProjectionSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeProjectionSubject.java
@@ -4,8 +4,8 @@
 package com.android.tools.r8.utils.codeinspector;
 
 import com.android.tools.r8.errors.Unreachable;
-import kotlinx.metadata.KmTypeProjection;
-import kotlinx.metadata.KmVariance;
+import kotlin.metadata.KmTypeProjection;
+import kotlin.metadata.KmVariance;
 
 public class KmTypeProjectionSubject extends Subject {
   private final CodeInspector codeInspector;
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeSubject.java
index 5f50367..0bdeb7e 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmTypeSubject.java
@@ -11,11 +11,11 @@
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
-import kotlinx.metadata.KmAnnotation;
-import kotlinx.metadata.KmFlexibleTypeUpperBound;
-import kotlinx.metadata.KmType;
-import kotlinx.metadata.KmTypeVisitor;
-import kotlinx.metadata.jvm.JvmExtensionsKt;
+import kotlin.metadata.KmAnnotation;
+import kotlin.metadata.KmFlexibleTypeUpperBound;
+import kotlin.metadata.KmType;
+import kotlin.metadata.KmTypeVisitor;
+import kotlin.metadata.jvm.JvmExtensionsKt;
 
 public class KmTypeSubject extends Subject {
   private final CodeInspector codeInspector;
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmValueParameterSubject.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmValueParameterSubject.java
index 61a2531..2586325 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmValueParameterSubject.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/KmValueParameterSubject.java
@@ -3,10 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.utils.codeinspector;
 
-import static kotlinx.metadata.Flag.ValueParameter.DECLARES_DEFAULT_VALUE;
+import static kotlin.metadata.Flag.ValueParameter.DECLARES_DEFAULT_VALUE;
 
 import com.android.tools.r8.errors.Unreachable;
-import kotlinx.metadata.KmValueParameter;
+import kotlin.metadata.KmValueParameter;
 
 public class KmValueParameterSubject extends Subject {
   private final CodeInspector codeInspector;
diff --git a/third_party/dependencies.tar.gz.sha1 b/third_party/dependencies.tar.gz.sha1
index 933b6a1..362cc92 100644
--- a/third_party/dependencies.tar.gz.sha1
+++ b/third_party/dependencies.tar.gz.sha1
@@ -1 +1 @@
-e73831faa468788bf1f657991b90d598f48c5264
\ No newline at end of file
+fd84e5adc03d7770a211a2fcb7978f0339c6c02a
\ No newline at end of file
diff --git a/tools/create_local_maven_with_dependencies.py b/tools/create_local_maven_with_dependencies.py
index 1e4ae4f..c3f4819 100755
--- a/tools/create_local_maven_with_dependencies.py
+++ b/tools/create_local_maven_with_dependencies.py
@@ -24,7 +24,7 @@
 ASM_VERSION = '9.7' # When updating update tools/asmifier.py and Toolhelper as well.
 ESPRESSO_VERSION = '3.0.0'
 FASTUTIL_VERSION = '7.2.1'
-KOTLIN_METADATA_VERSION = '0.9.0'
+KOTLIN_METADATA_VERSION = '2.0.0-Beta5'
 KOTLIN_VERSION = '1.9.20'
 GUAVA_VERSION = '32.1.2-jre'
 GSON_VERSION = '2.10.1'
@@ -80,7 +80,7 @@
         version=KOTLIN_VERSION),
     'org.jetbrains.kotlin:kotlin-tooling-core:{version}'.format(
         version=KOTLIN_VERSION),
-    'org.jetbrains.kotlinx:kotlinx-metadata-jvm:{version}'.format(
+    'org.jetbrains.kotlin:kotlin-metadata-jvm:{version}'.format(
         version=KOTLIN_METADATA_VERSION),
 ]
 
