public void evaluateNullAnnotations(Scope scope, TypeParameter parameter) {
   long nullTagBits = NullAnnotationMatching.validNullTagBits(this.tagBits);
   if (this.firstBound != null && this.firstBound.isValidBinding()) {
     long superNullTagBits = NullAnnotationMatching.validNullTagBits(this.firstBound.tagBits);
     if (superNullTagBits != 0L) {
       if (nullTagBits == 0L) {
         nullTagBits |= superNullTagBits;
       } else if (superNullTagBits != nullTagBits) {
         this.firstBound =
             nullMismatchOnBound(parameter, this.firstBound, superNullTagBits, nullTagBits, scope);
       }
     }
   }
   ReferenceBinding[] interfaces = this.superInterfaces;
   int length;
   if ((length = interfaces.length) != 0) {
     for (int i = length; --i >= 0; ) {
       ReferenceBinding resolveType = interfaces[i];
       long superNullTagBits = NullAnnotationMatching.validNullTagBits(resolveType.tagBits);
       if (superNullTagBits != 0L) {
         if (nullTagBits == 0L) {
           nullTagBits |= superNullTagBits;
         } else if (superNullTagBits != nullTagBits) {
           interfaces[i] =
               (ReferenceBinding)
                   nullMismatchOnBound(
                       parameter, resolveType, superNullTagBits, nullTagBits, scope);
         }
       }
       interfaces[i] = resolveType;
     }
   }
   if (nullTagBits != 0) this.tagBits |= nullTagBits | TagBits.HasNullTypeAnnotation;
 }
 private long getReturnTypeNullnessTagBits(MethodBinding method, boolean useTypeAnnotations) {
   if (useTypeAnnotations) {
     if (method.returnType == null) return 0L;
     return NullAnnotationMatching.validNullTagBits(method.returnType.tagBits);
   }
   return method.tagBits & TagBits.AnnotationNullMASK;
 }
 private Boolean getParameterNonNullness(MethodBinding method, int i, boolean useTypeAnnotations) {
   if (useTypeAnnotations) {
     TypeBinding parameter = method.parameters[i];
     if (parameter != null) {
       long nullBits = NullAnnotationMatching.validNullTagBits(parameter.tagBits);
       if (nullBits != 0L) return Boolean.valueOf(nullBits == TagBits.AnnotationNonNull);
     }
     return null;
   }
   return (method.parameterNonNullness == null) ? null : method.parameterNonNullness[i];
 }