@Inherited @Documented @Retention(value=RUNTIME) @Target(value={TYPE,PACKAGE}) public @interface HasQualifierParameter
HasQualifierParameter on a package is the same as writing it on each class in
 that package.
 Writing @HasQualifierParameter on a type declaration has two effects.
 
   @HasQualifierParameter
   class StringBuffer { ... }
 
 Then @Tainted StringBuffer is unrelated to @Untainted StringBuffer.
 The type hierarchy looks like this:
                        @Tainted Object
                      /       |       \
                     /        |        @Tainted Date
                   /          |               |
                  /           |               |
                 /    @Untainted Object       |
                /             |       \       |
   @Tainted StringBuffer      |       @Untainted Date
             |                |
             |       @Untainted StringBuffer
             |                |
   @Tainted MyStringBuffer    |
                              |
                     @Untainted MyStringBuffer
 
 When a class is @HasQualifierParameter, all its subclasses are as well.
 
When @HasQualifierParameter is written on a package, it is equivalent to writing that
 annotation on each class in the package or in a sub-package. It can be disabled on a specific
 class and its subclasses by writing @NoQualifierParameter on that class. This annotation
 may not be written on the same class as NoQualifierParameter for the same hierarchy.
NoQualifierParameter| Modifier and Type | Required Element and Description | 
|---|---|
| Class<? extends Annotation>[] | valueClass of the top qualifier for the hierarchy for which this class has a qualifier parameter. | 
public abstract Class<? extends Annotation>[] value