ElementQualifierHierarchy, MostlyNoElementQualifierHierarchy, or
     NoElementQualifierHierarchy instead. This class will be removed in a future release.
     Here are instructions on how to convert from a subclass of MultiGraphQualifierHierarchy to the new implementations:
If the subclass implements isSubtype and calls super when annotations do not have
     elements, then use the following instructions to convert to MostlyNoElementQualifierHierarchy.
     
extends MultiGraphQualifierHierarchy to extends
           MostlyNoElementQualifierHierarchy.
       If the subclass implements isSubtype and does not call super in that implementation, then
     use the following instructions to convert to a subclass of ElementQualifierHierarchy.
     
extends MultiGraphQualifierHierarchy to extends
           ElementQualifierHierarchy.
       leastUpperBound(AnnotationMirror, AnnotationMirror) and greatestLowerBound(AnnotationMirror, AnnotationMirror) if missing. (In the past, it
           was very easy to forget to implement these, now they are abstract methods.)
     MultiGraphQualifierHierarchy or GraphQualifierHierarchy, you may do so by adding the following to AnnotatedTypeFactory.
     (It's better to convert to one of the new classes because MultiGraphQualifierHierarchy and
     GraphQualifierHierarchy are buggy and no longer supported.)
     If any qualifier has an annotation element without a default value, you will need to convert to one of the new subclasses. If you do not, then MultiGraphQualifierHierarchy will throw an exception with a message like "AnnotationBuilder.fromName: no value for element value() of checkers.inference.qual.VarAnnot".
@Override@SuppressWarnings("deprecation")public QualifierHierarchy createQualifierHierarchy() { return org.checkerframework.framework.util.MultiGraphQualifierHierarchy .createMultiGraphQualifierHierarchy(this); }@Override@SuppressWarnings("deprecation")public QualifierHierarchy createQualifierHierarchyWithMultiGraphFactory( org.checkerframework.framework.util.MultiGraphQualifierHierarchy.MultiGraphFactory factory) { return new YourSubclassQualifierHierarchy(factory); }
@Deprecated public class MultiGraphQualifierHierarchy extends Object implements QualifierHierarchy
This class is immutable and can be only created through MultiGraphQualifierHierarchy.MultiGraphFactory.
| Modifier and Type | Class and Description | 
|---|---|
| static class  | MultiGraphQualifierHierarchy.MultiGraphFactoryDeprecated. 
 Use  ElementQualifierHierarchyinstead. | 
| Modifier and Type | Field and Description | 
|---|---|
| protected Set<AnnotationMirror> | bottomsDeprecated.  The bottom qualifiers of the type hierarchies. | 
| protected Map<AnnotationMirror,AnnotationMirror> | polyQualifiersDeprecated.  | 
| protected Map<AnnotationMirror,Set<AnnotationMirror>> | supertypesDirectDeprecated.  The declared, direct supertypes for each qualifier, without added transitive relations. | 
| protected Map<AnnotationMirror,Set<AnnotationMirror>> | supertypesTransitiveDeprecated.  The transitive closure of the supertypesDirect. | 
| protected Set<AnnotationMirror> | topsDeprecated.  The top qualifiers of the individual type hierarchies. | 
| Constructor and Description | 
|---|
| MultiGraphQualifierHierarchy(MultiGraphQualifierHierarchy.MultiGraphFactory f)Deprecated.  | 
| MultiGraphQualifierHierarchy(MultiGraphQualifierHierarchy.MultiGraphFactory f,
                            Object... args)Deprecated.  | 
| Modifier and Type | Method and Description | 
|---|---|
| protected void | addPolyRelations(QualifierHierarchy qualHierarchy,
                Map<AnnotationMirror,Set<AnnotationMirror>> fullMap,
                Map<AnnotationMirror,AnnotationMirror> polyQualifiers,
                Set<AnnotationMirror> tops,
                Set<AnnotationMirror> bottoms)Deprecated.  Add the relationships for polymorphic qualifiers. | 
| static QualifierHierarchy | createMultiGraphQualifierHierarchy(AnnotatedTypeFactory annotatedTypeFactory)Deprecated. 
 Use  ElementQualifierHierarchyinstead. | 
| protected Set<AnnotationMirror> | findBottoms(Map<AnnotationMirror,Set<AnnotationMirror>> supertypes)Deprecated.  Infer the bottoms of the subtype hierarchy. | 
| protected AnnotationMirror | findLub(AnnotationMirror a1,
       AnnotationMirror a2)Deprecated.  Finds and returns the Least Upper Bound (LUB) of two annotation mirrors a1 and a2 by
 recursively climbing the qualifier hierarchy of a1 until one of them is a subtype of the other,
 or returns null if no subtype relationships can be found. | 
| protected Set<AnnotationMirror> | findTops(Map<AnnotationMirror,Set<AnnotationMirror>> supertypes)Deprecated.  Infer the tops of the subtype hierarchy. | 
| protected void | finish(QualifierHierarchy qualHierarchy,
      Map<AnnotationMirror,Set<AnnotationMirror>> supertypesTransitive,
      Map<AnnotationMirror,AnnotationMirror> polyQualifiers,
      Set<AnnotationMirror> tops,
      Set<AnnotationMirror> bottoms,
      Object... args)Deprecated.  Method to finalize the qualifier hierarchy before it becomes unmodifiable. | 
| AnnotationMirror | getBottomAnnotation(AnnotationMirror start)Deprecated.  Return the bottom for the given qualifier, that is, the qualifier that is a subtype of  qualifierbut no further subtypes exist. | 
| Set<? extends AnnotationMirror> | getBottomAnnotations()Deprecated.  Returns the bottom type qualifiers in the hierarchy. | 
| AnnotationMirror | getPolymorphicAnnotation(AnnotationMirror start)Deprecated.  Returns the polymorphic qualifier for the hierarchy containing  qualifier, ornullif there is no polymorphic qualifier in that hierarchy. | 
| AnnotationMirror | getTopAnnotation(AnnotationMirror start)Deprecated.  Return the top qualifier for the given qualifier, that is, the qualifier that is a supertype of
  qualifierbut no further supertypes exist. | 
| Set<? extends AnnotationMirror> | getTopAnnotations()Deprecated.  Returns the top (ultimate super) type qualifiers in the type system. | 
| AnnotationMirror | greatestLowerBound(AnnotationMirror a1,
                  AnnotationMirror a2)Deprecated.  Returns the greatest lower bound for the qualifiers qualifier1 and qualifier2. | 
| boolean | isPolymorphicQualifier(AnnotationMirror qual)Deprecated.  Returns  trueif the qualifier is a polymorphic qualifier; otherwise, returnsfalse. | 
| boolean | isSubtype(AnnotationMirror subAnno,
         AnnotationMirror superAnno)Deprecated.  Tests whether  subQualifieris equal to or a sub-qualifier ofsuperQualifier,
 according to the type qualifier hierarchy. | 
| boolean | isSubtype(Collection<? extends AnnotationMirror> rhs,
         Collection<? extends AnnotationMirror> lhs)Deprecated.  Tests whether all qualifiers in  subQualifiersare a subqualifier or equal to the
 qualifier in the same hierarchy insuperQualifiers. | 
| boolean | isValid()Deprecated.  Determine whether this is valid. | 
| AnnotationMirror | leastUpperBound(AnnotationMirror a1,
               AnnotationMirror a2)Deprecated.  Returns the least upper bound (LUB) of the qualifiers  qualifier1andqualifier2. | 
| String | toString()Deprecated.  | 
| protected Map<AnnotationMirror,Set<AnnotationMirror>> | transitiveClosure(Map<AnnotationMirror,Set<AnnotationMirror>> supertypes)Deprecated.  Computes the transitive closure of the given map and returns it. | 
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitassertSameSize, assertSameSize, canHaveEmptyAnnotationSet, findAnnotationInHierarchy, findAnnotationInSameHierarchy, getWidth, greatestLowerBound, greatestLowerBounds, greatestLowerBounds, greatestLowerBoundsTypeVariable, greatestLowerBoundTypeVariable, isSubtype, isSubtype, isSubtypeTypeVariable, isSubtypeTypeVariable, leastUpperBound, leastUpperBounds, leastUpperBounds, leastUpperBoundsTypeVariable, leastUpperBoundTypeVariable, numberOfIterationsBeforeWidening, updateMappingToMutableSet, widenedUpperBoundprotected final Map<AnnotationMirror,Set<AnnotationMirror>> supertypesDirect
protected final Map<AnnotationMirror,Set<AnnotationMirror>> supertypesTransitive
protected final Set<AnnotationMirror> tops
protected final Set<AnnotationMirror> bottoms
protected final Map<AnnotationMirror,AnnotationMirror> polyQualifiers
public MultiGraphQualifierHierarchy(MultiGraphQualifierHierarchy.MultiGraphFactory f)
public MultiGraphQualifierHierarchy(MultiGraphQualifierHierarchy.MultiGraphFactory f, Object... args)
@Deprecated public static QualifierHierarchy createMultiGraphQualifierHierarchy(AnnotatedTypeFactory annotatedTypeFactory)
ElementQualifierHierarchy instead.MultiGraphQualifierHierarchyannotatedTypeFactory - annotated type factorypublic boolean isValid()
QualifierHierarchyisValid in interface QualifierHierarchyprotected void finish(QualifierHierarchy qualHierarchy, Map<AnnotationMirror,Set<AnnotationMirror>> supertypesTransitive, Map<AnnotationMirror,AnnotationMirror> polyQualifiers, Set<AnnotationMirror> tops, Set<AnnotationMirror> bottoms, Object... args)
@SideEffectFree public String toString()
public Set<? extends AnnotationMirror> getTopAnnotations()
QualifierHierarchyQualifierHierarchy.getWidth().getTopAnnotations in interface QualifierHierarchypublic AnnotationMirror getTopAnnotation(AnnotationMirror start)
QualifierHierarchyqualifier but no further supertypes exist.getTopAnnotation in interface QualifierHierarchystart - any qualifier from one of the qualifier hierarchies represented by thisqualifier's hierarchypublic Set<? extends AnnotationMirror> getBottomAnnotations()
QualifierHierarchyQualifierHierarchy.getWidth().getBottomAnnotations in interface QualifierHierarchypublic AnnotationMirror getBottomAnnotation(AnnotationMirror start)
QualifierHierarchyqualifier but no further subtypes exist.getBottomAnnotation in interface QualifierHierarchystart - any qualifier from one of the qualifier hierarchies represented by thisqualifier's hierarchypublic AnnotationMirror getPolymorphicAnnotation(AnnotationMirror start)
QualifierHierarchyqualifier, or null if there is no polymorphic qualifier in that hierarchy.getPolymorphicAnnotation in interface QualifierHierarchystart - any qualifier from one of the qualifier hierarchies represented by thisqualifier, or null if there is no polymorphic qualifier in that hierarchypublic boolean isSubtype(Collection<? extends AnnotationMirror> rhs, Collection<? extends AnnotationMirror> lhs)
QualifierHierarchysubQualifiers are a subqualifier or equal to the
 qualifier in the same hierarchy in superQualifiers.isSubtype in interface QualifierHierarchyrhs - set of qualifiers; exactly one per hierarchylhs - set of qualifiers; exactly one per hierarchysubQualifiers are a subqualifier or equal to the
     qualifier in the same hierarchy in superQualifierspublic AnnotationMirror leastUpperBound(AnnotationMirror a1, AnnotationMirror a2)
QualifierHierarchyqualifier1 and qualifier2. Returns null if the qualifiers are not from the same qualifier hierarchy.
 Examples:
leastUpperBound in interface QualifierHierarchya1 - the first qualifier; may not be in the same hierarchy as qualifier2a2 - the second qualifier; may not be in the same hierarchy as qualifier1null if the qualifiers are from
     different hierarchiespublic AnnotationMirror greatestLowerBound(AnnotationMirror a1, AnnotationMirror a2)
QualifierHierarchygreatestLowerBound in interface QualifierHierarchya1 - first qualifiera2 - second qualifierpublic boolean isSubtype(AnnotationMirror subAnno, AnnotationMirror superAnno)
subQualifier is equal to or a sub-qualifier of superQualifier,
 according to the type qualifier hierarchy.
 Most qualifiers have no value fields. However, two annotations with values are subtype of each other only if they have the same values. i.e. I(m) is a subtype of I(n) iff m = n.
When client specifies an annotation, a1, to be a subtype of annotation with values, a2, then a1 is a subtype of all instances of a2 regardless of a2 values.
isSubtype in interface QualifierHierarchysubAnno - the sub qualifiersuperAnno - the super qualifiersubQualifier is a subqualifier of, or equal to, superQualifierprotected Set<AnnotationMirror> findTops(Map<AnnotationMirror,Set<AnnotationMirror>> supertypes)
protected Set<AnnotationMirror> findBottoms(Map<AnnotationMirror,Set<AnnotationMirror>> supertypes)
protected Map<AnnotationMirror,Set<AnnotationMirror>> transitiveClosure(Map<AnnotationMirror,Set<AnnotationMirror>> supertypes)
protected void addPolyRelations(QualifierHierarchy qualHierarchy, Map<AnnotationMirror,Set<AnnotationMirror>> fullMap, Map<AnnotationMirror,AnnotationMirror> polyQualifiers, Set<AnnotationMirror> tops, Set<AnnotationMirror> bottoms)
A polymorphic qualifier, such as PolyNull, needs to be:
 
Nullable)
   NonNull)
 protected AnnotationMirror findLub(AnnotationMirror a1, AnnotationMirror a2)
a1 - first annotation mirrora2 - second annotation mirrorpublic boolean isPolymorphicQualifier(AnnotationMirror qual)
QualifierHierarchytrue if the qualifier is a polymorphic qualifier; otherwise, returns false.isPolymorphicQualifier in interface QualifierHierarchyqual - qualifiertrue if the qualifier is a polymorphic qualifier; otherwise, returns false.