Upgrade to Kotlin metadata 0.7.0

Change-Id: I397bef23b3923440978d7d2c80bff92b7b204328
diff --git a/build.gradle b/build.gradle
index 41d7c5c..8db5b0d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -30,7 +30,7 @@
     // The kotlin version is only here to specify the kotlin language level,
     // all kotlin compilations are done in tests.
     kotlinVersion = '1.8.0'
-    kotlinExtMetadataJVMVersion = '0.6.2'
+    kotlinExtMetadataJVMVersion = '0.7.0'
     smaliVersion = '3.0.3'
     errorproneVersion = '2.18.0'
     testngVersion = '6.10'
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
index e396985..9dd2b09 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
@@ -307,7 +307,7 @@
   const val javassist = "3.29.2-GA"
   const val junitVersion = "4.13-beta-2"
   const val kotlinVersion = "1.8.10"
-  const val kotlinMetadataVersion = "0.6.2"
+  const val kotlinMetadataVersion = "0.7.0"
   const val mockito = "2.10.0"
   const val smaliVersion = "3.0.3"
 }
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 bc61463..66c4f2e 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java
@@ -125,10 +125,7 @@
       Consumer<DexEncodedMethod> keepByteCode) {
     DexItemFactory factory = appView.dexItemFactory();
     Reporter reporter = appView.reporter();
-    KmClass kmClass = metadata.toKmClass();
-    KotlinJvmSignatureExtensionInformation extensionInformation =
-        KotlinJvmSignatureExtensionInformation.readInformationFromMessage(
-            metadata, appView.options());
+    KmClass kmClass = metadata.getKmClass();
     Map<String, DexEncodedField> fieldMap = new HashMap<>();
     for (DexEncodedField field : hostClass.fields()) {
       fieldMap.put(toJvmFieldSignature(field.getReference()).asString(), field);
@@ -138,14 +135,11 @@
       methodMap.put(toJvmMethodSignature(method.getReference()).asString(), method);
     }
     ImmutableList.Builder<KotlinConstructorInfo> notBackedConstructors = ImmutableList.builder();
-    int constructorIndex = 0;
     KotlinMetadataMembersTracker originalMembersWithKotlinInfo =
         new KotlinMetadataMembersTracker(appView);
     for (KmConstructor kmConstructor : kmClass.getConstructors()) {
-      boolean readConstructorSignature =
-          extensionInformation.hasJvmMethodSignatureExtensionForConstructor(constructorIndex++);
       KotlinConstructorInfo constructorInfo =
-          KotlinConstructorInfo.create(kmConstructor, factory, reporter, readConstructorSignature);
+          KotlinConstructorInfo.create(kmConstructor, factory, reporter);
       JvmMethodSignature signature = JvmExtensionsKt.getSignature(kmConstructor);
       if (signature != null) {
         DexEncodedMethod method = methodMap.get(signature.asString());
@@ -166,7 +160,6 @@
             factory,
             reporter,
             keepByteCode,
-            extensionInformation,
             originalMembersWithKotlinInfo);
     KotlinTypeReference anonymousObjectOrigin = getAnonymousObjectOrigin(kmClass, factory);
     boolean nameCanBeDeducedFromClassOrOrigin =
@@ -454,7 +447,7 @@
         localDelegatedProperties.rewrite(
             JvmExtensionsKt.getLocalDelegatedProperties(kmClass)::add, appView);
     return Pair.create(
-        Companion.writeClass(kmClass, getCompatibleKotlinInfo(), 0).getAnnotationData(),
+        Companion.writeClass(kmClass, getCompatibleKotlinInfo(), 0),
         rewritten || !originalMembersWithKotlinInfo.isEqual(rewrittenReferences, appView));
   }
 
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 d63d8e7..849a6fc 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
@@ -203,9 +203,9 @@
       KotlinClassMetadata kMetadata,
       AppView<?> appView,
       Consumer<DexEncodedMethod> keepByteCode) {
-    Metadata annotationData = kMetadata.getAnnotationData();
-    String packageName = annotationData.pn();
-    int[] metadataVersion = annotationData.mv();
+    Metadata metadata = kMetadata.getAnnotationData$kotlinx_metadata_jvm();
+    String packageName = metadata.pn();
+    int[] metadataVersion = metadata.mv();
     if (kMetadata instanceof KotlinClassMetadata.Class) {
       return KotlinClassInfo.create(
           (KotlinClassMetadata.Class) kMetadata,
@@ -240,7 +240,7 @@
           kotlin,
           appView);
     } else {
-      throw new MetadataError("unsupported 'k' value: " + annotationData.k());
+      throw new MetadataError("unsupported 'k' value: " + metadata.k());
     }
   }
 
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 c8dac29..a60cf6b 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinConstructorInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinConstructorInfo.java
@@ -41,18 +41,12 @@
   }
 
   public static KotlinConstructorInfo create(
-      KmConstructor kmConstructor,
-      DexItemFactory factory,
-      Reporter reporter,
-      boolean readConstructorSignature) {
+      KmConstructor kmConstructor, DexItemFactory factory, Reporter reporter) {
     return new KotlinConstructorInfo(
         kmConstructor.getFlags(),
         KotlinValueParameterInfo.create(kmConstructor.getValueParameters(), factory, reporter),
         KotlinVersionRequirementInfo.create(kmConstructor.getVersionRequirements()),
-        readConstructorSignature
-            ? KotlinJvmMethodSignatureInfo.create(
-                JvmExtensionsKt.getSignature(kmConstructor), factory)
-            : null);
+        KotlinJvmMethodSignatureInfo.create(JvmExtensionsKt.getSignature(kmConstructor), factory));
   }
 
   boolean rewrite(KmClass kmClass, DexEncodedMethod method, AppView<?> appView) {
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 0c159d2..e670bb5 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java
@@ -59,10 +59,8 @@
       DexItemFactory factory,
       Reporter reporter,
       Consumer<DexEncodedMethod> keepByteCode,
-      KotlinJvmSignatureExtensionInformation extensionInformation,
       KotlinMetadataMembersTracker originalAssignmentTracker) {
     ImmutableList.Builder<KotlinFunctionInfo> notBackedFunctions = ImmutableList.builder();
-    int functionCounter = 0;
     for (KmFunction kmFunction : container.getFunctions()) {
       JvmMethodSignature signature = JvmExtensionsKt.getSignature(kmFunction);
       if (signature == null) {
@@ -70,11 +68,7 @@
         continue;
       }
       KotlinFunctionInfo kotlinFunctionInfo =
-          KotlinFunctionInfo.create(
-              kmFunction,
-              factory,
-              reporter,
-              extensionInformation.hasJvmMethodSignatureExtensionForFunction(functionCounter++));
+          KotlinFunctionInfo.create(kmFunction, factory, reporter);
       DexEncodedMethod method = methodSignatureMap.get(signature.asString());
       if (method == null) {
         notBackedFunctions.add(kotlinFunctionInfo);
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 59e482f..228aee9 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinFileFacadeInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinFileFacadeInfo.java
@@ -38,12 +38,9 @@
       DexClass clazz,
       AppView<?> appView,
       Consumer<DexEncodedMethod> keepByteCode) {
-    KmPackage kmPackage = kmFileFacade.toKmPackage();
-    KotlinJvmSignatureExtensionInformation extensionInformation =
-        KotlinJvmSignatureExtensionInformation.readInformationFromMessage(
-            kmFileFacade, appView.options());
+    KmPackage kmPackage = kmFileFacade.getKmPackage();
     return new KotlinFileFacadeInfo(
-        KotlinPackageInfo.create(kmPackage, clazz, appView, keepByteCode, extensionInformation),
+        KotlinPackageInfo.create(kmPackage, clazz, appView, keepByteCode),
         packageName,
         metadataVersion);
   }
@@ -63,8 +60,7 @@
     KmPackage kmPackage = new KmPackage();
     boolean rewritten = packageInfo.rewrite(kmPackage, clazz, appView);
     return Pair.create(
-        Companion.writeFileFacade(kmPackage, getCompatibleKotlinInfo(), 0).getAnnotationData(),
-        rewritten);
+        Companion.writeFileFacade(kmPackage, getCompatibleKotlinInfo(), 0), rewritten);
   }
 
   @Override
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 351acc9..1e387ff 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinFunctionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinFunctionInfo.java
@@ -79,10 +79,7 @@
   }
 
   static KotlinFunctionInfo create(
-      KmFunction kmFunction,
-      DexItemFactory factory,
-      Reporter reporter,
-      boolean readMethodSignature) {
+      KmFunction kmFunction, DexItemFactory factory, Reporter reporter) {
     boolean isCrossInline = false;
     List<KotlinValueParameterInfo> valueParameters =
         KotlinValueParameterInfo.create(kmFunction.getValueParameters(), factory, reporter);
@@ -99,16 +96,14 @@
         KotlinTypeInfo.create(kmFunction.getReceiverParameterType(), factory, reporter),
         valueParameters,
         KotlinTypeParameterInfo.create(kmFunction.getTypeParameters(), factory, reporter),
-        readMethodSignature
-            ? KotlinJvmMethodSignatureInfo.create(JvmExtensionsKt.getSignature(kmFunction), factory)
-            : null,
+        KotlinJvmMethodSignatureInfo.create(JvmExtensionsKt.getSignature(kmFunction), factory),
         getlambdaClassOrigin(kmFunction, factory),
         KotlinVersionRequirementInfo.create(kmFunction.getVersionRequirements()),
         KotlinContractInfo.create(kmFunction.getContract(), factory, reporter),
         isCrossInline,
         ListUtils.map(
             kmFunction.getContextReceiverTypes(),
-            contextRecieverType -> KotlinTypeInfo.create(contextRecieverType, factory, reporter)));
+            contextReceiverType -> KotlinTypeInfo.create(contextReceiverType, factory, reporter)));
   }
 
   private static KotlinTypeReference getlambdaClassOrigin(
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmSignatureExtensionInformation.java b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmSignatureExtensionInformation.java
deleted file mode 100644
index 98ebaed..0000000
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmSignatureExtensionInformation.java
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright (c) 2021, 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.kotlin;
-
-import com.android.tools.r8.utils.InternalOptions;
-import com.android.tools.r8.utils.ListUtils;
-import com.android.tools.r8.utils.ReflectionHelper;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import kotlin.Pair;
-import kotlinx.metadata.internal.metadata.ProtoBuf;
-import kotlinx.metadata.internal.metadata.jvm.JvmProtoBuf;
-import kotlinx.metadata.jvm.KotlinClassMetadata;
-import kotlinx.metadata.jvm.KotlinClassMetadata.FileFacade;
-import kotlinx.metadata.jvm.KotlinClassMetadata.MultiFileClassPart;
-import kotlinx.metadata.jvm.KotlinClassMetadata.SyntheticClass;
-
-// Due to kotlin-metadata-jvm library synthesizing jvm method signatures from type-information
-// we do an extra check to figure out if we should model the signature. If we model it, we will
-// add name and descriptor information to the string pool for the proto message, so it is
-// better to avoid it.
-// https://github.com/Kotlin/kotlinx.reflect.lite/blob/46d47f118f9846166b6b8f8212bdbc822fe2f634/src/main/java/org/jetbrains/kotlin/serialization/jvm/JvmProtoBufUtil.kt
-
-public class KotlinJvmSignatureExtensionInformation {
-
-  private final Set<Integer> noExtensionIndicesForFunctions;
-  private final Set<Integer> noExtensionIndicesForConstructors;
-
-  private static final KotlinJvmSignatureExtensionInformation EMPTY = builder().build();
-
-  private KotlinJvmSignatureExtensionInformation(
-      Set<Integer> noExtensionIndicesForFunctions, Set<Integer> noExtensionIndicesForConstructors) {
-    this.noExtensionIndicesForFunctions = noExtensionIndicesForFunctions;
-    this.noExtensionIndicesForConstructors = noExtensionIndicesForConstructors;
-  }
-
-  public static KotlinJvmSignatureExtensionInformation readInformationFromMessage(
-      FileFacade fileFacadeMetadata, InternalOptions options) {
-    return readPackageDataFromMessage(fileFacadeMetadata, options);
-  }
-
-  public static KotlinJvmSignatureExtensionInformation readInformationFromMessage(
-      MultiFileClassPart classPart, InternalOptions options) {
-    return readPackageDataFromMessage(classPart, options);
-  }
-
-  private static KotlinJvmSignatureExtensionInformation readPackageDataFromMessage(
-      Object object, InternalOptions options) {
-    try {
-      Pair<?, ProtoBuf.Package> kotlinPairData =
-          ReflectionHelper.performReflection(
-              object,
-              ReflectionHelper.builder()
-                  .readField("packageData$delegate")
-                  .setSetAccessible(true)
-                  .done()
-                  .readMethod("getValue")
-                  .setSetAccessible(true)
-                  .done()
-                  .build());
-      return builder().visit(kotlinPairData.getSecond()).build();
-    } catch (Exception e) {
-      options.warningReadingKotlinMetadataReflective();
-      return empty();
-    }
-  }
-
-  public static KotlinJvmSignatureExtensionInformation readInformationFromMessage(
-      SyntheticClass syntheticClass, InternalOptions options) {
-    try {
-      Pair<?, ProtoBuf.Function> kotlinPairData =
-          ReflectionHelper.performReflection(
-              syntheticClass,
-              ReflectionHelper.builder()
-                  .readField("functionData$delegate")
-                  .setSetAccessible(true)
-                  .done()
-                  .readMethod("getValue")
-                  .setSetAccessible(true)
-                  .done()
-                  .build());
-      if (kotlinPairData == null) {
-        return empty();
-      }
-      return builder().visit(kotlinPairData.getSecond(), 0).build();
-    } catch (Exception e) {
-      options.warningReadingKotlinMetadataReflective();
-      return empty();
-    }
-  }
-
-  public static KotlinJvmSignatureExtensionInformation readInformationFromMessage(
-      KotlinClassMetadata.Class kMetadata, InternalOptions options) {
-    try {
-      Pair<?, ProtoBuf.Class> kotlinPairData =
-          ReflectionHelper.performReflection(
-              kMetadata,
-              ReflectionHelper.builder()
-                  .readField("classData$delegate")
-                  .setSetAccessible(true)
-                  .done()
-                  .readMethod("getValue")
-                  .setSetAccessible(true)
-                  .done()
-                  .build());
-      return builder().visit(kotlinPairData.getSecond()).build();
-    } catch (Exception e) {
-      options.warningReadingKotlinMetadataReflective();
-      return empty();
-    }
-  }
-
-  public boolean hasJvmMethodSignatureExtensionForFunction(int index) {
-    return !noExtensionIndicesForFunctions.contains(index);
-  }
-
-  public boolean hasJvmMethodSignatureExtensionForConstructor(int index) {
-    return !noExtensionIndicesForConstructors.contains(index);
-  }
-
-  public static KotlinJvmSignatureExtensionInformationBuilder builder() {
-    return new KotlinJvmSignatureExtensionInformationBuilder();
-  }
-
-  public static KotlinJvmSignatureExtensionInformation empty() {
-    return EMPTY;
-  }
-
-  private static class KotlinJvmSignatureExtensionInformationBuilder {
-
-    private final Set<Integer> noExtensionIndicesForFunctions = new HashSet<>();
-    private final Set<Integer> noExtensionIndicesForConstructors = new HashSet<>();
-
-    private KotlinJvmSignatureExtensionInformation build() {
-      return new KotlinJvmSignatureExtensionInformation(
-          noExtensionIndicesForFunctions, noExtensionIndicesForConstructors);
-    }
-
-    private KotlinJvmSignatureExtensionInformationBuilder visit(ProtoBuf.Class clazz) {
-      visitFunctions(clazz.getFunctionList());
-      visitConstructors(clazz.getConstructorList());
-      return this;
-    }
-
-    private KotlinJvmSignatureExtensionInformationBuilder visit(ProtoBuf.Package pkg) {
-      visitFunctions(pkg.getFunctionList());
-      return this;
-    }
-
-    private void visitFunctions(List<ProtoBuf.Function> functions) {
-      ListUtils.forEachWithIndex(functions, this::visit);
-    }
-
-    public KotlinJvmSignatureExtensionInformationBuilder visit(
-        ProtoBuf.Function function, int index) {
-      if (!function.hasExtension(JvmProtoBuf.methodSignature)) {
-        noExtensionIndicesForFunctions.add(index);
-      }
-      return this;
-    }
-
-    private void visitConstructors(List<ProtoBuf.Constructor> constructors) {
-      ListUtils.forEachWithIndex(
-          constructors,
-          (constructor, index) -> {
-            if (!constructor.hasExtension(JvmProtoBuf.constructorSignature)) {
-              noExtensionIndicesForConstructors.add(index);
-            }
-          });
-    }
-  }
-}
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 9900e81..6f04aba 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinLambdaInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinLambdaInfo.java
@@ -31,21 +31,13 @@
   }
 
   static KotlinLambdaInfo create(
-      DexClass clazz,
-      KmLambda lambda,
-      DexItemFactory factory,
-      Reporter reporter,
-      KotlinJvmSignatureExtensionInformation extensionInformation) {
+      DexClass clazz, KmLambda lambda, DexItemFactory factory, Reporter reporter) {
     if (lambda == null) {
       assert false;
       return null;
     }
     KotlinFunctionInfo kotlinFunctionInfo =
-        KotlinFunctionInfo.create(
-            lambda.function,
-            factory,
-            reporter,
-            extensionInformation.hasJvmMethodSignatureExtensionForFunction(0));
+        KotlinFunctionInfo.create(lambda.function, factory, reporter);
     JvmMethodSignature signature = JvmExtensionsKt.getSignature(lambda.function);
     if (signature != null) {
       for (DexEncodedMethod method : clazz.methods()) {
@@ -61,8 +53,7 @@
   boolean rewrite(Consumer<KmLambda> consumer, DexClass clazz, AppView<?> appView) {
     KmLambda kmLambda = consume(new KmLambda(), consumer);
     if (!hasBacking) {
-      function.rewrite(kmLambda::setFunction, null, appView);
-      return true;
+      return function.rewrite(kmLambda::setFunction, null, appView);
     }
     DexEncodedMethod backing = null;
     for (DexEncodedMethod method : clazz.methods()) {
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 6c01e1b..d34a84f 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataAnnotationWrapper.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataAnnotationWrapper.java
@@ -56,7 +56,7 @@
   }
 
   public static KotlinMetadataAnnotationWrapper wrap(KotlinClassMetadata classMetadata) {
-    Metadata annotationData = classMetadata.getAnnotationData();
+    Metadata annotationData = classMetadata.getAnnotationData$kotlinx_metadata_jvm();
     return new KotlinMetadataAnnotationWrapper(
         annotationData.k(),
         annotationData.mv(),
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 9276239..a06a9a2 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
@@ -89,7 +89,7 @@
         "Metadata.Class",
         sb,
         newIndent -> {
-          KotlinMetadataWriter.appendKmClass(newIndent, sb, kMetadata.toKmClass());
+          KotlinMetadataWriter.appendKmClass(newIndent, sb, kMetadata.getKmClass());
         });
     return sb.toString();
   }
@@ -102,7 +102,7 @@
         "Metadata.FileFacade",
         sb,
         newIndent -> {
-          KotlinMetadataWriter.appendKmPackage(newIndent, sb, kMetadata.toKmPackage());
+          KotlinMetadataWriter.appendKmPackage(newIndent, sb, kMetadata.getKmPackage());
         });
     return sb.toString();
   }
@@ -125,7 +125,7 @@
         newIndent -> {
           KotlinMetadataWriter.appendKeyValue(
               newIndent, "facadeClassName", sb, kMetadata.getFacadeClassName());
-          KotlinMetadataWriter.appendKmPackage(newIndent, sb, kMetadata.toKmPackage());
+          KotlinMetadataWriter.appendKmPackage(newIndent, sb, kMetadata.getKmPackage());
         });
     return sb.toString();
   }
@@ -139,7 +139,7 @@
         sb,
         newIndent -> {
           try {
-            KmLambda kmLambda = kMetadata.toKmLambda();
+            KmLambda kmLambda = kMetadata.getKmLambda();
             if (kmLambda != null) {
               KotlinMetadataWriter.appendKeyValue(
                   newIndent,
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 7f0b67f..9757ef4 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassFacadeInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassFacadeInfo.java
@@ -71,8 +71,7 @@
               null);
     }
     return Pair.create(
-        Companion.writeMultiFileClassFacade(partClassNameStrings, getCompatibleKotlinInfo(), 0)
-            .getAnnotationData(),
+        Companion.writeMultiFileClassFacade(partClassNameStrings, getCompatibleKotlinInfo(), 0),
         rewritten);
   }
 
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 a51defc..a317760 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassPartInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassPartInfo.java
@@ -43,13 +43,10 @@
       DexClass clazz,
       AppView<?> appView,
       Consumer<DexEncodedMethod> keepByteCode) {
-    KmPackage kmPackage = classPart.toKmPackage();
-    KotlinJvmSignatureExtensionInformation extensionInformation =
-        KotlinJvmSignatureExtensionInformation.readInformationFromMessage(
-            classPart, appView.options());
+    KmPackage kmPackage = classPart.getKmPackage();
     return new KotlinMultiFileClassPartInfo(
         classPart.getFacadeClassName(),
-        KotlinPackageInfo.create(kmPackage, clazz, appView, keepByteCode, extensionInformation),
+        KotlinPackageInfo.create(kmPackage, clazz, appView, keepByteCode),
         packageName,
         metadataVersion);
   }
@@ -69,8 +66,7 @@
     KmPackage kmPackage = new KmPackage();
     boolean rewritten = packageInfo.rewrite(kmPackage, clazz, appView);
     return Pair.create(
-        Companion.writeMultiFileClassPart(kmPackage, facadeClassName, getCompatibleKotlinInfo(), 0)
-            .getAnnotationData(),
+        Companion.writeMultiFileClassPart(kmPackage, facadeClassName, getCompatibleKotlinInfo(), 0),
         rewritten);
   }
 
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 721cd75..8455829 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinPackageInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinPackageInfo.java
@@ -42,8 +42,7 @@
       KmPackage kmPackage,
       DexClass clazz,
       AppView<?> appView,
-      Consumer<DexEncodedMethod> keepByteCode,
-      KotlinJvmSignatureExtensionInformation extensionInformation) {
+      Consumer<DexEncodedMethod> keepByteCode) {
     Map<String, DexEncodedField> fieldMap = new HashMap<>();
     for (DexEncodedField field : clazz.fields()) {
       fieldMap.put(toJvmFieldSignature(field.getReference()).asString(), field);
@@ -63,7 +62,6 @@
             appView.dexItemFactory(),
             appView.reporter(),
             keepByteCode,
-            extensionInformation,
             originalMembersWithKotlinInfo),
         KotlinLocalDelegatedPropertyInfo.create(
             JvmExtensionsKt.getLocalDelegatedProperties(kmPackage),
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 23c7d92..4449beb 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java
@@ -46,15 +46,11 @@
       DexClass clazz,
       Kotlin kotlin,
       AppView<?> appView) {
-    KmLambda lambda = syntheticClass.toKmLambda();
+    KmLambda lambda = syntheticClass.getKmLambda();
     assert lambda == null || syntheticClass.isLambda();
-    KotlinJvmSignatureExtensionInformation extensionInformation =
-        KotlinJvmSignatureExtensionInformation.readInformationFromMessage(
-            syntheticClass, appView.options());
     return new KotlinSyntheticClassInfo(
         lambda != null
-            ? KotlinLambdaInfo.create(
-                clazz, lambda, appView.dexItemFactory(), appView.reporter(), extensionInformation)
+            ? KotlinLambdaInfo.create(clazz, lambda, appView.dexItemFactory(), appView.reporter())
             : null,
         getFlavour(clazz, kotlin),
         packageName,
@@ -78,15 +74,13 @@
   @Override
   public Pair<Metadata, Boolean> rewrite(DexClass clazz, AppView<?> appView) {
     if (lambda == null) {
-      return Pair.create(
-          Companion.writeSyntheticClass(getCompatibleKotlinInfo(), 0).getAnnotationData(), false);
+      return Pair.create(Companion.writeSyntheticClass(getCompatibleKotlinInfo(), 0), false);
     }
     Box<KmLambda> newLambda = new Box<>();
     boolean rewritten = lambda.rewrite(newLambda::set, clazz, appView);
     assert newLambda.isSet();
     return Pair.create(
-        Companion.writeLambda(newLambda.get(), getCompatibleKotlinInfo(), 0).getAnnotationData(),
-        rewritten);
+        Companion.writeLambda(newLambda.get(), getCompatibleKotlinInfo(), 0), rewritten);
   }
 
   @Override
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 fc52598..9504a38 100644
--- a/src/main/java/com/android/tools/r8/naming/KotlinModuleSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/naming/KotlinModuleSynthesizer.java
@@ -181,7 +181,7 @@
       }
       return Optional.of(
           DataEntryResource.fromBytes(
-              writer.write(metadataVersion.get()).getBytes(),
+              writer.write(metadataVersion.get()),
               "META-INF/" + moduleName + ".kotlin_module",
               Origin.unknown()));
     }
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 b0dd01c..218da15 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
@@ -175,10 +175,8 @@
     assertEquals(1, arguments.size());
     ArrayValue classes = (ArrayValue) arguments.get("classes");
     assertEquals(
-        "KClassValue(className=" + foo.getFinalBinaryName() + ", arrayDimensionCount=0)",
-        classes.getElements().get(0).toString());
+        "KClassValue(" + foo.getFinalBinaryName() + ")", classes.getElements().get(0).toString());
     assertEquals(
-        "KClassValue(className=" + bar.getFinalBinaryName() + ", arrayDimensionCount=0)",
-        classes.getElements().get(1).toString());
+        "KClassValue(" + bar.getFinalBinaryName() + ")", classes.getElements().get(1).toString());
   }
 }
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java
index 457e4a2..dc0053b 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/FoundClassSubject.java
@@ -573,7 +573,7 @@
     }
     assertTrue(metadata instanceof KotlinClassMetadata.Class);
     KotlinClassMetadata.Class kClass = (KotlinClassMetadata.Class) metadata;
-    return new FoundKmClassSubject(codeInspector, getDexProgramClass(), kClass.toKmClass());
+    return new FoundKmClassSubject(codeInspector, getDexProgramClass(), kClass.getKmClass());
   }
 
   @Override
@@ -594,11 +594,11 @@
         || metadata instanceof KotlinClassMetadata.MultiFileClassPart);
     if (metadata instanceof KotlinClassMetadata.FileFacade) {
       KotlinClassMetadata.FileFacade kFile = (KotlinClassMetadata.FileFacade) metadata;
-      return new FoundKmPackageSubject(codeInspector, getDexProgramClass(), kFile.toKmPackage());
+      return new FoundKmPackageSubject(codeInspector, getDexProgramClass(), kFile.getKmPackage());
     } else {
       KotlinClassMetadata.MultiFileClassPart kPart =
           (KotlinClassMetadata.MultiFileClassPart) metadata;
-      return new FoundKmPackageSubject(codeInspector, getDexProgramClass(), kPart.toKmPackage());
+      return new FoundKmPackageSubject(codeInspector, getDexProgramClass(), kPart.getKmPackage());
     }
   }
 
diff --git a/third_party/dependencies.tar.gz.sha1 b/third_party/dependencies.tar.gz.sha1
index 139251d..9544967 100644
--- a/third_party/dependencies.tar.gz.sha1
+++ b/third_party/dependencies.tar.gz.sha1
@@ -1 +1 @@
-d004917502f1b50bedada4bc5cca457ceb237c87
\ No newline at end of file
+a8ce32b32965771099a4e91fedf13abfda7ffbed
\ No newline at end of file
diff --git a/third_party/dependencies_new.tar.gz.sha1 b/third_party/dependencies_new.tar.gz.sha1
index 2d9e556..7bf0259 100644
--- a/third_party/dependencies_new.tar.gz.sha1
+++ b/third_party/dependencies_new.tar.gz.sha1
@@ -1 +1 @@
-e2dff12bf95f94797da37f77b274fe222aeda83a
\ No newline at end of file
+d5238791ca8a92b1ea3dcd91b013ef41e1b5ca38
\ 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 500c480..c27bd44 100755
--- a/tools/create_local_maven_with_dependencies.py
+++ b/tools/create_local_maven_with_dependencies.py
@@ -5,8 +5,8 @@
 
 import argparse
 import os.path
-import subprocess
 import shutil
+import subprocess
 import sys
 
 import utils
@@ -21,7 +21,7 @@
 ASM_VERSION = '9.5'
 ESPRESSO_VERSION = '3.0.0'
 FASTUTIL_VERSION = '7.2.1'
-KOTLIN_METADATA_VERSION = '0.6.2'
+KOTLIN_METADATA_VERSION = '0.7.0'
 KOTLIN_VERSION = '1.8.0'
 GUAVA_VERSION = '31.1-jre'
 GUAVA_VERSION_NEW = '32.1.2-jre'