code: public static <T> CsvWriterDSL<T> from(Type type) {
  
          ClassMeta<T> classMeta = ReflectionService.newInstance().getClassMeta(type);
  
          CellWriter cellWriter = CsvCellWriter.DEFAULT_WRITER;
  
          CsvWriterBuilder<T> builder = CsvWriterBuilder
                  .newBuilder(classMeta, cellWriter);
  
          MapperConfig<CsvColumnKey, ?> mapperConfig = MapperConfig.<CsvColumnKey, CsvRow>fieldMapperConfig();
          try {
              String[] headers = defaultHeaders(classMeta);
              for(String header : headers) {
                  builder.addColumn(header);
              }
              ContextualSourceFieldMapperImpl<T, Appendable> mapper = builder.mapper();
  
              return new DefaultCsvWriterDSL<T>(
                      CsvWriter.<T>toColumnDefinitions(headers),
                      cellWriter,
                      mapper,
                      classMeta,
                      mapperConfig, false);
          } catch (UnsupportedOperationException e) {
              return new NoColumnCsvWriterDSL<T>(
                      cellWriter,
                      classMeta,
                      mapperConfig, false);
          }
      }
docs: Create a DSL on the specified type.
  @param type the type of object to write
  @param <T> the type
  @return a DSL on the specified type