diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 1044086..f19e454 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.6.54";
+  public static final String LABEL = "1.6.55";
 
   private Version() {
   }
diff --git a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingExtendEmptyInterfaceTest.java b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingExtendEmptyInterfaceTest.java
index e16307b..53ea18b 100644
--- a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingExtendEmptyInterfaceTest.java
+++ b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingExtendEmptyInterfaceTest.java
@@ -33,7 +33,7 @@
 
   @Test
   public void testRuntime() throws ExecutionException, CompilationFailedException, IOException {
-    testForRuntime(parameters)
+    testForRuntime(parameters.getRuntime(), parameters.getApiLevel())
         .addProgramClasses(
             TestI.class,
             TestA.class,
@@ -61,8 +61,9 @@
         .addClasspathClasses(LibI.class, LibI2.class, LibI3.class, Runner.class)
         .addKeepAllClassesRule()
         .addApplyMapping(libCompileResult.getProguardMap())
-        .addRunClasspathFiles(libCompileResult.writeToZip())
         .setMinApi(parameters.getApiLevel())
+        .compile()
+        .addRunClasspathFiles(libCompileResult.writeToZip())
         .run(parameters.getRuntime(), Main.class)
         .assertSuccessWithOutputLines("injectTestA", "injectObject");
   }
diff --git a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingExtendInterfaceTest.java b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingExtendInterfaceTest.java
index c70d49c..5c5fb9e 100644
--- a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingExtendInterfaceTest.java
+++ b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingExtendInterfaceTest.java
@@ -33,7 +33,7 @@
 
   @Test
   public void testRuntime() throws ExecutionException, CompilationFailedException, IOException {
-    testForRuntime(parameters)
+    testForRuntime(parameters.getRuntime(), parameters.getApiLevel())
         .addProgramClasses(TestI.class, TestA.class, Main.class, LibI.class, Runner.class)
         .run(parameters.getRuntime(), Main.class)
         .assertSuccessWithOutputLines("injectTestA", "injectObject");
@@ -54,8 +54,9 @@
         .addClasspathClasses(LibI.class, Runner.class)
         .addKeepAllClassesRule()
         .addApplyMapping(libCompileResult.getProguardMap())
-        .addRunClasspathFiles(libCompileResult.writeToZip())
         .setMinApi(parameters.getApiLevel())
+        .compile()
+        .addRunClasspathFiles(libCompileResult.writeToZip())
         .run(parameters.getRuntime(), Main.class)
         .assertSuccessWithOutputLines("injectTestA", "injectObject");
   }
