Home | History | Annotate | Download | only in annotations
      1 package annotations;
      2 import org.objectweb.asm.*;
      3 public class ExtendedValuesDump implements Opcodes {
      4 
      5     public static byte[] dump () throws Exception {
      6 
      7         ClassWriter cw = new ClassWriter(false);
      8         FieldVisitor fv;
      9         MethodVisitor mv;
     10         AnnotationVisitor av0;
     11 
     12         cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/Values", null, "java/lang/Object", null);
     13 
     14         cw.visitSource("Values.java", null);
     15 
     16         {
     17             av0 = cw.visitAnnotation("Lannotations/ValuesAnnotation;", true);
     18             av0.visit("byteValue", new Byte((byte)1));
     19             av0.visit("charValue", new Character((char)65));
     20             av0.visit("booleanValue", new Boolean(true));
     21             av0.visit("intValue", new Integer(1));
     22             av0.visit("shortValue", new Short((short)1));
     23             av0.visit("longValue", new Long(1L));
     24             av0.visit("floatValue", new Float("1.0"));
     25             av0.visit("doubleValue", new Double("1.0"));
     26             av0.visit("stringValue", "A");
     27             av0.visitEnum("enumValue", "Lannotations/ValuesEnum;", "ONE");
     28             {
     29                 AnnotationVisitor av1 = av0.visitAnnotation("annotationValue", "Lannotations/ValueAttrAnnotation;");
     30                 av1.visit("value", "annotation");
     31                 av1.visitEnd();
     32             }
     33             av0.visit("classValue", Type.getType("Lannotations/Values;"));
     34             av0.visit("byteArrayValue", new byte[] {1,-1});
     35             av0.visit("charArrayValue", new char[] {(char)99,(char)98,(char)65535});
     36             av0.visit("booleanArrayValue", new boolean[] {true,false});
     37             av0.visit("intArrayValue", new int[] {1,-1});
     38             av0.visit("shortArrayValue", new short[] {(short)1,(short)-1});
     39             av0.visit("longArrayValue", new long[] {1L,-1L});
     40             av0.visit("floatArrayValue", new float[] {1.0f,-1.0f});
     41             av0.visit("doubleArrayValue", new double[] {1.0d,-1.0d});
     42             {
     43                 AnnotationVisitor av1 = av0.visitArray("stringArrayValue");
     44                 av1.visit(null, "aa");
     45                 av1.visit(null, "bb");
     46                 av1.visitEnd();
     47             }
     48             {
     49                 AnnotationVisitor av1 = av0.visitArray("enumArrayValue");
     50                 av1.visitEnum(null, "Lannotations/ValuesEnum;", "ONE");
     51                 av1.visitEnum(null, "Lannotations/ValuesEnum;", "TWO");
     52                 av1.visitEnd();
     53             }
     54             {
     55                 AnnotationVisitor av1 = av0.visitArray("annotationArrayValue");
     56                 {
     57                     AnnotationVisitor av2 = av1.visitAnnotation(null, "Lannotations/ValueAttrAnnotation;");
     58                     av2.visit("value", "annotation1");
     59                     av2.visitEnd();
     60                 }
     61                 {
     62                     AnnotationVisitor av2 = av1.visitAnnotation(null, "Lannotations/ValueAttrAnnotation;");
     63                     av2.visit("value", "annotation2");
     64                     av2.visitEnd();
     65                 }
     66                 av1.visitEnd();
     67             }
     68             {
     69                 AnnotationVisitor av1 = av0.visitArray("classArrayValue");
     70                 av1.visit(null, Type.getType("Lannotations/Values;"));
     71                 av1.visit(null, Type.getType("Lannotations/Values;"));
     72                 av1.visitEnd();
     73             }
     74             av0.visitEnd();
     75         }
     76         {
     77             av0 = cw.visitAnnotation("Lannotations/ValueAttrAnnotation1;", true);
     78             av0.visit("value", "classAnnotation1");
     79             av0.visitEnd();
     80         }
     81         {
     82             av0 = cw.visitAnnotation("Lannotations/ValueAttrAnnotation2;", true);
     83             av0.visit("value", "classAnnotation2");
     84             av0.visitEnd();
     85         }
     86         {
     87             fv = cw.visitField(ACC_PUBLIC, "testfield", "Ljava/lang/String;", null, null);
     88             {
     89                 av0 = fv.visitAnnotation("Lannotations/ValueAttrAnnotation1;", true);
     90                 av0.visit("value", "fieldAnnotation1");
     91                 av0.visitEnd();
     92             }
     93             {
     94                 av0 = fv.visitAnnotation("Lannotations/ValueAttrAnnotation2;", true);
     95                 av0.visit("value", "fieldAnnotation2");
     96                 av0.visitEnd();
     97             }
     98             fv.visitEnd();
     99         }
    100         {
    101             mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
    102             mv.visitVarInsn(ALOAD, 0);
    103             mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
    104             mv.visitVarInsn(ALOAD, 0);
    105             mv.visitLdcInsn("test");
    106             mv.visitFieldInsn(PUTFIELD, "annotations/Values", "testfield", "Ljava/lang/String;");
    107             mv.visitInsn(RETURN);
    108             mv.visitMaxs(2, 1);
    109             mv.visitEnd();
    110         }
    111         {
    112             mv = cw.visitMethod(ACC_PUBLIC, "testMethod", "(Ljava/lang/String;I)V", null, null);
    113             {
    114                 av0 = mv.visitAnnotation("Lannotations/ValueAttrAnnotation1;", true);
    115                 av0.visit("value", "methodAnnotation1");
    116                 av0.visitEnd();
    117             }
    118             {
    119                 av0 = mv.visitAnnotation("Lannotations/ValueAttrAnnotation2;", true);
    120                 av0.visit("value", "methodAnnotation2");
    121                 av0.visitEnd();
    122             }
    123             {
    124                 av0 = mv.visitParameterAnnotation(0, "Lannotations/ValueAttrAnnotation1;", true);
    125                 av0.visit("value", "param1Annotation1");
    126                 av0.visitEnd();
    127             }
    128             {
    129                 av0 = mv.visitParameterAnnotation(0, "Lannotations/ValueAttrAnnotation2;", true);
    130                 av0.visit("value", "param1Annotation2");
    131                 av0.visitEnd();
    132             }
    133             {
    134                 av0 = mv.visitParameterAnnotation(1, "Lannotations/ValueAttrAnnotation1;", true);
    135                 av0.visit("value", "param2Annotation1");
    136                 av0.visitEnd();
    137             }
    138             {
    139                 av0 = mv.visitParameterAnnotation(1, "Lannotations/ValueAttrAnnotation2;", true);
    140                 av0.visit("value", "param2Annotation2");
    141                 av0.visitEnd();
    142             }
    143             mv.visitInsn(RETURN);
    144             mv.visitMaxs(0, 3);
    145             mv.visitEnd();
    146         }
    147         cw.visitEnd();
    148 
    149         return cw.toByteArray();
    150     }
    151 
    152     public static byte[] dumpClassEmpty () throws Exception {
    153 
    154       ClassWriter cw = new ClassWriter(false);
    155       FieldVisitor fv;
    156       MethodVisitor mv;
    157       AnnotationVisitor av0;
    158       TypeAnnotationVisitor xav0;
    159 
    160       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestClassEmpty", null, "java/lang/Object", null);
    161 
    162       cw.visitSource("TestClassEmpty.java", null);
    163 
    164       {
    165         av0 = cw.visitAnnotation("Lannotations/tests/classfile/foo/A;", true);
    166         av0.visitEnd();
    167       }
    168       {
    169         mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
    170         mv.visitCode();
    171         Label l0 = new Label();
    172         mv.visitLabel(l0);
    173         mv.visitLineNumber(3, l0);
    174         mv.visitVarInsn(ALOAD, 0);
    175         mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
    176         mv.visitInsn(RETURN);
    177         Label l1 = new Label();
    178         mv.visitLabel(l1);
    179         mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestClassEmpty;", null, l0, l1, 0);
    180         mv.visitMaxs(1, 1);
    181         mv.visitEnd();
    182       }
    183       cw.visitEnd();
    184 
    185       return cw.toByteArray();
    186     }
    187 
    188     public static byte[] dumpClassNonEmpty () throws Exception {
    189 
    190       ClassWriter cw = new ClassWriter(false);
    191       FieldVisitor fv;
    192       MethodVisitor mv;
    193       AnnotationVisitor av0;
    194       TypeAnnotationVisitor xav0;
    195 
    196       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestClassNonEmpty", null, "java/lang/Object", null);
    197 
    198       cw.visitSource("TestClassNonEmpty.java", null);
    199 
    200       {
    201       av0 = cw.visitAnnotation("Lannotations/tests/classfile/foo/A;", true);
    202       av0.visitEnd();
    203       }
    204       {
    205       fv = cw.visitField(ACC_PUBLIC, "i", "I", null, null);
    206       fv.visitEnd();
    207       }
    208       {
    209       fv = cw.visitField(ACC_PRIVATE, "a", "Ljava/lang/String;", null, null);
    210       fv.visitEnd();
    211       }
    212       {
    213       mv = cw.visitMethod(ACC_PRIVATE, "<init>", "()V", null, null);
    214       mv.visitCode();
    215       Label l0 = new Label();
    216       mv.visitLabel(l0);
    217       mv.visitLineNumber(7, l0);
    218       mv.visitVarInsn(ALOAD, 0);
    219       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
    220       Label l1 = new Label();
    221       mv.visitLabel(l1);
    222       mv.visitLineNumber(8, l1);
    223       mv.visitVarInsn(ALOAD, 0);
    224       mv.visitInsn(ICONST_0);
    225       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestClassNonEmpty", "i", "I");
    226       Label l2 = new Label();
    227       mv.visitLabel(l2);
    228       mv.visitLineNumber(9, l2);
    229       mv.visitInsn(RETURN);
    230       Label l3 = new Label();
    231       mv.visitLabel(l3);
    232       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestClassNonEmpty;", null, l0, l3, 0);
    233       mv.visitMaxs(2, 1);
    234       mv.visitEnd();
    235       }
    236       {
    237       mv = cw.visitMethod(ACC_PROTECTED, "<init>", "(Ljava/lang/String;)V", null, null);
    238       mv.visitCode();
    239       Label l0 = new Label();
    240       mv.visitLabel(l0);
    241       mv.visitLineNumber(11, l0);
    242       mv.visitVarInsn(ALOAD, 0);
    243       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
    244       Label l1 = new Label();
    245       mv.visitLabel(l1);
    246       mv.visitLineNumber(12, l1);
    247       mv.visitVarInsn(ALOAD, 0);
    248       mv.visitVarInsn(ALOAD, 1);
    249       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestClassNonEmpty", "a", "Ljava/lang/String;");
    250       Label l2 = new Label();
    251       mv.visitLabel(l2);
    252       mv.visitLineNumber(13, l2);
    253       mv.visitInsn(RETURN);
    254       Label l3 = new Label();
    255       mv.visitLabel(l3);
    256       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestClassNonEmpty;", null, l0, l3, 0);
    257       mv.visitLocalVariable("s", "Ljava/lang/String;", null, l0, l3, 1);
    258       mv.visitMaxs(2, 2);
    259       mv.visitEnd();
    260       }
    261       {
    262       mv = cw.visitMethod(ACC_PUBLIC, "i", "()I", null, null);
    263       mv.visitCode();
    264       Label l0 = new Label();
    265       mv.visitLabel(l0);
    266       mv.visitLineNumber(16, l0);
    267       mv.visitVarInsn(ALOAD, 0);
    268       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestClassNonEmpty", "i", "I");
    269       mv.visitInsn(IRETURN);
    270       Label l1 = new Label();
    271       mv.visitLabel(l1);
    272       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestClassNonEmpty;", null, l0, l1, 0);
    273       mv.visitMaxs(1, 1);
    274       mv.visitEnd();
    275       }
    276       {
    277       mv = cw.visitMethod(ACC_PUBLIC, "a", "()Ljava/lang/String;", null, null);
    278       mv.visitCode();
    279       Label l0 = new Label();
    280       mv.visitLabel(l0);
    281       mv.visitLineNumber(20, l0);
    282       mv.visitTypeInsn(NEW, "java/lang/String");
    283       mv.visitInsn(DUP);
    284       mv.visitVarInsn(ALOAD, 0);
    285       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestClassNonEmpty", "a", "Ljava/lang/String;");
    286       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/String", "<init>", "(Ljava/lang/String;)V");
    287       mv.visitVarInsn(ASTORE, 1);
    288       Label l1 = new Label();
    289       mv.visitLabel(l1);
    290       mv.visitLineNumber(21, l1);
    291       mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
    292       mv.visitInsn(DUP);
    293       mv.visitVarInsn(ALOAD, 1);
    294       mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(Ljava/lang/Object;)Ljava/lang/String;");
    295       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "(Ljava/lang/String;)V");
    296       mv.visitVarInsn(ALOAD, 1);
    297       mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
    298       mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;");
    299       mv.visitVarInsn(ASTORE, 1);
    300       Label l2 = new Label();
    301       mv.visitLabel(l2);
    302       mv.visitLineNumber(22, l2);
    303       mv.visitVarInsn(ALOAD, 1);
    304       mv.visitInsn(ARETURN);
    305       Label l3 = new Label();
    306       mv.visitLabel(l3);
    307       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestClassNonEmpty;", null, l0, l3, 0);
    308       mv.visitLocalVariable("s", "Ljava/lang/String;", null, l1, l3, 1);
    309       mv.visitMaxs(3, 2);
    310       mv.visitEnd();
    311       }
    312       cw.visitEnd();
    313 
    314       return cw.toByteArray();
    315       }
    316     public static byte[] dumpFieldSimple () throws Exception {
    317 
    318       ClassWriter cw = new ClassWriter(false);
    319       FieldVisitor fv;
    320       MethodVisitor mv;
    321       AnnotationVisitor av0;
    322       TypeAnnotationVisitor xav0;
    323 
    324       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestFieldSimple", null, "java/lang/Object", null);
    325 
    326       cw.visitSource("TestFieldSimple.java", null);
    327 
    328       {
    329       av0 = cw.visitAnnotation("Lannotations/tests/classfile/foo/A;", true);
    330       av0.visitEnd();
    331       }
    332       {
    333       fv = cw.visitField(ACC_PUBLIC, "i", "I", null, null);
    334       {
    335       av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true);
    336       av0.visitEnd();
    337       }
    338       fv.visitEnd();
    339       }
    340       {
    341       fv = cw.visitField(ACC_PRIVATE, "j", "I", null, null);
    342       {
    343       av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/B;", true);
    344       av0.visit("value", "Hello");
    345       av0.visitEnd();
    346       }
    347       fv.visitEnd();
    348       }
    349       {
    350       fv = cw.visitField(ACC_PROTECTED, "o", "Ljava/lang/Object;", null, null);
    351       {
    352       av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true);
    353       av0.visitEnd();
    354       }
    355       {
    356       av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/B;", true);
    357       av0.visit("value", "H");
    358       av0.visitEnd();
    359       }
    360       fv.visitEnd();
    361       }
    362       {
    363       fv = cw.visitField(0, "s", "Ljava/lang/String;", null, null);
    364       {
    365       av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/B;", true);
    366       av0.visit("value", "E");
    367       av0.visitEnd();
    368       }
    369       fv.visitEnd();
    370       }
    371       {
    372       fv = cw.visitField(0, "f", "Lannotations/tests/classfile/cases/TestFieldSimple;", null, null);
    373       fv.visitEnd();
    374       }
    375       {
    376       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
    377       mv.visitCode();
    378       Label l0 = new Label();
    379       mv.visitLabel(l0);
    380       mv.visitLineNumber(3, l0);
    381       mv.visitVarInsn(ALOAD, 0);
    382       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
    383       Label l1 = new Label();
    384       mv.visitLabel(l1);
    385       mv.visitLineNumber(7, l1);
    386       mv.visitVarInsn(ALOAD, 0);
    387       mv.visitInsn(ACONST_NULL);
    388       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestFieldSimple", "s", "Ljava/lang/String;");
    389       Label l2 = new Label();
    390       mv.visitLabel(l2);
    391       mv.visitLineNumber(8, l2);
    392       mv.visitVarInsn(ALOAD, 0);
    393       mv.visitInsn(ACONST_NULL);
    394       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestFieldSimple", "f", "Lannotations/tests/classfile/cases/TestFieldSimple;");
    395       Label l3 = new Label();
    396       mv.visitLabel(l3);
    397       mv.visitLineNumber(3, l3);
    398       mv.visitInsn(RETURN);
    399       Label l4 = new Label();
    400       mv.visitLabel(l4);
    401       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestFieldSimple;", null, l0, l4, 0);
    402       mv.visitMaxs(2, 1);
    403       mv.visitEnd();
    404       }
    405       cw.visitEnd();
    406 
    407       return cw.toByteArray();
    408       }
    409 
    410     public static byte[] dumpFieldGeneric () throws Exception {
    411 
    412       ClassWriter cw = new ClassWriter(false);
    413       FieldVisitor fv;
    414       MethodVisitor mv;
    415       AnnotationVisitor av0;
    416       TypeAnnotationVisitor xav0;
    417 
    418       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestFieldGeneric", "<T:Ljava/lang/Object;>Ljava/lang/Object;", "java/lang/Object", null);
    419 
    420       cw.visitSource("TestFieldGeneric.java", null);
    421 
    422       {
    423       av0 = cw.visitAnnotation("Lannotations/tests/classfile/foo/A;", true);
    424       av0.visitEnd();
    425       }
    426       {
    427       fv = cw.visitField(0, "s", "Ljava/lang/String;", null, null);
    428       {
    429       av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/F;", true);
    430       av0.visit("fieldA", new Integer(1));
    431       av0.visit("fieldB", "fi");
    432       av0.visitEnd();
    433       }
    434       fv.visitEnd();
    435       }
    436       {
    437       fv = cw.visitField(0, "list", "Ljava/util/List;", "Ljava/util/List<Ljava/lang/String;>;", null);
    438       {
    439       av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/G;", true);
    440       av0.visit("fieldA", new Integer(3));
    441       av0.visit("fieldB", "three");
    442       av0.visit("fieldC", new boolean[] {true,false});
    443       av0.visit("fieldD", new Integer(2));
    444       av0.visit("fieldE", new Integer(4));
    445       av0.visitEnd();
    446       }
    447       fv.visitEnd();
    448       }
    449       {
    450       fv = cw.visitField(0, "set", "Ljava/util/Set;", "Ljava/util/Set<Lannotations/tests/classfile/cases/TestFieldGeneric;>;", null);
    451       {
    452       av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/E;", true);
    453       av0.visit("fieldA", new Integer(2));
    454       av0.visit("fieldB", "rh");
    455       av0.visitEnd();
    456       }
    457       {
    458       av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/F;", true);
    459       av0.visit("fieldA", new Integer(1));
    460       av0.visit("fieldB", "if");
    461       av0.visitEnd();
    462       }
    463       fv.visitEnd();
    464       }
    465       {
    466       fv = cw.visitField(0, "testFieldGeneric", "Lannotations/tests/classfile/cases/TestFieldGeneric;", "Lannotations/tests/classfile/cases/TestFieldGeneric<TT;>;", null);
    467       {
    468       xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
    469       xav0.visitXTargetType(new Integer(11));
    470       xav0.visitXLocationLength(new Integer(1));
    471       xav0.visitXLocation(new Integer(0));
    472       xav0.visitEnd();
    473       }
    474       fv.visitEnd();
    475       }
    476       {
    477       fv = cw.visitField(0, "otherSet", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/String;>;", null);
    478       fv.visitEnd();
    479       }
    480       {
    481       fv = cw.visitField(0, "nestedSet", "Ljava/util/Set;", "Ljava/util/Set<Lannotations/tests/classfile/cases/TestFieldGeneric<Ljava/util/Set<Lannotations/tests/classfile/cases/TestFieldGeneric;>;>;>;", null);
    482       {
    483       av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/B;", true);
    484       av0.visit("value", "nested");
    485       av0.visitEnd();
    486       }
    487       {
    488       xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/F;", true);
    489       xav0.visit("fieldA", new Integer(1));
    490       xav0.visit("fieldB", "n");
    491       xav0.visitXTargetType(new Integer(11));
    492       xav0.visitXLocationLength(new Integer(1));
    493       xav0.visitXLocation(new Integer(0));
    494       xav0.visitEnd();
    495       }
    496       {
    497       xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
    498       xav0.visitXTargetType(new Integer(11));
    499       xav0.visitXLocationLength(new Integer(1));
    500       xav0.visitXLocation(new Integer(0));
    501       xav0.visitEnd();
    502       }
    503       {
    504       xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true);
    505       xav0.visit("fieldA", new Integer(-2));
    506       xav0.visit("fieldB", "nl");
    507       xav0.visitXTargetType(new Integer(11));
    508       xav0.visitXLocationLength(new Integer(1));
    509       xav0.visitXLocation(new Integer(0));
    510       xav0.visitEnd();
    511       }
    512       {
    513       xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
    514       xav0.visit("value", "nil");
    515       xav0.visitXTargetType(new Integer(11));
    516       xav0.visitXLocationLength(new Integer(2));
    517       xav0.visitXLocation(new Integer(0));
    518       xav0.visitXLocation(new Integer(0));
    519       xav0.visitEnd();
    520       }
    521       {
    522       xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/D;", true);
    523       xav0.visit("fieldA", new Integer(-1));
    524       xav0.visit("fieldB", "hello");
    525       xav0.visit("fieldC", new int[] {3,2,4});
    526       xav0.visitXTargetType(new Integer(11));
    527       xav0.visitXLocationLength(new Integer(3));
    528       xav0.visitXLocation(new Integer(0));
    529       xav0.visitXLocation(new Integer(0));
    530       xav0.visitXLocation(new Integer(0));
    531       xav0.visitEnd();
    532       }
    533       fv.visitEnd();
    534       }
    535       {
    536       fv = cw.visitField(0, "nestedMap", "Ljava/util/Map;", "Ljava/util/Map<Ljava/util/Set<Lannotations/tests/classfile/cases/TestFieldGeneric;>;Lannotations/tests/classfile/cases/TestFieldGeneric<TT;>;>;", null);
    537       {
    538       av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/C;", true);
    539       av0.visit("fieldA", new Integer(1));
    540       av0.visit("fieldB", "nested");
    541       av0.visitEnd();
    542       }
    543       {
    544       xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
    545       xav0.visitXTargetType(new Integer(11));
    546       xav0.visitXLocationLength(new Integer(1));
    547       xav0.visitXLocation(new Integer(1));
    548       xav0.visitEnd();
    549       }
    550       {
    551       xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
    552       xav0.visit("value", "inner most T");
    553       xav0.visitXTargetType(new Integer(11));
    554       xav0.visitXLocationLength(new Integer(2));
    555       xav0.visitXLocation(new Integer(1));
    556       xav0.visitXLocation(new Integer(0));
    557       xav0.visitEnd();
    558       }
    559       {
    560       xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true);
    561       xav0.visit("fieldA", new Integer(256));
    562       xav0.visit("fieldB", "hello");
    563       xav0.visitXTargetType(new Integer(11));
    564       xav0.visitXLocationLength(new Integer(2));
    565       xav0.visitXLocation(new Integer(0));
    566       xav0.visitXLocation(new Integer(0));
    567       xav0.visitEnd();
    568       }
    569       {
    570       xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
    571       xav0.visit("value", "inner most F");
    572       xav0.visitXTargetType(new Integer(11));
    573       xav0.visitXLocationLength(new Integer(1));
    574       xav0.visitXLocation(new Integer(0));
    575       xav0.visitEnd();
    576       }
    577       fv.visitEnd();
    578       }
    579       {
    580       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
    581       mv.visitCode();
    582       Label l0 = new Label();
    583       mv.visitLabel(l0);
    584       mv.visitLineNumber(13, l0);
    585       mv.visitVarInsn(ALOAD, 0);
    586       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
    587       Label l1 = new Label();
    588       mv.visitLabel(l1);
    589       mv.visitLineNumber(11, l1);
    590       mv.visitVarInsn(ALOAD, 0);
    591       mv.visitTypeInsn(NEW, "annotations/tests/classfile/cases/TestFieldGeneric");
    592       mv.visitInsn(DUP);
    593       mv.visitMethodInsn(INVOKESPECIAL, "annotations/tests/classfile/cases/TestFieldGeneric", "<init>", "()V");
    594       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestFieldGeneric", "testFieldGeneric", "Lannotations/tests/classfile/cases/TestFieldGeneric;");
    595       Label l2 = new Label();
    596       mv.visitLabel(l2);
    597       mv.visitLineNumber(15, l2);
    598       mv.visitInsn(RETURN);
    599       Label l3 = new Label();
    600       mv.visitLabel(l3);
    601       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestFieldGeneric;", "Lannotations/tests/classfile/cases/TestFieldGeneric<TT;>;", l0, l3, 0);
    602       mv.visitMaxs(3, 1);
    603       mv.visitEnd();
    604       }
    605       {
    606       mv = cw.visitMethod(ACC_PUBLIC, "toString", "()Ljava/lang/String;", null, null);
    607       mv.visitCode();
    608       Label l0 = new Label();
    609       mv.visitLabel(l0);
    610       mv.visitLineNumber(20, l0);
    611       mv.visitVarInsn(ALOAD, 0);
    612       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestFieldGeneric", "s", "Ljava/lang/String;");
    613       mv.visitInsn(ARETURN);
    614       Label l1 = new Label();
    615       mv.visitLabel(l1);
    616       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestFieldGeneric;", "Lannotations/tests/classfile/cases/TestFieldGeneric<TT;>;", l0, l1, 0);
    617       mv.visitMaxs(1, 1);
    618       mv.visitEnd();
    619       }
    620       cw.visitEnd();
    621 
    622       return cw.toByteArray();
    623       }
    624     public static byte[] dumpLocalVariable () throws Exception {
    625 
    626       ClassWriter cw = new ClassWriter(false);
    627       FieldVisitor fv;
    628       MethodVisitor mv;
    629       AnnotationVisitor av0;
    630       TypeAnnotationVisitor xav0;
    631 
    632       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestLocalVariable", "<T:Ljava/lang/Object;>Ljava/lang/Object;", "java/lang/Object", null);
    633 
    634       cw.visitSource("TestLocalVariable.java", null);
    635 
    636       {
    637       av0 = cw.visitAnnotation("Lannotations/tests/classfile/foo/A;", true);
    638       av0.visitEnd();
    639       }
    640       {
    641       fv = cw.visitField(ACC_PUBLIC, "i", "I", null, null);
    642       fv.visitEnd();
    643       }
    644       {
    645       fv = cw.visitField(ACC_PUBLIC, "s", "Ljava/util/Set;", "Ljava/util/Set<Ljava/util/Set;>;", null);
    646       fv.visitEnd();
    647       }
    648       {
    649       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
    650       {
    651       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true);
    652       xav0.visit("fieldA", new Integer(166));
    653       xav0.visit("fieldB", "good");
    654       xav0.visitXTargetType(new Integer(4));
    655       xav0.visitXOffset(new Integer(6));
    656       xav0.visitEnd();
    657       }
    658       mv.visitCode();
    659       Label l0 = new Label();
    660       mv.visitLabel(l0);
    661       mv.visitLineNumber(10, l0);
    662       mv.visitVarInsn(ALOAD, 0);
    663       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
    664       Label l1 = new Label();
    665       mv.visitLabel(l1);
    666       mv.visitLineNumber(11, l1);
    667       mv.visitInsn(ICONST_0);
    668       mv.visitVarInsn(ISTORE, 1);
    669       Label l2 = new Label();
    670       mv.visitLabel(l2);
    671       mv.visitLineNumber(12, l2);
    672       mv.visitVarInsn(ALOAD, 0);
    673       mv.visitInsn(ICONST_0);
    674       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestLocalVariable", "i", "I");
    675       Label l3 = new Label();
    676       mv.visitLabel(l3);
    677       mv.visitLineNumber(13, l3);
    678       mv.visitInsn(RETURN);
    679       Label l4 = new Label();
    680       mv.visitLabel(l4);
    681       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariable;", "Lannotations/tests/classfile/cases/TestLocalVariable<TT;>;", l0, l4, 0);
    682       mv.visitLocalVariable("t", "I", null, l2, l4, 1);
    683       mv.visitMaxs(2, 2);
    684       mv.visitEnd();
    685       }
    686       {
    687       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(I)V", null, null);
    688       {
    689       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
    690       xav0.visitXTargetType(new Integer(4));
    691       xav0.visitXOffset(new Integer(0));
    692       xav0.visitEnd();
    693       }
    694       mv.visitCode();
    695       Label l0 = new Label();
    696       mv.visitLabel(l0);
    697       mv.visitLineNumber(15, l0);
    698       mv.visitVarInsn(ALOAD, 0);
    699       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
    700       Label l1 = new Label();
    701       mv.visitLabel(l1);
    702       mv.visitLineNumber(16, l1);
    703       mv.visitVarInsn(ALOAD, 0);
    704       mv.visitVarInsn(ILOAD, 1);
    705       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestLocalVariable", "i", "I");
    706       Label l2 = new Label();
    707       mv.visitLabel(l2);
    708       mv.visitLineNumber(17, l2);
    709       mv.visitInsn(RETURN);
    710       Label l3 = new Label();
    711       mv.visitLabel(l3);
    712       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariable;", "Lannotations/tests/classfile/cases/TestLocalVariable<TT;>;", l0, l3, 0);
    713       mv.visitLocalVariable("i", "I", null, l0, l3, 1);
    714       mv.visitMaxs(2, 2);
    715       mv.visitEnd();
    716       }
    717       {
    718       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(Ljava/lang/Integer;)V", null, null);
    719       mv.visitCode();
    720       Label l0 = new Label();
    721       mv.visitLabel(l0);
    722       mv.visitLineNumber(19, l0);
    723       mv.visitVarInsn(ALOAD, 0);
    724       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
    725       Label l1 = new Label();
    726       mv.visitLabel(l1);
    727       mv.visitLineNumber(20, l1);
    728       mv.visitInsn(ICONST_1);
    729       mv.visitVarInsn(ISTORE, 2);
    730       Label l2 = new Label();
    731       mv.visitLabel(l2);
    732       mv.visitLineNumber(21, l2);
    733       mv.visitIincInsn(2, 1);
    734       Label l3 = new Label();
    735       mv.visitLabel(l3);
    736       mv.visitLineNumber(22, l3);
    737       mv.visitVarInsn(ALOAD, 0);
    738       mv.visitVarInsn(ALOAD, 1);
    739       mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue", "()I");
    740       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestLocalVariable", "i", "I");
    741       Label l4 = new Label();
    742       mv.visitLabel(l4);
    743       mv.visitLineNumber(23, l4);
    744       mv.visitIincInsn(2, -1);
    745       Label l5 = new Label();
    746       mv.visitLabel(l5);
    747       mv.visitLineNumber(24, l5);
    748       mv.visitVarInsn(ALOAD, 0);
    749       mv.visitVarInsn(ILOAD, 2);
    750       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestLocalVariable", "i", "I");
    751       Label l6 = new Label();
    752       mv.visitLabel(l6);
    753       mv.visitLineNumber(25, l6);
    754       mv.visitInsn(RETURN);
    755       Label l7 = new Label();
    756       mv.visitLabel(l7);
    757       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariable;", "Lannotations/tests/classfile/cases/TestLocalVariable<TT;>;", l0, l7, 0);
    758       mv.visitLocalVariable("j", "Ljava/lang/Integer;", null, l0, l7, 1);
    759       mv.visitLocalVariable("k", "I", null, l2, l7, 2);
    760       mv.visitMaxs(2, 3);
    761       mv.visitEnd();
    762       }
    763       {
    764       mv = cw.visitMethod(ACC_PUBLIC, "i", "()I", null, null);
    765       mv.visitCode();
    766       Label l0 = new Label();
    767       mv.visitLabel(l0);
    768       mv.visitLineNumber(28, l0);
    769       mv.visitVarInsn(ALOAD, 0);
    770       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestLocalVariable", "i", "I");
    771       mv.visitInsn(IRETURN);
    772       Label l1 = new Label();
    773       mv.visitLabel(l1);
    774       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariable;", "Lannotations/tests/classfile/cases/TestLocalVariable<TT;>;", l0, l1, 0);
    775       mv.visitMaxs(1, 1);
    776       mv.visitEnd();
    777       }
    778       {
    779       mv = cw.visitMethod(ACC_PUBLIC, "j", "()I", null, null);
    780       {
    781       av0 = mv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true);
    782       av0.visitEnd();
    783       }
    784       {
    785       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
    786       xav0.visit("value", "hello");
    787       xav0.visitXTargetType(new Integer(4));
    788       xav0.visitXOffset(new Integer(2));
    789       xav0.visitEnd();
    790       }
    791       mv.visitCode();
    792       Label l0 = new Label();
    793       mv.visitLabel(l0);
    794       mv.visitLineNumber(32, l0);
    795       mv.visitInsn(ICONST_1);
    796       mv.visitVarInsn(ISTORE, 1);
    797       Label l1 = new Label();
    798       mv.visitLabel(l1);
    799       mv.visitLineNumber(33, l1);
    800       mv.visitVarInsn(ALOAD, 0);
    801       mv.visitMethodInsn(INVOKEVIRTUAL, "annotations/tests/classfile/cases/TestLocalVariable", "j", "()I");
    802       mv.visitInsn(IRETURN);
    803       Label l2 = new Label();
    804       mv.visitLabel(l2);
    805       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariable;", "Lannotations/tests/classfile/cases/TestLocalVariable<TT;>;", l0, l2, 0);
    806       mv.visitLocalVariable("temp", "I", null, l1, l2, 1);
    807       mv.visitMaxs(1, 2);
    808       mv.visitEnd();
    809       }
    810       {
    811       mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "someMethod", "()V", null, null);
    812       mv.visitCode();
    813       Label l0 = new Label();
    814       mv.visitLabel(l0);
    815       mv.visitLineNumber(37, l0);
    816       mv.visitTypeInsn(NEW, "annotations/tests/classfile/cases/TestLocalVariable");
    817       mv.visitInsn(DUP);
    818       mv.visitMethodInsn(INVOKESPECIAL, "annotations/tests/classfile/cases/TestLocalVariable", "<init>", "()V");
    819       mv.visitVarInsn(ASTORE, 0);
    820       Label l1 = new Label();
    821       mv.visitLabel(l1);
    822       mv.visitLineNumber(38, l1);
    823       mv.visitTypeInsn(NEW, "java/lang/String");
    824       mv.visitInsn(DUP);
    825       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/String", "<init>", "()V");
    826       mv.visitVarInsn(ASTORE, 1);
    827       Label l2 = new Label();
    828       mv.visitLabel(l2);
    829       mv.visitLineNumber(39, l2);
    830       mv.visitLdcInsn(new Double("2.0"));
    831       mv.visitMethodInsn(INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;");
    832       mv.visitVarInsn(ASTORE, 2);
    833       Label l3 = new Label();
    834       mv.visitLabel(l3);
    835       mv.visitLineNumber(40, l3);
    836       mv.visitInsn(RETURN);
    837       Label l4 = new Label();
    838       mv.visitLabel(l4);
    839       mv.visitLocalVariable("t", "Lannotations/tests/classfile/cases/TestLocalVariable;", null, l1, l4, 0);
    840       mv.visitLocalVariable("s", "Ljava/lang/String;", null, l2, l4, 1);
    841       mv.visitLocalVariable("d", "Ljava/lang/Double;", null, l3, l4, 2);
    842       mv.visitMaxs(2, 3);
    843       mv.visitEnd();
    844       }
    845       {
    846       mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null);
    847       mv.visitCode();
    848       Label l0 = new Label();
    849       mv.visitLabel(l0);
    850       mv.visitLineNumber(43, l0);
    851       mv.visitInsn(ICONST_1);
    852       mv.visitVarInsn(ISTORE, 1);
    853       Label l1 = new Label();
    854       mv.visitLabel(l1);
    855       mv.visitLineNumber(44, l1);
    856       mv.visitFieldInsn(GETSTATIC, "java/lang/Boolean", "TRUE", "Ljava/lang/Boolean;");
    857       mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z");
    858       mv.visitVarInsn(ISTORE, 2);
    859       Label l2 = new Label();
    860       mv.visitLabel(l2);
    861       mv.visitLineNumber(45, l2);
    862       mv.visitFieldInsn(GETSTATIC, "java/lang/Boolean", "FALSE", "Ljava/lang/Boolean;");
    863       mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z");
    864       mv.visitVarInsn(ISTORE, 3);
    865       Label l3 = new Label();
    866       mv.visitLabel(l3);
    867       mv.visitLineNumber(46, l3);
    868       mv.visitVarInsn(ILOAD, 2);
    869       Label l4 = new Label();
    870       mv.visitJumpInsn(IFEQ, l4);
    871       mv.visitVarInsn(ILOAD, 3);
    872       mv.visitJumpInsn(IFEQ, l4);
    873       mv.visitInsn(ICONST_1);
    874       Label l5 = new Label();
    875       mv.visitJumpInsn(GOTO, l5);
    876       mv.visitLabel(l4);
    877       mv.visitInsn(ICONST_0);
    878       mv.visitLabel(l5);
    879       mv.visitVarInsn(ISTORE, 1);
    880       Label l6 = new Label();
    881       mv.visitLabel(l6);
    882       mv.visitLineNumber(47, l6);
    883       mv.visitVarInsn(ILOAD, 1);
    884       Label l7 = new Label();
    885       mv.visitJumpInsn(IFNE, l7);
    886       mv.visitVarInsn(ILOAD, 3);
    887       Label l8 = new Label();
    888       mv.visitJumpInsn(IFEQ, l8);
    889       mv.visitLabel(l7);
    890       mv.visitLineNumber(48, l7);
    891       mv.visitVarInsn(ILOAD, 1);
    892       mv.visitVarInsn(ISTORE, 2);
    893       mv.visitLabel(l8);
    894       mv.visitLineNumber(50, l8);
    895       mv.visitVarInsn(ILOAD, 2);
    896       Label l9 = new Label();
    897       mv.visitJumpInsn(IFEQ, l9);
    898       Label l10 = new Label();
    899       mv.visitLabel(l10);
    900       mv.visitLineNumber(51, l10);
    901       mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
    902       mv.visitLdcInsn("Message");
    903       mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V");
    904       mv.visitLabel(l9);
    905       mv.visitLineNumber(53, l9);
    906       mv.visitInsn(RETURN);
    907       Label l11 = new Label();
    908       mv.visitLabel(l11);
    909       mv.visitLocalVariable("args", "[Ljava/lang/String;", null, l0, l11, 0);
    910       mv.visitLocalVariable("b", "Z", null, l1, l11, 1);
    911       mv.visitLocalVariable("b1", "Z", null, l2, l11, 2);
    912       mv.visitLocalVariable("b2", "Z", null, l3, l11, 3);
    913       mv.visitMaxs(2, 4);
    914       mv.visitEnd();
    915       }
    916       cw.visitEnd();
    917 
    918       return cw.toByteArray();
    919       }
    920 
    921     public static byte[] dumpLocalVariableGenericArray () throws Exception {
    922 
    923       ClassWriter cw = new ClassWriter(false);
    924       FieldVisitor fv;
    925       MethodVisitor mv;
    926       AnnotationVisitor av0;
    927       TypeAnnotationVisitor xav0;
    928 
    929       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", null, "java/lang/Object", null);
    930 
    931       cw.visitSource("TestLocalVariableGenericArray.java", null);
    932 
    933       {
    934       fv = cw.visitField(0, "i", "Ljava/lang/Integer;", null, null);
    935       fv.visitEnd();
    936       }
    937       {
    938       fv = cw.visitField(0, "map1", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;>;", null);
    939       fv.visitEnd();
    940       }
    941       {
    942       fv = cw.visitField(0, "map2", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/util/ArrayList<Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;>;>;", null);
    943       fv.visitEnd();
    944       }
    945       {
    946       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
    947       {
    948       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
    949       xav0.visit("value", "good");
    950       xav0.visitXTargetType(new Integer(8));
    951       xav0.visitXStartPc(new Integer(37));
    952       xav0.visitXLength(new Integer(55));
    953       xav0.visitXIndex(new Integer(2));
    954       xav0.visitEnd();
    955       }
    956       {
    957       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
    958       xav0.visit("value", "first param");
    959       xav0.visitXTargetType(new Integer(9));
    960       xav0.visitXStartPc(new Integer(37));
    961       xav0.visitXLength(new Integer(55));
    962       xav0.visitXIndex(new Integer(2));
    963       xav0.visitXLocationLength(new Integer(1));
    964       xav0.visitXLocation(new Integer(0));
    965       xav0.visitEnd();
    966       }
    967       {
    968       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
    969       xav0.visit("value", "second param");
    970       xav0.visitXTargetType(new Integer(9));
    971       xav0.visitXStartPc(new Integer(37));
    972       xav0.visitXLength(new Integer(55));
    973       xav0.visitXIndex(new Integer(2));
    974       xav0.visitXLocationLength(new Integer(1));
    975       xav0.visitXLocation(new Integer(1));
    976       xav0.visitEnd();
    977       }
    978       mv.visitCode();
    979       Label l0 = new Label();
    980       mv.visitLabel(l0);
    981       mv.visitLineNumber(17, l0);
    982       mv.visitVarInsn(ALOAD, 0);
    983       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
    984       Label l1 = new Label();
    985       mv.visitLabel(l1);
    986       mv.visitLineNumber(18, l1);
    987       mv.visitInsn(ICONST_1);
    988       mv.visitVarInsn(ISTORE, 1);
    989       Label l2 = new Label();
    990       mv.visitLabel(l2);
    991       mv.visitLineNumber(19, l2);
    992       mv.visitVarInsn(ALOAD, 0);
    993       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", "map2", "Ljava/util/Map;");
    994       mv.visitLdcInsn("4gf");
    995       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
    996       mv.visitTypeInsn(CHECKCAST, "java/util/ArrayList");
    997       mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "iterator", "()Ljava/util/Iterator;");
    998       mv.visitVarInsn(ASTORE, 3);
    999       Label l3 = new Label();
   1000       mv.visitJumpInsn(GOTO, l3);
   1001       Label l4 = new Label();
   1002       mv.visitLabel(l4);
   1003       mv.visitVarInsn(ALOAD, 3);
   1004       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;");
   1005       mv.visitTypeInsn(CHECKCAST, "java/util/Map");
   1006       mv.visitVarInsn(ASTORE, 2);
   1007       Label l5 = new Label();
   1008       mv.visitLabel(l5);
   1009       mv.visitLineNumber(20, l5);
   1010       mv.visitVarInsn(ILOAD, 1);
   1011       mv.visitInsn(ICONST_5);
   1012       Label l6 = new Label();
   1013       mv.visitJumpInsn(IF_ICMPGE, l6);
   1014       Label l7 = new Label();
   1015       mv.visitLabel(l7);
   1016       mv.visitLineNumber(21, l7);
   1017       mv.visitVarInsn(ALOAD, 0);
   1018       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", "map2", "Ljava/util/Map;");
   1019       mv.visitLdcInsn("");
   1020       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
   1021       mv.visitTypeInsn(CHECKCAST, "java/util/ArrayList");
   1022       mv.visitTypeInsn(NEW, "java/util/ArrayList");
   1023       mv.visitInsn(DUP);
   1024       mv.visitMethodInsn(INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V");
   1025       mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "indexOf", "(Ljava/lang/Object;)I");
   1026       mv.visitVarInsn(ISTORE, 1);
   1027       Label l8 = new Label();
   1028       mv.visitJumpInsn(GOTO, l8);
   1029       mv.visitLabel(l6);
   1030       mv.visitLineNumber(23, l6);
   1031       mv.visitVarInsn(ALOAD, 0);
   1032       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", "i", "Ljava/lang/Integer;");
   1033       mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue", "()I");
   1034       mv.visitInsn(ICONST_5);
   1035       mv.visitInsn(IADD);
   1036       mv.visitVarInsn(ISTORE, 1);
   1037       mv.visitLabel(l8);
   1038       mv.visitLineNumber(25, l8);
   1039       mv.visitIincInsn(1, 1);
   1040       mv.visitLabel(l3);
   1041       mv.visitLineNumber(19, l3);
   1042       mv.visitVarInsn(ALOAD, 3);
   1043       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z");
   1044       mv.visitJumpInsn(IFNE, l4);
   1045       Label l9 = new Label();
   1046       mv.visitLabel(l9);
   1047       mv.visitLineNumber(27, l9);
   1048       mv.visitInsn(RETURN);
   1049       Label l10 = new Label();
   1050       mv.visitLabel(l10);
   1051       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariableGenericArray;", null, l0, l10, 0);
   1052       mv.visitLocalVariable("k", "I", null, l2, l10, 1);
   1053       mv.visitLocalVariable("e", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;", l5, l9, 2);
   1054       mv.visitMaxs(3, 4);
   1055       mv.visitEnd();
   1056       }
   1057       {
   1058       mv = cw.visitMethod(ACC_PUBLIC, "someMethod", "()V", null, null);
   1059       {
   1060       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1061       xav0.visit("value", "bad");
   1062       xav0.visitXTargetType(new Integer(8));
   1063       xav0.visitXStartPc(new Integer(8));
   1064       xav0.visitXLength(new Integer(26));
   1065       xav0.visitXIndex(new Integer(1));
   1066       xav0.visitEnd();
   1067       }
   1068       {
   1069       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true);
   1070       xav0.visit("fieldA", new Integer(0));
   1071       xav0.visit("fieldB", "String");
   1072       xav0.visitXTargetType(new Integer(9));
   1073       xav0.visitXStartPc(new Integer(8));
   1074       xav0.visitXLength(new Integer(26));
   1075       xav0.visitXIndex(new Integer(1));
   1076       xav0.visitXLocationLength(new Integer(1));
   1077       xav0.visitXLocation(new Integer(0));
   1078       xav0.visitEnd();
   1079       }
   1080       mv.visitCode();
   1081       Label l0 = new Label();
   1082       mv.visitLabel(l0);
   1083       mv.visitLineNumber(30, l0);
   1084       mv.visitTypeInsn(NEW, "java/util/HashSet");
   1085       mv.visitInsn(DUP);
   1086       mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V");
   1087       mv.visitVarInsn(ASTORE, 1);
   1088       Label l1 = new Label();
   1089       mv.visitLabel(l1);
   1090       mv.visitLineNumber(31, l1);
   1091       mv.visitVarInsn(ALOAD, 1);
   1092       mv.visitTypeInsn(NEW, "java/lang/String");
   1093       mv.visitInsn(DUP);
   1094       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/String", "<init>", "()V");
   1095       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "add", "(Ljava/lang/Object;)Z");
   1096       mv.visitInsn(POP);
   1097       Label l2 = new Label();
   1098       mv.visitLabel(l2);
   1099       mv.visitLineNumber(32, l2);
   1100       mv.visitVarInsn(ALOAD, 1);
   1101       mv.visitVarInsn(ALOAD, 1);
   1102       mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "toString", "()Ljava/lang/String;");
   1103       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "add", "(Ljava/lang/Object;)Z");
   1104       mv.visitInsn(POP);
   1105       Label l3 = new Label();
   1106       mv.visitLabel(l3);
   1107       mv.visitLineNumber(33, l3);
   1108       mv.visitInsn(RETURN);
   1109       Label l4 = new Label();
   1110       mv.visitLabel(l4);
   1111       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariableGenericArray;", null, l0, l4, 0);
   1112       mv.visitLocalVariable("s", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/String;>;", l1, l4, 1);
   1113       mv.visitMaxs(3, 2);
   1114       mv.visitEnd();
   1115       }
   1116       {
   1117       mv = cw.visitMethod(ACC_PRIVATE, "someMethod2", "(I)I", null, null);
   1118       {
   1119       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true);
   1120       xav0.visit("fieldA", new Integer(0));
   1121       xav0.visit("fieldB", "Boolean");
   1122       xav0.visitXTargetType(new Integer(8));
   1123       xav0.visitXStartPc(new Integer(8));
   1124       xav0.visitXLength(new Integer(66));
   1125       xav0.visitXIndex(new Integer(2));
   1126       xav0.visitEnd();
   1127       }
   1128       {
   1129       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1130       xav0.visitXTargetType(new Integer(9));
   1131       xav0.visitXStartPc(new Integer(8));
   1132       xav0.visitXLength(new Integer(66));
   1133       xav0.visitXIndex(new Integer(2));
   1134       xav0.visitXLocationLength(new Integer(1));
   1135       xav0.visitXLocation(new Integer(0));
   1136       xav0.visitEnd();
   1137       }
   1138       {
   1139       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1140       xav0.visitXTargetType(new Integer(8));
   1141       xav0.visitXStartPc(new Integer(16));
   1142       xav0.visitXLength(new Integer(58));
   1143       xav0.visitXIndex(new Integer(3));
   1144       xav0.visitEnd();
   1145       }
   1146       {
   1147       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1148       xav0.visit("value", "inner-type");
   1149       xav0.visitXTargetType(new Integer(9));
   1150       xav0.visitXStartPc(new Integer(16));
   1151       xav0.visitXLength(new Integer(58));
   1152       xav0.visitXIndex(new Integer(3));
   1153       xav0.visitXLocationLength(new Integer(1));
   1154       xav0.visitXLocation(new Integer(0));
   1155       xav0.visitEnd();
   1156       }
   1157       mv.visitCode();
   1158       Label l0 = new Label();
   1159       mv.visitLabel(l0);
   1160       mv.visitLineNumber(36, l0);
   1161       mv.visitTypeInsn(NEW, "java/util/HashSet");
   1162       mv.visitInsn(DUP);
   1163       mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V");
   1164       mv.visitVarInsn(ASTORE, 2);
   1165       Label l1 = new Label();
   1166       mv.visitLabel(l1);
   1167       mv.visitLineNumber(37, l1);
   1168       mv.visitTypeInsn(NEW, "java/util/HashSet");
   1169       mv.visitInsn(DUP);
   1170       mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V");
   1171       mv.visitVarInsn(ASTORE, 3);
   1172       Label l2 = new Label();
   1173       mv.visitLabel(l2);
   1174       mv.visitLineNumber(38, l2);
   1175       mv.visitVarInsn(ALOAD, 0);
   1176       mv.visitMethodInsn(INVOKESPECIAL, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", "someMethod3", "()Z");
   1177       mv.visitVarInsn(ISTORE, 4);
   1178       Label l3 = new Label();
   1179       mv.visitLabel(l3);
   1180       mv.visitLineNumber(39, l3);
   1181       mv.visitVarInsn(ALOAD, 2);
   1182       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "iterator", "()Ljava/util/Iterator;");
   1183       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;");
   1184       mv.visitTypeInsn(CHECKCAST, "java/lang/Boolean");
   1185       mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z");
   1186       mv.visitVarInsn(ILOAD, 4);
   1187       mv.visitInsn(IAND);
   1188       Label l4 = new Label();
   1189       mv.visitJumpInsn(IFEQ, l4);
   1190       Label l5 = new Label();
   1191       mv.visitLabel(l5);
   1192       mv.visitLineNumber(40, l5);
   1193       mv.visitVarInsn(ILOAD, 4);
   1194       Label l6 = new Label();
   1195       mv.visitJumpInsn(IFEQ, l6);
   1196       mv.visitVarInsn(ILOAD, 1);
   1197       Label l7 = new Label();
   1198       mv.visitJumpInsn(GOTO, l7);
   1199       mv.visitLabel(l6);
   1200       mv.visitVarInsn(ALOAD, 3);
   1201       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "iterator", "()Ljava/util/Iterator;");
   1202       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;");
   1203       mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
   1204       mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue", "()I");
   1205       mv.visitLabel(l7);
   1206       mv.visitInsn(IRETURN);
   1207       mv.visitLabel(l4);
   1208       mv.visitLineNumber(42, l4);
   1209       mv.visitVarInsn(ILOAD, 1);
   1210       mv.visitInsn(IRETURN);
   1211       Label l8 = new Label();
   1212       mv.visitLabel(l8);
   1213       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariableGenericArray;", null, l0, l8, 0);
   1214       mv.visitLocalVariable("i", "I", null, l0, l8, 1);
   1215       mv.visitLocalVariable("s", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/Boolean;>;", l1, l8, 2);
   1216       mv.visitLocalVariable("ints", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/Integer;>;", l2, l8, 3);
   1217       mv.visitLocalVariable("b", "Z", null, l3, l8, 4);
   1218       mv.visitMaxs(2, 5);
   1219       mv.visitEnd();
   1220       }
   1221       {
   1222       mv = cw.visitMethod(ACC_PRIVATE, "someMethod3", "()Z", null, null);
   1223       {
   1224       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1225       xav0.visit("value", "t");
   1226       xav0.visitXTargetType(new Integer(8));
   1227       xav0.visitXStartPc(new Integer(8));
   1228       xav0.visitXLength(new Integer(70));
   1229       xav0.visitXIndex(new Integer(1));
   1230       xav0.visitEnd();
   1231       }
   1232       {
   1233       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1234       xav0.visit("value", "map key string");
   1235       xav0.visitXTargetType(new Integer(9));
   1236       xav0.visitXStartPc(new Integer(8));
   1237       xav0.visitXLength(new Integer(70));
   1238       xav0.visitXIndex(new Integer(1));
   1239       xav0.visitXLocationLength(new Integer(1));
   1240       xav0.visitXLocation(new Integer(0));
   1241       xav0.visitEnd();
   1242       }
   1243       {
   1244       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1245       xav0.visit("value", "map value set");
   1246       xav0.visitXTargetType(new Integer(9));
   1247       xav0.visitXStartPc(new Integer(8));
   1248       xav0.visitXLength(new Integer(70));
   1249       xav0.visitXIndex(new Integer(1));
   1250       xav0.visitXLocationLength(new Integer(1));
   1251       xav0.visitXLocation(new Integer(1));
   1252       xav0.visitEnd();
   1253       }
   1254       {
   1255       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1256       xav0.visitXTargetType(new Integer(9));
   1257       xav0.visitXStartPc(new Integer(8));
   1258       xav0.visitXLength(new Integer(70));
   1259       xav0.visitXIndex(new Integer(1));
   1260       xav0.visitXLocationLength(new Integer(2));
   1261       xav0.visitXLocation(new Integer(1));
   1262       xav0.visitXLocation(new Integer(0));
   1263       xav0.visitEnd();
   1264       }
   1265       {
   1266       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1267       xav0.visitXTargetType(new Integer(9));
   1268       xav0.visitXStartPc(new Integer(10));
   1269       xav0.visitXLength(new Integer(68));
   1270       xav0.visitXIndex(new Integer(2));
   1271       xav0.visitXLocationLength(new Integer(1));
   1272       xav0.visitXLocation(new Integer(0));
   1273       xav0.visitEnd();
   1274       }
   1275       {
   1276       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true);
   1277       xav0.visit("fieldA", new Integer(1));
   1278       xav0.visit("fieldB", "set of maps");
   1279       xav0.visitXTargetType(new Integer(9));
   1280       xav0.visitXStartPc(new Integer(10));
   1281       xav0.visitXLength(new Integer(68));
   1282       xav0.visitXIndex(new Integer(2));
   1283       xav0.visitXLocationLength(new Integer(1));
   1284       xav0.visitXLocation(new Integer(1));
   1285       xav0.visitEnd();
   1286       }
   1287       {
   1288       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1289       xav0.visit("value", "maps");
   1290       xav0.visitXTargetType(new Integer(9));
   1291       xav0.visitXStartPc(new Integer(10));
   1292       xav0.visitXLength(new Integer(68));
   1293       xav0.visitXIndex(new Integer(2));
   1294       xav0.visitXLocationLength(new Integer(2));
   1295       xav0.visitXLocation(new Integer(1));
   1296       xav0.visitXLocation(new Integer(0));
   1297       xav0.visitEnd();
   1298       }
   1299       {
   1300       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1301       xav0.visit("value", "map key is integer");
   1302       xav0.visitXTargetType(new Integer(9));
   1303       xav0.visitXStartPc(new Integer(10));
   1304       xav0.visitXLength(new Integer(68));
   1305       xav0.visitXIndex(new Integer(2));
   1306       xav0.visitXLocationLength(new Integer(3));
   1307       xav0.visitXLocation(new Integer(1));
   1308       xav0.visitXLocation(new Integer(0));
   1309       xav0.visitXLocation(new Integer(0));
   1310       xav0.visitEnd();
   1311       }
   1312       {
   1313       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1314       xav0.visit("value", "map value is 2-d array");
   1315       xav0.visitXTargetType(new Integer(9));
   1316       xav0.visitXStartPc(new Integer(10));
   1317       xav0.visitXLength(new Integer(68));
   1318       xav0.visitXIndex(new Integer(2));
   1319       xav0.visitXLocationLength(new Integer(3));
   1320       xav0.visitXLocation(new Integer(1));
   1321       xav0.visitXLocation(new Integer(0));
   1322       xav0.visitXLocation(new Integer(1));
   1323       xav0.visitEnd();
   1324       }
   1325       {
   1326       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1327       xav0.visit("value", "first dimension");
   1328       xav0.visitXTargetType(new Integer(9));
   1329       xav0.visitXStartPc(new Integer(10));
   1330       xav0.visitXLength(new Integer(68));
   1331       xav0.visitXIndex(new Integer(2));
   1332       xav0.visitXLocationLength(new Integer(4));
   1333       xav0.visitXLocation(new Integer(1));
   1334       xav0.visitXLocation(new Integer(0));
   1335       xav0.visitXLocation(new Integer(1));
   1336       xav0.visitXLocation(new Integer(0));
   1337       xav0.visitEnd();
   1338       }
   1339       {
   1340       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1341       xav0.visit("value", "second dimension");
   1342       xav0.visitXTargetType(new Integer(9));
   1343       xav0.visitXStartPc(new Integer(10));
   1344       xav0.visitXLength(new Integer(68));
   1345       xav0.visitXIndex(new Integer(2));
   1346       xav0.visitXLocationLength(new Integer(4));
   1347       xav0.visitXLocation(new Integer(1));
   1348       xav0.visitXLocation(new Integer(0));
   1349       xav0.visitXLocation(new Integer(1));
   1350       xav0.visitXLocation(new Integer(1));
   1351       xav0.visitEnd();
   1352       }
   1353       mv.visitCode();
   1354       Label l0 = new Label();
   1355       mv.visitLabel(l0);
   1356       mv.visitLineNumber(46, l0);
   1357       mv.visitTypeInsn(NEW, "java/util/HashMap");
   1358       mv.visitInsn(DUP);
   1359       mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashMap", "<init>", "()V");
   1360       mv.visitVarInsn(ASTORE, 1);
   1361       Label l1 = new Label();
   1362       mv.visitLabel(l1);
   1363       mv.visitLineNumber(47, l1);
   1364       mv.visitInsn(ACONST_NULL);
   1365       mv.visitVarInsn(ASTORE, 2);
   1366       Label l2 = new Label();
   1367       mv.visitLabel(l2);
   1368       mv.visitLineNumber(49, l2);
   1369       mv.visitVarInsn(ALOAD, 2);
   1370       mv.visitLdcInsn("3");
   1371       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
   1372       mv.visitTypeInsn(CHECKCAST, "java/util/Set");
   1373       mv.visitTypeInsn(NEW, "java/util/HashMap");
   1374       mv.visitInsn(DUP);
   1375       mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashMap", "<init>", "()V");
   1376       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "add", "(Ljava/lang/Object;)Z");
   1377       mv.visitInsn(POP);
   1378       Label l3 = new Label();
   1379       mv.visitLabel(l3);
   1380       mv.visitLineNumber(51, l3);
   1381       mv.visitVarInsn(ALOAD, 2);
   1382       mv.visitLdcInsn("4");
   1383       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
   1384       mv.visitTypeInsn(CHECKCAST, "java/util/Set");
   1385       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "iterator", "()Ljava/util/Iterator;");
   1386       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;");
   1387       mv.visitTypeInsn(CHECKCAST, "java/util/Map");
   1388       mv.visitInsn(ICONST_3);
   1389       mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;");
   1390       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
   1391       mv.visitTypeInsn(CHECKCAST, "[[Ljava/lang/String;");
   1392       mv.visitInsn(ICONST_2);
   1393       mv.visitInsn(AALOAD);
   1394       mv.visitInsn(ICONST_4);
   1395       mv.visitLdcInsn("Hello");
   1396       mv.visitInsn(AASTORE);
   1397       Label l4 = new Label();
   1398       mv.visitLabel(l4);
   1399       mv.visitLineNumber(53, l4);
   1400       mv.visitInsn(ICONST_1);
   1401       mv.visitInsn(IRETURN);
   1402       Label l5 = new Label();
   1403       mv.visitLabel(l5);
   1404       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariableGenericArray;", null, l0, l5, 0);
   1405       mv.visitLocalVariable("t", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;>;", l1, l5, 1);
   1406       mv.visitLocalVariable("s", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/util/Set<Ljava/util/Map<Ljava/lang/Integer;[[Ljava/lang/String;>;>;>;", l2, l5, 2);
   1407       mv.visitMaxs(3, 3);
   1408       mv.visitEnd();
   1409       }
   1410       {
   1411       mv = cw.visitMethod(ACC_PROTECTED, "someMethod4", "()V", null, null);
   1412       {
   1413       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1414       xav0.visitXTargetType(new Integer(9));
   1415       xav0.visitXStartPc(new Integer(8));
   1416       xav0.visitXLength(new Integer(10));
   1417       xav0.visitXIndex(new Integer(1));
   1418       xav0.visitXLocationLength(new Integer(1));
   1419       xav0.visitXLocation(new Integer(0));
   1420       xav0.visitEnd();
   1421       }
   1422       mv.visitCode();
   1423       Label l0 = new Label();
   1424       Label l1 = new Label();
   1425       mv.visitTryCatchBlock(l0, l1, l1, "java/lang/Exception");
   1426       mv.visitLabel(l0);
   1427       mv.visitLineNumber(58, l0);
   1428       mv.visitTypeInsn(NEW, "java/util/HashSet");
   1429       mv.visitInsn(DUP);
   1430       mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V");
   1431       mv.visitVarInsn(ASTORE, 1);
   1432       Label l2 = new Label();
   1433       mv.visitLabel(l2);
   1434       mv.visitLineNumber(60, l2);
   1435       mv.visitTypeInsn(NEW, "java/lang/RuntimeException");
   1436       mv.visitInsn(DUP);
   1437       mv.visitLdcInsn("Hello");
   1438       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/RuntimeException", "<init>", "(Ljava/lang/String;)V");
   1439       mv.visitInsn(ATHROW);
   1440       mv.visitLabel(l1);
   1441       mv.visitLineNumber(61, l1);
   1442       mv.visitVarInsn(ASTORE, 1);
   1443       Label l3 = new Label();
   1444       mv.visitLabel(l3);
   1445       mv.visitLineNumber(62, l3);
   1446       mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
   1447       mv.visitVarInsn(ALOAD, 0);
   1448       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", "i", "Ljava/lang/Integer;");
   1449       mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/Object;)V");
   1450       Label l4 = new Label();
   1451       mv.visitLabel(l4);
   1452       mv.visitLineNumber(64, l4);
   1453       mv.visitInsn(RETURN);
   1454       Label l5 = new Label();
   1455       mv.visitLabel(l5);
   1456       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariableGenericArray;", null, l0, l5, 0);
   1457       mv.visitLocalVariable("s", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/String;>;", l2, l1, 1);
   1458       mv.visitLocalVariable("e", "Ljava/lang/Exception;", null, l3, l4, 1);
   1459       mv.visitMaxs(3, 2);
   1460       mv.visitEnd();
   1461       }
   1462       cw.visitEnd();
   1463 
   1464       return cw.toByteArray();
   1465       }
   1466     public static byte[] dumpMethodReceiver () throws Exception {
   1467 
   1468       ClassWriter cw = new ClassWriter(false);
   1469       FieldVisitor fv;
   1470       MethodVisitor mv;
   1471       AnnotationVisitor av0;
   1472       TypeAnnotationVisitor xav0;
   1473 
   1474       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestMethodReceiver", null, "java/lang/Object", null);
   1475 
   1476       cw.visitSource("TestMethodReceiver.java", null);
   1477 
   1478       {
   1479       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
   1480       mv.visitCode();
   1481       Label l0 = new Label();
   1482       mv.visitLabel(l0);
   1483       mv.visitLineNumber(9, l0);
   1484       mv.visitVarInsn(ALOAD, 0);
   1485       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
   1486       mv.visitInsn(RETURN);
   1487       Label l1 = new Label();
   1488       mv.visitLabel(l1);
   1489       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReceiver;", null, l0, l1, 0);
   1490       mv.visitMaxs(1, 1);
   1491       mv.visitEnd();
   1492       }
   1493       {
   1494       mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null);
   1495       {
   1496       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1497       xav0.visitXTargetType(new Integer(6));
   1498       xav0.visitEnd();
   1499       }
   1500       {
   1501       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1502       xav0.visit("value", "first method");
   1503       xav0.visitXTargetType(new Integer(6));
   1504       xav0.visitEnd();
   1505       }
   1506       mv.visitCode();
   1507       Label l0 = new Label();
   1508       mv.visitLabel(l0);
   1509       mv.visitLineNumber(12, l0);
   1510       mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
   1511       mv.visitLdcInsn("test()");
   1512       mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V");
   1513       Label l1 = new Label();
   1514       mv.visitLabel(l1);
   1515       mv.visitLineNumber(13, l1);
   1516       mv.visitInsn(RETURN);
   1517       Label l2 = new Label();
   1518       mv.visitLabel(l2);
   1519       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReceiver;", null, l0, l2, 0);
   1520       mv.visitMaxs(2, 1);
   1521       mv.visitEnd();
   1522       }
   1523       {
   1524       mv = cw.visitMethod(ACC_PRIVATE, "test2", "()V", null, null);
   1525       {
   1526       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true);
   1527       xav0.visit("fieldA", new Integer(2));
   1528       xav0.visit("fieldB", "rec");
   1529       xav0.visitXTargetType(new Integer(6));
   1530       xav0.visitEnd();
   1531       }
   1532       mv.visitCode();
   1533       Label l0 = new Label();
   1534       mv.visitLabel(l0);
   1535       mv.visitLineNumber(16, l0);
   1536       mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
   1537       mv.visitLdcInsn("test2()");
   1538       mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V");
   1539       Label l1 = new Label();
   1540       mv.visitLabel(l1);
   1541       mv.visitLineNumber(17, l1);
   1542       mv.visitInsn(RETURN);
   1543       Label l2 = new Label();
   1544       mv.visitLabel(l2);
   1545       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReceiver;", null, l0, l2, 0);
   1546       mv.visitMaxs(2, 1);
   1547       mv.visitEnd();
   1548       }
   1549       {
   1550       mv = cw.visitMethod(ACC_PROTECTED, "test3", "()V", null, null);
   1551       {
   1552       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1553       xav0.visitXTargetType(new Integer(6));
   1554       xav0.visitEnd();
   1555       }
   1556       mv.visitCode();
   1557       Label l0 = new Label();
   1558       mv.visitLabel(l0);
   1559       mv.visitLineNumber(20, l0);
   1560       mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
   1561       mv.visitLdcInsn("test3()");
   1562       mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V");
   1563       Label l1 = new Label();
   1564       mv.visitLabel(l1);
   1565       mv.visitLineNumber(21, l1);
   1566       mv.visitInsn(RETURN);
   1567       Label l2 = new Label();
   1568       mv.visitLabel(l2);
   1569       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReceiver;", null, l0, l2, 0);
   1570       mv.visitMaxs(2, 1);
   1571       mv.visitEnd();
   1572       }
   1573       {
   1574       mv = cw.visitMethod(0, "test4", "()V", null, null);
   1575       {
   1576       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1577       xav0.visit("value", "last method");
   1578       xav0.visitXTargetType(new Integer(6));
   1579       xav0.visitEnd();
   1580       }
   1581       mv.visitCode();
   1582       Label l0 = new Label();
   1583       mv.visitLabel(l0);
   1584       mv.visitLineNumber(24, l0);
   1585       mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
   1586       mv.visitLdcInsn("test4()");
   1587       mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V");
   1588       Label l1 = new Label();
   1589       mv.visitLabel(l1);
   1590       mv.visitLineNumber(25, l1);
   1591       mv.visitInsn(RETURN);
   1592       Label l2 = new Label();
   1593       mv.visitLabel(l2);
   1594       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReceiver;", null, l0, l2, 0);
   1595       mv.visitMaxs(2, 1);
   1596       mv.visitEnd();
   1597       }
   1598       cw.visitEnd();
   1599 
   1600       return cw.toByteArray();
   1601       }
   1602 
   1603     public static byte[] dumpMethodReturnTypeGenericArray () throws Exception {
   1604 
   1605     ClassWriter cw = new ClassWriter(false);
   1606     FieldVisitor fv;
   1607     MethodVisitor mv;
   1608     AnnotationVisitor av0;
   1609     TypeAnnotationVisitor xav0;
   1610 
   1611     cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestMethodReturnTypeGenericArray", null, "java/lang/Object", null);
   1612 
   1613     cw.visitSource("TestMethodReturnTypeGenericArray.java", null);
   1614 
   1615     {
   1616     mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
   1617     mv.visitCode();
   1618     Label l0 = new Label();
   1619     mv.visitLabel(l0);
   1620     mv.visitLineNumber(7, l0);
   1621     mv.visitVarInsn(ALOAD, 0);
   1622     mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
   1623     mv.visitInsn(RETURN);
   1624     Label l1 = new Label();
   1625     mv.visitLabel(l1);
   1626     mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0);
   1627     mv.visitMaxs(1, 1);
   1628     mv.visitEnd();
   1629     }
   1630     {
   1631     mv = cw.visitMethod(ACC_PUBLIC, "test", "()Ljava/util/List;", null, null);
   1632     {
   1633     av0 = mv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1634     av0.visitEnd();
   1635     }
   1636     mv.visitCode();
   1637     Label l0 = new Label();
   1638     mv.visitLabel(l0);
   1639     mv.visitLineNumber(10, l0);
   1640     mv.visitInsn(ACONST_NULL);
   1641     mv.visitInsn(ARETURN);
   1642     Label l1 = new Label();
   1643     mv.visitLabel(l1);
   1644     mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0);
   1645     mv.visitMaxs(1, 1);
   1646     mv.visitEnd();
   1647     }
   1648     {
   1649     mv = cw.visitMethod(ACC_PUBLIC, "test2", "()Ljava/util/List;", "()Ljava/util/List<Ljava/lang/String;>;", null);
   1650     {
   1651     av0 = mv.visitAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1652     av0.visit("value", "single-depth");
   1653     av0.visitEnd();
   1654     }
   1655     {
   1656     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1657     xav0.visitXTargetType(new Integer(11));
   1658     xav0.visitXLocationLength(new Integer(1));
   1659     xav0.visitXLocation(new Integer(0));
   1660     xav0.visitEnd();
   1661     }
   1662     mv.visitCode();
   1663     Label l0 = new Label();
   1664     mv.visitLabel(l0);
   1665     mv.visitLineNumber(14, l0);
   1666     mv.visitInsn(ACONST_NULL);
   1667     mv.visitInsn(ARETURN);
   1668     Label l1 = new Label();
   1669     mv.visitLabel(l1);
   1670     mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0);
   1671     mv.visitMaxs(1, 1);
   1672     mv.visitEnd();
   1673     }
   1674     {
   1675     mv = cw.visitMethod(ACC_PUBLIC, "test3", "()[Ljava/lang/String;", null, null);
   1676     {
   1677     av0 = mv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1678     av0.visitEnd();
   1679     }
   1680     {
   1681     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1682     xav0.visit("value", "on array element");
   1683     xav0.visitXTargetType(new Integer(11));
   1684     xav0.visitXLocationLength(new Integer(1));
   1685     xav0.visitXLocation(new Integer(0));
   1686     xav0.visitEnd();
   1687     }
   1688     mv.visitCode();
   1689     Label l0 = new Label();
   1690     mv.visitLabel(l0);
   1691     mv.visitLineNumber(18, l0);
   1692     mv.visitInsn(ACONST_NULL);
   1693     mv.visitInsn(ARETURN);
   1694     Label l1 = new Label();
   1695     mv.visitLabel(l1);
   1696     mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0);
   1697     mv.visitMaxs(1, 1);
   1698     mv.visitEnd();
   1699     }
   1700     {
   1701     mv = cw.visitMethod(ACC_PUBLIC, "test4", "()[[Ljava/lang/String;", null, null);
   1702     {
   1703     av0 = mv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1704     av0.visitEnd();
   1705     }
   1706     {
   1707     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1708     xav0.visit("value", "on");
   1709     xav0.visitXTargetType(new Integer(11));
   1710     xav0.visitXLocationLength(new Integer(1));
   1711     xav0.visitXLocation(new Integer(0));
   1712     xav0.visitEnd();
   1713     }
   1714     {
   1715     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1716     xav0.visit("value", "in");
   1717     xav0.visitXTargetType(new Integer(11));
   1718     xav0.visitXLocationLength(new Integer(1));
   1719     xav0.visitXLocation(new Integer(1));
   1720     xav0.visitEnd();
   1721     }
   1722     mv.visitCode();
   1723     Label l0 = new Label();
   1724     mv.visitLabel(l0);
   1725     mv.visitLineNumber(22, l0);
   1726     mv.visitInsn(ACONST_NULL);
   1727     mv.visitInsn(ARETURN);
   1728     Label l1 = new Label();
   1729     mv.visitLabel(l1);
   1730     mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0);
   1731     mv.visitMaxs(1, 1);
   1732     mv.visitEnd();
   1733     }
   1734     {
   1735     mv = cw.visitMethod(ACC_PUBLIC, "test5", "()Ljava/util/Set;", "()Ljava/util/Set<[Ljava/lang/String;>;", null);
   1736     {
   1737     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1738     xav0.visitXTargetType(new Integer(11));
   1739     xav0.visitXLocationLength(new Integer(1));
   1740     xav0.visitXLocation(new Integer(0));
   1741     xav0.visitEnd();
   1742     }
   1743     {
   1744     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1745     xav0.visit("value", "two-deep");
   1746     xav0.visitXTargetType(new Integer(11));
   1747     xav0.visitXLocationLength(new Integer(2));
   1748     xav0.visitXLocation(new Integer(0));
   1749     xav0.visitXLocation(new Integer(0));
   1750     xav0.visitEnd();
   1751     }
   1752     mv.visitCode();
   1753     Label l0 = new Label();
   1754     mv.visitLabel(l0);
   1755     mv.visitLineNumber(26, l0);
   1756     mv.visitInsn(ACONST_NULL);
   1757     mv.visitInsn(ARETURN);
   1758     Label l1 = new Label();
   1759     mv.visitLabel(l1);
   1760     mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0);
   1761     mv.visitMaxs(1, 1);
   1762     mv.visitEnd();
   1763     }
   1764     {
   1765     mv = cw.visitMethod(ACC_PUBLIC, "test6", "()Ljava/util/Map;", "()Ljava/util/Map<Ljava/util/Map<[Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;>;Ljava/util/Set<[Ljava/lang/String;>;>;", null);
   1766     {
   1767     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1768     xav0.visit("value", "map as key");
   1769     xav0.visitXTargetType(new Integer(11));
   1770     xav0.visitXLocationLength(new Integer(1));
   1771     xav0.visitXLocation(new Integer(0));
   1772     xav0.visitEnd();
   1773     }
   1774     {
   1775     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1776     xav0.visit("value", "array of value");
   1777     xav0.visitXTargetType(new Integer(11));
   1778     xav0.visitXLocationLength(new Integer(2));
   1779     xav0.visitXLocation(new Integer(1));
   1780     xav0.visitXLocation(new Integer(0));
   1781     xav0.visitEnd();
   1782     }
   1783     {
   1784     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1785     xav0.visit("value", "inner-most value");
   1786     xav0.visitXTargetType(new Integer(11));
   1787     xav0.visitXLocationLength(new Integer(3));
   1788     xav0.visitXLocation(new Integer(1));
   1789     xav0.visitXLocation(new Integer(0));
   1790     xav0.visitXLocation(new Integer(0));
   1791     xav0.visitEnd();
   1792     }
   1793     {
   1794     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1795     xav0.visit("value", "set as value");
   1796     xav0.visitXTargetType(new Integer(11));
   1797     xav0.visitXLocationLength(new Integer(1));
   1798     xav0.visitXLocation(new Integer(1));
   1799     xav0.visitEnd();
   1800     }
   1801     {
   1802     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1803     xav0.visit("value", "innermost key or key");
   1804     xav0.visitXTargetType(new Integer(11));
   1805     xav0.visitXLocationLength(new Integer(3));
   1806     xav0.visitXLocation(new Integer(0));
   1807     xav0.visitXLocation(new Integer(0));
   1808     xav0.visitXLocation(new Integer(0));
   1809     xav0.visitEnd();
   1810     }
   1811     {
   1812     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1813     xav0.visitXTargetType(new Integer(11));
   1814     xav0.visitXLocationLength(new Integer(2));
   1815     xav0.visitXLocation(new Integer(0));
   1816     xav0.visitXLocation(new Integer(0));
   1817     xav0.visitEnd();
   1818     }
   1819     {
   1820     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true);
   1821     xav0.visit("fieldA", new Integer(1));
   1822     xav0.visit("fieldB", "value of key");
   1823     xav0.visitXTargetType(new Integer(11));
   1824     xav0.visitXLocationLength(new Integer(2));
   1825     xav0.visitXLocation(new Integer(0));
   1826     xav0.visitXLocation(new Integer(1));
   1827     xav0.visitEnd();
   1828     }
   1829     {
   1830     xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1831     xav0.visitXTargetType(new Integer(11));
   1832     xav0.visitXLocationLength(new Integer(3));
   1833     xav0.visitXLocation(new Integer(0));
   1834     xav0.visitXLocation(new Integer(1));
   1835     xav0.visitXLocation(new Integer(0));
   1836     xav0.visitEnd();
   1837     }
   1838     mv.visitCode();
   1839     Label l0 = new Label();
   1840     mv.visitLabel(l0);
   1841     mv.visitLineNumber(30, l0);
   1842     mv.visitInsn(ACONST_NULL);
   1843     mv.visitInsn(ARETURN);
   1844     Label l1 = new Label();
   1845     mv.visitLabel(l1);
   1846     mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0);
   1847     mv.visitMaxs(1, 1);
   1848     mv.visitEnd();
   1849     }
   1850     cw.visitEnd();
   1851 
   1852     return cw.toByteArray();
   1853     }
   1854 
   1855     public static byte[] dumpObjectCreation () throws Exception {
   1856 
   1857       ClassWriter cw = new ClassWriter(false);
   1858       FieldVisitor fv;
   1859       MethodVisitor mv;
   1860       AnnotationVisitor av0;
   1861       TypeAnnotationVisitor xav0;
   1862 
   1863       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestObjectCreation", null, "java/lang/Object", null);
   1864 
   1865       cw.visitSource("TestObjectCreation.java", null);
   1866 
   1867       {
   1868       fv = cw.visitField(ACC_PUBLIC, "o", "Ljava/lang/Object;", null, null);
   1869       fv.visitEnd();
   1870       }
   1871       {
   1872       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
   1873       mv.visitCode();
   1874       Label l0 = new Label();
   1875       mv.visitLabel(l0);
   1876       mv.visitLineNumber(7, l0);
   1877       mv.visitVarInsn(ALOAD, 0);
   1878       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
   1879       mv.visitInsn(RETURN);
   1880       Label l1 = new Label();
   1881       mv.visitLabel(l1);
   1882       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreation;", null, l0, l1, 0);
   1883       mv.visitMaxs(1, 1);
   1884       mv.visitEnd();
   1885       }
   1886       {
   1887       mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null);
   1888       {
   1889       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1890       xav0.visit("value", "first new");
   1891       xav0.visitXTargetType(new Integer(4));
   1892       xav0.visitXOffset(new Integer(1));
   1893       xav0.visitEnd();
   1894       }
   1895       {
   1896       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1897       xav0.visit("value", "a string");
   1898       xav0.visitXTargetType(new Integer(4));
   1899       xav0.visitXOffset(new Integer(12));
   1900       xav0.visitEnd();
   1901       }
   1902       {
   1903       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1904       xav0.visitXTargetType(new Integer(4));
   1905       xav0.visitXOffset(new Integer(23));
   1906       xav0.visitEnd();
   1907       }
   1908       mv.visitCode();
   1909       Label l0 = new Label();
   1910       mv.visitLabel(l0);
   1911       mv.visitLineNumber(11, l0);
   1912       mv.visitVarInsn(ALOAD, 0);
   1913       mv.visitTypeInsn(NEW, "java/lang/Object");
   1914       mv.visitInsn(DUP);
   1915       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
   1916       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;");
   1917       Label l1 = new Label();
   1918       mv.visitLabel(l1);
   1919       mv.visitLineNumber(12, l1);
   1920       mv.visitVarInsn(ALOAD, 0);
   1921       mv.visitTypeInsn(NEW, "java/lang/String");
   1922       mv.visitInsn(DUP);
   1923       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/String", "<init>", "()V");
   1924       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;");
   1925       Label l2 = new Label();
   1926       mv.visitLabel(l2);
   1927       mv.visitLineNumber(13, l2);
   1928       mv.visitVarInsn(ALOAD, 0);
   1929       mv.visitTypeInsn(NEW, "java/lang/String");
   1930       mv.visitInsn(DUP);
   1931       mv.visitLdcInsn("");
   1932       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/String", "<init>", "(Ljava/lang/String;)V");
   1933       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;");
   1934       Label l3 = new Label();
   1935       mv.visitLabel(l3);
   1936       mv.visitLineNumber(14, l3);
   1937       mv.visitInsn(RETURN);
   1938       Label l4 = new Label();
   1939       mv.visitLabel(l4);
   1940       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreation;", null, l0, l4, 0);
   1941       mv.visitMaxs(4, 1);
   1942       mv.visitEnd();
   1943       }
   1944       {
   1945       mv = cw.visitMethod(ACC_PUBLIC, "test2", "()V", null, null);
   1946       {
   1947       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1948       xav0.visitXTargetType(new Integer(4));
   1949       xav0.visitXOffset(new Integer(7));
   1950       xav0.visitEnd();
   1951       }
   1952       {
   1953       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1954       xav0.visitXTargetType(new Integer(4));
   1955       xav0.visitXOffset(new Integer(14));
   1956       xav0.visitEnd();
   1957       }
   1958       mv.visitCode();
   1959       Label l0 = new Label();
   1960       mv.visitLabel(l0);
   1961       mv.visitLineNumber(17, l0);
   1962       mv.visitVarInsn(ALOAD, 0);
   1963       mv.visitLdcInsn("str");
   1964       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;");
   1965       Label l1 = new Label();
   1966       mv.visitLabel(l1);
   1967       mv.visitLineNumber(18, l1);
   1968       mv.visitVarInsn(ALOAD, 0);
   1969       mv.visitTypeInsn(NEW, "java/util/ArrayList");
   1970       mv.visitInsn(DUP);
   1971       mv.visitMethodInsn(INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V");
   1972       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;");
   1973       Label l2 = new Label();
   1974       mv.visitLabel(l2);
   1975       mv.visitLineNumber(19, l2);
   1976       mv.visitInsn(RETURN);
   1977       Label l3 = new Label();
   1978       mv.visitLabel(l3);
   1979       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreation;", null, l0, l3, 0);
   1980       mv.visitMaxs(3, 1);
   1981       mv.visitEnd();
   1982       }
   1983       {
   1984       mv = cw.visitMethod(ACC_PUBLIC, "test3", "()V", null, null);
   1985       {
   1986       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   1987       xav0.visit("value", "new");
   1988       xav0.visitXTargetType(new Integer(4));
   1989       xav0.visitXOffset(new Integer(1));
   1990       xav0.visitEnd();
   1991       }
   1992       {
   1993       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   1994       xav0.visitXTargetType(new Integer(4));
   1995       xav0.visitXOffset(new Integer(12));
   1996       xav0.visitEnd();
   1997       }
   1998       mv.visitCode();
   1999       Label l0 = new Label();
   2000       mv.visitLabel(l0);
   2001       mv.visitLineNumber(22, l0);
   2002       mv.visitVarInsn(ALOAD, 0);
   2003       mv.visitTypeInsn(NEW, "java/util/HashSet");
   2004       mv.visitInsn(DUP);
   2005       mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V");
   2006       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;");
   2007       Label l1 = new Label();
   2008       mv.visitLabel(l1);
   2009       mv.visitLineNumber(23, l1);
   2010       mv.visitVarInsn(ALOAD, 0);
   2011       mv.visitTypeInsn(NEW, "java/util/HashMap");
   2012       mv.visitInsn(DUP);
   2013       mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashMap", "<init>", "()V");
   2014       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;");
   2015       Label l2 = new Label();
   2016       mv.visitLabel(l2);
   2017       mv.visitLineNumber(24, l2);
   2018       mv.visitInsn(RETURN);
   2019       Label l3 = new Label();
   2020       mv.visitLabel(l3);
   2021       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreation;", null, l0, l3, 0);
   2022       mv.visitMaxs(3, 1);
   2023       mv.visitEnd();
   2024       }
   2025       {
   2026       mv = cw.visitMethod(ACC_PUBLIC, "test4", "()V", null, null);
   2027       {
   2028       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2029       xav0.visitXTargetType(new Integer(4));
   2030       xav0.visitXOffset(new Integer(1));
   2031       xav0.visitEnd();
   2032       }
   2033       {
   2034       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2035       xav0.visit("value", "self test");
   2036       xav0.visitXTargetType(new Integer(4));
   2037       xav0.visitXOffset(new Integer(13));
   2038       xav0.visitEnd();
   2039       }
   2040       mv.visitCode();
   2041       Label l0 = new Label();
   2042       mv.visitLabel(l0);
   2043       mv.visitLineNumber(27, l0);
   2044       mv.visitVarInsn(ALOAD, 0);
   2045       mv.visitTypeInsn(NEW, "java/lang/Integer");
   2046       mv.visitInsn(DUP);
   2047       mv.visitInsn(ICONST_2);
   2048       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Integer", "<init>", "(I)V");
   2049       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;");
   2050       Label l1 = new Label();
   2051       mv.visitLabel(l1);
   2052       mv.visitLineNumber(28, l1);
   2053       mv.visitVarInsn(ALOAD, 0);
   2054       mv.visitTypeInsn(NEW, "annotations/tests/classfile/cases/TestObjectCreation");
   2055       mv.visitInsn(DUP);
   2056       mv.visitMethodInsn(INVOKESPECIAL, "annotations/tests/classfile/cases/TestObjectCreation", "<init>", "()V");
   2057       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;");
   2058       Label l2 = new Label();
   2059       mv.visitLabel(l2);
   2060       mv.visitLineNumber(29, l2);
   2061       mv.visitInsn(RETURN);
   2062       Label l3 = new Label();
   2063       mv.visitLabel(l3);
   2064       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreation;", null, l0, l3, 0);
   2065       mv.visitMaxs(4, 1);
   2066       mv.visitEnd();
   2067       }
   2068       cw.visitEnd();
   2069 
   2070       return cw.toByteArray();
   2071       }
   2072 
   2073     public static byte[] dumpObjectCreationGenericArray () throws Exception {
   2074 
   2075       ClassWriter cw = new ClassWriter(false);
   2076       FieldVisitor fv;
   2077       MethodVisitor mv;
   2078       AnnotationVisitor av0;
   2079       TypeAnnotationVisitor xav0;
   2080 
   2081       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", null, "java/lang/Object", null);
   2082 
   2083       cw.visitSource("TestObjectCreationGenericArray.java", null);
   2084 
   2085       {
   2086       fv = cw.visitField(ACC_PUBLIC, "o", "Ljava/lang/Object;", null, null);
   2087       fv.visitEnd();
   2088       }
   2089       {
   2090       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
   2091       mv.visitCode();
   2092       Label l0 = new Label();
   2093       mv.visitLabel(l0);
   2094       mv.visitLineNumber(9, l0);
   2095       mv.visitVarInsn(ALOAD, 0);
   2096       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
   2097       mv.visitInsn(RETURN);
   2098       Label l1 = new Label();
   2099       mv.visitLabel(l1);
   2100       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreationGenericArray;", null, l0, l1, 0);
   2101       mv.visitMaxs(1, 1);
   2102       mv.visitEnd();
   2103       }
   2104       {
   2105       mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null);
   2106       {
   2107       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2108       xav0.visit("value", "first new");
   2109       xav0.visitXTargetType(new Integer(4));
   2110       xav0.visitXOffset(new Integer(3));
   2111       xav0.visitEnd();
   2112       }
   2113       {
   2114       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2115       xav0.visitXTargetType(new Integer(5));
   2116       xav0.visitXOffset(new Integer(3));
   2117       xav0.visitXLocationLength(new Integer(1));
   2118       xav0.visitXLocation(new Integer(0));
   2119       xav0.visitEnd();
   2120       }
   2121       mv.visitCode();
   2122       Label l0 = new Label();
   2123       mv.visitLabel(l0);
   2124       mv.visitLineNumber(13, l0);
   2125       mv.visitVarInsn(ALOAD, 0);
   2126       mv.visitIntInsn(BIPUSH, 10);
   2127       mv.visitIntInsn(NEWARRAY, T_INT);
   2128       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;");
   2129       Label l1 = new Label();
   2130       mv.visitLabel(l1);
   2131       mv.visitLineNumber(14, l1);
   2132       mv.visitInsn(RETURN);
   2133       Label l2 = new Label();
   2134       mv.visitLabel(l2);
   2135       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreationGenericArray;", null, l0, l2, 0);
   2136       mv.visitMaxs(2, 1);
   2137       mv.visitEnd();
   2138       }
   2139       {
   2140       mv = cw.visitMethod(ACC_PUBLIC, "test2", "()V", null, null);
   2141       {
   2142       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2143       xav0.visitXTargetType(new Integer(4));
   2144       xav0.visitXOffset(new Integer(23));
   2145       xav0.visitEnd();
   2146       }
   2147       {
   2148       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2149       xav0.visit("value", "str");
   2150       xav0.visitXTargetType(new Integer(5));
   2151       xav0.visitXOffset(new Integer(23));
   2152       xav0.visitXLocationLength(new Integer(1));
   2153       xav0.visitXLocation(new Integer(0));
   2154       xav0.visitEnd();
   2155       }
   2156       mv.visitCode();
   2157       Label l0 = new Label();
   2158       mv.visitLabel(l0);
   2159       mv.visitLineNumber(17, l0);
   2160       mv.visitVarInsn(ALOAD, 0);
   2161       mv.visitLdcInsn("str");
   2162       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;");
   2163       Label l1 = new Label();
   2164       mv.visitLabel(l1);
   2165       mv.visitLineNumber(18, l1);
   2166       mv.visitVarInsn(ALOAD, 0);
   2167       mv.visitTypeInsn(NEW, "java/util/ArrayList");
   2168       mv.visitInsn(DUP);
   2169       mv.visitMethodInsn(INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V");
   2170       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;");
   2171       Label l2 = new Label();
   2172       mv.visitLabel(l2);
   2173       mv.visitLineNumber(19, l2);
   2174       mv.visitInsn(RETURN);
   2175       Label l3 = new Label();
   2176       mv.visitLabel(l3);
   2177       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreationGenericArray;", null, l0, l3, 0);
   2178       mv.visitMaxs(3, 1);
   2179       mv.visitEnd();
   2180       }
   2181       {
   2182       mv = cw.visitMethod(ACC_PUBLIC, "test3", "()V", null, null);
   2183       {
   2184       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2185       xav0.visit("value", "new");
   2186       xav0.visitXTargetType(new Integer(4));
   2187       xav0.visitXOffset(new Integer(1));
   2188       xav0.visitEnd();
   2189       }
   2190       {
   2191       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2192       xav0.visit("value", "map");
   2193       xav0.visitXTargetType(new Integer(5));
   2194       xav0.visitXOffset(new Integer(1));
   2195       xav0.visitXLocationLength(new Integer(1));
   2196       xav0.visitXLocation(new Integer(0));
   2197       xav0.visitEnd();
   2198       }
   2199       {
   2200       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2201       xav0.visitXTargetType(new Integer(5));
   2202       xav0.visitXOffset(new Integer(1));
   2203       xav0.visitXLocationLength(new Integer(2));
   2204       xav0.visitXLocation(new Integer(0));
   2205       xav0.visitXLocation(new Integer(0));
   2206       xav0.visitEnd();
   2207       }
   2208       {
   2209       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2210       xav0.visit("value", "map key string");
   2211       xav0.visitXTargetType(new Integer(5));
   2212       xav0.visitXOffset(new Integer(1));
   2213       xav0.visitXLocationLength(new Integer(2));
   2214       xav0.visitXLocation(new Integer(0));
   2215       xav0.visitXLocation(new Integer(1));
   2216       xav0.visitEnd();
   2217       }
   2218       {
   2219       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2220       xav0.visitXTargetType(new Integer(4));
   2221       xav0.visitXOffset(new Integer(12));
   2222       xav0.visitEnd();
   2223       }
   2224       {
   2225       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2226       xav0.visit("value", "first level");
   2227       xav0.visitXTargetType(new Integer(5));
   2228       xav0.visitXOffset(new Integer(12));
   2229       xav0.visitXLocationLength(new Integer(1));
   2230       xav0.visitXLocation(new Integer(0));
   2231       xav0.visitEnd();
   2232       }
   2233       {
   2234       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2235       xav0.visit("value", "value");
   2236       xav0.visitXTargetType(new Integer(5));
   2237       xav0.visitXOffset(new Integer(12));
   2238       xav0.visitXLocationLength(new Integer(1));
   2239       xav0.visitXLocation(new Integer(1));
   2240       xav0.visitEnd();
   2241       }
   2242       {
   2243       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2244       xav0.visit("value", "on the array");
   2245       xav0.visitXTargetType(new Integer(5));
   2246       xav0.visitXOffset(new Integer(12));
   2247       xav0.visitXLocationLength(new Integer(2));
   2248       xav0.visitXLocation(new Integer(1));
   2249       xav0.visitXLocation(new Integer(0));
   2250       xav0.visitEnd();
   2251       }
   2252       {
   2253       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2254       xav0.visit("value", "on array elements");
   2255       xav0.visitXTargetType(new Integer(5));
   2256       xav0.visitXOffset(new Integer(12));
   2257       xav0.visitXLocationLength(new Integer(3));
   2258       xav0.visitXLocation(new Integer(1));
   2259       xav0.visitXLocation(new Integer(0));
   2260       xav0.visitXLocation(new Integer(0));
   2261       xav0.visitEnd();
   2262       }
   2263       mv.visitCode();
   2264       Label l0 = new Label();
   2265       mv.visitLabel(l0);
   2266       mv.visitLineNumber(22, l0);
   2267       mv.visitVarInsn(ALOAD, 0);
   2268       mv.visitTypeInsn(NEW, "java/util/HashSet");
   2269       mv.visitInsn(DUP);
   2270       mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V");
   2271       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;");
   2272       Label l1 = new Label();
   2273       mv.visitLabel(l1);
   2274       mv.visitLineNumber(23, l1);
   2275       mv.visitVarInsn(ALOAD, 0);
   2276       mv.visitTypeInsn(NEW, "java/util/HashMap");
   2277       mv.visitInsn(DUP);
   2278       mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashMap", "<init>", "()V");
   2279       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;");
   2280       Label l2 = new Label();
   2281       mv.visitLabel(l2);
   2282       mv.visitLineNumber(24, l2);
   2283       mv.visitInsn(RETURN);
   2284       Label l3 = new Label();
   2285       mv.visitLabel(l3);
   2286       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreationGenericArray;", null, l0, l3, 0);
   2287       mv.visitMaxs(3, 1);
   2288       mv.visitEnd();
   2289       }
   2290       {
   2291       mv = cw.visitMethod(ACC_PUBLIC, "test4", "()V", null, null);
   2292       {
   2293       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2294       xav0.visitXTargetType(new Integer(4));
   2295       xav0.visitXOffset(new Integer(1));
   2296       xav0.visitEnd();
   2297       }
   2298       {
   2299       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2300       xav0.visit("value", "key");
   2301       xav0.visitXTargetType(new Integer(5));
   2302       xav0.visitXOffset(new Integer(1));
   2303       xav0.visitXLocationLength(new Integer(1));
   2304       xav0.visitXLocation(new Integer(0));
   2305       xav0.visitEnd();
   2306       }
   2307       {
   2308       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2309       xav0.visit("value", "value");
   2310       xav0.visitXTargetType(new Integer(5));
   2311       xav0.visitXOffset(new Integer(1));
   2312       xav0.visitXLocationLength(new Integer(1));
   2313       xav0.visitXLocation(new Integer(1));
   2314       xav0.visitEnd();
   2315       }
   2316       {
   2317       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2318       xav0.visit("value", "key element");
   2319       xav0.visitXTargetType(new Integer(5));
   2320       xav0.visitXOffset(new Integer(1));
   2321       xav0.visitXLocationLength(new Integer(2));
   2322       xav0.visitXLocation(new Integer(0));
   2323       xav0.visitXLocation(new Integer(0));
   2324       xav0.visitEnd();
   2325       }
   2326       {
   2327       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2328       xav0.visit("value", "value array");
   2329       xav0.visitXTargetType(new Integer(5));
   2330       xav0.visitXOffset(new Integer(1));
   2331       xav0.visitXLocationLength(new Integer(2));
   2332       xav0.visitXLocation(new Integer(1));
   2333       xav0.visitXLocation(new Integer(0));
   2334       xav0.visitEnd();
   2335       }
   2336       {
   2337       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2338       xav0.visit("value", "value array element");
   2339       xav0.visitXTargetType(new Integer(5));
   2340       xav0.visitXOffset(new Integer(1));
   2341       xav0.visitXLocationLength(new Integer(3));
   2342       xav0.visitXLocation(new Integer(1));
   2343       xav0.visitXLocation(new Integer(0));
   2344       xav0.visitXLocation(new Integer(0));
   2345       xav0.visitEnd();
   2346       }
   2347       mv.visitCode();
   2348       Label l0 = new Label();
   2349       mv.visitLabel(l0);
   2350       mv.visitLineNumber(27, l0);
   2351       mv.visitVarInsn(ALOAD, 0);
   2352       mv.visitTypeInsn(NEW, "java/util/HashMap");
   2353       mv.visitInsn(DUP);
   2354       mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashMap", "<init>", "()V");
   2355       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;");
   2356       Label l1 = new Label();
   2357       mv.visitLabel(l1);
   2358       mv.visitLineNumber(28, l1);
   2359       mv.visitInsn(RETURN);
   2360       Label l2 = new Label();
   2361       mv.visitLabel(l2);
   2362       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreationGenericArray;", null, l0, l2, 0);
   2363       mv.visitMaxs(3, 1);
   2364       mv.visitEnd();
   2365       }
   2366       cw.visitEnd();
   2367 
   2368       return cw.toByteArray();
   2369       }
   2370 
   2371     public static byte[] dumpTypecast () throws Exception {
   2372 
   2373       ClassWriter cw = new ClassWriter(false);
   2374       FieldVisitor fv;
   2375       MethodVisitor mv;
   2376       AnnotationVisitor av0;
   2377       TypeAnnotationVisitor xav0;
   2378 
   2379       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestTypecast", null, "java/lang/Object", null);
   2380 
   2381       cw.visitSource("TestTypecast.java", null);
   2382 
   2383       {
   2384       fv = cw.visitField(ACC_PUBLIC, "o", "Ljava/lang/Object;", null, null);
   2385       fv.visitEnd();
   2386       }
   2387       {
   2388       fv = cw.visitField(ACC_PUBLIC, "s", "Ljava/lang/String;", null, null);
   2389       fv.visitEnd();
   2390       }
   2391       {
   2392       fv = cw.visitField(ACC_PUBLIC, "i", "Ljava/lang/Integer;", null, null);
   2393       fv.visitEnd();
   2394       }
   2395       {
   2396       fv = cw.visitField(ACC_PUBLIC, "b", "Ljava/lang/Boolean;", null, null);
   2397       fv.visitEnd();
   2398       }
   2399       {
   2400       fv = cw.visitField(ACC_PUBLIC, "set", "Ljava/util/Set;", null, null);
   2401       fv.visitEnd();
   2402       }
   2403       {
   2404       fv = cw.visitField(ACC_PUBLIC, "hset", "Ljava/util/HashSet;", null, null);
   2405       fv.visitEnd();
   2406       }
   2407       {
   2408       fv = cw.visitField(ACC_PUBLIC, "map", "Ljava/util/Map;", null, null);
   2409       fv.visitEnd();
   2410       }
   2411       {
   2412       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
   2413       mv.visitCode();
   2414       Label l0 = new Label();
   2415       mv.visitLabel(l0);
   2416       mv.visitLineNumber(7, l0);
   2417       mv.visitVarInsn(ALOAD, 0);
   2418       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
   2419       mv.visitInsn(RETURN);
   2420       Label l1 = new Label();
   2421       mv.visitLabel(l1);
   2422       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecast;", null, l0, l1, 0);
   2423       mv.visitMaxs(1, 1);
   2424       mv.visitEnd();
   2425       }
   2426       {
   2427       mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null);
   2428       {
   2429       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2430       xav0.visitXTargetType(new Integer(0));
   2431       xav0.visitXOffset(new Integer(21));
   2432       xav0.visitEnd();
   2433       }
   2434       {
   2435       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2436       xav0.visit("value", "second cast");
   2437       xav0.visitXTargetType(new Integer(0));
   2438       xav0.visitXOffset(new Integer(32));
   2439       xav0.visitEnd();
   2440       }
   2441       {
   2442       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true);
   2443       xav0.visit("fieldA", new Integer(3));
   2444       xav0.visit("fieldB", "cast");
   2445       xav0.visitXTargetType(new Integer(0));
   2446       xav0.visitXOffset(new Integer(59));
   2447       xav0.visitEnd();
   2448       }
   2449       {
   2450       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true);
   2451       xav0.visit("fieldA", new Integer(4));
   2452       xav0.visit("fieldB", "cast");
   2453       xav0.visitXTargetType(new Integer(0));
   2454       xav0.visitXOffset(new Integer(70));
   2455       xav0.visitEnd();
   2456       }
   2457       mv.visitCode();
   2458       Label l0 = new Label();
   2459       mv.visitLabel(l0);
   2460       mv.visitLineNumber(17, l0);
   2461       mv.visitVarInsn(ALOAD, 0);
   2462       mv.visitVarInsn(ALOAD, 0);
   2463       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;");
   2464       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;");
   2465       Label l1 = new Label();
   2466       mv.visitLabel(l1);
   2467       mv.visitLineNumber(18, l1);
   2468       mv.visitVarInsn(ALOAD, 0);
   2469       mv.visitVarInsn(ALOAD, 0);
   2470       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "s", "Ljava/lang/String;");
   2471       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;");
   2472       Label l2 = new Label();
   2473       mv.visitLabel(l2);
   2474       mv.visitLineNumber(19, l2);
   2475       mv.visitVarInsn(ALOAD, 0);
   2476       mv.visitVarInsn(ALOAD, 0);
   2477       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;");
   2478       mv.visitTypeInsn(CHECKCAST, "java/lang/String");
   2479       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "s", "Ljava/lang/String;");
   2480       Label l3 = new Label();
   2481       mv.visitLabel(l3);
   2482       mv.visitLineNumber(20, l3);
   2483       mv.visitVarInsn(ALOAD, 0);
   2484       mv.visitVarInsn(ALOAD, 0);
   2485       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;");
   2486       mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
   2487       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "i", "Ljava/lang/Integer;");
   2488       Label l4 = new Label();
   2489       mv.visitLabel(l4);
   2490       mv.visitLineNumber(21, l4);
   2491       mv.visitVarInsn(ALOAD, 0);
   2492       mv.visitVarInsn(ALOAD, 0);
   2493       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "b", "Ljava/lang/Boolean;");
   2494       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "b", "Ljava/lang/Boolean;");
   2495       Label l5 = new Label();
   2496       mv.visitLabel(l5);
   2497       mv.visitLineNumber(22, l5);
   2498       mv.visitVarInsn(ALOAD, 0);
   2499       mv.visitVarInsn(ALOAD, 0);
   2500       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "hset", "Ljava/util/HashSet;");
   2501       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "set", "Ljava/util/Set;");
   2502       Label l6 = new Label();
   2503       mv.visitLabel(l6);
   2504       mv.visitLineNumber(23, l6);
   2505       mv.visitVarInsn(ALOAD, 0);
   2506       mv.visitVarInsn(ALOAD, 0);
   2507       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "set", "Ljava/util/Set;");
   2508       mv.visitTypeInsn(CHECKCAST, "java/util/HashSet");
   2509       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "hset", "Ljava/util/HashSet;");
   2510       Label l7 = new Label();
   2511       mv.visitLabel(l7);
   2512       mv.visitLineNumber(24, l7);
   2513       mv.visitVarInsn(ALOAD, 0);
   2514       mv.visitVarInsn(ALOAD, 0);
   2515       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "hset", "Ljava/util/HashSet;");
   2516       mv.visitTypeInsn(CHECKCAST, "java/util/Map");
   2517       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "map", "Ljava/util/Map;");
   2518       Label l8 = new Label();
   2519       mv.visitLabel(l8);
   2520       mv.visitLineNumber(25, l8);
   2521       mv.visitInsn(ICONST_0);
   2522       mv.visitVarInsn(ISTORE, 1);
   2523       Label l9 = new Label();
   2524       mv.visitLabel(l9);
   2525       mv.visitLineNumber(26, l9);
   2526       mv.visitVarInsn(ALOAD, 0);
   2527       mv.visitVarInsn(ILOAD, 1);
   2528       mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;");
   2529       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "i", "Ljava/lang/Integer;");
   2530       Label l10 = new Label();
   2531       mv.visitLabel(l10);
   2532       mv.visitLineNumber(27, l10);
   2533       mv.visitVarInsn(ALOAD, 0);
   2534       mv.visitVarInsn(ILOAD, 1);
   2535       mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;");
   2536       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;");
   2537       Label l11 = new Label();
   2538       mv.visitLabel(l11);
   2539       mv.visitLineNumber(28, l11);
   2540       mv.visitInsn(RETURN);
   2541       Label l12 = new Label();
   2542       mv.visitLabel(l12);
   2543       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecast;", null, l0, l12, 0);
   2544       mv.visitLocalVariable("pi", "I", null, l9, l12, 1);
   2545       mv.visitMaxs(2, 2);
   2546       mv.visitEnd();
   2547       }
   2548       cw.visitEnd();
   2549 
   2550       return cw.toByteArray();
   2551       }
   2552     public static byte[] dumpTypecastGenericArray () throws Exception {
   2553 
   2554       ClassWriter cw = new ClassWriter(false);
   2555       FieldVisitor fv;
   2556       MethodVisitor mv;
   2557       AnnotationVisitor av0;
   2558       TypeAnnotationVisitor xav0;
   2559 
   2560       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestTypecastGenericArray", null, "java/lang/Object", null);
   2561 
   2562       cw.visitSource("TestTypecastGenericArray.java", null);
   2563 
   2564       {
   2565       fv = cw.visitField(ACC_PUBLIC, "o", "Ljava/lang/Object;", null, null);
   2566       fv.visitEnd();
   2567       }
   2568       {
   2569       fv = cw.visitField(ACC_PUBLIC, "s", "Ljava/lang/String;", null, null);
   2570       fv.visitEnd();
   2571       }
   2572       {
   2573       fv = cw.visitField(ACC_PUBLIC, "i", "Ljava/lang/Integer;", null, null);
   2574       fv.visitEnd();
   2575       }
   2576       {
   2577       fv = cw.visitField(ACC_PUBLIC, "b", "Ljava/lang/Boolean;", null, null);
   2578       fv.visitEnd();
   2579       }
   2580       {
   2581       fv = cw.visitField(ACC_PUBLIC, "set", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/String;>;", null);
   2582       fv.visitEnd();
   2583       }
   2584       {
   2585       fv = cw.visitField(ACC_PUBLIC, "hset", "Ljava/util/HashSet;", "Ljava/util/HashSet<Ljava/util/Set<Ljava/lang/String;>;>;", null);
   2586       fv.visitEnd();
   2587       }
   2588       {
   2589       fv = cw.visitField(ACC_PUBLIC, "map", "Ljava/util/Map;", "Ljava/util/Map<Ljava/util/Set<Ljava/lang/String;>;Ljava/util/Set<Ljava/util/Map<Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;>;>;>;", null);
   2590       fv.visitEnd();
   2591       }
   2592       {
   2593       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
   2594       mv.visitCode();
   2595       Label l0 = new Label();
   2596       mv.visitLabel(l0);
   2597       mv.visitLineNumber(8, l0);
   2598       mv.visitVarInsn(ALOAD, 0);
   2599       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
   2600       mv.visitInsn(RETURN);
   2601       Label l1 = new Label();
   2602       mv.visitLabel(l1);
   2603       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l1, 0);
   2604       mv.visitMaxs(1, 1);
   2605       mv.visitEnd();
   2606       }
   2607       {
   2608       mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null);
   2609       {
   2610       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2611       xav0.visitXTargetType(new Integer(0));
   2612       xav0.visitXOffset(new Integer(21));
   2613       xav0.visitEnd();
   2614       }
   2615       {
   2616       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2617       xav0.visit("value", "second");
   2618       xav0.visitXTargetType(new Integer(0));
   2619       xav0.visitXOffset(new Integer(32));
   2620       xav0.visitEnd();
   2621       }
   2622       mv.visitCode();
   2623       Label l0 = new Label();
   2624       mv.visitLabel(l0);
   2625       mv.visitLineNumber(18, l0);
   2626       mv.visitVarInsn(ALOAD, 0);
   2627       mv.visitVarInsn(ALOAD, 0);
   2628       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;");
   2629       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;");
   2630       Label l1 = new Label();
   2631       mv.visitLabel(l1);
   2632       mv.visitLineNumber(19, l1);
   2633       mv.visitVarInsn(ALOAD, 0);
   2634       mv.visitVarInsn(ALOAD, 0);
   2635       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "s", "Ljava/lang/String;");
   2636       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;");
   2637       Label l2 = new Label();
   2638       mv.visitLabel(l2);
   2639       mv.visitLineNumber(20, l2);
   2640       mv.visitVarInsn(ALOAD, 0);
   2641       mv.visitVarInsn(ALOAD, 0);
   2642       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;");
   2643       mv.visitTypeInsn(CHECKCAST, "java/lang/String");
   2644       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "s", "Ljava/lang/String;");
   2645       Label l3 = new Label();
   2646       mv.visitLabel(l3);
   2647       mv.visitLineNumber(21, l3);
   2648       mv.visitVarInsn(ALOAD, 0);
   2649       mv.visitVarInsn(ALOAD, 0);
   2650       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;");
   2651       mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
   2652       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "i", "Ljava/lang/Integer;");
   2653       Label l4 = new Label();
   2654       mv.visitLabel(l4);
   2655       mv.visitLineNumber(22, l4);
   2656       mv.visitVarInsn(ALOAD, 0);
   2657       mv.visitVarInsn(ALOAD, 0);
   2658       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "b", "Ljava/lang/Boolean;");
   2659       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "b", "Ljava/lang/Boolean;");
   2660       Label l5 = new Label();
   2661       mv.visitLabel(l5);
   2662       mv.visitLineNumber(23, l5);
   2663       mv.visitInsn(RETURN);
   2664       Label l6 = new Label();
   2665       mv.visitLabel(l6);
   2666       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l6, 0);
   2667       mv.visitMaxs(2, 1);
   2668       mv.visitEnd();
   2669       }
   2670       {
   2671       mv = cw.visitMethod(ACC_PUBLIC, "test2", "()V", null, null);
   2672       {
   2673       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2674       xav0.visitXTargetType(new Integer(1));
   2675       xav0.visitXOffset(new Integer(5));
   2676       xav0.visitXLocationLength(new Integer(1));
   2677       xav0.visitXLocation(new Integer(0));
   2678       xav0.visitEnd();
   2679       }
   2680       {
   2681       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2682       xav0.visit("value", "B");
   2683       xav0.visitXTargetType(new Integer(0));
   2684       xav0.visitXOffset(new Integer(16));
   2685       xav0.visitEnd();
   2686       }
   2687       {
   2688       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true);
   2689       xav0.visit("fieldA", new Integer(2));
   2690       xav0.visit("fieldB", "");
   2691       xav0.visitXTargetType(new Integer(1));
   2692       xav0.visitXOffset(new Integer(16));
   2693       xav0.visitXLocationLength(new Integer(1));
   2694       xav0.visitXLocation(new Integer(0));
   2695       xav0.visitEnd();
   2696       }
   2697       mv.visitCode();
   2698       Label l0 = new Label();
   2699       mv.visitLabel(l0);
   2700       mv.visitLineNumber(27, l0);
   2701       mv.visitVarInsn(ALOAD, 0);
   2702       mv.visitVarInsn(ALOAD, 0);
   2703       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;");
   2704       mv.visitTypeInsn(CHECKCAST, "java/util/HashSet");
   2705       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "set", "Ljava/util/Set;");
   2706       Label l1 = new Label();
   2707       mv.visitLabel(l1);
   2708       mv.visitLineNumber(28, l1);
   2709       mv.visitVarInsn(ALOAD, 0);
   2710       mv.visitVarInsn(ALOAD, 0);
   2711       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;");
   2712       mv.visitTypeInsn(CHECKCAST, "java/util/Set");
   2713       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "set", "Ljava/util/Set;");
   2714       Label l2 = new Label();
   2715       mv.visitLabel(l2);
   2716       mv.visitLineNumber(29, l2);
   2717       mv.visitInsn(RETURN);
   2718       Label l3 = new Label();
   2719       mv.visitLabel(l3);
   2720       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l3, 0);
   2721       mv.visitMaxs(2, 1);
   2722       mv.visitEnd();
   2723       }
   2724       {
   2725       mv = cw.visitMethod(ACC_PUBLIC, "test3", "()V", null, null);
   2726       {
   2727       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2728       xav0.visitXTargetType(new Integer(1));
   2729       xav0.visitXOffset(new Integer(20));
   2730       xav0.visitXLocationLength(new Integer(1));
   2731       xav0.visitXLocation(new Integer(0));
   2732       xav0.visitEnd();
   2733       }
   2734       {
   2735       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2736       xav0.visit("value", "v");
   2737       xav0.visitXTargetType(new Integer(1));
   2738       xav0.visitXOffset(new Integer(23));
   2739       xav0.visitXLocationLength(new Integer(1));
   2740       xav0.visitXLocation(new Integer(0));
   2741       xav0.visitEnd();
   2742       }
   2743       mv.visitCode();
   2744       Label l0 = new Label();
   2745       mv.visitLabel(l0);
   2746       mv.visitLineNumber(33, l0);
   2747       mv.visitVarInsn(ALOAD, 0);
   2748       mv.visitVarInsn(ALOAD, 0);
   2749       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "map", "Ljava/util/Map;");
   2750       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "keySet", "()Ljava/util/Set;");
   2751       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "iterator", "()Ljava/util/Iterator;");
   2752       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;");
   2753       mv.visitTypeInsn(CHECKCAST, "java/util/HashSet");
   2754       mv.visitTypeInsn(CHECKCAST, "java/util/HashSet");
   2755       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "set", "Ljava/util/Set;");
   2756       Label l1 = new Label();
   2757       mv.visitLabel(l1);
   2758       mv.visitLineNumber(34, l1);
   2759       mv.visitVarInsn(ALOAD, 0);
   2760       mv.visitVarInsn(ALOAD, 0);
   2761       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;");
   2762       mv.visitTypeInsn(CHECKCAST, "java/util/HashSet");
   2763       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "hset", "Ljava/util/HashSet;");
   2764       Label l2 = new Label();
   2765       mv.visitLabel(l2);
   2766       mv.visitLineNumber(35, l2);
   2767       mv.visitInsn(RETURN);
   2768       Label l3 = new Label();
   2769       mv.visitLabel(l3);
   2770       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l3, 0);
   2771       mv.visitMaxs(2, 1);
   2772       mv.visitEnd();
   2773       }
   2774       {
   2775       mv = cw.visitMethod(ACC_PUBLIC, "test4", "()V", null, null);
   2776       {
   2777       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2778       xav0.visitXTargetType(new Integer(1));
   2779       xav0.visitXOffset(new Integer(5));
   2780       xav0.visitXLocationLength(new Integer(1));
   2781       xav0.visitXLocation(new Integer(0));
   2782       xav0.visitEnd();
   2783       }
   2784       {
   2785       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2786       xav0.visit("value", "second");
   2787       xav0.visitXTargetType(new Integer(1));
   2788       xav0.visitXOffset(new Integer(5));
   2789       xav0.visitXLocationLength(new Integer(1));
   2790       xav0.visitXLocation(new Integer(1));
   2791       xav0.visitEnd();
   2792       }
   2793       {
   2794       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2795       xav0.visitXTargetType(new Integer(0));
   2796       xav0.visitXOffset(new Integer(15));
   2797       xav0.visitEnd();
   2798       }
   2799       {
   2800       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2801       xav0.visitXTargetType(new Integer(1));
   2802       xav0.visitXOffset(new Integer(15));
   2803       xav0.visitXLocationLength(new Integer(1));
   2804       xav0.visitXLocation(new Integer(0));
   2805       xav0.visitEnd();
   2806       }
   2807       {
   2808       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2809       xav0.visit("value", "set");
   2810       xav0.visitXTargetType(new Integer(0));
   2811       xav0.visitXOffset(new Integer(30));
   2812       xav0.visitEnd();
   2813       }
   2814       {
   2815       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   2816       xav0.visitXTargetType(new Integer(1));
   2817       xav0.visitXOffset(new Integer(43));
   2818       xav0.visitXLocationLength(new Integer(1));
   2819       xav0.visitXLocation(new Integer(1));
   2820       xav0.visitEnd();
   2821       }
   2822       {
   2823       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2824       xav0.visit("value", "on the set");
   2825       xav0.visitXTargetType(new Integer(0));
   2826       xav0.visitXOffset(new Integer(53));
   2827       xav0.visitEnd();
   2828       }
   2829       {
   2830       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2831       xav0.visit("value", "on value");
   2832       xav0.visitXTargetType(new Integer(1));
   2833       xav0.visitXOffset(new Integer(53));
   2834       xav0.visitXLocationLength(new Integer(1));
   2835       xav0.visitXLocation(new Integer(0));
   2836       xav0.visitEnd();
   2837       }
   2838       mv.visitCode();
   2839       Label l0 = new Label();
   2840       mv.visitLabel(l0);
   2841       mv.visitLineNumber(39, l0);
   2842       mv.visitVarInsn(ALOAD, 0);
   2843       mv.visitVarInsn(ALOAD, 0);
   2844       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;");
   2845       mv.visitTypeInsn(CHECKCAST, "java/util/Map");
   2846       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "map", "Ljava/util/Map;");
   2847       Label l1 = new Label();
   2848       mv.visitLabel(l1);
   2849       mv.visitLineNumber(40, l1);
   2850       mv.visitVarInsn(ALOAD, 0);
   2851       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;");
   2852       mv.visitTypeInsn(CHECKCAST, "java/util/Set");
   2853       mv.visitVarInsn(ASTORE, 1);
   2854       Label l2 = new Label();
   2855       mv.visitLabel(l2);
   2856       mv.visitLineNumber(41, l2);
   2857       mv.visitVarInsn(ALOAD, 0);
   2858       mv.visitVarInsn(ALOAD, 0);
   2859       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "map", "Ljava/util/Map;");
   2860       mv.visitInsn(ACONST_NULL);
   2861       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
   2862       mv.visitTypeInsn(CHECKCAST, "java/util/Set");
   2863       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "iterator", "()Ljava/util/Iterator;");
   2864       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;");
   2865       mv.visitTypeInsn(CHECKCAST, "java/util/Map");
   2866       mv.visitLdcInsn("");
   2867       mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
   2868       mv.visitTypeInsn(CHECKCAST, "java/util/Set");
   2869       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "set", "Ljava/util/Set;");
   2870       Label l3 = new Label();
   2871       mv.visitLabel(l3);
   2872       mv.visitLineNumber(42, l3);
   2873       mv.visitInsn(RETURN);
   2874       Label l4 = new Label();
   2875       mv.visitLabel(l4);
   2876       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l4, 0);
   2877       mv.visitLocalVariable("t", "Ljava/util/Set;", "Ljava/util/Set<Ljava/util/Map<Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;>;>;", l2, l4, 1);
   2878       mv.visitMaxs(3, 2);
   2879       mv.visitEnd();
   2880       }
   2881       {
   2882       mv = cw.visitMethod(ACC_PUBLIC, "test5", "()V", null, null);
   2883       {
   2884       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2885       xav0.visit("value", "string is key");
   2886       xav0.visitXTargetType(new Integer(1));
   2887       xav0.visitXOffset(new Integer(4));
   2888       xav0.visitXLocationLength(new Integer(1));
   2889       xav0.visitXLocation(new Integer(0));
   2890       xav0.visitEnd();
   2891       }
   2892       {
   2893       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2894       xav0.visit("value", "2d-array is value");
   2895       xav0.visitXTargetType(new Integer(1));
   2896       xav0.visitXOffset(new Integer(4));
   2897       xav0.visitXLocationLength(new Integer(1));
   2898       xav0.visitXLocation(new Integer(1));
   2899       xav0.visitEnd();
   2900       }
   2901       {
   2902       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2903       xav0.visit("value", "first dimension");
   2904       xav0.visitXTargetType(new Integer(1));
   2905       xav0.visitXOffset(new Integer(4));
   2906       xav0.visitXLocationLength(new Integer(2));
   2907       xav0.visitXLocation(new Integer(1));
   2908       xav0.visitXLocation(new Integer(0));
   2909       xav0.visitEnd();
   2910       }
   2911       {
   2912       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   2913       xav0.visit("value", "second dimension");
   2914       xav0.visitXTargetType(new Integer(1));
   2915       xav0.visitXOffset(new Integer(4));
   2916       xav0.visitXLocationLength(new Integer(2));
   2917       xav0.visitXLocation(new Integer(1));
   2918       xav0.visitXLocation(new Integer(1));
   2919       xav0.visitEnd();
   2920       }
   2921       mv.visitCode();
   2922       Label l0 = new Label();
   2923       mv.visitLabel(l0);
   2924       mv.visitLineNumber(47, l0);
   2925       mv.visitVarInsn(ALOAD, 0);
   2926       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;");
   2927       mv.visitTypeInsn(CHECKCAST, "java/util/Map");
   2928       mv.visitVarInsn(ASTORE, 1);
   2929       Label l1 = new Label();
   2930       mv.visitLabel(l1);
   2931       mv.visitLineNumber(48, l1);
   2932       mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
   2933       mv.visitVarInsn(ALOAD, 1);
   2934       mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/Object;)V");
   2935       Label l2 = new Label();
   2936       mv.visitLabel(l2);
   2937       mv.visitLineNumber(49, l2);
   2938       mv.visitInsn(RETURN);
   2939       Label l3 = new Label();
   2940       mv.visitLabel(l3);
   2941       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l3, 0);
   2942       mv.visitLocalVariable("m", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;[[Ljava/lang/String;>;", l1, l3, 1);
   2943       mv.visitMaxs(2, 2);
   2944       mv.visitEnd();
   2945       }
   2946       cw.visitEnd();
   2947 
   2948       return cw.toByteArray();
   2949       }
   2950 
   2951     public static byte[] dumpTypeTest () throws Exception {
   2952 
   2953       ClassWriter cw = new ClassWriter(false);
   2954       FieldVisitor fv;
   2955       MethodVisitor mv;
   2956       AnnotationVisitor av0;
   2957       TypeAnnotationVisitor xav0;
   2958 
   2959       cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestTypeTest", null, "java/lang/Object", null);
   2960 
   2961       cw.visitSource("TestTypeTest.java", null);
   2962 
   2963       {
   2964       fv = cw.visitField(ACC_PUBLIC, "o", "Ljava/lang/Object;", null, null);
   2965       fv.visitEnd();
   2966       }
   2967       {
   2968       fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$0", "Ljava/lang/Class;", null, null);
   2969       fv.visitEnd();
   2970       }
   2971       {
   2972       fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$1", "Ljava/lang/Class;", null, null);
   2973       fv.visitEnd();
   2974       }
   2975       {
   2976       fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$2", "Ljava/lang/Class;", null, null);
   2977       fv.visitEnd();
   2978       }
   2979       {
   2980       fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$3", "Ljava/lang/Class;", null, null);
   2981       fv.visitEnd();
   2982       }
   2983       {
   2984       fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$4", "Ljava/lang/Class;", null, null);
   2985       fv.visitEnd();
   2986       }
   2987       {
   2988       fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$5", "Ljava/lang/Class;", null, null);
   2989       fv.visitEnd();
   2990       }
   2991       {
   2992       mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
   2993       mv.visitCode();
   2994       Label l0 = new Label();
   2995       mv.visitLabel(l0);
   2996       mv.visitLineNumber(8, l0);
   2997       mv.visitVarInsn(ALOAD, 0);
   2998       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
   2999       mv.visitInsn(RETURN);
   3000       Label l1 = new Label();
   3001       mv.visitLabel(l1);
   3002       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypeTest;", null, l0, l1, 0);
   3003       mv.visitMaxs(1, 1);
   3004       mv.visitEnd();
   3005       }
   3006       {
   3007       mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null);
   3008       {
   3009       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   3010       xav0.visit("value", "ismap");
   3011       xav0.visitXTargetType(new Integer(2));
   3012       xav0.visitXOffset(new Integer(4));
   3013       xav0.visitEnd();
   3014       }
   3015       {
   3016       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   3017       xav0.visitXTargetType(new Integer(2));
   3018       xav0.visitXOffset(new Integer(14));
   3019       xav0.visitEnd();
   3020       }
   3021       {
   3022       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   3023       xav0.visit("value", "islist");
   3024       xav0.visitXTargetType(new Integer(2));
   3025       xav0.visitXOffset(new Integer(24));
   3026       xav0.visitEnd();
   3027       }
   3028       mv.visitCode();
   3029       Label l0 = new Label();
   3030       mv.visitLabel(l0);
   3031       mv.visitLineNumber(12, l0);
   3032       mv.visitVarInsn(ALOAD, 0);
   3033       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3034       mv.visitTypeInsn(INSTANCEOF, "java/util/Map");
   3035       Label l1 = new Label();
   3036       mv.visitJumpInsn(IFEQ, l1);
   3037       Label l2 = new Label();
   3038       mv.visitLabel(l2);
   3039       mv.visitLineNumber(13, l2);
   3040       mv.visitVarInsn(ALOAD, 0);
   3041       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3042       mv.visitTypeInsn(INSTANCEOF, "java/util/Set");
   3043       mv.visitJumpInsn(IFEQ, l1);
   3044       Label l3 = new Label();
   3045       mv.visitLabel(l3);
   3046       mv.visitLineNumber(14, l3);
   3047       mv.visitVarInsn(ALOAD, 0);
   3048       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3049       mv.visitTypeInsn(INSTANCEOF, "java/util/List");
   3050       mv.visitJumpInsn(IFEQ, l1);
   3051       Label l4 = new Label();
   3052       mv.visitLabel(l4);
   3053       mv.visitLineNumber(15, l4);
   3054       mv.visitVarInsn(ALOAD, 0);
   3055       mv.visitTypeInsn(NEW, "java/lang/Object");
   3056       mv.visitInsn(DUP);
   3057       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
   3058       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3059       mv.visitLabel(l1);
   3060       mv.visitLineNumber(19, l1);
   3061       mv.visitInsn(RETURN);
   3062       Label l5 = new Label();
   3063       mv.visitLabel(l5);
   3064       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypeTest;", null, l0, l5, 0);
   3065       mv.visitMaxs(3, 1);
   3066       mv.visitEnd();
   3067       }
   3068       {
   3069       mv = cw.visitMethod(ACC_PUBLIC, "test2", "()V", null, null);
   3070       {
   3071       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   3072       xav0.visitXTargetType(new Integer(2));
   3073       xav0.visitXOffset(new Integer(4));
   3074       xav0.visitEnd();
   3075       }
   3076       {
   3077       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   3078       xav0.visitXTargetType(new Integer(2));
   3079       xav0.visitXOffset(new Integer(14));
   3080       xav0.visitEnd();
   3081       }
   3082       mv.visitCode();
   3083       Label l0 = new Label();
   3084       mv.visitLabel(l0);
   3085       mv.visitLineNumber(22, l0);
   3086       mv.visitVarInsn(ALOAD, 0);
   3087       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3088       mv.visitTypeInsn(INSTANCEOF, "java/util/List");
   3089       Label l1 = new Label();
   3090       mv.visitJumpInsn(IFEQ, l1);
   3091       Label l2 = new Label();
   3092       mv.visitLabel(l2);
   3093       mv.visitLineNumber(23, l2);
   3094       mv.visitVarInsn(ALOAD, 0);
   3095       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3096       mv.visitTypeInsn(INSTANCEOF, "java/util/ArrayList");
   3097       mv.visitJumpInsn(IFEQ, l1);
   3098       Label l3 = new Label();
   3099       mv.visitLabel(l3);
   3100       mv.visitLineNumber(24, l3);
   3101       mv.visitVarInsn(ALOAD, 0);
   3102       mv.visitTypeInsn(NEW, "java/lang/Object");
   3103       mv.visitInsn(DUP);
   3104       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
   3105       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3106       mv.visitLabel(l1);
   3107       mv.visitLineNumber(27, l1);
   3108       mv.visitInsn(RETURN);
   3109       Label l4 = new Label();
   3110       mv.visitLabel(l4);
   3111       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypeTest;", null, l0, l4, 0);
   3112       mv.visitMaxs(3, 1);
   3113       mv.visitEnd();
   3114       }
   3115       {
   3116       mv = cw.visitMethod(ACC_PUBLIC, "test3", "()V", null, null);
   3117       {
   3118       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   3119       xav0.visit("value", "instanceof object");
   3120       xav0.visitXTargetType(new Integer(2));
   3121       xav0.visitXOffset(new Integer(4));
   3122       xav0.visitEnd();
   3123       }
   3124       mv.visitCode();
   3125       Label l0 = new Label();
   3126       mv.visitLabel(l0);
   3127       mv.visitLineNumber(30, l0);
   3128       mv.visitVarInsn(ALOAD, 0);
   3129       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3130       mv.visitTypeInsn(INSTANCEOF, "java/lang/Object");
   3131       Label l1 = new Label();
   3132       mv.visitJumpInsn(IFNE, l1);
   3133       Label l2 = new Label();
   3134       mv.visitLabel(l2);
   3135       mv.visitLineNumber(31, l2);
   3136       mv.visitVarInsn(ALOAD, 0);
   3137       mv.visitTypeInsn(NEW, "java/lang/Object");
   3138       mv.visitInsn(DUP);
   3139       mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
   3140       mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3141       mv.visitLabel(l1);
   3142       mv.visitLineNumber(33, l1);
   3143       mv.visitInsn(RETURN);
   3144       Label l3 = new Label();
   3145       mv.visitLabel(l3);
   3146       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypeTest;", null, l0, l3, 0);
   3147       mv.visitMaxs(3, 1);
   3148       mv.visitEnd();
   3149       }
   3150       {
   3151       mv = cw.visitMethod(ACC_PUBLIC, "test4", "()V", null, null);
   3152       {
   3153       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   3154       xav0.visitXTargetType(new Integer(2));
   3155       xav0.visitXOffset(new Integer(12));
   3156       xav0.visitEnd();
   3157       }
   3158       {
   3159       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   3160       xav0.visit("value", "second");
   3161       xav0.visitXTargetType(new Integer(2));
   3162       xav0.visitXOffset(new Integer(28));
   3163       xav0.visitEnd();
   3164       }
   3165       {
   3166       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   3167       xav0.visitXTargetType(new Integer(2));
   3168       xav0.visitXOffset(new Integer(44));
   3169       xav0.visitEnd();
   3170       }
   3171       {
   3172       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true);
   3173       xav0.visit("value", "fourth");
   3174       xav0.visitXTargetType(new Integer(2));
   3175       xav0.visitXOffset(new Integer(60));
   3176       xav0.visitEnd();
   3177       }
   3178       {
   3179       xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true);
   3180       xav0.visitXTargetType(new Integer(2));
   3181       xav0.visitXOffset(new Integer(76));
   3182       xav0.visitEnd();
   3183       }
   3184       mv.visitCode();
   3185       Label l0 = new Label();
   3186       mv.visitLabel(l0);
   3187       mv.visitLineNumber(36, l0);
   3188       mv.visitVarInsn(ALOAD, 0);
   3189       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3190       mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;");
   3191       mv.visitVarInsn(ASTORE, 1);
   3192       Label l1 = new Label();
   3193       mv.visitLabel(l1);
   3194       mv.visitLineNumber(37, l1);
   3195       mv.visitVarInsn(ALOAD, 0);
   3196       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3197       mv.visitTypeInsn(INSTANCEOF, "java/lang/Boolean");
   3198       Label l2 = new Label();
   3199       mv.visitJumpInsn(IFEQ, l2);
   3200       Label l3 = new Label();
   3201       mv.visitLabel(l3);
   3202       mv.visitLineNumber(38, l3);
   3203       mv.visitLdcInsn(Type.getType("Ljava/lang/Boolean;"));
   3204       mv.visitVarInsn(ASTORE, 1);
   3205       Label l4 = new Label();
   3206       mv.visitJumpInsn(GOTO, l4);
   3207       mv.visitLabel(l2);
   3208       mv.visitLineNumber(39, l2);
   3209       mv.visitVarInsn(ALOAD, 0);
   3210       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3211       mv.visitTypeInsn(INSTANCEOF, "java/lang/Integer");
   3212       Label l5 = new Label();
   3213       mv.visitJumpInsn(IFEQ, l5);
   3214       Label l6 = new Label();
   3215       mv.visitLabel(l6);
   3216       mv.visitLineNumber(40, l6);
   3217       mv.visitLdcInsn(Type.getType("Ljava/lang/Integer;"));
   3218       mv.visitVarInsn(ASTORE, 1);
   3219       mv.visitJumpInsn(GOTO, l4);
   3220       mv.visitLabel(l5);
   3221       mv.visitLineNumber(41, l5);
   3222       mv.visitVarInsn(ALOAD, 0);
   3223       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3224       mv.visitTypeInsn(INSTANCEOF, "java/lang/Character");
   3225       Label l7 = new Label();
   3226       mv.visitJumpInsn(IFEQ, l7);
   3227       Label l8 = new Label();
   3228       mv.visitLabel(l8);
   3229       mv.visitLineNumber(42, l8);
   3230       mv.visitLdcInsn(Type.getType("Ljava/lang/Character;"));
   3231       mv.visitVarInsn(ASTORE, 1);
   3232       mv.visitJumpInsn(GOTO, l4);
   3233       mv.visitLabel(l7);
   3234       mv.visitLineNumber(43, l7);
   3235       mv.visitVarInsn(ALOAD, 0);
   3236       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3237       mv.visitTypeInsn(INSTANCEOF, "java/lang/String");
   3238       Label l9 = new Label();
   3239       mv.visitJumpInsn(IFEQ, l9);
   3240       Label l10 = new Label();
   3241       mv.visitLabel(l10);
   3242       mv.visitLineNumber(44, l10);
   3243       mv.visitLdcInsn(Type.getType("Ljava/lang/String;"));
   3244       mv.visitVarInsn(ASTORE, 1);
   3245       mv.visitJumpInsn(GOTO, l4);
   3246       mv.visitLabel(l9);
   3247       mv.visitLineNumber(45, l9);
   3248       mv.visitVarInsn(ALOAD, 0);
   3249       mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;");
   3250       mv.visitTypeInsn(INSTANCEOF, "java/util/List");
   3251       Label l11 = new Label();
   3252       mv.visitJumpInsn(IFEQ, l11);
   3253       Label l12 = new Label();
   3254       mv.visitLabel(l12);
   3255       mv.visitLineNumber(46, l12);
   3256       mv.visitLdcInsn(Type.getType("Ljava/util/List;"));
   3257       mv.visitVarInsn(ASTORE, 1);
   3258       mv.visitJumpInsn(GOTO, l4);
   3259       mv.visitLabel(l11);
   3260       mv.visitLineNumber(48, l11);
   3261       mv.visitFieldInsn(GETSTATIC, "java/lang/Integer", "TYPE", "Ljava/lang/Class;");
   3262       mv.visitVarInsn(ASTORE, 1);
   3263       mv.visitLabel(l4);
   3264       mv.visitLineNumber(50, l4);
   3265       mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
   3266       mv.visitVarInsn(ALOAD, 1);
   3267       mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/Object;)V");
   3268       Label l13 = new Label();
   3269       mv.visitLabel(l13);
   3270       mv.visitLineNumber(51, l13);
   3271       mv.visitInsn(RETURN);
   3272       Label l14 = new Label();
   3273       mv.visitLabel(l14);
   3274       mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypeTest;", null, l0, l14, 0);
   3275       mv.visitLocalVariable("c", "Ljava/lang/Class;", null, l1, l14, 1);
   3276       mv.visitMaxs(2, 2);
   3277       mv.visitEnd();
   3278       }
   3279       cw.visitEnd();
   3280 
   3281       return cw.toByteArray();
   3282       }
   3283 }
   3284