An element that represents a class or a mixin. The class can be defined by
either a class declaration (with a class body), a mixin application (without
a class body), a mixin declaration, or an enum declaration. [...]
The base class for all of the elements in the element model. Generally
speaking, the element model is a semantic model of the program that
represents things that are declared with a name and hence can be referenced
elsewhere in the code. [...]
A (non-method) function. This can be either a top-level function, a local
function, a closure, or the initialization expression for a field or
variable. [...]
A pseudo-element that represents multiple elements defined within a single
scope that have the same name. This situation is not allowed by the
language, so objects implementing this interface always represent an error.
As a result, most of the normal operations on elements do not make sense
and will return useless results. [...]
A getter or a setter. Note that explicitly defined property accessors
implicitly define a synthetic field. Symmetrically, synthetic accessors are
implicitly created for explicitly defined fields. The following rules apply: [...]
A variable that has an associated getter and possibly a setter. Note that
explicitly defined variables implicitly define a synthetic getter and that
non-final explicitly defined variables implicitly define a synthetic
setter. Symmetrically, synthetic fields are implicitly created for
explicitly defined getters and setters. The following rules apply: [...]
An element that has type parameters, such as a class or a typedef. This also
includes functions and methods if support for generic methods is enabled. [...]
A pseudo-elements that represents names that are undefined. This situation
is not allowed by the language, so objects implementing this interface
always represent an error. As a result, most of the normal operations on
elements do not make sense and will return useless results. [...]