"An open class or interface, with open type arguments. For example, `List<T>` is an open interface type, with a type argument which is the [[OpenTypeVariable]] `T`." shared sealed interface OpenClassOrInterfaceType of OpenClassType | OpenInterfaceType satisfies OpenType { "The class or interface declaration for this open type." shared formal ClassOrInterfaceDeclaration declaration; "The extended type of this open type." shared formal OpenClassType? extendedType; "The satisfied types of this open type." shared formal OpenInterfaceType[] satisfiedTypes; "The map of open type arguments." shared formal Map<TypeParameter, OpenType> typeArguments; "The list of open type arguments." since("1.2.0") shared formal OpenType[] typeArgumentList; "The map of type parameter declaration to open type arguments and use-site variance." since("1.2.0") shared formal Map<TypeParameter, OpenTypeArgument> typeArgumentWithVariances; "The list of open type arguments with use-site variance." since("1.2.0") shared formal OpenTypeArgument[] typeArgumentWithVarianceList; // FIXME: pretty sure we're missing an optional container type here }