code: private void filterSuperInterfaceMethods(JavaClass inf, Set<QMethod> infMethods, JavaClass cls) {
          try {
              if (infMethods.isEmpty()) {
                  return;
              }
  
              JavaClass[] superInfs = inf.getInterfaces();
              for (JavaClass superInf : superInfs) {
                  if (cls.implementationOf(superInf)) {
                      Set<QMethod> superInfMethods = buildMethodSet(superInf);
                      infMethods.removeAll(superInfMethods);
                      if (infMethods.isEmpty()) {
                          return;
                      }
                  }
                  filterSuperInterfaceMethods(superInf, infMethods, cls);
              }
          } catch (ClassNotFoundException cnfe) {
              bugReporter.reportMissingClass(cnfe);
              infMethods.clear();
          }
      }
docs: removes methods found in an interface when a super interface having the same methods is implemented in a parent. While this is somewhat hinky, we'll
  allow it.
  
  @param inf
  the interface to look for super interfaces for
  @param infMethods
  the remaining methods that are needed to be found
  @param cls
  the super class to look for these methods in