Model of a class or interface that you can inspect.

The models of classes and interfaces are also closed types.

no type hierarchy

- `ClassOrInterface`
  - `Generic`
  - `Model`
  - `Type`

- `ClassOrInterface` of
  - `ClassModel`
    - `Class`
    - `MemberClass`
  - `InterfaceModel`
    - `Interface`
    - `MemberInterface`

Attributes
`caseValues` | Source Code `shared formal Type[] caseValues` The list of case values for this type. This omits any case type to only contain case values.
`declaration` | Source Code `shared formal ClassOrInterfaceDeclaration declaration` The declaration for this class or interface. Refines `Model.declaration`
`extendedType` | Source Code `shared formal ClassModel<Anything,Nothing>? extendedType` The extended closed type for this class or interface. Note that the Anything type has no extended type since it is the top of the type hierarchy.
`satisfiedTypes` | Source Code `shared formal InterfaceModel<Anything>[] satisfiedTypes` The list of closed types that this class or interface satisfies.

Inherited Attributes
Attributes inherited from: `Object` `Object.hash`, `Object.string`
Attributes inherited from: `Generic` `Generic.typeArguments`
Attributes inherited from: `Model` `Model.container`, `Model.declaration`

Methods
`getAttribute` | Source Code `shared formal Attribute<Container,Get,Set>? getAttribute<Container = Nothing, Get = Anything, Set = Nothing>(String name)` Gets an attribute by name. Returns `null` if not found. Throws `IncompatibleTypeException` If the specified `Container`, `Get` or `Set` type arguments are not compatible with the actual result.
`getAttributes` | Source Code `shared formal Attribute<Container,Get,Set>[] getAttributes<Container = Nothing, Get = Anything, Set = Nothing>(Type<Annotation>[] annotationTypes)` Gets a list of attributes matching the given container and attribute type, annotated with all the specified annotations, which are declared on this type or inherited.
`getClass` | Source Code `shared formal MemberClass<Container,Type,Arguments>? getClass<Container = Nothing, Type = Anything, Arguments = Nothing>(String name, Type<Anything>[] types) given Arguments satisfies Anything[]` Gets a member class by name. Returns `null` if not found. Throws `IncompatibleTypeException` If the specified `Container`, `Type` or `Arguments` type arguments are not compatible with the actual result, or if the corresponding member is not a `MemberClass`. `TypeApplicationException` If the specified closed type argument values are not compatible with the actual result's type parameters.
`getClassOrInterface` | Source Code `shared formal Member<Container,Kind>? getClassOrInterface<Container = Nothing, Kind = ClassOrInterface<Anything>>(String name, Type<Anything>[] types) given Kind satisfies ClassOrInterface<Anything>` Gets a member class or interface by name. Returns `null` if not found. Throws `IncompatibleTypeException` If the specified `Container` or `Kind` type arguments are not compatible with the actual result. `TypeApplicationException` If the specified closed type argument values are not compatible with the actual result's type parameters.
`getClasses` | Source Code `shared formal MemberClass<Container,Type,Arguments>[] getClasses<Container = Nothing, Type = Anything, Arguments = Nothing>(Type<Annotation>[] annotationTypes) given Arguments satisfies Anything[]` Gets a list of member classes matching the given container, return and parameter types, annotated with all the specified annotations, which are declared on this type or inherited.
`getDeclaredAttribute` | Source Code `shared formal Attribute<Container,Get,Set>? getDeclaredAttribute<Container = Nothing, Get = Anything, Set = Nothing>(String name)` Gets an attribute by name. Returns `null` if not found. Throws `IncompatibleTypeException` If the specified `Container`, `Get` or `Set` type arguments are not compatible with the actual result.
`getDeclaredAttributes` | Source Code `shared formal Attribute<Container,Get,Set>[] getDeclaredAttributes<Container = Nothing, Get = Anything, Set = Nothing>(Type<Annotation>[] annotationTypes)` Gets a list of attributes matching the given container and attribute type, annotated with all the specified annotations, which are directly declared on this type.
`getDeclaredClass` | Source Code `shared formal MemberClass<Container,Type,Arguments>? getDeclaredClass<Container = Nothing, Type = Anything, Arguments = Nothing>(String name, Type<Anything>[] types) given Arguments satisfies Anything[]` Gets a member class by name. Returns `null` if not found. Throws `IncompatibleTypeException` If the specified `Container`, `Type` or `Arguments` type arguments are not compatible with the actual result, or if the corresponding member is not a `MemberClass`. `TypeApplicationException` If the specified closed type argument values are not compatible with the actual result's type parameters.
`getDeclaredClassOrInterface` | Source Code `shared formal Member<Container,Kind>? getDeclaredClassOrInterface<Container = Nothing, Kind = ClassOrInterface<Anything>>(String name, Type<Anything>[] types) given Kind satisfies ClassOrInterface<Anything>` Gets a member class or interface by name. Returns `null` if not found. Throws `IncompatibleTypeException` If the specified `Container` or `Kind` type arguments are not compatible with the actual result. `TypeApplicationException` If the specified closed type argument values are not compatible with the actual result's type parameters.
`getDeclaredClasses` | Source Code `shared formal MemberClass<Container,Type,Arguments>[] getDeclaredClasses<Container = Nothing, Type = Anything, Arguments = Nothing>(Type<Annotation>[] annotationTypes) given Arguments satisfies Anything[]` Gets a list of member classes matching the given container, return and parameter types, annotated with all the specified annotations, which are directly declared on this type.
`getDeclaredInterface` | Source Code `shared formal MemberInterface<Container,Type>? getDeclaredInterface<Container = Nothing, Type = Anything>(String name, Type<Anything>[] types)` Gets a member interface by name. Returns `null` if not found. Throws `IncompatibleTypeException` If the specified `Container` or `Type` type arguments are not compatible with the actual result, or if the corresponding member is not a `MemberInterface`. `TypeApplicationException` If the specified closed type argument values are not compatible with the actual result's type parameters.
`getDeclaredInterfaces` | Source Code `shared formal MemberInterface<Container,Type>[] getDeclaredInterfaces<Container = Nothing, Type = Anything>(Type<Annotation>[] annotationTypes)` Gets a list of interfaces matching the given container and interface types, annotated with all the specified annotations, which are directly declared on this type.
`getDeclaredMethod` | Source Code `shared formal Method<Container,Type,Arguments>? getDeclaredMethod<Container = Nothing, Type = Anything, Arguments = Nothing>(String name, Type<Anything>[] types) given Arguments satisfies Anything[]` Gets a method by name. Returns `null` if not found. Throws `IncompatibleTypeException` If the specified `Container`, `Type` or `Arguments` type arguments are not compatible with the actual result. `TypeApplicationException` If the specified closed type argument values are not compatible with the actual result's type parameters.
`getDeclaredMethods` | Source Code `shared formal Method<Container,Type,Arguments>[] getDeclaredMethods<Container = Nothing, Type = Anything, Arguments = Nothing>(Type<Annotation>[] annotationTypes) given Arguments satisfies Anything[]` Gets a list of methods matching the given container, return and parameter types, annotated with all the specified annotations, which are directly declared on this type.
`getInterface` | Source Code `shared formal MemberInterface<Container,Type>? getInterface<Container = Nothing, Type = Anything>(String name, Type<Anything>[] types)` Gets a member interface by name. Returns `null` if not found. Throws `IncompatibleTypeException` If the specified `Container` or `Type` type arguments are not compatible with the actual result, or if the corresponding member is not a `MemberInterface`. `TypeApplicationException` If the specified closed type argument values are not compatible with the actual result's type parameters.
`getInterfaces` | Source Code `shared formal MemberInterface<Container,Type>[] getInterfaces<Container = Nothing, Type = Anything>(Type<Annotation>[] annotationTypes)` Gets a list of interfaces matching the given container and interface types, annotated with all the specified annotations, which are declared on this type or inherited.
`getMethod` | Source Code `shared formal Method<Container,Type,Arguments>? getMethod<Container = Nothing, Type = Anything, Arguments = Nothing>(String name, Type<Anything>[] types) given Arguments satisfies Anything[]` Gets a method by name. Returns `null` if not found. Throws `IncompatibleTypeException` If the specified `Container`, `Type` or `Arguments` type arguments are not compatible with the actual result. `TypeApplicationException` If the specified closed type argument values are not compatible with the actual result's type parameters.
`getMethods` | Source Code `shared formal Method<Container,Type,Arguments>[] getMethods<Container = Nothing, Type = Anything, Arguments = Nothing>(Type<Annotation>[] annotationTypes) given Arguments satisfies Anything[]` Gets a list of methods matching the given container, return and parameter types, annotated with all the specified annotations, which are declared on this type or inherited.

Inherited Methods
Methods inherited from: `Object` `Object.equals()`
Methods inherited from: `Type<Type>` `Type.exactly()`, `Type.subtypeOf()`, `Type.supertypeOf()`, `Type.typeOf()`