### Question:
SearchableClasses { public Queue<Class<?>> findAssignablesInOrderFrom(Class<?> clazz) { Queue<Class<?>> assignablesInOrder = Lists.newLinkedList(); findAssignablesInOrderFromClass(clazz, assignablesInOrder); return assignablesInOrder; } SearchableClasses(Set<Class<?>> classes); Class<?> findNearestAssignableFrom(Class<?> clazz); Queue<Class<?>> findAssignablesInOrderFrom(Class<?> clazz);  }### Answer:
@Test public void whenFindAssignablesInOrderFromUnknownClazz_thenEmptyIsReturned() { Queue<Class<?>> foundClasses = searchableClasses.findAssignablesInOrderFrom(UnknownClazz.class); assertThat(foundClasses, hasSize(0)); }
@SuppressWarnings("unchecked") @Test public void whenFindAssignablesInOrderFromClazz_thenAssignablesIsReturnedInOrder() { Queue<Class<?>> foundClasses = searchableClasses.findAssignablesInOrderFrom(Clazz.class); Queue<Class<?>> expectedAssignablesInOrder = Lists.newLinkedList(Lists.newArrayList(Clazz.class, ParentInterface.class, GrandparentSuperInterface.class, GrandparentClazz.class)); assertThat(foundClasses, equalTo(expectedAssignablesInOrder)); }