@AnnotatedFor(value="nullness") public class DefaultQualifierKindHierarchy extends Object implements QualifierKindHierarchy
QualifierKindHierarchy.
 By default, the subtyping information and information about polymorphic qualifiers is read from meta-annotations on the annotation classes. This information is used to infer further information such as top and bottom qualifiers. Subclasses can override the following methods to change this behavior:
createQualifierKinds(Collection)
   createDirectSuperMap()
   initializePolymorphicQualifiers()
   initializeQualifierKindFields(Map)
   createLubsMap()
   createGlbsMap()
 DefaultQualifierKindHierarchy.DefaultQualifierKind is the implementation used for QualifierKind by this class.| Modifier and Type | Class and Description | 
|---|---|
| static class  | DefaultQualifierKindHierarchy.DefaultQualifierKindThe default implementation of  QualifierKind. | 
| Modifier and Type | Field and Description | 
|---|---|
| protected Map<String,DefaultQualifierKindHierarchy.DefaultQualifierKind> | nameToQualifierKindA mapping from canonical name of a qualifier class to the QualifierKind object representing
 that class. | 
| protected List<DefaultQualifierKindHierarchy.DefaultQualifierKind> | qualifierKindsA list of all  QualifierKinds for this DefaultQualifierKindHierarchy, sorted in
 ascending order. | 
| Constructor and Description | 
|---|
| DefaultQualifierKindHierarchy(Collection<Class<? extends Annotation>> qualifierClasses)Creates a  DefaultQualifierKindHierarchy. | 
| DefaultQualifierKindHierarchy(Collection<Class<? extends Annotation>> qualifierClasses,
                             Class<? extends Annotation> bottom)Creates a  DefaultQualifierKindHierarchy. | 
| Modifier and Type | Method and Description | 
|---|---|
| List<? extends QualifierKind> | allQualifierKinds()Returns a list of all  QualifierKinds sorted in ascending order. | 
| protected Map<DefaultQualifierKindHierarchy.DefaultQualifierKind,Set<DefaultQualifierKindHierarchy.DefaultQualifierKind>> | createDirectSuperMap()Creates a mapping from a  QualifierKindto a set of its direct super qualifier kinds. | 
| protected Map<QualifierKind,Map<QualifierKind,QualifierKind>> | createGlbsMap()Creates the glb of qualifier kinds. | 
| protected Map<QualifierKind,Map<QualifierKind,QualifierKind>> | createLubsMap()Creates the lub of qualifier kinds. | 
| protected Map<String,DefaultQualifierKindHierarchy.DefaultQualifierKind> | createQualifierKinds(Collection<Class<? extends Annotation>> qualifierClasses)Creates all QualifierKind objects for the given qualifier classes and adds them to
 qualifierClassMap. | 
| protected static Set<QualifierKind> | findHighestQualifiers(Set<QualifierKind> qualifierKinds)Returns the highest qualifiers in the passed set. | 
| protected static Set<QualifierKind> | findLowestQualifiers(Set<QualifierKind> qualifierKinds)Returns the lowest qualifiers in the passed set. | 
| Set<? extends QualifierKind> | getBottoms()Returns the qualifier kinds that are the bottom qualifier in their hierarchies. | 
| @Nullable QualifierKind | getQualifierKind(@CanonicalName String name)Returns the  QualifierKindfor the given annotation class name, or null if one does not
 exist. | 
| Set<? extends QualifierKind> | getTops()Returns the qualifier kinds that are the top qualifier in their hierarchies. | 
| @Nullable QualifierKind | greatestLowerBound(QualifierKind q1,
                  QualifierKind q2)Returns the greatest lower bound of  q1andq2, ornullif the qualifier
 kinds are not in the same hierarchy. | 
| protected void | initializePolymorphicQualifiers()Iterates over all the qualifier kinds and adds all polymorphic qualifier kinds to
 polymorphicQualifiers. | 
| protected void | initializeQualifierKindFields(Map<DefaultQualifierKindHierarchy.DefaultQualifierKind,Set<DefaultQualifierKindHierarchy.DefaultQualifierKind>> directSuperMap)For each qualifier kind in  directSuperMap, initializesDefaultQualifierKindHierarchy.DefaultQualifierKind.strictSuperTypes,DefaultQualifierKindHierarchy.DefaultQualifierKind.top,DefaultQualifierKindHierarchy.DefaultQualifierKind.bottom, andDefaultQualifierKindHierarchy.DefaultQualifierKind.poly. | 
| @Nullable QualifierKind | leastUpperBound(QualifierKind q1,
               QualifierKind q2)Returns the least upper bound of  q1andq2, ornullif the qualifier
 kinds are not in the same hierarchy. | 
| protected void | verifyHierarchy(Map<DefaultQualifierKindHierarchy.DefaultQualifierKind,Set<DefaultQualifierKindHierarchy.DefaultQualifierKind>> directSuperMap)Verifies that the  DefaultQualifierKindHierarchyis a valid hierarchy. | 
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitannotationClassNameprotected final Map<String,DefaultQualifierKindHierarchy.DefaultQualifierKind> nameToQualifierKind
protected final List<DefaultQualifierKindHierarchy.DefaultQualifierKind> qualifierKinds
QualifierKinds for this DefaultQualifierKindHierarchy, sorted in
 ascending order.public DefaultQualifierKindHierarchy(Collection<Class<? extends Annotation>> qualifierClasses)
DefaultQualifierKindHierarchy. Also, creates and initializes all its
 qualifier kinds.qualifierClasses - all the classes of qualifiers supported by this hierarchypublic DefaultQualifierKindHierarchy(Collection<Class<? extends Annotation>> qualifierClasses, Class<? extends Annotation> bottom)
DefaultQualifierKindHierarchy. Also, creates and initializes all its
 qualifier kinds.
 For some type systems, qualifiers may be added at run time, so the SubtypeOf
 meta-annotation on the bottom qualifier class cannot specify all other qualifiers. For those
 type systems, use this constructor. Otherwise, use DefaultQualifierKindHierarchy(Collection).
qualifierClasses - all the classes of qualifiers supported by this hierarchybottom - the bottom qualifier of this hierarchypublic Set<? extends QualifierKind> getTops()
QualifierKindHierarchygetTops in interface QualifierKindHierarchypublic Set<? extends QualifierKind> getBottoms()
QualifierKindHierarchygetBottoms in interface QualifierKindHierarchypublic @Nullable QualifierKind leastUpperBound(QualifierKind q1, QualifierKind q2)
QualifierKindHierarchyq1 and q2, or null if the qualifier
 kinds are not in the same hierarchy. Ignores elements/arguments (as QualifierKind always does).leastUpperBound in interface QualifierKindHierarchyq1 - a qualifier kindq2 - a qualifier kindq1 and q2, or null if the qualifier
     kinds are not in the same hierarchypublic @Nullable QualifierKind greatestLowerBound(QualifierKind q1, QualifierKind q2)
QualifierKindHierarchyq1 and q2, or null if the qualifier
 kinds are not in the same hierarchy. Ignores elements/arguments (as QualifierKind always does).greatestLowerBound in interface QualifierKindHierarchyq1 - a qualifier kindq2 - a qualifier kindq1 and q2, or null if the qualifier
     kinds are not in the same hierarchypublic List<? extends QualifierKind> allQualifierKinds()
QualifierKindHierarchyQualifierKinds sorted in ascending order.allQualifierKinds in interface QualifierKindHierarchyQualifierKinds sorted in ascending orderpublic @Nullable QualifierKind getQualifierKind(@CanonicalName String name)
QualifierKindHierarchyQualifierKind for the given annotation class name, or null if one does not
 exist.getQualifierKind in interface QualifierKindHierarchyname - canonical name of an annotation classQualifierKind for the given annotation class name, or null if one does not
     exist@RequiresNonNull(value={"this.qualifierKinds","this.tops","this.bottoms"}) protected void verifyHierarchy(@UnderInitialization DefaultQualifierKindHierarchy this, Map<DefaultQualifierKindHierarchy.DefaultQualifierKind,Set<DefaultQualifierKindHierarchy.DefaultQualifierKind>> directSuperMap)
DefaultQualifierKindHierarchy is a valid hierarchy.directSuperMap - mapping from qualifier to its direct supertypes; used to verify that a
     polymorphic annotation does not have a SubtypeOf meta-annotationTypeSystemError - if the hierarchy isn't validprotected Map<String,DefaultQualifierKindHierarchy.DefaultQualifierKind> createQualifierKinds(@UnderInitialization DefaultQualifierKindHierarchy this, Collection<Class<? extends Annotation>> qualifierClasses)
QualifierKind;
 that is done by initializeQualifierKindFields(Map).qualifierClasses - classes of annotations that are type qualifiersQualifierKind@RequiresNonNull(value={"this.nameToQualifierKind","this.qualifierKinds"}) protected Map<DefaultQualifierKindHierarchy.DefaultQualifierKind,Set<DefaultQualifierKindHierarchy.DefaultQualifierKind>> createDirectSuperMap(@UnderInitialization DefaultQualifierKindHierarchy this)
QualifierKind to a set of its direct super qualifier kinds.
 The direct super qualifier kinds do not contain the qualifier itself. This mapping is used to
 create the bottom set, to create the top set, and by initializeQualifierKindFields(Map).
 This implementation uses the SubtypeOf meta-annotation. Subclasses may override this
 method to create the direct super map some other way.
 
Note that this method is called from the constructor when nameToQualifierKind and
 qualifierKinds are the only fields that have nonnull values. This method is not
 static, so it can be overridden by subclasses.
QualifierKind to a set of its direct super qualifiers@RequiresNonNull(value={"this.nameToQualifierKind","this.qualifierKinds","this.tops"}) protected void initializePolymorphicQualifiers(@UnderInitialization DefaultQualifierKindHierarchy this)
DefaultQualifierKindHierarchy.DefaultQualifierKind.poly and DefaultQualifierKindHierarchy.DefaultQualifierKind.top for the polymorphic qualifiers, and sets DefaultQualifierKindHierarchy.DefaultQualifierKind.poly for the top qualifiers.
 Requires that tops has been initialized.
@RequiresNonNull(value={"this.qualifierKinds","this.tops","this.bottoms"}) protected void initializeQualifierKindFields(@UnderInitialization DefaultQualifierKindHierarchy this, Map<DefaultQualifierKindHierarchy.DefaultQualifierKind,Set<DefaultQualifierKindHierarchy.DefaultQualifierKind>> directSuperMap)
directSuperMap, initializes DefaultQualifierKindHierarchy.DefaultQualifierKind.strictSuperTypes, DefaultQualifierKindHierarchy.DefaultQualifierKind.top, DefaultQualifierKindHierarchy.DefaultQualifierKind.bottom, and DefaultQualifierKindHierarchy.DefaultQualifierKind.poly.
 Requires tops, bottoms, and polymorphicQualifiers to be initialized.
directSuperMap - a mapping from a QualifierKind to a set of its direct super
     qualifier kinds; created by createDirectSuperMap()@RequiresNonNull(value="this.qualifierKinds") protected Map<QualifierKind,Map<QualifierKind,QualifierKind>> createLubsMap(@UnderInitialization DefaultQualifierKindHierarchy this)
lubs.get(kind1).get(kind2) returns the lub of kind1
 and kind2.protected static Set<QualifierKind> findLowestQualifiers(Set<QualifierKind> qualifierKinds)
qualifierKinds - a set of qualifiers@RequiresNonNull(value="this.qualifierKinds") protected Map<QualifierKind,Map<QualifierKind,QualifierKind>> createGlbsMap(@UnderInitialization DefaultQualifierKindHierarchy this)
glbs.get(kind1).get(kind2) returns the glb of kind1
 and kind2.protected static Set<QualifierKind> findHighestQualifiers(Set<QualifierKind> qualifierKinds)
qualifierKinds - a set of qualifiers