A class model represents the model of a Ceylon class that you can instantiate and inspect.

A class is a toplevel type, declared on a package.

This is a `ClassModel` that you can also invoke to instantiate new instances of the class:

    shared class Foo(String name){
        shared String hello => "Hello "+name;
    }

    void test(){
        Class<Foo,[String]> c = `Foo`;
        // This will print: Hello Stef
        print(c("Stef").hello);
    }

no type hierarchy

- `Class`
  - `Applicable`
    - `Callable`
  - `ClassModel`
    - `ClassOrInterface`
      - `Generic`
      - `Model`
        - `Declared`
      - `Type`

no subtypes hierarchy

Attributes
`defaultConstructor` | Source Code `shared formal CallableConstructor<Type,Arguments>? defaultConstructor` A model of the default constructor (for a class with constructors) or class initializer (for a class with a parameter list), or null if the class has constructors, but lacks a default constructor. Refines `ClassModel.defaultConstructor`

Inherited Attributes
Attributes inherited from: `Object` `hash`, `string`
Attributes inherited from: `ClassModel<Type,Arguments>` `declaration`, `defaultConstructor`
Attributes inherited from: `ClassOrInterface<Type>` `caseValues`, `declaration`, `extendedType`, `satisfiedTypes`
Attributes inherited from: `Declared` `container`, `declaration`
Attributes inherited from: `Generic` `typeArgumentList`, `typeArgumentWithVarianceList`, `typeArgumentWithVariances`, `typeArguments`
Attributes inherited from: `Model` `container`, `declaration`

Methods
`getConstructor` | Source Code `shared formal CallableConstructor<Type,Arguments>|ValueConstructor<Type>? getConstructor<Arguments>(String name) given Arguments satisfies Anything[]` The constructor with the given name, or null if this class lacks a constructor of the given name. Refines `ClassModel.getConstructor`

Inherited Methods
Methods inherited from: `Object` `equals()`
Methods inherited from: `Applicable<Type,Arguments>` `apply()`, `namedApply()`
Methods inherited from: `ClassModel<Type,Arguments>` `getCallableConstructors()`, `getConstructor()`, `getDeclaredCallableConstructors()`, `getDeclaredConstructor()`, `getDeclaredValueConstructors()`, `getValueConstructors()`
Methods inherited from: `ClassOrInterface<Type>` `getAttribute()`, `getAttributes()`, `getClass()`, `getClassOrInterface()`, `getClasses()`, `getDeclaredAttribute()`, `getDeclaredAttributes()`, `getDeclaredClass()`, `getDeclaredClassOrInterface()`, `getDeclaredClasses()`, `getDeclaredInterface()`, `getDeclaredInterfaces()`, `getDeclaredMethod()`, `getDeclaredMethods()`, `getInterface()`, `getInterfaces()`, `getMethod()`, `getMethods()`
Methods inherited from: `Type<Target>` `exactly()`, `intersection()`, `subtypeOf()`, `supertypeOf()`, `typeOf()`, `union()`