public Iterable<JvmFeature> getAllJvmFeatures(JvmDeclaredType type, ITypeArgumentContext ctx) { Multimap<Triple<EClass, String, Integer>, JvmFeature> featureIndex = LinkedHashMultimap.create(); indexFeatures(type, featureIndex); Set<JvmTypeReference> types = superTypeCollector.collectSuperTypes(type); for (JvmTypeReference jvmTypeReference : types) { JvmType jvmType = jvmTypeReference.getType(); if (jvmType instanceof JvmDeclaredType) { indexFeatures((JvmDeclaredType) jvmType, featureIndex); } } return removeOverridden(featureIndex, ctx); }