docs: public static void verifyMethodSignature(Method method, Class<?> returnType, Class<?>... parameters) {
          if(method == null) {
                  throw new IllegalArgumentException("Method is null");
          }
          if (!method.getReturnType().equals(returnType)) {
                  throw new IllegalArgumentException("Method " + method + " return type " + method.getReturnType()
                          + " does not match: " + returnType);
          }
          Class<?>[] actualParameters = method.getParameterTypes();
          if (actualParameters.length != parameters.length) {
              throw new IllegalArgumentException("Method " + method + " number of parameters " + actualParameters.length
                      + " does not match: " + parameters.length);
          }
          if (!Arrays.equals(actualParameters,parameters)) {
              throw new IllegalArgumentException("Method " + method + " types of parameters "
                      + Arrays.toString(actualParameters) + " does not match: " + Arrays.toString(parameters));
          }
      }