/**
   * Get the "complementary" TypeQualifierValues for given exclusive type qualifier.
   *
   * @param tqv a type qualifier (which must be exclusive)
   * @return Collection of complementary exclusive type qualifiers
   */
  public static Collection<TypeQualifierValue> getComplementaryExclusiveTypeQualifierValue(
      TypeQualifierValue tqv) {
    assert tqv.isExclusiveQualifier();

    LinkedList<TypeQualifierValue> result = new LinkedList<TypeQualifierValue>();

    for (TypeQualifierValue t : instance.get().allKnownTypeQualifiers) {
      //
      // Any TypeQualifierValue with the same
      // annotation class but a different value is a complementary
      // type qualifier.
      //
      if (t.typeQualifier.equals(tqv.typeQualifier) && !Util.nullSafeEquals(t.value, tqv.value)) {
        result.add(t);
      }
    }

    return result;
  }
 public TypeQualifierNullnessAnnotationDatabase() {
   ClassDescriptor nonnullClassDesc =
       DescriptorFactory.createClassDescriptor(javax.annotation.Nonnull.class);
   this.nonnullTypeQualifierValue = TypeQualifierValue.getValue(nonnullClassDesc, null);
 }
 public InconsistentAnnotations(BugReporter reporter) {
   ClassDescriptor nonnullClassDesc =
       DescriptorFactory.createClassDescriptor(javax.annotation.Nonnull.class);
   this.nonnullTypeQualifierValue = TypeQualifierValue.getValue(nonnullClassDesc, null);
   this.reporter = reporter;
 }