code: protected boolean isApplicable(Class<?> converterTargetClass, Class<?> expectedTargetClass) {
  
      if (converterTargetClass.isAssignableFrom(expectedTargetClass)) {
        return true;
      } else if (expectedTargetClass.isPrimitive()) {
        Class<?> expectedNonPrimitiveClass = getReflectionUtil().getNonPrimitiveType(expectedTargetClass);
        return converterTargetClass.isAssignableFrom(expectedNonPrimitiveClass);
        // } else if ((converterTargetClass.isArray()) &&
        // (expectedTargetClass.isArray())) {
        // return isApplicable(converterTargetClass.getComponentType(),
        // expectedTargetClass
        // .getComponentType());
      }
      return false;
    }
docs: This method determines if the given {@code converterTargetClass} is applicable for the {@code expectedTargetClass}.
  
  @param converterTargetClass is the {@link ValueConverter#getTargetType() target-class} of the
  {@link ValueConverter} to check.
  @param expectedTargetClass is the target-class to convert to.
  @return {@code true} if the conversion is applicable.