docs: private static boolean isEqual(Method m, Method a) {
          if (m.getName().equals(a.getName()) && m.getParameterTypes().length == a.getParameterTypes().length && m.getReturnType().isAssignableFrom(a.getReturnType())) {
              for (int i = 0; i < m.getParameterTypes().length; i++) {
                  if (!(m.getParameterTypes()[i].isAssignableFrom(a.getParameterTypes()[i]))) {
                      return false;
                  }
              }
              return true;
          }
          return false;
      }