A declaration which can be contained in a `Package` or in another `NestableDeclaration`.

Functions, values, classes, interfaces and aliases are such declarations.

no type hierarchy

- `NestableDeclaration`
  - `AnnotatedDeclaration`
    - `Annotated`
    - `Declaration`
  - `TypedDeclaration`

- `NestableDeclaration` of
  - `AliasDeclaration`
  - `ClassOrInterfaceDeclaration`
    - `ClassDeclaration`
    - `InterfaceDeclaration`
  - `FunctionOrValueDeclaration`
    - `FunctionDeclaration`
    - `ValueDeclaration`
  - `SetterDeclaration`

Attributes
`actual` | Source Code `shared formal Boolean actual` True if this declaration is annotated with actual.
`container` | Source Code `shared formal NestableDeclaration|Package container` This declaration's immediate container, which can be either a `NestableDeclaration` or a `Package`.
`containingModule` | Source Code `shared formal Module containingModule` This declaration's module container.
`containingPackage` | Source Code `shared formal Package containingPackage` This declaration's package container.
`default` | Source Code `shared formal Boolean default` True if this declaration is annotated with default.
`formal` | Source Code `shared formal Boolean formal` True if this declaration is annotated with formal.
`shared` | Source Code `shared formal Boolean shared` True if this declaration is annotated with shared.
`toplevel` | Source Code `shared formal Boolean toplevel` True if this declaration is a toplevel declaration.

Inherited Attributes
Attributes inherited from: `Object` `Object.hash`, `Object.string`
Attributes inherited from: `Declaration` `Declaration.name`, `Declaration.qualifiedName`
Attributes inherited from: `TypedDeclaration` `TypedDeclaration.openType`

Inherited Methods
Methods inherited from: `Object` `Object.equals()`
Methods inherited from: `AnnotatedDeclaration` `AnnotatedDeclaration.annotations()`