@@ -104,10 +104,15 @@ abstract class InheritingContainer extends Container
104
104
packageGraph.rendererFactory.languageFeatureRenderer)
105
105
.toList ();
106
106
107
- late final List <ModelElement > _allModelElements = [
108
- ...super .allModelElements,
109
- ...typeParameters,
110
- ];
107
+ late final List <ModelElement > _allModelElements = () {
108
+ _inheritedElementsCache = _inheritedElements;
109
+ var result = [
110
+ ...super .allModelElements,
111
+ ...typeParameters,
112
+ ];
113
+ _inheritedElementsCache = null ;
114
+ return result;
115
+ }();
111
116
112
117
Iterable <Method > get inheritedMethods {
113
118
var methodNames = declaredMethods.map ((m) => m.element.name).toSet ();
@@ -144,7 +149,9 @@ abstract class InheritingContainer extends Container
144
149
late final List <DefinedElementType > publicSuperChain =
145
150
model_utils.filterNonPublic (superChain).toList (growable: false );
146
151
152
+ List <ExecutableElement >? _inheritedElementsCache;
147
153
List <ExecutableElement > get _inheritedElements {
154
+ if (_inheritedElementsCache != null ) return _inheritedElementsCache! ;
148
155
if (element is ClassElement && (element as ClassElement ).isDartCoreObject) {
149
156
return const < ExecutableElement > [];
150
157
}
@@ -193,7 +200,7 @@ abstract class InheritingContainer extends Container
193
200
}
194
201
195
202
/// All fields defined on this container, _including inherited fields_.
196
- List <Field > get allFields {
203
+ late List <Field > allFields = () {
197
204
var inheritedAccessorElements = {
198
205
..._inheritedElements.whereType <PropertyAccessorElement >()
199
206
};
@@ -243,7 +250,7 @@ abstract class InheritingContainer extends Container
243
250
});
244
251
245
252
return fields;
246
- }
253
+ }();
247
254
248
255
@override
249
256
late final List <Method > declaredMethods = element.methods
0 commit comments