@SubtypeOf(value={}) @Target(value={TYPE_USE,TYPE_PARAMETER}) @TargetLocations(value={EXPLICIT_LOWER_BOUND,EXPLICIT_UPPER_BOUND}) public @interface Bottom
This qualifier is used automatically if the existing qualifiers do not have a bottom type.
This only works the user never runs two type systems together. Furthermore, because it has no
@RetentionPolicy
meta-annotation, this qualifier will not be stored in bytecode. So, only
use this qualifier during prototyping of very simple type systems. For realistic systems,
introduce a top and bottom qualifier that gets stored in bytecode.
To use this qualifier, the type system designer needs to use methods like org.checkerframework.framework.type.treeannotator.ImplicitsTreeAnnotator#addTreeKind(com.sun.source.tree.Tree.Kind,
javax.lang.model.element.AnnotationMirror)
to add implicit annotations and needs to manually add
the bottom qualifier to the qualifier hierarchy.