    import ceylon.language.meta.declaration {
        GettableDeclaration,
        NestableDeclaration
    }
    import ceylon.language.meta.model {
        ClosedType = Type
    }

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

       A value model can be either a toplevel [[Value]] or a member [[Attribute]].
     """
    shared sealed interface ValueModel<out Get=Anything, in Set=Nothing>
            satisfies Model {

        "This value's declaration."
        shared formal actual NestableDeclaration&GettableDeclaration declaration;

        "This value's closed type."
        shared formal ClosedType<Get> type;
    }