Restore PackageParser.Callback interface methods for SDK < 30

Copy ag/16331686 to AOSP

Fixes: 205007023
Test: m -j Run_robolectric_shadows_androidx_fragment_tests
Change-Id: I828d5c2eaa710de47f97464c4a52a578b6753418
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageBackwardCompatibility.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageBackwardCompatibility.java
new file mode 100644
index 0000000..60a465b
--- /dev/null
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageBackwardCompatibility.java
@@ -0,0 +1,29 @@
+package org.robolectric.shadows;
+
+import static android.os.Build.VERSION_CODES.P;
+
+import com.android.server.pm.parsing.library.PackageSharedLibraryUpdater;
+import java.util.List;
+import java.util.function.Supplier;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+/**
+ * Shadow of {@link PackageBackwardCompatibility} to handle a scenario that can come up when
+ * multiple Android versions end up on the classpath
+ */
+@Implements(className = "android.content.pm.PackageBackwardCompatibility", maxSdk = P)
+public class ShadowPackageBackwardCompatibility {
+
+  /**
+   * Stubbing this out as if Android S+ is on the classpath, we'll get a ClassCastException instead
+   * of a ClassNotFoundException. Since we don't really need this logic, simpler to just skip it
+   */
+  @Implementation
+  protected static boolean addOptionalUpdater(
+      List<PackageSharedLibraryUpdater> packageUpdaters,
+      String className,
+      Supplier<PackageSharedLibraryUpdater> defaultUpdater) {
+    return false;
+  }
+}
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java
index 8c2f6e1..4940793 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java
@@ -72,5 +72,15 @@
     public boolean hasFeature(String feature) {
       return false;
     }
+
+    // @Override for SDK < 30
+    public String[] getOverlayPaths(String s, String s1) {
+      return null;
+    }
+
+    // @Override for SDK < 30
+    public String[] getOverlayApks(String s) {
+      return null;
+    }
   }
 }