    "A type parameter declaration."
    shared sealed interface TypeParameter satisfies Declaration {

        // FIXME: make it NestableDeclaration&GenericDeclaration?
        "The declaration that declared this type parameter. This is either a [[ClassOrInterfaceDeclaration]] or a
         [[FunctionDeclaration]]."
        shared formal NestableDeclaration container;

        "True if this type parameter has a default type argument and can be omitted."
        shared formal Boolean defaulted;

        "This type parameter's default type argument, if it has one."
        shared formal OpenType? defaultTypeArgument;

        "This type parameter's variance, as defined by `in` or `out` keywords."
        shared formal Variance variance;

        "The `satisfies` upper bounds for this type parameter."
        shared formal OpenType[] satisfiedTypes;

        "The `of` enumerated bounds for this type parameter."
        shared formal OpenType[] caseTypes;
    }