diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index cf756ef..ec1ec47 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
 
   // This field is accessed from release scripts using simple pattern matching.
   // Therefore, changing this field could break our release scripts.
-  public static final String LABEL = "1.4.31";
+  public static final String LABEL = "1.4.32";
 
   private Version() {
   }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
index 4e91c62..a9a571f 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
@@ -151,6 +151,10 @@
           InvokeStatic invokeStatic = instruction.asInvokeStatic();
           DexMethod method = invokeStatic.getInvokedMethod();
           DexClass clazz = findDefinitionFor(method.holder);
+          if (Java8MethodRewriter.hasJava8MethodRewritePrefix(method.holder)) {
+            // We did not create this code yet, but it will not require rewriting.
+            continue;
+          }
           if (clazz == null) {
             // NOTE: leave unchanged those calls to undefined targets. This may lead to runtime
             // exception but we can not report it as error since it can also be the intended
diff --git a/src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java b/src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
index 053ac5c..4d5ade8 100644
--- a/src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
@@ -4,7 +4,6 @@
 
 package com.android.tools.r8.desugar;
 
-import com.android.tools.r8.D8TestCompileResult;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import java.nio.file.Path;
@@ -34,29 +33,27 @@
     String jvmOutput = testForJvm()
         .addTestClasspath()
         .run(MergeRun.class).getStdOut();
-
     // See b/123242448
     Path zip1 = temp.newFile("first.zip").toPath();
     Path zip2 = temp.newFile("second.zip").toPath();
-    Path zip3 = temp.newFile("third.zip").toPath();
 
-    D8TestCompileResult result1 =
-        testForD8()
-            .setMinApi(AndroidApiLevel.L)
-            .addProgramClasses(MergeRun.class, MergeInputB.class)
-            .compile()
-            .writeToZip(zip1);
-    D8TestCompileResult result2 =
-        testForD8()
-            .setMinApi(AndroidApiLevel.L)
-            .addProgramClasses(MergeInputA.class)
-            .compile()
-            .writeToZip(zip2);
-
+    testForD8()
+        .setMinApi(AndroidApiLevel.L)
+        .addProgramClasses(MergeRun.class, MergeInputB.class)
+        .compile()
+        .assertNoMessages()
+        .writeToZip(zip1);
+    testForD8()
+        .setMinApi(AndroidApiLevel.L)
+        .addProgramClasses(MergeInputA.class)
+        .compile()
+        .assertNoMessages()
+        .writeToZip(zip2);
     testForD8()
         .addProgramFiles(zip1, zip2)
         .setMinApi(AndroidApiLevel.L)
         .compile()
+        .assertNoMessages()
         .run(MergeRun.class)
         .assertSuccessWithOutput(jvmOutput);
   }
diff --git a/tools/internal_test.py b/tools/internal_test.py
index 4713daf..8a99fbe 100755
--- a/tools/internal_test.py
+++ b/tools/internal_test.py
@@ -229,6 +229,10 @@
     if get_magic_file_exists(READY_FOR_TESTING):
       git_hash = get_magic_file_content(READY_FOR_TESTING)
       checked_out = git_checkout(git_hash)
+      # If the script changed, we need to restart now to get correct commands
+      # Note that we have not removed the READY_FOR_TESTING yet, so if we
+      # execv we will pick up the same version.
+      restart_if_new_version(own_content)
       # Sanity check, if this does not succeed stop.
       if checked_out != git_hash:
         log('Inconsistent state: %s %s' % (git_hash, checked_out))
