code: public static float getTypeDifferenceWeight(Class<?>[] srcArgs, Class<?>[] destArgs) {
          float weight = 0.0f;
          for (int i = 0; i < srcArgs.length; i++) {
              Class<?> srcClass = srcArgs[i];
              Class<?> destClass = destArgs[i];
              weight += getTypeDifferenceWeight(srcClass, destClass);
              if (weight == Float.MAX_VALUE) {
                  break;
              }
          }
          return weight;
      }
docs: Returns the sum of the object transformation cost for each class in the source
  argument list.
  
  @param srcArgs the source arguments
  @param destArgs the destination arguments
  @return the accumulated weight for all arguments