@SuppressWarnings("unchecked")
 @Override
 public <R, P> R accept(AnnotationValueVisitor<R, P> v, P p) {
   if (value instanceof AnnotationMirror) {
     return v.visitAnnotation((AnnotationMirror) value, p);
   } else if (value instanceof List<?>) {
     return v.visitArray((List<? extends AnnotationValue>) value, p);
   } else if (value instanceof Boolean) {
     return v.visitBoolean((boolean) value, p);
   } else if (value instanceof Byte) {
     return v.visitByte((byte) value, p);
   } else if (value instanceof Character) {
     return v.visitChar((char) value, p);
   } else if (value instanceof Double) {
     return v.visitDouble((double) value, p);
   } else if (value instanceof VariableElement) {
     return v.visitEnumConstant((VariableElement) value, p);
   } else if (value instanceof Float) {
     return v.visitFloat((float) value, p);
   } else if (value instanceof Integer) {
     return v.visitInt((int) value, p);
   } else if (value instanceof Long) {
     return v.visitLong((long) value, p);
   } else if (value instanceof Short) {
     return v.visitShort((short) value, p);
   } else if (value instanceof String) {
     return v.visitString((String) value, p);
   } else if (value instanceof TypeMirror) {
     return v.visitType((TypeMirror) value, p);
   } else {
     return v.visitUnknown(this, p);
   }
 }
 public <R, P> R accept(AnnotationValueVisitor<R, P> v, P p) {
   return v.visitEnumConstant(value, p);
 }