"An annotation that may occur at most once at a given 
 program element and only on certain program elements.
 
 An optional annotation is declared simply by having the 
 annotation class satisfy `OptionalAnnotation` instead of 
 [[Annotation]]. For example the following would only be 
 allowed on `class` declarations:
 
     final annotation class ExampleClass() 
             satisfies OptionalAnnotation<Example, ClassDeclaration> {}
 
 At runtime a [[ceylon.language.meta.declaration::Declaration]] 
 instance can be queried for its `OptionalAnnotation`s of a 
 certain type using [[ceylon.language.meta::annotations]] or 
 [[ceylon.language.meta::optionalAnnotation]]."
see(`interface Annotation`)
shared interface OptionalAnnotation<out Value, 
            in ProgramElement=Annotated,
            out Type=Anything>
        of Value
        satisfies ConstrainedAnnotation
            <Value,Value?,ProgramElement,Type>
        given Value satisfies OptionalAnnotation
            <Value,ProgramElement,Type>
        given ProgramElement satisfies Annotated {}