Fix new backport and SupportedClassesGenerator

- fix red bots

Change-Id: I0910fc547d6be818907e5a3979fe5ff509a39792
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/SupportedClassesGenerator.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/SupportedClassesGenerator.java
index 397c5f6..6bb5c22 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/SupportedClassesGenerator.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/SupportedClassesGenerator.java
@@ -40,6 +40,7 @@
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.Timing;
+import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import java.io.IOException;
 import java.nio.file.Path;
@@ -350,20 +351,34 @@
       if (clazz.type == backport.getHolderType()) {
         DexClass maxClass = amendedAppForMax.definitionFor(clazz.type);
         DexEncodedMethod dexEncodedMethod = maxClass.lookupMethod(backport);
-        // There is a single backport not in amendedAppForMax, Stream#ofNullable.
-        assert dexEncodedMethod != null
-            || backport
-                .toString()
-                .equals(
-                    "java.util.stream.Stream java.util.stream.Stream.ofNullable(java.lang.Object)");
+        // Some backports are not in amendedAppForMax, such as Stream#ofNullable and recent ones
+        // introduced in U.
         if (dexEncodedMethod == null) {
-          dexEncodedMethod =
-              DexEncodedMethod.builder()
-                  .setMethod(backport)
-                  .setAccessFlags(
-                      MethodAccessFlags.fromSharedAccessFlags(
-                          Constants.ACC_PUBLIC | Constants.ACC_STATIC, false))
-                  .build();
+          ImmutableSet<DexType> allStaticPublicMethods =
+              ImmutableSet.of(
+                  options.dexItemFactory().mathType,
+                  options.dexItemFactory().strictMathType,
+                  options.dexItemFactory().objectsType);
+          if (backport
+                  .toString()
+                  .equals(
+                      "java.util.stream.Stream"
+                          + " java.util.stream.Stream.ofNullable(java.lang.Object)")
+              || allStaticPublicMethods.contains(backport.getHolderType())) {
+            dexEncodedMethod =
+                DexEncodedMethod.builder()
+                    .setMethod(backport)
+                    .setAccessFlags(
+                        MethodAccessFlags.fromSharedAccessFlags(
+                            Constants.ACC_PUBLIC | Constants.ACC_STATIC, false))
+                    .build();
+          } else {
+            throw new Error(
+                "Unexpected backport missing from Android "
+                    + MAX_TESTED_ANDROID_API_LEVEL
+                    + ": "
+                    + backport);
+          }
         }
         builder.addSupportedMethod(clazz, dexEncodedMethod);
       }