docs: Optional<ExecutableElement> overridingOrHidingMethod(ExecutableElement overridden, TypeElement classElement) {
          List<ExecutableElement> methods = ElementFilter.methodsIn(elementUtils.getAllMembers(classElement));
          for (ExecutableElement method : methods) {
              if (!method.equals(overridden) && method.getSimpleName().equals(overridden.getSimpleName())) {
                  return Optional.of(method);
              }
          }
          // might be looking for a package private & packages differ method in a superclass
          // that is not visible to the most concrete subclass, really!
          // e.g. see injectPackagePrivateMethod4() for SpareTire -> Tire -> RoundThing in Inject tck
          // check the superclass until we reach Object, then bail out with empty if necessary.
          TypeElement superClass = superClassFor(classElement);
          if (superClass != null && !isObjectClass(superClass)) {
              return overridingOrHidingMethod(overridden, superClass);
          }
          return Optional.empty();
      }