"""An annotation that may occur multiple times at a given program element, and only on certain program elemenets. A sequenced annotation is declared simply by having the annotation class satisfy `SequencedAnnotation` instead of [[Annotation]]. For example the following would only be allowed on `class` declarations, functions or methods: alias ExecutableDeclaration => ClassOrInterfaceDeclaration|FunctionDeclaration; "Documents a pattern in which the annotated element particpates." shared final annotation class Pattern(String name) satisfies SequencedAnnotation<Pattern, ExecutableDeclaration> {} At runtime a [[ceylon.language.meta.declaration::Declaration]] instance can be queried for its `SequencedAnnotation`s of a certain type using [[ceylon.language.meta::annotations]] or [[ceylon.language.meta::sequencedAnnotations]].""" see(`interface Annotation`) shared interface SequencedAnnotation<out Value, in ProgramElement=Annotated, out Type=Anything> of Value satisfies ConstrainedAnnotation <Value,Value[],ProgramElement,Type> given Value satisfies SequencedAnnotation <Value,ProgramElement,Type> given ProgramElement satisfies Annotated {}