diff --git a/src/test/java/com/android/tools/r8/TestCompileResult.java b/src/test/java/com/android/tools/r8/TestCompileResult.java
index ba56c6f..97b1a5c 100644
--- a/src/test/java/com/android/tools/r8/TestCompileResult.java
+++ b/src/test/java/com/android/tools/r8/TestCompileResult.java
@@ -477,7 +477,7 @@
         .add(out.toString())
         .build();
     Consumer<ArtCommandBuilder> commandConsumer =
-        withArt6Plus64BitsLib && vm.getVersion().isAtLeast(DexVm.Version.V6_0_1)
+        withArt6Plus64BitsLib && vm.getVersion().isNewerThanOrEqual(DexVm.Version.V6_0_1)
             ? builder -> builder.appendArtOption("--64")
             : builder -> {};
     commandConsumer =
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index 7721c08..1a71ac7 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -266,7 +266,7 @@
       }
 
       public boolean isLatest() {
-        return this == V10_0_0;
+        return this == last();
       }
 
       public boolean isNewerThan(Version other) {
@@ -277,10 +277,6 @@
         return compareTo(other) >= 0;
       }
 
-      public boolean isAtLeast(Version other) {
-        return compareTo(other) >= 0;
-      }
-
       public boolean isOlderThan(Version other) {
         return compareTo(other) < 0;
       }
@@ -293,7 +289,7 @@
         return shortName;
       }
 
-      private String shortName;
+      private final String shortName;
 
       public static Version first() {
         return V4_0_4;
diff --git a/src/test/java/com/android/tools/r8/VmTestRunner.java b/src/test/java/com/android/tools/r8/VmTestRunner.java
index a3e76a4..e2028a4 100644
--- a/src/test/java/com/android/tools/r8/VmTestRunner.java
+++ b/src/test/java/com/android/tools/r8/VmTestRunner.java
@@ -78,7 +78,7 @@
     IgnoreIfVmOlderThan ignoreIfVmOlderThan =
         child.getAnnotation(IgnoreIfVmOlderThan.class);
     if (ignoreIfVmOlderThan != null
-        && !currentVersion.isAtLeast(ignoreIfVmOlderThan.value())) {
+        && !currentVersion.isNewerThanOrEqual(ignoreIfVmOlderThan.value())) {
       return true;
     }
     IgnoreIfVmOlderOrEqualThan ignoreIfVmOlderOrEqualThan =
diff --git a/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedInstanceOfTest.java b/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedInstanceOfTest.java
index 30b2a78..492e21e 100644
--- a/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedInstanceOfTest.java
+++ b/src/test/java/com/android/tools/r8/cf/stackmap/UninitializedInstanceOfTest.java
@@ -59,7 +59,7 @@
   @Test()
   public void testD8Dex() throws Exception {
     assumeTrue(parameters.isDexRuntime());
-    boolean expectFailure = parameters.getDexRuntimeVersion().isAtLeast(Version.V7_0_0);
+    boolean expectFailure = parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V7_0_0);
     testForD8(parameters.getBackend())
         .addProgramClassFileData(dump())
         .setMinApi(parameters.getApiLevel())
diff --git a/src/test/java/com/android/tools/r8/debug/ContinuousSteppingTest.java b/src/test/java/com/android/tools/r8/debug/ContinuousSteppingTest.java
index beed8fc..a292274 100644
--- a/src/test/java/com/android/tools/r8/debug/ContinuousSteppingTest.java
+++ b/src/test/java/com/android/tools/r8/debug/ContinuousSteppingTest.java
@@ -105,7 +105,7 @@
   }
 
   public static boolean fromAndroidN(Version dexVmVersion) {
-    return dexVmVersion.isAtLeast(Version.V7_0_0);
+    return dexVmVersion.isNewerThanOrEqual(Version.V7_0_0);
   }
 
   private static List<Path> findAllJarsIn(Path root) {
diff --git a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
index a083bcf..c34c633 100644
--- a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
+++ b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
@@ -1050,8 +1050,8 @@
               artCommandBuilder.appendArtOption("-Xcompiler-option");
               artCommandBuilder.appendArtOption("--debuggable");
             }
-            if (ToolHelper.getDexVm().getVersion().isAtLeast(DexVm.Version.V9_0_0) &&
-                ToolHelper.getDexVm().getVersion() != DexVm.Version.DEFAULT) {
+            if (ToolHelper.getDexVm().getVersion().isNewerThanOrEqual(DexVm.Version.V9_0_0)
+                && ToolHelper.getDexVm().getVersion() != DexVm.Version.DEFAULT) {
               artCommandBuilder.appendArtOption("-XjdwpProvider:internal");
             }
             if (DEBUG_TESTS && ToolHelper.getDexVm().getVersion().isNewerThan(Version.V4_4_4)) {
diff --git a/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java b/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java
index 67e62e8..12c6bc8 100644
--- a/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java
+++ b/src/test/java/com/android/tools/r8/debug/ExamplesDebugTest.java
@@ -338,7 +338,7 @@
     // See verifyStateLocation in DebugTestBase.
     Assume.assumeTrue(
         "Streaming on Dalvik DEX runtimes has some unknown interference issue",
-        ToolHelper.getDexVm().getVersion().isAtLeast(Version.V6_0_1));
+        ToolHelper.getDexVm().getVersion().isNewerThanOrEqual(Version.V6_0_1));
     Assume.assumeTrue(
         "Skipping test "
             + testName.getMethodName()
diff --git a/src/test/java/com/android/tools/r8/debug/IincDebugTestRunner.java b/src/test/java/com/android/tools/r8/debug/IincDebugTestRunner.java
index cfd0a98..3e7367e 100644
--- a/src/test/java/com/android/tools/r8/debug/IincDebugTestRunner.java
+++ b/src/test/java/com/android/tools/r8/debug/IincDebugTestRunner.java
@@ -72,7 +72,7 @@
     // See verifyStateLocation in DebugTestBase.
     Assume.assumeTrue(
         "Streaming on Dalvik DEX runtimes has some unknown interference issue",
-        ToolHelper.getDexVm().getVersion().isAtLeast(Version.V6_0_1));
+        ToolHelper.getDexVm().getVersion().isNewerThanOrEqual(Version.V6_0_1));
     Assume.assumeTrue(
         "Skipping test "
             + testName.getMethodName()
diff --git a/src/test/java/com/android/tools/r8/graph/InvokeSuperTest.java b/src/test/java/com/android/tools/r8/graph/InvokeSuperTest.java
index 1abfea6f..644fc9c 100644
--- a/src/test/java/com/android/tools/r8/graph/InvokeSuperTest.java
+++ b/src/test/java/com/android/tools/r8/graph/InvokeSuperTest.java
@@ -60,7 +60,8 @@
   String getExpectedOutput() {
     if (parameters.isDexRuntime()) {
       Version version = parameters.getRuntime().asDex().getVm().getVersion();
-      if (version.isAtLeast(Version.V5_1_1) && version.isOlderThanOrEqual(Version.V6_0_1)) {
+      if (version.isNewerThanOrEqual(Version.V5_1_1)
+          && version.isOlderThanOrEqual(Version.V6_0_1)) {
         return UNEXPECTED_DEX_5_AND_6_OUTPUT;
       }
     }
diff --git a/src/test/java/com/android/tools/r8/jdwp/RunJdwpTests.java b/src/test/java/com/android/tools/r8/jdwp/RunJdwpTests.java
index d21bd3a..a831fb0 100644
--- a/src/test/java/com/android/tools/r8/jdwp/RunJdwpTests.java
+++ b/src/test/java/com/android/tools/r8/jdwp/RunJdwpTests.java
@@ -70,7 +70,7 @@
   }
 
   static boolean isAndroidKOrAbove(DexVm dexVm, Tool tool) {
-    return dexVm.getVersion().isAtLeast(Version.V4_4_4);
+    return dexVm.getVersion().isNewerThanOrEqual(Version.V4_4_4);
   }
 
   static boolean isAndroidLOrAbove(DexVm dexVm, Tool tool) {
diff --git a/src/test/java/com/android/tools/r8/naming/b72391662/B72391662.java b/src/test/java/com/android/tools/r8/naming/b72391662/B72391662.java
index ddf20ef..c4c9fdf 100644
--- a/src/test/java/com/android/tools/r8/naming/b72391662/B72391662.java
+++ b/src/test/java/com/android/tools/r8/naming/b72391662/B72391662.java
@@ -104,7 +104,7 @@
   }
 
   private static boolean vmVersionIgnored() {
-    return !ToolHelper.getDexVm().getVersion().isAtLeast(Version.V7_0_0);
+    return !ToolHelper.getDexVm().getVersion().isNewerThanOrEqual(Version.V7_0_0);
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/shaking/NonVirtualOverrideTest.java b/src/test/java/com/android/tools/r8/shaking/NonVirtualOverrideTest.java
index f98e5ea..4a8306a 100644
--- a/src/test/java/com/android/tools/r8/shaking/NonVirtualOverrideTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/NonVirtualOverrideTest.java
@@ -144,7 +144,7 @@
       return false;
     }
     Version version = parameters.getRuntime().asDex().getVm().getVersion();
-    return version.isOlderThanOrEqual(Version.V7_0_0) && version.isAtLeast(Version.V5_1_1);
+    return version.isOlderThanOrEqual(Version.V7_0_0) && version.isNewerThanOrEqual(Version.V5_1_1);
   }
 
   public static R8TestCompileResult compile(Dimensions dimensions) throws Exception {
diff --git a/src/test/java/com/android/tools/r8/shaking/keptgraph/KeptViaClassInitializerTestRunner.java b/src/test/java/com/android/tools/r8/shaking/keptgraph/KeptViaClassInitializerTestRunner.java
index 230c0cf..221f99c 100644
--- a/src/test/java/com/android/tools/r8/shaking/keptgraph/KeptViaClassInitializerTestRunner.java
+++ b/src/test/java/com/android/tools/r8/shaking/keptgraph/KeptViaClassInitializerTestRunner.java
@@ -100,7 +100,7 @@
 
   @Test
   public void testKeptMethod() throws Exception {
-    assumeTrue(ToolHelper.getDexVm().getVersion().isAtLeast(Version.V7_0_0));
+    assumeTrue(ToolHelper.getDexVm().getVersion().isNewerThanOrEqual(Version.V7_0_0));
 
     MethodReference mainMethod =
         methodFromMethod(Main.class.getDeclaredMethod("main", String[].class));
