code: @Override
    public <T> T map(Class<T> type) {
  
      Assert.notNull(type, "Class type of the object to map is required");
  
      return getView().map(view -> {
  
        try {
  
          BeanInfo beanInfo = Introspector.getBeanInfo(type);
  
          T instance = type.newInstance();
  
          Arrays.stream(beanInfo.getPropertyDescriptors()).forEach(propertyDescriptor ->
            Optional.ofNullable(propertyDescriptor.getWriteMethod()).ifPresent(writeMethod -> {
  
              String propertyName = propertyDescriptor.getName();
  
              view.getColumn(propertyName).ifPresent(column -> {
  
                Object value = getValue(column);
  
                ObjectUtils.invoke(instance, writeMethod, ArrayUtils.asArray(value), Void.class);
  
              });
            }));
  
          return instance;
        }
        catch (Exception cause) {
          throw newMappingException(cause, "Failed to map object of type [%s] with values from this Row [%s]",
            type.getName(), this);
        }
      })
      .orElseThrow(() -> newIllegalStateException("This Row [%s] is not associated with a View", this));
    }
docs: Maps the {@link Object values} of this {@link Row} to the given {@link Object}.
  
  The {@link Class type} must have a default, public no argument {@link Constructor}.
  
  @param <T> {@link Class type} of the {@link Object} to map with the {@link Object value} from this {@link Row}.
  @param type {@link Class type} of the {@link Object} to map with the {@link Object values} from this {@link Row}.
  @return the {@link Object} populated with the {@link Object values} of this {@link Row}.
  @see java.lang.Class