"""A class or interface declaration. Examples (multi-line): shared class PrintableWrapper<T>(shared T wrapped) satisfies Printable { shared actual void print() { package.print(wrapped else "<null>"); } } shared interface 3DSized<Unit> given Unit satisfies Numeric<Unit> { shared formal Unit width; shared formal Unit length; shared formal Unit height; }""" shared abstract class ClassOrInterface() of AnyClass | AnyInterface extends TypeDeclaration() { "The case types of the class or interface, if present." shared formal CaseTypes? caseTypes; "The satisfied types of the class or interface, if present." shared formal SatisfiedTypes? satisfiedTypes; }