void init() {
		addTypeConverter(String.class, Long.class, Long::valueOf);
		addTypeConverter(String.class, Long.TYPE, Long::valueOf);
		addTypeConverter(String.class, Integer.class, Integer::valueOf);
		addTypeConverter(String.class, Integer.TYPE, Integer::valueOf);
		addTypeConverter(String.class, Byte.class, Byte::valueOf);
		addTypeConverter(String.class, Byte.TYPE, Byte::valueOf);
		addTypeConverter(String.class, Short.class, Short::valueOf);
		addTypeConverter(String.class, Short.TYPE, Short::valueOf);
		addTypeConverter(String.class, Boolean.class, ExtraConverters::toBoolean);
		addTypeConverter(String.class, Boolean.TYPE, ExtraConverters::toBoolean);
		addTypeConverter(String.class, Float.class, Float::valueOf);
		addTypeConverter(String.class, Float.TYPE, Float::valueOf);
		addTypeConverter(String.class, Double.class, Double::valueOf);
		addTypeConverter(String.class, Double.TYPE, Double::valueOf);
		addTypeConverter(String.class, Character.class, (instance) -> (instance != null) ? instance.charAt(0) : (char) (byte) 0);
		addTypeConverter(String.class, Character.TYPE, (instance) -> (instance != null) ? instance.charAt(0) : (char) (byte) 0);
		addTypeConverter(String.class, Double.TYPE, Double::valueOf);
		addTypeConverter(String.class, BigDecimal.class, BigDecimal::new);
		addTypeConverter(Number.class, Long.class, (instance) -> ExtraConverters.toNumber(instance, Long.class));
		addTypeConverter(Number.class, Long.TYPE, (instance) -> ExtraConverters.toNumber(instance, Long.class));
		addTypeConverter(Number.class, Integer.class, (instance) -> ExtraConverters.toNumber(instance, Integer.class));
		addTypeConverter(Number.class, Integer.TYPE, (instance) -> ExtraConverters.toNumber(instance, Integer.class));
		addTypeConverter(Number.class, Byte.class, (instance) -> ExtraConverters.toNumber(instance, Byte.class));
		addTypeConverter(Number.class, Byte.TYPE, (instance) -> ExtraConverters.toNumber(instance, Byte.class));
		addTypeConverter(Number.class, Short.class, (instance) -> ExtraConverters.toNumber(instance, Short.class));
		addTypeConverter(Number.class, Short.TYPE, (instance) -> ExtraConverters.toNumber(instance, Short.class));
		addTypeConverter(Number.class, Boolean.class, ExtraConverters::toBoolean);
		addTypeConverter(Number.class, Boolean.TYPE, ExtraConverters::toBoolean);
		addTypeConverter(Number.class, Float.class, (instance) -> ExtraConverters.toNumber(instance, Float.class));
		addTypeConverter(Number.class, Float.TYPE, (instance) -> ExtraConverters.toNumber(instance, Float.class));
		addTypeConverter(Number.class, Double.class, (instance) -> ExtraConverters.toNumber(instance, Double.class));
		addTypeConverter(Number.class, Double.TYPE, (instance) -> ExtraConverters.toNumber(instance, Double.class));
		addTypeConverter(Number.class, BigDecimal.class, ExtraConverters::toBigDecimal);
		addTypeConverter(Object.class, String.class, Object::toString);
		addTypeConverter(Character.class, Boolean.class, ExtraConverters::toBoolean);
		addTypeConverter(Number.class, Boolean.TYPE, ExtraConverters::toBoolean);
		addTypeConverter(LocalDateTime.class, LocalDate.class, (LocalDateTime instance) -> instance.toLocalDate());
		addTypeConverter(LocalDate.class, LocalDateTime.class, (LocalDate instance) -> instance.atStartOfDay());
		addTypeConverter(LocalDateTime.class, Date.class, ExtraConverters::localDateTimeToDate);
		addTypeConverter(Date.class, LocalDateTime.class, ExtraConverters::dateToLocalDateTime);
		addTypeConverter(String.class, LocalDateTime.class,ExtraConverters::stringToLocalDateTime);
		addTypeConverter(LocalDateTime.class, String.class,ExtraConverters::localDateTimeToString);
		addTypeConverter(String.class, LocalDate.class,ExtraConverters::stringToLocalDate);
		addTypeConverter(LocalDate.class, String.class,ExtraConverters::localDateToString);

	}