code: static int getFingerprint(Method method) {
      int hashcode = method.getName().hashCode();
      hashcode =  hashcode + 31*method.getReturnType().getName().hashCode();
      for (Class<?> type : method.getParameterTypes()) {
        hashcode = 31*hashcode ^ type.getName().hashCode();
      }
      return hashcode;
    }
docs: Calculate a method's hash code considering its method
  name, returning type, and its parameter types
  
  @param method a method
  @return its hash code