public Set<? extends AnnotationMirror> greatestLowerBoundsTypeVariable(Collection<? extends AnnotationMirror> annos1,Collection<? extends AnnotationMirror> annos2){
  Set<AnnotationMirror> result=AnnotationUtils.createAnnotationSet();
  for (  AnnotationMirror top : getTopAnnotations()) {
    AnnotationMirror anno1ForTop=null;
    for (    AnnotationMirror anno1 : annos1) {
      if (isSubtypeTypeVariable(anno1,top)) {
        anno1ForTop=anno1;
      }
    }
    AnnotationMirror anno2ForTop=null;
    for (    AnnotationMirror anno2 : annos2) {
      if (isSubtypeTypeVariable(anno2,top)) {
        anno2ForTop=anno2;
      }
    }
    AnnotationMirror t=greatestLowerBoundTypeVariable(anno1ForTop,anno2ForTop);
    if (t != null) {
      result.add(t);
    }
  }
  return result;
}

public Set < ? extends AnnotationMirror > greatestLowerBoundsTypeVariable ( Collection < ? extends AnnotationMirror > annos1 , Collection < ? extends AnnotationMirror > annos2 ) { Set < AnnotationMirror > result = AnnotationUtils . createAnnotationSet ( ) ; for ( AnnotationMirror top : getTopAnnotations ( ) ) { AnnotationMirror anno1ForTop = null ; for ( AnnotationMirror anno1 : annos1 ) { if ( isSubtypeTypeVariable ( anno1 , top ) ) { anno1ForTop = anno1 ; } } AnnotationMirror anno2ForTop = null ; for ( AnnotationMirror anno2 : annos2 ) { if ( isSubtypeTypeVariable ( anno2 , top ) ) { anno2ForTop = anno2 ; } } AnnotationMirror t = greatestLowerBoundTypeVariable ( anno1ForTop , anno2ForTop ) ; if ( t != null ) { result . add ( t ) ; } } return result ; }
returns the type qualifiers that are the greatest lower bound of the qualifiers in annos1 and annos2 . the two qualifiers have to be from the same qualifier hierarchy . otherwise , null will be returned . < p > this method works even if the underlying java type is a type variable . in that case , a ' null ' annnotationmirror and the empty set represent a meaningful value ( namely , no annotation ) .
