A named entity as defined in LRM 6.1.
An object or an interface object,
example signal, variable, constant
Is either an object (mode = None) or an interface object (mode = Some)
A lexical position (line, column) in a source.
A lexical range in a source.
A thread-safe reference to a source file.
Multiple objects of this type can refer to the same source.
A lexical range within a specific source file.
A Token
A TokenId represents a unique value that is used to access a token.
A token ID cannot be created directly by the user. Instead, the value must be taken
from the AST.
Holds token information about an AST element.
Since the different pieces may be gathered in different locations,
the fields are gated behind accessor functions which also check some invariants every time they are called.