Make AndroidApiLevel an Ordered type.

Change-Id: I86f45dc9ad866df75c3b026fb2ea41447bb60756
diff --git a/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java b/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
index b43a42c..7998171 100644
--- a/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
+++ b/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
@@ -109,7 +109,7 @@
   public boolean areValid(CfVersion version, boolean isPackageInfo) {
     if (isInterface()) {
       // We ignore the super flags prior to JDK 9, as so did the VM.
-      if (version.isGreaterThanOrEqual(CfVersion.V9) && isSuper()) {
+      if (version.isGreaterThanOrEqualTo(CfVersion.V9) && isSuper()) {
         return false;
       }
       // When not coming from DEX input we require interfaces to be abstract - except for
diff --git a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
index 4913a2c..455f03a 100644
--- a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
@@ -174,7 +174,7 @@
     String sourceDebug = getSourceDebugExtension(clazz.annotations());
     writer.visitSource(clazz.sourceFile != null ? clazz.sourceFile.toString() : null, sourceDebug);
     CfVersion version = getClassFileVersion(clazz);
-    if (version.isGreaterThanOrEqual(CfVersion.V1_8)) {
+    if (version.isGreaterThanOrEqualTo(CfVersion.V1_8)) {
       // JDK8 and after ignore ACC_SUPER so unset it.
       clazz.accessFlags.unsetSuper();
     } else {
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
index f15c049..6e501fc 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
@@ -4,14 +4,12 @@
 package com.android.tools.r8.utils;
 
 import com.android.tools.r8.errors.Unreachable;
+import com.android.tools.r8.utils.structural.Ordered;
 import java.util.Arrays;
-import java.util.Comparator;
 import java.util.List;
 
-/**
- * Android API level description
- */
-public enum AndroidApiLevel {
+/** Android API level description */
+public enum AndroidApiLevel implements Ordered<AndroidApiLevel> {
   B(1),
   B_1_1(2),
   C(3),
@@ -70,9 +68,7 @@
   }
 
   public static List<AndroidApiLevel> getAndroidApiLevelsSorted() {
-    List<AndroidApiLevel> androidApiLevels = Arrays.asList(AndroidApiLevel.values());
-    androidApiLevels.sort(Comparator.comparingInt(AndroidApiLevel::getLevel));
-    return androidApiLevels;
+    return Arrays.asList(AndroidApiLevel.values());
   }
 
   public static AndroidApiLevel getMinAndroidApiLevel(DexVersion dexVersion) {
@@ -157,20 +153,4 @@
         return LATEST;
     }
   }
-
-  public boolean isLessThan(AndroidApiLevel other) {
-    return this.level < other.getLevel();
-  }
-
-  public boolean isLessThanOrEqualTo(AndroidApiLevel other) {
-    return this.level <= other.getLevel();
-  }
-
-  public boolean isGreaterThan(AndroidApiLevel other) {
-    return other.isLessThan(this);
-  }
-
-  public boolean isGreaterThanOrEqualTo(AndroidApiLevel other) {
-    return other.isLessThanOrEqualTo(this);
-  }
 }
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index c5320a1..69b964d 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -1433,7 +1433,7 @@
 
   public boolean canUseConstClassInstructions(CfVersion cfVersion) {
     assert isGeneratingClassFiles();
-    return cfVersion.isGreaterThanOrEqual(requiredCfVersionForConstClassInstructions());
+    return cfVersion.isGreaterThanOrEqualTo(requiredCfVersionForConstClassInstructions());
   }
 
   public CfVersion requiredCfVersionForConstClassInstructions() {
diff --git a/src/main/java/com/android/tools/r8/utils/structural/Ordered.java b/src/main/java/com/android/tools/r8/utils/structural/Ordered.java
index 9eb14f5..9c9a588 100644
--- a/src/main/java/com/android/tools/r8/utils/structural/Ordered.java
+++ b/src/main/java/com/android/tools/r8/utils/structural/Ordered.java
@@ -49,7 +49,7 @@
     return compareTo(other) < 0;
   }
 
-  default boolean isLessThanOrEqual(T other) {
+  default boolean isLessThanOrEqualTo(T other) {
     return compareTo(other) <= 0;
   }
 
@@ -57,7 +57,7 @@
     return compareTo(other) > 0;
   }
 
-  default boolean isGreaterThanOrEqual(T other) {
+  default boolean isGreaterThanOrEqualTo(T other) {
     return compareTo(other) >= 0;
   }
 }
diff --git a/src/test/java/com/android/tools/r8/cf/CfVersionTest.java b/src/test/java/com/android/tools/r8/cf/CfVersionTest.java
index 471cd3c..ea38851 100644
--- a/src/test/java/com/android/tools/r8/cf/CfVersionTest.java
+++ b/src/test/java/com/android/tools/r8/cf/CfVersionTest.java
@@ -53,12 +53,12 @@
     assertEquals(-1, less.compareTo(more));
     assertEquals(1, more.compareTo(less));
     assertTrue(less.isLessThan(more));
-    assertTrue(less.isLessThanOrEqual(more));
+    assertTrue(less.isLessThanOrEqualTo(more));
     assertFalse(less.isGreaterThan(more));
-    assertFalse(less.isGreaterThanOrEqual(more));
+    assertFalse(less.isGreaterThanOrEqualTo(more));
     assertFalse(more.isLessThan(less));
-    assertFalse(more.isLessThanOrEqual(less));
+    assertFalse(more.isLessThanOrEqualTo(less));
     assertTrue(more.isGreaterThan(less));
-    assertTrue(more.isGreaterThanOrEqual(less));
+    assertTrue(more.isGreaterThanOrEqualTo(less));
   }
 }