Improved generics on AbstractMasterSystemService / AbstractPerUserSystemService.

Bug: 117779333
Test: atest CtsAutoFillServiceTestCases

Change-Id: I777fbe44aa395372eba3c97a1c18c2de4c771dd4
diff --git a/services/core/java/com/android/server/AbstractMasterSystemService.java b/services/core/java/com/android/server/AbstractMasterSystemService.java
index 6cae887..9c1e3cd 100644
--- a/services/core/java/com/android/server/AbstractMasterSystemService.java
+++ b/services/core/java/com/android/server/AbstractMasterSystemService.java
@@ -62,13 +62,14 @@
  * <p>See {@code com.android.server.autofill.AutofillManagerService} for a concrete
  * (no pun intended) example of how to use it.
  *
+ * @param <M> "master" service class.
  * @param <S> "real" service class.
  *
  * @hide
  */
 // TODO(b/117779333): improve javadoc above instead of using Autofill as an example
-public abstract class AbstractMasterSystemService<S extends AbstractPerUserSystemService<S>>
-        extends SystemService {
+public abstract class AbstractMasterSystemService<M extends AbstractMasterSystemService<M, S>,
+        S extends AbstractPerUserSystemService<S, M>> extends SystemService {
 
     /**
      * Log tag