Source
List<Parameter> get allParameters {
if (_allParameters == null) {
final Set<Parameter> recursedParameters = new Set();
final Set<Parameter> newParameters = new Set();
if (this is GetterSetterCombo &&
(this as GetterSetterCombo).setter != null) {
newParameters.addAll((this as GetterSetterCombo).setter.parameters);
} else {
if (canHaveParameters) newParameters.addAll(parameters);
}
while (newParameters.isNotEmpty) {
recursedParameters.addAll(newParameters);
newParameters.clear();
for (Parameter p in recursedParameters) {
if (p.modelType.element.canHaveParameters) {
newParameters.addAll(p.modelType.element.parameters
.where((p) => !recursedParameters.contains(p)));
}
}
}
_allParameters = recursedParameters.toList();
}
return _allParameters;
}