diff --git a/src/test/java/com/android/tools/r8/TestCompileResult.java b/src/test/java/com/android/tools/r8/TestCompileResult.java
index dfdfa9d..ce189e6 100644
--- a/src/test/java/com/android/tools/r8/TestCompileResult.java
+++ b/src/test/java/com/android/tools/r8/TestCompileResult.java
@@ -660,9 +660,11 @@
             .add(out.toString())
             .build();
     Consumer<ArtCommandBuilder> commandConsumer =
-        withArt6Plus64BitsLib && vm.getVersion().isNewerThanOrEqual(DexVm.Version.V6_0_1)
-            ? builder -> builder.appendArtOption("--64")
-            : builder -> {};
+        ToolHelper.force32BitArt()
+            ? builder -> builder.appendArtOption("--32")
+            : withArt6Plus64BitsLib && vm.getVersion().isNewerThanOrEqual(DexVm.Version.V6_0_1)
+                ? builder -> builder.appendArtOption("--64")
+                : builder -> {};
     commandConsumer =
         commandConsumer.andThen(
             builder -> {
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index 404c51d..1de3552 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -488,8 +488,9 @@
         result.add("/bin/bash");
       }
       result.add(getExecutable());
-      result.addAll(getExecutableArguments());
-      result.addAll(options);
+      for (String option : options) {
+        result.add(option);
+      }
       for (Map.Entry<String, String> entry : systemProperties.entrySet()) {
         StringBuilder builder = new StringBuilder("-D");
         builder.append(entry.getKey());
@@ -507,7 +508,9 @@
       if (mainClass != null) {
         result.add(mainClass);
       }
-      result.addAll(programArguments);
+      for (String argument : programArguments) {
+        result.add(argument);
+      }
       return result;
     }
 
@@ -526,8 +529,6 @@
     protected abstract boolean shouldUseDocker();
 
     protected abstract String getExecutable();
-
-    protected abstract List<String> getExecutableArguments();
   }
 
   public static class ArtCommandBuilder extends CommandBuilder {
@@ -562,11 +563,6 @@
       return version != null ? getArtBinary(version) : getArtBinary();
     }
 
-    @Override
-    protected List<String> getExecutableArguments() {
-      return force32BitArt() ? ImmutableList.of("--32") : ImmutableList.of();
-    }
-
     public boolean isForDevice() {
       return version.getKind() == Kind.TARGET;
     }
