private Iterable<JavaTransitiveInstancesKey> minimizeJavaTypeList(final Iterable<JavaTransitiveInstancesKey> types) {
final Function1<JavaTransitiveInstancesKey, Boolean> _function = (JavaTransitiveInstancesKey it) -> {
return Boolean.valueOf(((it.getInstanceClass() != null) && (!Objects.equal(it.getInstanceClass(), Object.class))));
};
final Function1<JavaTransitiveInstancesKey, Class<?>> _function_1 = (JavaTransitiveInstancesKey it) -> {
return it.getInstanceClass();
};
final Iterable<Class<?>> nonTopTypes = IterableExtensions.<Class<?>>filterNull(IterableExtensions.<JavaTransitiveInstancesKey, Class<?>>map(IterableExtensions.<JavaTransitiveInstancesKey>filter(types, _function), _function_1));
final HashSet<Class<?>> javaTypes = CollectionLiterals.<Class<?>>newHashSet(((Class<?>[])Conversions.unwrapArray(nonTopTypes, Class.class)));
final Consumer<Class<?>> _function_2 = (Class<?> key) -> {
final Function1<Class<?>, Boolean> _function_3 = (Class<?> it) -> {
return Boolean.valueOf(((!Objects.equal(it, key)) && key.isAssignableFrom(it)));
};
CollectionExtensions.<Class<?>>removeAll(javaTypes, IterableExtensions.<Class<?>>filter(javaTypes, _function_3));
};
nonTopTypes.forEach(_function_2);
final Function1<Class<?>, JavaTransitiveInstancesKey> _function_3 = (Class<?> it) -> {
return new JavaTransitiveInstancesKey(it);
};
return IterableExtensions.<Class<?>, JavaTransitiveInstancesKey>map(javaTypes, _function_3);
}