Represents a type in the Java programming language.
Types include primitive types, declared types (class and interface types),
array types, type variables, and the null type.
Also represented are wildcard type arguments, the signature and
return types of executables, and pseudo-types corresponding to
packages, modules, and the keyword
Types should be compared using the utility methods in
Types. There is no guarantee that any particular type will always
be represented by the same object.
To implement operations based on the class of an
TypeMirror object, either use a visitor
or use the result of the
getKind method. Using
instanceof is not necessarily a reliable idiom for
determining the effective class of an object in this modeling
hierarchy since an implementation may choose to have a single
object implement multiple