public AnnotationMirror createBooleanAnnotation(List<Boolean> values) {
   values = ValueCheckerUtils.removeDuplicates(values);
   if (values.isEmpty() || values.size() > MAX_VALUES) {
     return UNKNOWNVAL;
   }
   AnnotationBuilder builder = new AnnotationBuilder(processingEnv, BoolVal.class);
   builder.setValue("value", values);
   return builder.build();
 }
 public AnnotationMirror createDoubleValAnnotation(List<Double> doubleValues) {
   doubleValues = ValueCheckerUtils.removeDuplicates(doubleValues);
   if (doubleValues.isEmpty() || doubleValues.size() > MAX_VALUES) {
     return UNKNOWNVAL;
   }
   AnnotationBuilder builder = new AnnotationBuilder(processingEnv, DoubleVal.class);
   builder.setValue("value", doubleValues);
   return builder.build();
 }
 public AnnotationMirror createCharAnnotation(List<Character> values) {
   values = ValueCheckerUtils.removeDuplicates(values);
   if (values.isEmpty() || values.size() > MAX_VALUES) {
     return UNKNOWNVAL;
   }
   List<Long> longValues = new ArrayList<>();
   for (char value : values) {
     longValues.add((long) value);
   }
   AnnotationBuilder builder = new AnnotationBuilder(processingEnv, IntVal.class);
   builder.setValue("value", longValues);
   return builder.build();
 }