A declaration.

There are only two types of declarations:

- `AnnotatedDeclaration`s such as modules, packages, classes or functions, and
- `TypeParameter` declarations.

no type hierarchy

no supertypes hierarchy

- `Declaration` of
  - `AnnotatedDeclaration`
    - `Module`
    - `NestableDeclaration`
      - `AliasDeclaration`
      - `ClassOrInterfaceDeclaration`
        - `ClassDeclaration`
          - `ClassWithConstructorsDeclaration`
          - `ClassWithInitializerDeclaration`
        - `InterfaceDeclaration`
      - `ConstructorDeclaration`
        - `CallableConstructorDeclaration`
        - `ValueConstructorDeclaration`
      - `FunctionOrValueDeclaration`
        - `FunctionDeclaration`
        - `ValueDeclaration`
      - `SetterDeclaration`
      - `ValueDeclaration`
    - `Package`
  - `TypeParameter`

Attributes
`name` | Source Code `shared formal String name` The name of this declaration. For example, the `Declaration` class is named “Declaration”.
`qualifiedName` | Source Code `shared formal String qualifiedName` The qualified name of this declaration. This includes the container qualified name. For example, the `Declaration` class' qualified name is “ceylon.language.meta.declaration::Declaration”.

Inherited Attributes
Attributes inherited from: `Object` `hash`, `string`

Inherited Methods
Methods inherited from: `Object` `equals()`