public AnnotationVisitor visitArray(String name) {
     var array = new RawArrayValue();
     this.method.defaultValue = array;
     return new ArrayVisitor(array);
 }
 public AnnotationVisitor visitArray(String name) {
     var array = new RawArrayValue();
     annotation.arguments.put(name, array);
     return new ArrayVisitor(array);
 }
 ArrayVisitor(RawArrayValue array) {
     this.array = array;
 }
 public AnnotationVisitor visitArray(String name) {
     var array = new RawArrayValue();
     this.array.elements.add(array);
     return new ArrayVisitor(array);
 }
 static RawAnnotationArgument buildAnnotationArgument(Object value) {
     if (value instanceof Integer) {
         return new RawSimpleValue(AnnotationArgumentKind.Int, value);
     } else if (value instanceof String) {
         return new RawSimpleValue(AnnotationArgumentKind.String, value);
     } else if (value instanceof Boolean) {
         return new RawSimpleValue(AnnotationArgumentKind.Boolean, value);
     } else if (value instanceof AsmType) {
         return new RawTypeValue((AsmType)value);
     } else if (value instanceof Character) {
         return new RawSimpleValue(AnnotationArgumentKind.Char, value);
     } else if (value instanceof Short) {
         return new RawSimpleValue(AnnotationArgumentKind.Short, value);
     } else if (value instanceof Long) {
         return new RawSimpleValue(AnnotationArgumentKind.Long, value);
     } else if (value instanceof Float) {
         return new RawSimpleValue(AnnotationArgumentKind.Float, value);
     } else if (value instanceof Double) {
         return new RawSimpleValue(AnnotationArgumentKind.Double, value);
     } else {
         var array = new RawArrayValue();
         int len = Array.getLength(value);
         for (int i = 0; i < len; i++) {
             array.elements.add(buildAnnotationArgument(Array.get(value, i)));
         }
         return array;
     }
 }