@Override
 public R visitWildcard(AnnotatedWildcardType type, P p) {
   if (visitedNodes.containsKey(type)) {
     return visitedNodes.get(type);
   }
   visitedNodes.put(type, null);
   R r = scan(type.getExtendsBound(), p);
   visitedNodes.put(type, r);
   r = scanAndReduce(type.getSuperBound(), p, r);
   visitedNodes.put(type, r);
   return r;
 }