in lib/src/model/model_element.dart [294:380]
static ModelElement? _fromParameters(
Element e, Library? library, PackageGraph packageGraph,
{Container? enclosingContainer, Member? originalMember}) {
if (e is MultiplyInheritedExecutableElement) {
return resolveMultiplyInheritedElement(
e, library, packageGraph, enclosingContainer as Class);
}
assert(e is! MultiplyDefinedElement);
if (e is LibraryElement) {
return packageGraph.findButDoNotCreateLibraryFor(e);
}
if (e is PrefixElement) {
return Prefix(e, library, packageGraph);
}
if (e is ClassElement) {
if (e.isMixin) {
return Mixin(e, library, packageGraph);
} else if (e.isEnum) {
return Enum(e, library, packageGraph);
} else {
return Class(e, library, packageGraph);
}
}
if (e is ExtensionElement) {
return Extension(e, library!, packageGraph);
}
if (e is FunctionElement) {
return ModelFunction(e, library, packageGraph);
} else if (e is GenericFunctionTypeElement) {
assert(e.enclosingElement is TypeAliasElement);
assert(e.enclosingElement!.name != '');
return ModelFunctionTypedef(e, library, packageGraph);
}
if (e is TypeAliasElement) {
if (e.aliasedType is FunctionType) {
return FunctionTypedef(e, library, packageGraph);
}
if (e.aliasedType.element is ClassElement) {
return ClassTypedef(e, library, packageGraph);
}
return GeneralizedTypedef(e, library, packageGraph);
}
if (e is ConstructorElement) {
return Constructor(e, library, packageGraph);
}
if (e is MethodElement && e.isOperator) {
if (enclosingContainer == null) {
return Operator(e, library, packageGraph);
} else {
return Operator.inherited(e, enclosingContainer, library, packageGraph,
originalMember: originalMember);
}
}
if (e is MethodElement && !e.isOperator) {
if (enclosingContainer == null) {
return Method(e, library, packageGraph);
} else {
return Method.inherited(e, enclosingContainer, library, packageGraph,
originalMember: originalMember as ExecutableMember?);
}
}
if (e is PropertyAccessorElement) {
// Accessors can be part of a [Container], or a part of a [Library].
if (e.enclosingElement is ClassElement ||
e.enclosingElement is ExtensionElement ||
e is MultiplyInheritedExecutableElement) {
if (enclosingContainer == null) {
return ContainerAccessor(e, library, packageGraph);
} else {
assert(e.enclosingElement is! ExtensionElement);
return ContainerAccessor.inherited(
e, library, packageGraph, enclosingContainer,
originalMember: originalMember as ExecutableMember?);
}
} else {
return Accessor(e, library, packageGraph);
}
}
if (e is TypeParameterElement) {
return TypeParameter(e, library, packageGraph);
}
if (e is ParameterElement) {
return Parameter(e, library, packageGraph,
originalMember: originalMember as ParameterMember?);
}
throw 'Unknown type ${e.runtimeType}';
}