@Test
public void isAssignableFrom_should_manage_to_match_generic_variable_from_sub_types_to_super_types() {

	// SomethingMap and SuperMap
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<Double>>() {}.getType(),
			new TypeReference<SomethingMap<Double, Integer>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<String>>() {}.getType(),
			new TypeReference<SomethingMap<String, Integer>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<String>>() {}.getType(),
			new TypeReference<SomethingMap<Number, Integer>>() {}.getType()
	)).isFalse();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<Double>>() {}.getType(),
			new TypeReference<SuperMap<Integer, Double>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<String>>() {}.getType(),
			new TypeReference<SuperMap<Integer, String>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<String>>() {}.getType(),
			new TypeReference<SuperMap<Integer, Number>>() {}.getType()
	)).isFalse();
	// FixedSomethingMap and FixedSuperMap
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<Double>>() {}.getType(),
			new TypeReference<FixedSuperMap<Integer, Long>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<Double>>() {}.getType(),
			new TypeReference<FixedSuperMap<Number, Double>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<Integer>>() {}.getType(),
			new TypeReference<FixedSuperMap<Number, Double>>() {}.getType()
	)).isFalse();
}