code: private void checkAnnotationReference(Map<String, Candidate> candidatesMap, JAnnotatable annotatable) {
  		for (JAnnotationUse annotation : annotatable.annotations()) {
  			JAnnotationValue annotationMember = getAnnotationMember(annotation, "value");
  
  			if (annotationMember instanceof JAnnotationArrayMember) {
  				checkAnnotationReference(candidatesMap, (JAnnotationArrayMember) annotationMember);
  
  				continue;
  			}
  
  			JExpression type = getAnnotationMemberExpression(annotation, "type");
  
  			if (type == null) {
  				// Can be the case for @XmlElement(name = "publication-reference", namespace = "http://mycompany.org/exchange")
  				// or any other annotation without "type" 
  				continue;
  			}
  
  			Candidate candidate = candidatesMap.get(generableToString(type).replace(".class", ""));
  
  			if (candidate != null) {
  				logger.debug("Candidate " + candidate.getClassName()
  				            + " is used in XmlElements/XmlElementRef and hence won't be removed.");
  				candidate.unmarkForRemoval();
  			}
  		}
  	}
docs: For the given annotatable check that all annotations (and all annotations within annotations recursively) do not
  refer any candidate for removal.