@Documented @Retention(value=RUNTIME) @Target(value=ANNOTATION_TYPE) public @interface Target
    @Target(ElementType.ANNOTATION_TYPE)
    public @interface MetaAnnotationType {
        ...
    }
 
 This meta-annotation indicates that the declared type is intended solely for use as a member type
 in complex annotation type declarations. It cannot be used to annotate anything directly:
 
    @Target({})
    public @interface MemberType {
        ...
    }
 
 It is a compile-time error for a single ElementType constant to appear more than once in a Target
 annotation. For example, the following meta-annotation is illegal:
 
    @Target({ElementType.FIELD, ElementType.METHOD, ElementType.FIELD})
    public @interface Bogus {
        ...
    }
 | Modifier and Type | Required Element and Description | 
|---|---|
| ElementType[] | valueReturns an array of the kinds of elements an annotation type can be applied
 to. | 
public abstract ElementType[] value