[ApiModel] Allow stubbing of classes if directly set by property

Bug: b/259076765
Change-Id: I95a5fc6532603e028a301b76cb98879d1caf2d37
diff --git a/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java b/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
index 4649132..4864e0b 100644
--- a/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
+++ b/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
@@ -233,7 +233,8 @@
     // We cannot reliably create a stub that will have the same throwing
     // behavior for all VMs. We only create stubs for exceptions to allow them being present in
     // catch handlers. See b/b/258270051 for more information.
-    if (!isThrowable(libraryClass)) {
+    if (!isThrowable(libraryClass)
+        || appView.options().apiModelingOptions().stubNonThrowableClasses) {
       return;
     }
     if (appView
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 98d5a27..09641c3 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -1805,6 +1805,9 @@
         System.getProperty("com.android.tools.r8.disableApiModeling") == null;
     public boolean reportUnknownApiReferences =
         System.getProperty("com.android.tools.r8.reportUnknownApiReferences") != null;
+    // TODO(b/259076765): Remove when resolved.
+    public boolean stubNonThrowableClasses =
+        System.getProperty("com.android.tools.r8.stubNonThrowableClasses") != null;
 
     // TODO(b/232823652): Enable when we can compute the offset correctly.
     public boolean useMemoryMappedByteBuffer = false;