The root of all models. There are several types of models:

- `ClassOrInterface`
- `FunctionModel`
- `ValueModel`

no type hierarchy

- `Model`
  - `Declared`

- `Model` of
  - `ClassOrInterface`
    - `ClassModel`
      - `Class`
      - `MemberClass`
    - `InterfaceModel`
      - `Interface`
      - `MemberInterface`
  - `FunctionModel`
    - `CallableConstructor`
    - `Function`
    - `MemberClassCallableConstructor`
    - `Method`
  - `ValueModel`
    - `Attribute`
    - `MemberClassValueConstructor`
    - `Value`
    - `ValueConstructor`

Attributes
`container` | Source Code `shared formal Type<Anything>? container` The container type of this model, or `null` if this is a toplevel model. Refines `Declared.container`
`declaration` | Source Code `shared formal NestableDeclaration declaration` The declaration for this model. Refines `Declared.declaration`

Inherited Attributes
Attributes inherited from: `Object` `hash`, `string`
Attributes inherited from: `Declared` `container`, `declaration`

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