@Override public Boolean visitWildcard_Wildcard(final AnnotatedWildcardType type1,final AnnotatedWildcardType type2,final VisitHistory visited){
  if (visited.contains(type1,type2)) {
    return true;
  }
  visited.add(type1,type2);
  return areEqual(type1.getExtendsBound(),type2.getExtendsBound(),visited) && areEqual(type1.getSuperBound(),type2.getSuperBound(),visited);
}

@ Override public Boolean visitWildcard_Wildcard ( final AnnotatedWildcardType type1 , final AnnotatedWildcardType type2 , final VisitHistory visited ) { if ( visited . contains ( type1 , type2 ) ) { return true ; } visited . add ( type1 , type2 ) ; return areEqual ( type1 . getExtendsBound ( ) , type2 . getExtendsBound ( ) , visited ) && areEqual ( type1 . getSuperBound ( ) , type2 . getSuperBound ( ) , visited ) ; }
todo : identify tests that lead to recursive bounded wildcards , perhaps the right thing is to todo : move the code that identifies references to the same wildcard type here . todo would we ever want to have a reference to the same wildcard with different annotations ? two wildcards are equal if : 1 ) their bounds are equal note : primary annotations will be taken into account when the bounds are retrieved
