Reapply "Fix deprecared code in kotlinClassifierInfo"

This reverts commit 76bdfac718a0df7fd4abd95466fbe4d8790547f0.

Change-Id: Ic6ad7a8e29f03ab244e37682258ccff286124146
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 ef21b62..83f3612 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassifierInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassifierInfo.java
@@ -18,7 +18,7 @@
 import kotlin.metadata.KmClassifier;
 import kotlin.metadata.KmClassifier.TypeAlias;
 import kotlin.metadata.KmClassifier.TypeParameter;
-import kotlin.metadata.KmTypeVisitor;
+import kotlin.metadata.KmType;
 
 public abstract class KotlinClassifierInfo implements EnqueuerMetadataTraceable {
 
@@ -49,7 +49,7 @@
     }
   }
 
-  abstract boolean rewrite(KmTypeVisitor visitor, AppView<?> appView);
+  abstract boolean rewrite(KmType kmType, AppView<?> appView);
 
   public DexType rewriteType(GraphLens graphLens, GraphLens codeLens) {
     return null;
@@ -66,11 +66,12 @@
     }
 
     @Override
-    boolean rewrite(KmTypeVisitor visitor, AppView<?> appView) {
+    boolean rewrite(KmType kmType, AppView<?> appView) {
       return type.toRenamedDescriptorOrDefault(
           descriptor ->
-              visitor.visitClass(
-                  getKotlinLocalOrAnonymousNameFromDescriptor(descriptor, isLocalOrAnonymous)),
+              kmType.setClassifier(
+                  new KmClassifier.Class(
+                      getKotlinLocalOrAnonymousNameFromDescriptor(descriptor, isLocalOrAnonymous))),
           appView,
           ClassClassifiers.anyDescriptor);
     }
@@ -95,8 +96,8 @@
     }
 
     @Override
-    boolean rewrite(KmTypeVisitor visitor, AppView<?> appView) {
-      visitor.visitTypeParameter(typeId);
+    boolean rewrite(KmType kmType, AppView<?> appView) {
+      kmType.setClassifier(new KmClassifier.TypeParameter(typeId));
       return false;
     }
 
@@ -115,8 +116,8 @@
     }
 
     @Override
-    boolean rewrite(KmTypeVisitor visitor, AppView<?> appView) {
-      visitor.visitTypeAlias(typeAlias);
+    boolean rewrite(KmType kmType, AppView<?> appView) {
+      kmType.setClassifier(new KmClassifier.TypeAlias(typeAlias));
       return false;
     }
 
@@ -134,8 +135,8 @@
     }
 
     @Override
-    boolean rewrite(KmTypeVisitor visitor, AppView<?> appView) {
-      visitor.visitClass(classifier);
+    boolean rewrite(KmType kmType, AppView<?> appView) {
+      kmType.setClassifier(new KmClassifier.Class(classifier));
       return false;
     }
 
@@ -153,8 +154,8 @@
     }
 
     @Override
-    boolean rewrite(KmTypeVisitor visitor, AppView<?> appView) {
-      visitor.visitTypeAlias(classifier);
+    boolean rewrite(KmType kmType, AppView<?> appView) {
+      kmType.setClassifier(new KmClassifier.TypeAlias(classifier));
       return false;
     }
 
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 c6981c9..7cbe845 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 kotlin.metadata.KmClassVisitor;
+import kotlin.metadata.KmClass;
 
 // Structure around a kotlin companion object that can be assigned to a field.
 public class KotlinCompanionInfo implements KotlinFieldLevelInfo {
@@ -29,10 +29,10 @@
     return this;
   }
 
-  boolean rewrite(KmClassVisitor visitor, DexField field, NamingLens lens) {
+  boolean rewrite(KmClass clazz, DexField field, NamingLens lens) {
     DexString dexString = lens.lookupName(field);
     String finalName = dexString.toString();
-    visitor.visitCompanionObject(finalName);
+    clazz.setCompanionObject(finalName);
     return !finalName.equals(companionObjectFieldName);
   }
 
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 ff1336d..4c3197d 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 kotlin.metadata.KmClassVisitor;
+import kotlin.metadata.KmClass;
 
 // Structure around a kotlin enum value that can be assigned to a field.
 public class KotlinEnumEntryInfo implements KotlinFieldLevelInfo {
@@ -29,10 +29,10 @@
     return this;
   }
 
-  boolean rewrite(KmClassVisitor visitor, DexField field, NamingLens lens) {
+  boolean rewrite(KmClass clazz, DexField field, NamingLens lens) {
     DexString dexString = lens.lookupName(field);
     String finalName = dexString.toString();
-    visitor.visitEnumEntry(finalName);
+    clazz.getEnumEntries().add(finalName);
     return !finalName.equals(enumEntry);
   }