Do not warn about registration issues for overriden methods

Test: Updated existing test
Bug: 152426126
Change-Id: I1afff2a770cc56bb5dcf1c41066ff9433f45fdfb
diff --git a/src/main/java/com/android/tools/metalava/ApiLint.kt b/src/main/java/com/android/tools/metalava/ApiLint.kt
index db320c9..5be9b87 100644
--- a/src/main/java/com/android/tools/metalava/ApiLint.kt
+++ b/src/main/java/com/android/tools/metalava/ApiLint.kt
@@ -1023,6 +1023,7 @@
 
         /** Make sure that there is a corresponding method */
         fun ensureMatched(cls: ClassItem, methods: Sequence<MethodItem>, method: MethodItem, name: String) {
+            if (method.superMethods().isNotEmpty()) return // Do not report for override methods
             for (candidate in methods) {
                 if (candidate.name() == name) {
                     return
diff --git a/src/test/java/com/android/tools/metalava/ApiLintTest.kt b/src/test/java/com/android/tools/metalava/ApiLintTest.kt
index 0b3c9f8..be56d35 100644
--- a/src/test/java/com/android/tools/metalava/ApiLintTest.kt
+++ b/src/test/java/com/android/tools/metalava/ApiLintTest.kt
@@ -776,12 +776,13 @@
             apiLint = "", // enabled
             compatibilityMode = false,
             warnings = """
+                src/android/pkg/RegistrationInterface.java:6: error: Found registerOverriddenUnpairedCallback but not unregisterOverriddenUnpairedCallback in android.pkg.RegistrationInterface [PairedRegistration] [Rule L2 in go/android-api-guidelines]
                 src/android/pkg/RegistrationMethods.java:8: error: Found registerUnpairedCallback but not unregisterUnpairedCallback in android.pkg.RegistrationMethods [PairedRegistration] [Rule L2 in go/android-api-guidelines]
-                src/android/pkg/RegistrationMethods.java:9: error: Found unregisterMismatchedCallback but not registerMismatchedCallback in android.pkg.RegistrationMethods [PairedRegistration] [Rule L2 in go/android-api-guidelines]
-                src/android/pkg/RegistrationMethods.java:10: error: Callback methods should be named register/unregister; was addCallback [RegistrationName] [Rule L3 in go/android-api-guidelines]
-                src/android/pkg/RegistrationMethods.java:15: error: Found addUnpairedListener but not removeUnpairedListener in android.pkg.RegistrationMethods [PairedRegistration] [Rule L2 in go/android-api-guidelines]
-                src/android/pkg/RegistrationMethods.java:16: error: Found removeMismatchedListener but not addMismatchedListener in android.pkg.RegistrationMethods [PairedRegistration] [Rule L2 in go/android-api-guidelines]
-                src/android/pkg/RegistrationMethods.java:17: error: Listener methods should be named add/remove; was registerWrongListener [RegistrationName] [Rule L3 in go/android-api-guidelines]
+                src/android/pkg/RegistrationMethods.java:12: error: Found unregisterMismatchedCallback but not registerMismatchedCallback in android.pkg.RegistrationMethods [PairedRegistration] [Rule L2 in go/android-api-guidelines]
+                src/android/pkg/RegistrationMethods.java:13: error: Callback methods should be named register/unregister; was addCallback [RegistrationName] [Rule L3 in go/android-api-guidelines]
+                src/android/pkg/RegistrationMethods.java:18: error: Found addUnpairedListener but not removeUnpairedListener in android.pkg.RegistrationMethods [PairedRegistration] [Rule L2 in go/android-api-guidelines]
+                src/android/pkg/RegistrationMethods.java:19: error: Found removeMismatchedListener but not addMismatchedListener in android.pkg.RegistrationMethods [PairedRegistration] [Rule L2 in go/android-api-guidelines]
+                src/android/pkg/RegistrationMethods.java:20: error: Listener methods should be named add/remove; was registerWrongListener [RegistrationName] [Rule L3 in go/android-api-guidelines]
                 """,
             sourceFiles = arrayOf(
                 java(
@@ -790,10 +791,13 @@
 
                     import androidx.annotation.Nullable;
 
-                    public class RegistrationMethods {
+                    public class RegistrationMethods implements RegistrationInterface {
                         public void registerOkCallback(@Nullable Runnable r) { } // OK
                         public void unregisterOkCallback(@Nullable Runnable r) { } // OK
                         public void registerUnpairedCallback(@Nullable Runnable r) { }
+                        // OK here because it is override
+                        @Override
+                        public void registerOverriddenUnpairedCallback(@Nullable Runnable r) { } 
                         public void unregisterMismatchedCallback(@Nullable Runnable r) { }
                         public void addCallback(@Nullable Runnable r) { }
 
@@ -805,6 +809,17 @@
                         public void registerWrongListener(@Nullable Runnable r) { }
                     }
                     """
+                ),
+                java(
+                    """
+                    package android.pkg;
+
+                    import androidx.annotation.Nullable;
+
+                    public interface RegistrationInterface {
+                        void registerOverriddenUnpairedCallback(@Nullable Runnable r) { }
+                    }
+                    """
                 )
             )
         )