code: @Override
    public <QT extends Number> QT convert(Object value, Class<QT> qualifyingType) {
  
      Assert.notNull(qualifyingType, "Qualifying type is required");
  
      try {
        if (qualifyingType.isInstance(value)) {
          return qualifyingType.cast(value);
        }
        else if (value instanceof Number) {
          return toQualifyingNumber((Number) value, qualifyingType);
        }
        else if (value instanceof String && StringUtils.containsDigits(value.toString().trim())) {
          return parseNumber(value.toString().trim(), qualifyingType);
        }
        else {
          throw newConversionException(CONVERSION_EXCEPTION_MESSAGE, value, qualifyingType.getName());
        }
      }
      catch (Exception cause) {
  
        if (cause instanceof ConversionException) {
          throw (ConversionException) cause;
        }
  
        throw newConversionException(cause, CONVERSION_EXCEPTION_MESSAGE, value, qualifyingType.getName());
      }
    }
docs: Converts an {@link Object} of {@link Class type S} into an {@link Object} of {@link Class qualifying type QT}.
  
  @param <QT> {@link Class qualifying type} extending {@link Class type T}.
  @param value {@link Object} of {@link Class type S} to convert.
  @param qualifyingType the {@link Class qualifying type} of the {@link Object} resolved in the conversion.
  @return the converted {@link Object} of {@link Class qualifying type QT}.
  @throws ConversionException if the {@link Object} cannot be converted.
  @throws IllegalArgumentException if {@link Class qualifying type} is {@literal null}.
  @see org.cp.elements.data.conversion.ConversionService#convert(Object, Class)
  @see #convert(Object)