am 9132d8a8: am 77cd5e5e: Properly expose methods that override a non-hidden method in a hidden superclass in the API files.

* commit '9132d8a8d4bd438c908980206f92726b4c24248a':
  Properly expose methods that override a non-hidden method in a hidden superclass in the API files.
diff --git a/src/com/google/doclava/Stubs.java b/src/com/google/doclava/Stubs.java
index 65aa8d8..0578302 100644
--- a/src/com/google/doclava/Stubs.java
+++ b/src/com/google/doclava/Stubs.java
@@ -745,7 +745,13 @@
         if (!om.isAbstract()) {
           // If the parent is hidden or removed, we can't rely on it to provide
           // the API
-          if (!om.isHiddenOrRemoved()) {
+          // TODO This check will false positive on cases of a method declared
+          // in a non-hidden class, overidden in a hidden class, and then overidden
+          // again in a non-hidden subclass of the hidden class
+          // (non-hidden->hidden->non-hidden), and will redundantly output a method
+          // entry for the non-hidden sub-subclass. Thankfully, this pattern tends
+          // to be quite rare.
+          if (!om.isHiddenOrRemoved() && !om.containingClass().isHiddenOrRemoved()) {
             // If the only "override" turns out to be in our own class
             // (which sometimes happens in concrete subclasses of
             // abstract base classes), it's not really an override