Ensure inner classes of @SystemApi classes are kept

There are several cases where inner classes of @SystemApi-annotated
classes should be kept, but aren't. Add a conditional rule to ensure
this. This is probably overly conservative, but for now should avoid
issues with optimization.

A follow-up change will refactor this to reuse the rules in
system-api.pro, but that requires a bit of build file surgery first.

Bug: 300514883
Change-Id: Ibd561a9098881db1c7e78346d60f4c91d9c75894
Test: m + check services.jar dex diff
diff --git a/services/proguard.flags b/services/proguard.flags
index e11e613..57afac3 100644
--- a/services/proguard.flags
+++ b/services/proguard.flags
@@ -14,13 +14,20 @@
 }
 
 # APIs referenced by dependent JAR files and modules
--keep @interface android.annotation.SystemApi
+# TODO(b/300514883): Pull @SystemApi keep rules from system-api.pro.
+-keep interface android.annotation.SystemApi
 -keep @android.annotation.SystemApi class * {
   public protected *;
 }
 -keepclasseswithmembers class * {
   @android.annotation.SystemApi *;
 }
+# Also ensure nested classes are kept. This is overly conservative, but handles
+# cases where such classes aren't explicitly marked @SystemApi.
+-if @android.annotation.SystemApi class *
+-keep public class <1>$** {
+  public protected *;
+}
 
 # Derivatives of SystemService and other services created via reflection
 -keep,allowoptimization,allowaccessmodification class * extends com.android.server.SystemService {