@Test
public void isAssignableFrom_should_work_with_fixed_generic_interface_implementation() {

	// GenericInterface and StringTypedImpl
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<String>>() {}.getType(),
			StringTypedImpl.class
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<Integer>>() {}.getType(),
			StringTypedImpl.class
	)).isFalse();
	// GenericInterface and MoreStringTypedImpl
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<String>>() {}.getType(),
			MoreStringTypedImpl.class
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<Integer>>() {}.getType(),
			MoreStringTypedImpl.class
	)).isFalse();
	softly.assertThat(isAssignableFrom(
			StringTypedImpl.class,
			MoreStringTypedImpl.class
	)).isTrue();
	// GenericInterface and GenericStringTypedImpl
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<String>>() {}.getType(),
			new TypeReference<GenericStringTypedImpl<Integer>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<Integer>>() {}.getType(),
			new TypeReference<GenericStringTypedImpl<Integer>>() {}.getType()
	)).isFalse();
	// GenericInterface, GenericStringTypedImpl and MoreIntegerGenericStringTypedImpl
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<String>>() {}.getType(),
			new TypeReference<MoreIntegerGenericStringTypedImpl<Integer>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<Integer>>() {}.getType(),
			new TypeReference<MoreIntegerGenericStringTypedImpl<Integer>>() {}.getType()
	)).isFalse();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericStringTypedImpl<Integer>>() {}.getType(),
			new TypeReference<MoreIntegerGenericStringTypedImpl<Integer>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericStringTypedImpl<Integer>>() {}.getType(),
			new TypeReference<MoreIntegerGenericStringTypedImpl<Double>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericStringTypedImpl<String>>() {}.getType(),
			new TypeReference<MoreIntegerGenericStringTypedImpl<Double>>() {}.getType()
	)).isFalse();
}