docs: public static final boolean methodsEqual(Method remoteMethod, Method beanMethod)
      {
          if ((remoteMethod == null) || (beanMethod == null)) {
              return false;
          }
  
          //----------------------
          // Compare method names
          //----------------------
  
          if (!remoteMethod.getName().equals(beanMethod.getName())) {
              return false;
          }
  
          //-------------------------
          // Compare parameter types
          //-------------------------
  
          Class<?> remoteMethodParamTypes[] = remoteMethod.getParameterTypes();
          Class<?> beanMethodParamTypes[] = beanMethod.getParameterTypes();
  
          if (remoteMethodParamTypes.length != beanMethodParamTypes.length) {
              return false;
          }
  
          for (int i = 0; i < remoteMethodParamTypes.length; i++) {
              if (!remoteMethodParamTypes[i].equals(beanMethodParamTypes[i])) {
                  return false;
              }
          }
  
          //-----------------------------------------------------------------
          // If method names are equal and parameter types match then the
          // methods are equal for our purposes. Java does not allow methods
          // with the same name and parameter types that differ only in
          // return type and/or exception signature.
          //-----------------------------------------------------------------
  
          return true;
      }