@Test
public void isAssignableFrom_should_work_for_parameterized_interfaces_and_a_direct_implementation() {

	// List and AbstractList
	softly.assertThat(isAssignableFrom(
			new TypeReference<List<String>>() {}.getType(),
			new TypeReference<AbstractList<String>>() {}.getType()
	)).isTrue();
	// GenericInterface and UnTypedImpl
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<String>>() {}.getType(),
			new TypeReference<UnTypedImpl<String>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<GenericInterface<String>>() {}.getType(),
			new TypeReference<UnTypedImpl<Integer>>() {}.getType()
	)).isFalse();
	// Map and AbstractMap
	softly.assertThat(isAssignableFrom(
			new TypeReference<Map<String, Number>>() {}.getType(),
			new TypeReference<AbstractMap<String, Number>>() {}.getType()
	)).isTrue();
	softly.assertThat(isAssignableFrom(
			new TypeReference<Map<String, Number>>() {}.getType(),
			new TypeReference<AbstractMap<Double, Number>>() {}.getType()
	)).isFalse();
	softly.assertThat(isAssignableFrom(
			new TypeReference<Map<String, Number>>() {}.getType(),
			new TypeReference<AbstractMap<String, Integer>>() {}.getType()
	)).isFalse();
}