Refactor ASM version handling

PiperOrigin-RevId: 449080991
diff --git a/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/ClassCache.java b/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/ClassCache.java
index 47792d5..e2368f2 100644
--- a/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/ClassCache.java
+++ b/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/ClassCache.java
@@ -28,6 +28,7 @@
 import com.google.devtools.build.importdeps.AbstractClassEntryState.IncompleteState;
 import com.google.devtools.build.importdeps.AbstractClassEntryState.MissingState;
 import com.google.devtools.build.importdeps.ClassInfo.MemberInfo;
+import org.objectweb.asm.Opcodes;
 import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
@@ -45,7 +46,6 @@
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.FieldVisitor;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 
 /** A cache that stores all the accessible classes in a set of JARs. */
 public final class ClassCache implements Closeable {
@@ -378,7 +378,7 @@
     private boolean directDep;
 
     public ClassInfoBuilder() {
-      super(Opcodes.ASM7);
+      super(Opcodes.ASM9);
     }
 
     @Override
diff --git a/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/DepsCheckerClassVisitor.java b/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/DepsCheckerClassVisitor.java
index 8c0a989..6b6a310 100644
--- a/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/DepsCheckerClassVisitor.java
+++ b/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/DepsCheckerClassVisitor.java
@@ -18,6 +18,7 @@
 
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.importdeps.ClassInfo.MemberInfo;
+import org.objectweb.asm.Opcodes;
 import java.util.Optional;
 import javax.annotation.Nullable;
 import org.objectweb.asm.AnnotationVisitor;
@@ -43,7 +44,7 @@
   private final DepsCheckerMethodVisitor defaultMethodChecker = new DepsCheckerMethodVisitor();
 
   public DepsCheckerClassVisitor(ClassCache classCache, ResultCollector resultCollector) {
-    super(Opcodes.ASM7);
+    super(Opcodes.ASM9);
     this.classCache = classCache;
     this.resultCollector = resultCollector;
   }
@@ -229,7 +230,7 @@
   private class DepsCheckerAnnotationVisitor extends AnnotationVisitor {
 
     DepsCheckerAnnotationVisitor() {
-      super(Opcodes.ASM7);
+      super(Opcodes.ASM9);
     }
 
     @Override
@@ -270,7 +271,7 @@
   private class DepsCheckerFieldVisitor extends FieldVisitor {
 
     DepsCheckerFieldVisitor() {
-      super(Opcodes.ASM7);
+      super(Opcodes.ASM9);
     }
 
     @Override
@@ -291,7 +292,7 @@
   private class DepsCheckerMethodVisitor extends MethodVisitor {
 
     DepsCheckerMethodVisitor() {
-      super(Opcodes.ASM7);
+      super(Opcodes.ASM9);
     }
 
     @Override
diff --git a/src/test/java/com/google/devtools/build/android/desugar/Bug62456849TestDataGenerator.java b/src/test/java/com/google/devtools/build/android/desugar/Bug62456849TestDataGenerator.java
index ddfeb78..ec10b61 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/Bug62456849TestDataGenerator.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/Bug62456849TestDataGenerator.java
@@ -18,6 +18,7 @@
 import com.google.common.collect.Iterators;
 import com.google.common.collect.UnmodifiableIterator;
 import com.google.common.io.ByteStreams;
+import org.objectweb.asm.Opcodes;
 import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -87,7 +88,7 @@
       ClassReader reader = new ClassReader(content);
       ClassWriter writer = new ClassWriter(0);
       ClassVisitor converter =
-          new ClassVisitor(Opcodes.ASM8, writer) {
+          new ClassVisitor(Opcodes.ASM9, writer) {
             @Override
             public MethodVisitor visitMethod(
                 int access, String name, String desc, String signature, String[] exceptions) {
diff --git a/src/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java b/src/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java
index 43548ee..9497355 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java
@@ -15,6 +15,7 @@
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
+import org.objectweb.asm.Opcodes;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
@@ -28,7 +29,6 @@
 import org.objectweb.asm.Handle;
 import org.objectweb.asm.Label;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.util.Textifier;
 
 /** Print the types of the operand stack for each method. */
@@ -64,7 +64,7 @@
     private final PrintWriter printWriter;
 
     public ClassWithTypeDumper(PrintWriter printWriter) {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
       this.printWriter = printWriter;
     }
 
@@ -96,7 +96,7 @@
   private static final class TextifierExt extends Textifier {
 
     public TextifierExt() {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
     }
 
     public void print(String string) {
@@ -112,7 +112,7 @@
 
     public MethodIrTypeDumper(
         MethodVisitor visitor, BytecodeTypeInference inference, PrintWriter printWriter) {
-      super(Opcodes.ASM8, visitor);
+      super(Opcodes.ASM9, visitor);
       this.inference = inference;
       this.printWriter = printWriter;
     }
diff --git a/src/test/java/com/google/devtools/build/android/desugar/CorePackageRenamerTest.java b/src/test/java/com/google/devtools/build/android/desugar/CorePackageRenamerTest.java
index ef5e265..af09da7 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/CorePackageRenamerTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/CorePackageRenamerTest.java
@@ -17,6 +17,7 @@
 
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.android.desugar.io.CoreLibraryRewriter;
+import org.objectweb.asm.Opcodes;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -111,7 +112,7 @@
     final MockMethodVisitor mv = new MockMethodVisitor();
 
     public MockClassVisitor() {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
     }
 
     @Override
@@ -127,7 +128,7 @@
     String desc;
 
     public MockMethodVisitor() {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
     }
 
     @Override
diff --git a/src/test/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixerTest.java b/src/test/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixerTest.java
index d1befbf..3b455eb 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixerTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixerTest.java
@@ -24,6 +24,7 @@
 import com.google.devtools.build.android.desugar.io.IndexedInputs;
 import com.google.devtools.build.android.desugar.io.ThrowingClassLoader;
 import com.google.devtools.build.android.r8.DependencyCollector;
+import org.objectweb.asm.Opcodes;
 import java.io.File;
 import java.io.IOException;
 import java.io.Serializable;
@@ -141,13 +142,13 @@
       byte[] classContent) {
     ClassReader reader = new ClassReader(classContent);
     reader.accept(
-        new ClassVisitor(Opcodes.ASM8) {
+        new ClassVisitor(Opcodes.ASM9) {
 
           class ClinitMethod extends MethodNode {
 
             public ClinitMethod(
                 int access, String name, String desc, String signature, String[] exceptions) {
-              super(Opcodes.ASM8, access, name, desc, signature, exceptions);
+              super(Opcodes.ASM9, access, name, desc, signature, exceptions);
             }
           }
 
diff --git a/src/test/java/com/google/devtools/build/android/desugar/DesugarLongCompareTest.java b/src/test/java/com/google/devtools/build/android/desugar/DesugarLongCompareTest.java
index be899a2..fef6757 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/DesugarLongCompareTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/DesugarLongCompareTest.java
@@ -18,6 +18,7 @@
 import static org.objectweb.asm.Opcodes.INVOKESTATIC;
 
 import com.google.devtools.build.android.desugar.testdata.ClassCallingLongCompare;
+import org.objectweb.asm.Opcodes;
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.junit.Test;
@@ -26,7 +27,6 @@
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 
 /** The test case for the rewriter rewriting a call of Long.compare(long, long) to lcmp. */
 @RunWith(JUnit4.class)
@@ -40,7 +40,7 @@
       AtomicInteger counter = new AtomicInteger(0);
 
       reader.accept(
-          new ClassVisitor(Opcodes.ASM8) {
+          new ClassVisitor(Opcodes.ASM9) {
             @Override
             public MethodVisitor visitMethod(
                 int access, String name, String desc, String signature, String[] exceptions) {
diff --git a/src/test/java/com/google/devtools/build/android/desugar/DesugarObjectsRequireNonNullTest.java b/src/test/java/com/google/devtools/build/android/desugar/DesugarObjectsRequireNonNullTest.java
index 5f770e9..eb83166 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/DesugarObjectsRequireNonNullTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/DesugarObjectsRequireNonNullTest.java
@@ -19,6 +19,7 @@
 import static org.objectweb.asm.Opcodes.INVOKESTATIC;
 
 import com.google.devtools.build.android.desugar.testdata.ClassCallingRequireNonNull;
+import org.objectweb.asm.Opcodes;
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.junit.Test;
@@ -27,7 +28,6 @@
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 
 /**
  * This test case tests the desugaring feature for Objects.requireNonNull. This feature replaces any
@@ -46,7 +46,7 @@
       AtomicInteger counterForSupplier = new AtomicInteger(0);
 
       reader.accept(
-          new ClassVisitor(Opcodes.ASM8) {
+          new ClassVisitor(Opcodes.ASM9) {
             @Override
             public MethodVisitor visitMethod(
                 int access, String name, String desc, String signature, String[] exceptions) {
diff --git a/src/test/java/com/google/devtools/build/android/desugar/Java7CompatibilityTest.java b/src/test/java/com/google/devtools/build/android/desugar/Java7CompatibilityTest.java
index 5ec86f1..a8e8b9e 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/Java7CompatibilityTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/Java7CompatibilityTest.java
@@ -17,6 +17,7 @@
 import static org.junit.Assert.assertThrows;
 
 import com.google.devtools.build.android.desugar.io.BitFlags;
+import org.objectweb.asm.Opcodes;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -68,7 +69,7 @@
     int clinitMethods;
 
     private ClassTester() {
-      super(Opcodes.ASM8, null);
+      super(Opcodes.ASM9, null);
     }
 
     @Override
diff --git a/src/test/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriterTest.java b/src/test/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriterTest.java
index c783bcb..c2579bb 100644
--- a/src/test/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriterTest.java
+++ b/src/test/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriterTest.java
@@ -22,13 +22,13 @@
 import static org.junit.Assert.assertThrows;
 import static org.junit.Assert.fail;
 import static org.objectweb.asm.ClassWriter.COMPUTE_MAXS;
-import static org.objectweb.asm.Opcodes.ASM8;
 import static org.objectweb.asm.Opcodes.INVOKESTATIC;
 import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL;
 
 import com.google.devtools.build.android.desugar.io.BitFlags;
 import com.google.devtools.build.android.desugar.runtime.ThrowableExtension;
 import com.google.devtools.build.android.desugar.testdata.ClassUsingTryWithResources;
+import org.objectweb.asm.Opcodes;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.util.HashMap;
@@ -254,7 +254,7 @@
     ClassReader reader = new ClassReader(classContent);
     final AtomicInteger counter = new AtomicInteger();
     ClassVisitor visitor =
-        new ClassVisitor(Opcodes.ASM8) {
+        new ClassVisitor(Opcodes.ASM9) {
           @Override
           public MethodVisitor visitMethod(
               int access, String name, String desc, String signature, String[] exceptions) {
@@ -276,7 +276,7 @@
     private int syntheticCloseResourceCount;
 
     public DesugaredThrowableMethodCallCounter(ClassLoader loader) {
-      super(ASM8);
+      super(Opcodes.ASM9);
       classLoader = loader;
       counterMap = new HashMap<>();
       TryWithResourcesRewriter.TARGET_METHODS
@@ -307,7 +307,7 @@
     private class InvokeCounter extends MethodVisitor {
 
       public InvokeCounter() {
-        super(ASM8);
+        super(Opcodes.ASM9);
       }
 
       private boolean isAssignableToThrowable(String owner) {
diff --git a/src/test/java/com/google/devtools/build/android/r8/desugar/DesugarInfoCollector.java b/src/test/java/com/google/devtools/build/android/r8/desugar/DesugarInfoCollector.java
index 58b6a53..5b49155 100644
--- a/src/test/java/com/google/devtools/build/android/r8/desugar/DesugarInfoCollector.java
+++ b/src/test/java/com/google/devtools/build/android/r8/desugar/DesugarInfoCollector.java
@@ -16,8 +16,8 @@
 import static com.google.common.truth.Truth.assertThat;
 import static org.objectweb.asm.Opcodes.ACC_ABSTRACT;
 import static org.objectweb.asm.Opcodes.ACC_INTERFACE;
-import static org.objectweb.asm.Opcodes.ASM7;
 
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.Handle;
 import org.objectweb.asm.MethodVisitor;
@@ -40,7 +40,7 @@
   }
 
   public DesugarInfoCollector(ClassVisitor classVisitor) {
-    super(ASM7, classVisitor);
+    super(Opcodes.ASM9, classVisitor);
   }
 
   public int getNumberOfInvokeDynamic() {
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java b/src/tools/android/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java
index 413dfe1..2124fe0 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java
@@ -19,6 +19,7 @@
 
 import com.google.auto.value.AutoValue;
 import com.google.common.collect.ImmutableList;
+import org.objectweb.asm.Opcodes;
 import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import com.google.errorprone.annotations.CheckReturnValue;
 import java.util.ArrayList;
@@ -47,7 +48,7 @@
   private final String methodSignature;
 
   BytecodeTypeInference(int access, String owner, String name, String methodDescriptor) {
-    super(Opcodes.ASM8);
+    super(Opcodes.ASM9);
     localVariableSlots = createInitialLocalVariableTypes(access, owner, name, methodDescriptor);
     previousFrame = FrameInfo.create(ImmutableList.copyOf(localVariableSlots), ImmutableList.of());
     this.methodSignature = owner + "." + name + methodDescriptor;
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/CloseResourceMethodScanner.java b/src/tools/android/java/com/google/devtools/build/android/desugar/CloseResourceMethodScanner.java
index f7679f5..abd3550 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/CloseResourceMethodScanner.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/CloseResourceMethodScanner.java
@@ -14,10 +14,10 @@
 package com.google.devtools.build.android.desugar;
 
 import com.google.common.base.Preconditions;
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.Label;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 
 /**
  * A class scanner to check whether the class has the synthetic method $closeResource(Throwable,
@@ -30,7 +30,7 @@
   private int classFileVersion;
 
   public CloseResourceMethodScanner() {
-    super(Opcodes.ASM8);
+    super(Opcodes.ASM9);
   }
 
   @Override
@@ -73,7 +73,7 @@
     private boolean hasStackMapFrame;
 
     public StackMapFrameCollector(String name, String desc) {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
       methodSignature = internalName + '.' + name + desc;
     }
 
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
index 36db16b..660ce5b 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibraryInvocationRewriter.java
@@ -17,6 +17,7 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.MethodVisitor;
 import org.objectweb.asm.Opcodes;
@@ -33,7 +34,7 @@
   private final CoreLibrarySupport support;
 
   public CoreLibraryInvocationRewriter(ClassVisitor cv, CoreLibrarySupport support) {
-    super(Opcodes.ASM8, cv);
+    super(Opcodes.ASM9, cv);
     this.support = support;
   }
 
@@ -47,7 +48,7 @@
   private class CoreLibraryMethodInvocationRewriter extends MethodVisitor {
 
     public CoreLibraryMethodInvocationRewriter(MethodVisitor mv) {
-      super(Opcodes.ASM8, mv);
+      super(Opcodes.ASM9, mv);
     }
 
     @Override
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixer.java b/src/tools/android/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixer.java
index ab176e1..d710a64 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixer.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/DefaultMethodClassFixer.java
@@ -22,6 +22,7 @@
 import com.google.devtools.build.android.desugar.io.BitFlags;
 import com.google.devtools.build.android.desugar.langmodel.ClassName;
 import com.google.devtools.build.android.r8.DependencyCollector;
+import org.objectweb.asm.Opcodes;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.Arrays;
@@ -75,7 +76,7 @@
       @Nullable CoreLibrarySupport coreLibrarySupport,
       ClassReaderFactory bootclasspath,
       ClassLoader targetLoader) {
-    super(Opcodes.ASM8, dest);
+    super(Opcodes.ASM9, dest);
     this.useGeneratedBaseClasses = useGeneratedBaseClasses;
     this.classpath = classpath;
     this.coreLibrarySupport = coreLibrarySupport;
@@ -572,7 +573,7 @@
 
     public DefaultMethodStubber(
         boolean isBootclasspathInterface, boolean mayNeedStubsForSuperclass) {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
       this.isBootclasspathInterface = isBootclasspathInterface;
       this.mayNeedStubsForSuperclass = mayNeedStubsForSuperclass;
     }
@@ -783,7 +784,7 @@
     private boolean found;
 
     public DefaultMethodFinder() {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
     }
 
     @Override
@@ -829,7 +830,7 @@
     private String className;
 
     public InstanceMethodRecorder(boolean ignoreEmulatedMethods) {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
       this.ignoreEmulatedMethods = ignoreEmulatedMethods;
     }
 
@@ -877,7 +878,7 @@
     private boolean hasDefaultMethods;
 
     public InterfaceInitializationNecessityDetector(String internalName) {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
       this.internalName = internalName;
     }
 
@@ -911,7 +912,7 @@
         hasDefaultMethods = isNonBridgeDefaultMethod(access);
       }
       if ("<clinit>".equals(name)) {
-        return new MethodVisitor(Opcodes.ASM8) {
+        return new MethodVisitor(Opcodes.ASM9) {
           @Override
           public void visitFieldInsn(int opcode, String owner, String name, String desc) {
             if (opcode == Opcodes.PUTSTATIC && internalName.equals(owner)) {
@@ -941,7 +942,7 @@
     private boolean looking = true;
 
     ConstructorFixer(MethodVisitor dest, String newSuperName) {
-      super(Opcodes.ASM8, dest);
+      super(Opcodes.ASM9, dest);
       this.newSuperName = newSuperName;
     }
 
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/EmulatedInterfaceRewriter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/EmulatedInterfaceRewriter.java
index a55ea8b..2e8ed80 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/EmulatedInterfaceRewriter.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/EmulatedInterfaceRewriter.java
@@ -15,10 +15,10 @@
 
 import com.google.devtools.build.android.desugar.ClassSignatureParser.ClassSignature;
 import com.google.devtools.build.android.desugar.io.BitFlags;
+import org.objectweb.asm.Opcodes;
 import java.util.Collections;
 import java.util.LinkedHashSet;
 import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.Opcodes;
 
 /**
  * Visitor that renames emulated interfaces and marks classes that extend emulated interfaces to
@@ -33,7 +33,7 @@
   private final CoreLibrarySupport support;
 
   public EmulatedInterfaceRewriter(ClassVisitor dest, CoreLibrarySupport support) {
-    super(Opcodes.ASM8, dest);
+    super(Opcodes.ASM9, dest);
     this.support = support;
   }
 
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/InterfaceDesugaring.java b/src/tools/android/java/com/google/devtools/build/android/desugar/InterfaceDesugaring.java
index 284edc2..6bbdf68 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/InterfaceDesugaring.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/InterfaceDesugaring.java
@@ -20,6 +20,7 @@
 import com.google.devtools.build.android.desugar.io.BitFlags;
 import com.google.devtools.build.android.desugar.io.FieldInfo;
 import com.google.devtools.build.android.r8.DependencyCollector;
+import org.objectweb.asm.Opcodes;
 import java.lang.reflect.Method;
 import java.util.Arrays;
 import javax.annotation.Nullable;
@@ -76,7 +77,7 @@
       ClassLoader targetLoader,
       GeneratedClassStore store,
       boolean legacyJaCoCo) {
-    super(Opcodes.ASM8, dest);
+    super(Opcodes.ASM9, dest);
     this.generateBaseClasses = generateBaseClasses;
     this.interfaceCache = interfaceCache;
     this.depsCollector = depsCollector;
@@ -425,7 +426,7 @@
   private class InterfaceFieldWriteCollector extends MethodVisitor {
 
     public InterfaceFieldWriteCollector(MethodVisitor mv) {
-      super(Opcodes.ASM8, mv);
+      super(Opcodes.ASM9, mv);
     }
 
     @Override
@@ -471,7 +472,7 @@
         ClassLoader targetLoader,
         DependencyCollector depsCollector,
         String declaringClass) {
-      super(Opcodes.ASM8, dest);
+      super(Opcodes.ASM9, dest);
       this.interfaceName = knownInterfaceName;
       this.bootclasspath = bootclasspath;
       this.targetLoader = targetLoader;
@@ -571,7 +572,7 @@
   private static class MoveJacocoFieldAccess extends MethodVisitor {
 
     public MoveJacocoFieldAccess(MethodVisitor mv) {
-      super(Opcodes.ASM8, mv);
+      super(Opcodes.ASM9, mv);
     }
 
     @Override
@@ -597,7 +598,7 @@
     private final MethodVisitor annotationOnlyDest;
 
     public MultiplexAnnotations(@Nullable MethodVisitor dest, MethodVisitor annotationOnlyDest) {
-      super(Opcodes.ASM8, dest);
+      super(Opcodes.ASM9, dest);
       this.annotationOnlyDest = annotationOnlyDest;
     }
 
@@ -642,7 +643,7 @@
 
     public MultiplexAnnotationVisitor(
         @Nullable AnnotationVisitor dest, AnnotationVisitor... moreDestinations) {
-      super(Opcodes.ASM8, dest);
+      super(Opcodes.ASM9, dest);
       this.moreDestinations = moreDestinations;
     }
 
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/InvokeDynamicLambdaMethodCollector.java b/src/tools/android/java/com/google/devtools/build/android/desugar/InvokeDynamicLambdaMethodCollector.java
index 29d0e63..2c3b4ae 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/InvokeDynamicLambdaMethodCollector.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/InvokeDynamicLambdaMethodCollector.java
@@ -14,10 +14,10 @@
 package com.google.devtools.build.android.desugar;
 
 import com.google.common.collect.ImmutableSet;
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.Handle;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 
 /**
  * Class visitor to collect all the lambda methods that are used in invokedynamic instructions.
@@ -32,7 +32,7 @@
   private boolean needOuterClassRewrite = false;
 
   public InvokeDynamicLambdaMethodCollector() {
-    super(Opcodes.ASM8);
+    super(Opcodes.ASM9);
   }
 
   /**
@@ -64,7 +64,7 @@
   private class LambdaMethodCollector extends MethodVisitor {
 
     public LambdaMethodCollector(MethodVisitor dest) {
-      super(Opcodes.ASM8, dest);
+      super(Opcodes.ASM9, dest);
     }
 
     @Override
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/Java7Compatibility.java b/src/tools/android/java/com/google/devtools/build/android/desugar/Java7Compatibility.java
index 08b1efa..162dd91 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/Java7Compatibility.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/Java7Compatibility.java
@@ -18,6 +18,7 @@
 import static com.google.common.base.Preconditions.checkState;
 
 import com.google.devtools.build.android.desugar.io.BitFlags;
+import org.objectweb.asm.Opcodes;
 import javax.annotation.Nullable;
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.Attribute;
@@ -49,7 +50,7 @@
 
   public Java7Compatibility(
       ClassVisitor cv, ClassReaderFactory factory, ClassReaderFactory bootclasspathReader) {
-    super(Opcodes.ASM8, cv);
+    super(Opcodes.ASM9, cv);
     this.factory = factory;
     this.bootclasspathReader = bootclasspathReader;
   }
@@ -124,7 +125,7 @@
     boolean updated = false;
 
     public UpdateBytecodeVersionIfNecessary(MethodVisitor methodVisitor) {
-      super(Opcodes.ASM8, methodVisitor);
+      super(Opcodes.ASM9, methodVisitor);
     }
 
     @Override
@@ -156,7 +157,7 @@
 
   private class InlineJacocoInit extends MethodVisitor {
     public InlineJacocoInit(MethodVisitor dest) {
-      super(Opcodes.ASM8, dest);
+      super(Opcodes.ASM9, dest);
     }
 
     @Override
@@ -185,7 +186,7 @@
     private int copied = 0;
 
     public InlineOneMethod(String methodName, MethodVisitor dest) {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
       this.methodName = methodName;
       this.dest = dest;
     }
@@ -219,7 +220,7 @@
     public InlineMethodBody(MethodVisitor dest) {
       // We'll set the destination visitor in visitCode() to reduce the risk of copying anything
       // we didn't mean to copy
-      super(Opcodes.ASM8, (MethodVisitor) null);
+      super(Opcodes.ASM9, (MethodVisitor) null);
       this.dest = dest;
     }
 
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
index 5389ec5..626e1ef 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
@@ -20,6 +20,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.android.desugar.io.BitFlags;
+import org.objectweb.asm.Opcodes;
 import java.util.LinkedHashSet;
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.ClassReader;
@@ -72,7 +73,7 @@
       ImmutableSet<String> interfaceLambdaMethods,
       boolean allowDefaultMethods,
       boolean copyBridgeMethods) {
-    super(Opcodes.ASM8, dest);
+    super(Opcodes.ASM9, dest);
     checkArgument(!allowDefaultMethods || interfaceLambdaMethods.isEmpty());
     checkArgument(allowDefaultMethods || copyBridgeMethods);
     this.lambdaInfo = lambdaInfo;
@@ -244,7 +245,7 @@
   /** Rewriter for methods in generated lambda classes. */
   private class LambdaClassMethodRewriter extends MethodVisitor {
     public LambdaClassMethodRewriter(MethodVisitor dest) {
-      super(Opcodes.ASM8, dest);
+      super(Opcodes.ASM9, dest);
     }
 
     @Override
@@ -304,7 +305,7 @@
   private static class LambdaClassInvokeSpecialRewriter extends MethodVisitor {
 
     public LambdaClassInvokeSpecialRewriter(MethodVisitor dest) {
-      super(Opcodes.ASM8, dest);
+      super(Opcodes.ASM9, dest);
     }
 
     @Override
@@ -329,7 +330,7 @@
 
     public CopyBridgeMethods() {
       // No delegate visitor; instead we'll add methods to the outer class's delegate where needed
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
     }
 
     @Override
@@ -374,7 +375,7 @@
 
     public CopyOneMethod(String methodName) {
       // No delegate visitor; instead we'll add methods to the outer class's delegate where needed
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
       checkState(!allowDefaultMethods, "Couldn't copy interface lambda bodies");
       this.methodName = methodName;
     }
@@ -419,7 +420,7 @@
    */
   private static class AvoidJacocoInit extends MethodVisitor {
     public AvoidJacocoInit(MethodVisitor dest) {
-      super(Opcodes.ASM8, dest);
+      super(Opcodes.ASM9, dest);
     }
 
     @Override
@@ -448,7 +449,7 @@
         String desc,
         String signature,
         String[] exceptions) {
-      super(Opcodes.ASM8, access, name, desc, signature, exceptions);
+      super(Opcodes.ASM9, access, name, desc, signature, exceptions);
       this.dest = dest;
       this.lambdaInfo = lambdaInfo;
       this.classLoader = classLoader;
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java
index c9443fe..ce91763 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java
@@ -24,6 +24,7 @@
 import com.google.devtools.build.android.desugar.io.BitFlags;
 import com.google.devtools.build.android.desugar.langmodel.ClassAttributeRecord;
 import com.google.devtools.build.android.desugar.langmodel.ClassName;
+import org.objectweb.asm.Opcodes;
 import java.io.IOException;
 import java.lang.invoke.MethodHandle;
 import java.lang.invoke.MethodHandles.Lookup;
@@ -80,7 +81,7 @@
       ImmutableSet<MethodInfo> lambdaMethodsUsedInInvokeDyanmic,
       ClassAttributeRecord classAttributeRecord,
       boolean allowDefaultMethods) {
-    super(Opcodes.ASM8, dest);
+    super(Opcodes.ASM9, dest);
     this.targetLoader = targetLoader;
     this.lambdas = lambdas;
     this.aggregateInterfaceLambdaMethods = aggregateInterfaceLambdaMethods;
@@ -391,7 +392,7 @@
         String desc,
         String signature,
         String[] exceptions) {
-      super(Opcodes.ASM8, access, name, desc, signature, exceptions);
+      super(Opcodes.ASM9, access, name, desc, signature, exceptions);
       this.dest = checkNotNull(dest, "Null destination for %s.%s : %s", internalName, name, desc);
     }
 
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java
index 05abda5..ad1cb70 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/LongCompareMethodRewriter.java
@@ -17,9 +17,9 @@
 import static org.objectweb.asm.Opcodes.LCMP;
 
 import com.google.devtools.build.android.desugar.io.CoreLibraryRewriter;
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 
 /**
  * This class rewrites any call to Long.compare with the JVM instruction lcmp that is semantically
@@ -30,7 +30,7 @@
   private final CoreLibraryRewriter rewriter;
 
   public LongCompareMethodRewriter(ClassVisitor cv, CoreLibraryRewriter rewriter) {
-    super(Opcodes.ASM8, cv);
+    super(Opcodes.ASM9, cv);
     this.rewriter = rewriter;
   }
 
@@ -44,7 +44,7 @@
   private class LongCompareMethodVisitor extends MethodVisitor {
 
     public LongCompareMethodVisitor(MethodVisitor visitor) {
-      super(Opcodes.ASM8, visitor);
+      super(Opcodes.ASM9, visitor);
     }
 
     @Override
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/ObjectsRequireNonNullMethodRewriter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/ObjectsRequireNonNullMethodRewriter.java
index d914ab1..dd4f3c1 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/ObjectsRequireNonNullMethodRewriter.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/ObjectsRequireNonNullMethodRewriter.java
@@ -19,9 +19,9 @@
 import static org.objectweb.asm.Opcodes.POP;
 
 import com.google.devtools.build.android.desugar.io.CoreLibraryRewriter;
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 
 /**
  * This class desugars any call to Objects.requireNonNull(Object o), Objects.requireNonNull(Object
@@ -33,7 +33,7 @@
   private final CoreLibraryRewriter rewriter;
 
   public ObjectsRequireNonNullMethodRewriter(ClassVisitor cv, CoreLibraryRewriter rewriter) {
-    super(Opcodes.ASM8, cv);
+    super(Opcodes.ASM9, cv);
     this.rewriter = rewriter;
   }
 
@@ -47,7 +47,7 @@
   private class ObjectsMethodInlinerMethodVisitor extends MethodVisitor {
 
     public ObjectsMethodInlinerMethodVisitor(MethodVisitor mv) {
-      super(Opcodes.ASM8, mv);
+      super(Opcodes.ASM9, mv);
     }
 
     @Override
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java
index e6841dd..a835064 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java
@@ -29,6 +29,7 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.android.desugar.BytecodeTypeInference.InferredType;
 import com.google.devtools.build.android.desugar.io.BitFlags;
+import org.objectweb.asm.Opcodes;
 import java.util.Collections;
 import java.util.LinkedHashSet;
 import java.util.Optional;
@@ -38,7 +39,6 @@
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.Label;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.commons.ClassRemapper;
 import org.objectweb.asm.commons.Remapper;
 import org.objectweb.asm.tree.MethodNode;
@@ -131,7 +131,7 @@
       Set<String> visitedExceptionTypes,
       AtomicInteger numOfTryWithResourcesInvoked,
       boolean hasCloseResourceMethod) {
-    super(Opcodes.ASM8, classVisitor);
+    super(Opcodes.ASM9, classVisitor);
     this.classLoader = classLoader;
     this.visitedExceptionTypes = visitedExceptionTypes;
     this.numOfTryWithResourcesInvoked = numOfTryWithResourcesInvoked;
@@ -185,7 +185,8 @@
     }
     if (isSyntheticCloseResourceMethod(access, name, desc)) {
       checkState(closeResourceMethod == null, "The TWR rewriter has been used.");
-      closeResourceMethod = new MethodNode(Opcodes.ASM8, access, name, desc, signature, exceptions);
+      closeResourceMethod =
+          new MethodNode(Opcodes.ASM9, access, name, desc, signature, exceptions);
       // Run the TWR desugar pass over the $closeResource(Throwable, AutoCloseable) first, for
       // example, to rewrite calls to AutoCloseable.close()..
       TryWithResourceVisitor twrVisitor =
@@ -267,7 +268,7 @@
         MethodVisitor methodVisitor,
         ClassLoader classLoader,
         @Nullable BytecodeTypeInference typeInference) {
-      super(Opcodes.ASM8, methodVisitor);
+      super(Opcodes.ASM9, methodVisitor);
       this.classLoader = classLoader;
       this.internalName = internalName;
       this.methodSignature = methodSignature;
@@ -438,7 +439,7 @@
     public MethodVisitor visitMethod(
         int access, String name, String desc, String signature, String[] exceptions) {
       MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions);
-      return new MethodVisitor(Opcodes.ASM8, mv) {
+      return new MethodVisitor(Opcodes.ASM9, mv) {
         @Override
         public void visitMethodInsn(
             int opcode, String owner, String name, String desc, boolean itf) {
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/corelibadapter/ShadowedApiInvocationSite.java b/src/tools/android/java/com/google/devtools/build/android/desugar/corelibadapter/ShadowedApiInvocationSite.java
index 08b8773..0a5fb4c 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/corelibadapter/ShadowedApiInvocationSite.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/corelibadapter/ShadowedApiInvocationSite.java
@@ -40,6 +40,7 @@
 import com.google.devtools.build.android.desugar.langmodel.MethodKey;
 import com.google.devtools.build.android.desugar.langmodel.SwitchableTypeMapper;
 import com.google.devtools.build.android.desugar.typehierarchy.TypeHierarchy;
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.MethodVisitor;
 import org.objectweb.asm.Opcodes;
@@ -76,7 +77,7 @@
       BootClassPathDigest bootClassPathDigest,
       ClassAttributeRecord classAttributeRecord,
       TypeHierarchy typeHierarchy) {
-    super(Opcodes.ASM8, classVisitor);
+    super(Opcodes.ASM9, classVisitor);
     this.invocationSiteRecord = invocationSiteRecord;
     this.bootClassPathDigest = bootClassPathDigest;
     this.classAttributeRecord = classAttributeRecord;
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/covariantreturn/NioBufferRefConverter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/covariantreturn/NioBufferRefConverter.java
index 57bf457..ea187b0 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/covariantreturn/NioBufferRefConverter.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/covariantreturn/NioBufferRefConverter.java
@@ -22,6 +22,7 @@
 import com.google.devtools.build.android.desugar.langmodel.ClassName;
 import com.google.devtools.build.android.desugar.langmodel.MethodKey;
 import com.google.devtools.build.android.desugar.langmodel.TypeMapper;
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.MethodVisitor;
 import org.objectweb.asm.Opcodes;
@@ -71,7 +72,7 @@
 
   private NioBufferRefConverter(
       ClassVisitor classVisitor, ImmutableMap<MethodKey, MethodKey> methodInvocationMappings) {
-    super(Opcodes.ASM8, classVisitor);
+    super(Opcodes.ASM9, classVisitor);
     this.methodInvocationMappings = methodInvocationMappings;
   }
 
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/io/CoreLibraryRewriter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/io/CoreLibraryRewriter.java
index e47d5a9..408729c 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/io/CoreLibraryRewriter.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/io/CoreLibraryRewriter.java
@@ -15,6 +15,7 @@
 
 import com.google.devtools.build.android.desugar.langmodel.ClassName;
 import com.google.devtools.build.android.desugar.langmodel.TypeMapper;
+import org.objectweb.asm.Opcodes;
 import java.io.IOException;
 import java.io.InputStream;
 import javax.annotation.Nullable;
@@ -22,7 +23,6 @@
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.commons.ClassRemapper;
 import org.objectweb.asm.commons.Remapper;
 
@@ -165,7 +165,7 @@
     private String finalClassName;
 
     UnprefixingClassWriter(int flags) {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
       this.writer = new ClassWriter(flags);
       this.cv = this.writer;
       if (!prefix.isEmpty()) {
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/io/HeaderClassLoader.java b/src/tools/android/java/com/google/devtools/build/android/desugar/io/HeaderClassLoader.java
index 57c58ed..2332920 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/io/HeaderClassLoader.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/io/HeaderClassLoader.java
@@ -14,6 +14,7 @@
 package com.google.devtools.build.android.desugar.io;
 
 import com.google.common.collect.ImmutableList;
+import org.objectweb.asm.Opcodes;
 import java.io.IOError;
 import java.io.IOException;
 import java.io.InputStream;
@@ -87,7 +88,7 @@
     private String internalName;
 
     public NonPrimitiveFieldCollector() {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
     }
 
     @Override
@@ -131,7 +132,7 @@
     private final ImmutableList<FieldInfo> interfaceFields;
 
     public CodeStubber(ClassVisitor cv, ImmutableList<FieldInfo> interfaceFields) {
-      super(Opcodes.ASM8, cv);
+      super(Opcodes.ASM9, cv);
       this.interfaceFields = interfaceFields;
     }
 
@@ -177,7 +178,7 @@
 
     public InterfaceInitializerEraser(
         MethodVisitor mv, String internalName, ImmutableList<FieldInfo> interfaceFields) {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
       dest = mv;
       this.interfaceFields = interfaceFields;
     }
@@ -208,7 +209,7 @@
     private boolean hasCode = false;
 
     public BodyStubber(MethodVisitor mv) {
-      super(Opcodes.ASM8, mv);
+      super(Opcodes.ASM9, mv);
     }
 
     @Override
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/nest/NestBridgeRefConverter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/nest/NestBridgeRefConverter.java
index 388ef54..79f506f 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/nest/NestBridgeRefConverter.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/nest/NestBridgeRefConverter.java
@@ -24,6 +24,7 @@
 import com.google.devtools.build.android.desugar.langmodel.MemberUseKind;
 import com.google.devtools.build.android.desugar.langmodel.MethodInstrVisitor;
 import com.google.devtools.build.android.desugar.langmodel.MethodKey;
+import org.objectweb.asm.Opcodes;
 import javax.annotation.Nullable;
 import org.objectweb.asm.MethodVisitor;
 import org.objectweb.asm.Opcodes;
@@ -38,7 +39,7 @@
 
   NestBridgeRefConverter(
       @Nullable MethodVisitor methodVisitor, MethodKey methodKey, NestDigest nestDigest) {
-    super(Opcodes.ASM8, methodVisitor);
+    super(Opcodes.ASM9, methodVisitor);
     this.enclosingMethodKey = methodKey;
     this.nestDigest = nestDigest;
 
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/nest/NestDesugaring.java b/src/tools/android/java/com/google/devtools/build/android/desugar/nest/NestDesugaring.java
index b0f66fb..304a26f 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/nest/NestDesugaring.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/nest/NestDesugaring.java
@@ -23,6 +23,7 @@
 import com.google.devtools.build.android.desugar.langmodel.FieldKey;
 import com.google.devtools.build.android.desugar.langmodel.MethodDeclInfo;
 import com.google.devtools.build.android.desugar.langmodel.MethodKey;
+import org.objectweb.asm.Opcodes;
 import javax.annotation.Nullable;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.FieldVisitor;
@@ -55,7 +56,7 @@
   private boolean isNestHostWithNestCompanion;
 
   public NestDesugaring(ClassVisitor classVisitor, NestDigest nestDigest) {
-    super(Opcodes.ASM8, classVisitor);
+    super(Opcodes.ASM9, classVisitor);
     this.nestDigest = nestDigest;
   }
 
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/preanalysis/ClassMetadataCollector.java b/src/tools/android/java/com/google/devtools/build/android/desugar/preanalysis/ClassMetadataCollector.java
index 783f62d..d845009 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/preanalysis/ClassMetadataCollector.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/preanalysis/ClassMetadataCollector.java
@@ -26,6 +26,7 @@
 import com.google.devtools.build.android.desugar.langmodel.FieldKey;
 import com.google.devtools.build.android.desugar.langmodel.LangModelHelper;
 import com.google.devtools.build.android.desugar.langmodel.MethodKey;
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Attribute;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.FieldVisitor;
@@ -62,7 +63,7 @@
   ClassMetadataCollector(
       ClassMemberRecordBuilder nestAnalysisBasedMemberRecord,
       ClassAttributeRecordBuilder classAttributeRecord) {
-    super(Opcodes.ASM8);
+    super(Opcodes.ASM9);
     this.nestAnalysisBasedMemberRecord = nestAnalysisBasedMemberRecord;
     this.classAttributeRecord = classAttributeRecord;
     this.classAttributesBuilder = ClassAttributes.builder();
@@ -174,7 +175,7 @@
         MethodKey enclosingMethodKey,
         ClassAttributesBuilder classAttributesBuilder,
         ClassMemberRecordBuilder nestAnalysisBasedMemberRecord) {
-      super(Opcodes.ASM8, methodVisitor);
+      super(Opcodes.ASM9, methodVisitor);
       this.enclosingMethodKey = enclosingMethodKey;
       this.classAttributesBuilder = classAttributesBuilder;
       this.nestAnalysisBasedMemberRecord = nestAnalysisBasedMemberRecord;
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/retarget/ClassMemberRetargetRewriter.java b/src/tools/android/java/com/google/devtools/build/android/desugar/retarget/ClassMemberRetargetRewriter.java
index 85ee48c..f6cb8f7 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/retarget/ClassMemberRetargetRewriter.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/retarget/ClassMemberRetargetRewriter.java
@@ -23,9 +23,9 @@
 import com.google.devtools.build.android.desugar.langmodel.MemberUseKind;
 import com.google.devtools.build.android.desugar.langmodel.MethodInvocationSite;
 import com.google.devtools.build.android.desugar.langmodel.MethodKey;
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 
 /** This class rewrites (or removes) some trivial primitive wrapper methods. */
 public class ClassMemberRetargetRewriter extends ClassVisitor {
@@ -45,7 +45,7 @@
       ClassVisitor cv,
       ClassMemberRetargetConfig classMemberRetargetConfig,
       ImmutableSet.Builder<ClassName> requiredRuntimeSupportTypes) {
-    super(Opcodes.ASM8, cv);
+    super(Opcodes.ASM9, cv);
     this.classMemberRetargetConfig = classMemberRetargetConfig;
     this.requiredRuntimeSupportTypes = requiredRuntimeSupportTypes;
   }
@@ -60,7 +60,7 @@
   private class ClassMemberRetargetMethodVisitor extends MethodVisitor {
 
     ClassMemberRetargetMethodVisitor(MethodVisitor visitor) {
-      super(Opcodes.ASM8, visitor);
+      super(Opcodes.ASM9, visitor);
     }
 
     @Override
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/scan/PrefixReferenceScanner.java b/src/tools/android/java/com/google/devtools/build/android/desugar/scan/PrefixReferenceScanner.java
index 94b50f6..912e8fa 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/scan/PrefixReferenceScanner.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/scan/PrefixReferenceScanner.java
@@ -16,6 +16,7 @@
 import static com.google.common.base.Preconditions.checkArgument;
 
 import com.google.common.collect.ImmutableSet;
+import org.objectweb.asm.Opcodes;
 import javax.annotation.Nullable;
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.ClassReader;
@@ -52,7 +53,7 @@
   private final String prefix;
 
   public PrefixReferenceScanner(String prefix) {
-    super(Opcodes.ASM8);
+    super(Opcodes.ASM9);
     this.prefix = prefix;
   }
 
@@ -228,7 +229,7 @@
   private class PrefixReferenceMethodVisitor extends MethodVisitor {
 
     public PrefixReferenceMethodVisitor() {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
     }
 
     @Override
@@ -362,7 +363,7 @@
   private class PrefixReferenceFieldVisitor extends FieldVisitor {
 
     public PrefixReferenceFieldVisitor() {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
     }
 
     @Override
@@ -382,7 +383,7 @@
   private class PrefixReferenceAnnotationVisitor extends AnnotationVisitor {
 
     public PrefixReferenceAnnotationVisitor() {
-      super(Opcodes.ASM8);
+      super(Opcodes.ASM9);
     }
 
     @Override
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/strconcat/IndyStringConcatDesugaring.java b/src/tools/android/java/com/google/devtools/build/android/desugar/strconcat/IndyStringConcatDesugaring.java
index 210300b..65cd407 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/strconcat/IndyStringConcatDesugaring.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/strconcat/IndyStringConcatDesugaring.java
@@ -26,6 +26,7 @@
 import com.google.devtools.build.android.desugar.langmodel.MemberUseKind;
 import com.google.devtools.build.android.desugar.langmodel.MethodInvocationSite;
 import com.google.devtools.build.android.desugar.langmodel.MethodKey;
+import org.objectweb.asm.Opcodes;
 import java.util.Arrays;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.Handle;
@@ -86,7 +87,7 @@
 
   public IndyStringConcatDesugaring(
       ClassMemberUseCounter classMemberUseCounter, ClassVisitor classVisitor, boolean coreLibrary) {
-    super(Opcodes.ASM8, classVisitor);
+    super(Opcodes.ASM9, classVisitor);
     this.classMemberUseCounter = classMemberUseCounter;
     this.invokeStringConcatReplacementSite =
         coreLibrary
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/testing/junit/RuntimeEntityResolver.java b/src/tools/android/java/com/google/devtools/build/android/desugar/testing/junit/RuntimeEntityResolver.java
index 05b580b..ab4d81a 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/testing/junit/RuntimeEntityResolver.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/testing/junit/RuntimeEntityResolver.java
@@ -38,6 +38,7 @@
 import com.google.devtools.build.android.desugar.langmodel.FieldKey;
 import com.google.devtools.build.android.desugar.langmodel.MethodKey;
 import com.google.devtools.build.android.desugar.testing.junit.RuntimeMethodHandle.MemberUseContext;
+import org.objectweb.asm.Opcodes;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.annotation.Annotation;
@@ -65,7 +66,6 @@
 import java.util.jar.JarFile;
 import java.util.stream.Collectors;
 import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
 import org.objectweb.asm.tree.ClassNode;
 import org.objectweb.asm.tree.FieldNode;
@@ -475,7 +475,7 @@
       if (jarEntry != null) {
         try (InputStream inputStream = jarFile.getInputStream(jarEntry)) {
           ClassReader cr = new ClassReader(inputStream);
-          ClassNode classNode = new ClassNode(Opcodes.ASM8);
+          ClassNode classNode = new ClassNode(Opcodes.ASM9);
           cr.accept(classNode, 0);
           return classNode;
         }
@@ -528,7 +528,7 @@
       for (JarEntry jarEntry : classFileJarEntries) {
         try (InputStream inputStream = jarFile.getInputStream(jarEntry)) {
           ClassReader cr = new ClassReader(inputStream);
-          ClassNode classNode = new ClassNode(Opcodes.ASM8);
+          ClassNode classNode = new ClassNode(Opcodes.ASM9);
           cr.accept(classNode, SKIP_CODE | SKIP_DEBUG | SKIP_FRAMES);
           majorVersions.put(classNode.name, classNode.version);
         }
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/typeannotation/LocalTypeAnnotationUse.java b/src/tools/android/java/com/google/devtools/build/android/desugar/typeannotation/LocalTypeAnnotationUse.java
index 90f5184..31af36c 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/typeannotation/LocalTypeAnnotationUse.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/typeannotation/LocalTypeAnnotationUse.java
@@ -13,18 +13,18 @@
 
 package com.google.devtools.build.android.desugar.typeannotation;
 
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.Label;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.TypePath;
 
 /** Desugars bytecode instructions with references to type annotations. */
 public class LocalTypeAnnotationUse extends ClassVisitor {
 
   public LocalTypeAnnotationUse(ClassVisitor classVisitor) {
-    super(Opcodes.ASM8, classVisitor);
+    super(Opcodes.ASM9, classVisitor);
   }
 
   @Override
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/typehierarchy/TypeHierarchyScavenger.java b/src/tools/android/java/com/google/devtools/build/android/desugar/typehierarchy/TypeHierarchyScavenger.java
index 81efb46..0fbe528 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/typehierarchy/TypeHierarchyScavenger.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/typehierarchy/TypeHierarchyScavenger.java
@@ -19,6 +19,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.android.desugar.io.FileContentProvider;
 import com.google.devtools.build.android.desugar.typehierarchy.TypeHierarchy.TypeHierarchyBuilder;
+import org.objectweb.asm.Opcodes;
 import java.io.IOError;
 import java.io.IOException;
 import java.io.InputStream;
@@ -26,7 +27,6 @@
 import java.util.Collection;
 import java.util.stream.Collectors;
 import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.Opcodes;
 
 /** The public APs that collects type hierarchy information from IO operations. */
 public class TypeHierarchyScavenger {
@@ -42,7 +42,10 @@
           ClassReader cr = new ClassReader(inputStream);
           TypeHierarchyClassVisitor cv =
               new TypeHierarchyClassVisitor(
-                  Opcodes.ASM8, contentProvider.getBinaryPathName(), typeHierarchyBuilder, null);
+                  Opcodes.ASM9,
+                  contentProvider.getBinaryPathName(),
+                  typeHierarchyBuilder,
+                  null);
           cr.accept(cv, ClassReader.SKIP_CODE | ClassReader.SKIP_DEBUG);
         } catch (IOException e) {
           throw new IOError(e);
diff --git a/src/tools/android/java/com/google/devtools/build/android/r8/desugar/OutputConsumer.java b/src/tools/android/java/com/google/devtools/build/android/r8/desugar/OutputConsumer.java
index 531c5dc..b050f99 100644
--- a/src/tools/android/java/com/google/devtools/build/android/r8/desugar/OutputConsumer.java
+++ b/src/tools/android/java/com/google/devtools/build/android/r8/desugar/OutputConsumer.java
@@ -18,7 +18,6 @@
 import static com.google.devtools.build.android.r8.desugar.OutputConsumer.Flags.INCLUDE_PATH_ENTRIES;
 import static org.objectweb.asm.Opcodes.ACC_BRIDGE;
 import static org.objectweb.asm.Opcodes.ACC_INTERFACE;
-import static org.objectweb.asm.Opcodes.ASM7;
 import static org.objectweb.asm.Opcodes.INVOKESTATIC;
 
 import com.android.tools.r8.ArchiveProgramResourceProvider;
@@ -33,6 +32,7 @@
 import com.google.devtools.build.android.r8.DescriptorUtils;
 import com.google.devtools.build.android.r8.Desugar;
 import com.google.devtools.build.android.r8.ZipUtils;
+import org.objectweb.asm.Opcodes;
 import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -206,7 +206,7 @@
       private int methodCount;
 
       private DependencyCollectorClassVisitor(DependencyCollector dependencyCollector) {
-        super(ASM7, null);
+        super(Opcodes.ASM9, null);
         this.dependencyCollector = dependencyCollector;
       }