code: public static float getTypeDifferenceWeight(Class<?> paramType, Object destArg) {
          if (!TypeUtils.isAssignableValue(paramType, destArg)) {
              return Float.MAX_VALUE;
          }
          return getTypeDifferenceWeight(paramType, (destArg != null ? destArg.getClass() : null));
      }
docs: Algorithm that judges the match between the declared parameter types of
  a candidate method and a specific list of arguments that this method is
  supposed to be invoked with.
  
  @param paramType the parameter type to match
  @param destArg the argument to match
  @return the type difference weight