@@ -102,7 +102,7 @@ public EList<Membership> getInheritedMembership(Collection<Namespace> excludedNa
102102 }
103103 }
104104 Collection <Feature > newRedefinedFeatures = new HashSet <>(redefinedFeatures );
105- newRedefinedFeatures .addAll (TypeUtil . getAllFeaturesRedefinedBy ( target ));
105+ newRedefinedFeatures .addAll (getAllFeaturesRedefinedByType ( ));
106106 for (Type general : TypeUtil .getGeneralTypesOf (target )) {
107107 if (general != null && !excludedTypes .contains (general )) {
108108 inheritedMemberships .addAll (TypeUtil .getNonPrivateMembershipFor (general , excludedNamespaces , excludedTypes , includeProtected , excludeImplied , newRedefinedFeatures ));
@@ -129,10 +129,18 @@ protected static void removeRedefinedFeatures(Collection<Membership> memberships
129129 FeatureUtil .redefinesAnyOf ((Feature )memberElement , redefinedFeatures );
130130 });
131131 }
132+
133+ protected Collection <Feature > getAllFeaturesRedefinedByType () {
134+ if (allRedefinedFeatures == null ) {
135+ allRedefinedFeatures = TypeUtil .getAllFeaturesRedefinedBy (getTarget ());
136+ }
137+ return allRedefinedFeatures ;
138+ }
132139
133140 // Caching
134141
135142 private EList <Membership > inheritedMembership = null ;
143+ private Collection <Feature > allRedefinedFeatures = null ;
136144
137145 public EList <Membership > getInheritedMembership () {
138146 return inheritedMembership ;
@@ -146,6 +154,7 @@ public EList<Membership> setInheritedMembership(EList<Membership> inheritedMembe
146154 public void clearCaches () {
147155 super .clearCaches ();
148156 inheritedMembership = null ;
157+ allRedefinedFeatures = null ;
149158 }
150159
151160 // Implicit Elements
0 commit comments