"""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 {}