private static <T extends Record> Constructor<T> ctor(final Class<T> type) {
		final Class<?>[] columnTypes = Stream.of(type.getRecordComponents())
			.map(RecordComponent::getType)
			.toArray(Class<?>[]::new);

		try {
			return type.getDeclaredConstructor(columnTypes);
		} catch (NoSuchMethodException e) {
			throw new IllegalArgumentException(
				"Canonical record constructor must be available.", e
			);
		}
	}
Creates a new record constructor for the given record {@code type} and
{@code converter}.

@param type the record type
@param converter the converter to use for converting the string
       columns of the CSV row
@return a new row-parser for the given record {@code type}
@param <T> the record type
jenetics.incubator/src/main/java/io/jenetics/incubator/csv/RecordCtor.java