    import ceylon.language.meta.declaration {
        ClassDeclaration
    }
    import ceylon.language.meta.model {
        ClosedType = Type
    }

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

     A class model can be either a toplevel [[Class]] or a member [[MemberClass]].
     "
    shared sealed interface ClassModel<out Type=Anything, in Arguments=Nothing>
        satisfies ClassOrInterface<Type>
        given Arguments satisfies Anything[] {

        shared formal actual ClassDeclaration declaration;

        "This function's parameter closed types"
        shared formal ClosedType<Anything>[] parameterTypes;
    }