code: @Override
    public boolean canConvert(Class<?> fromType, Class<?> toType) {
  
      boolean canConvert = getSourceType()
        .filter(sourceType -> !Object.class.equals(sourceType))
        .map(sourceType -> assignableTo(fromType, sourceType))
        .orElse(true);
  
      // targetType should be assignable to or a subclass of toType
      // toType should be assignable from targetType
      canConvert &= getTargetType()
        .filter(targetType -> !Object.class.equals(targetType))
        .map(targetType -> assignableTo(targetType, toType))
        .orElse(true);
  
      return canConvert;
    }
docs: Determines whether this {@link Converter} can convert {@link Object Objects}
  {@link Class from type} {@link Class to type}.
  
  @param fromType {@link Class type} to convert from.
  @param toType {@link Class type} to convert to.
  @return a boolean indicating whether this {@link Converter} can convert {@link Object Objects}
  {@link Class from type} {@link Class to type}.
  @see org.cp.elements.data.conversion.ConversionService#canConvert(Class, Class)
  @see #getSourceType()
  @see #getTargetType()