ClassFileAnalyzer (Can)
Home

 

Example: TestCanRuntimeInvisibleAnnotations2

Test directive .annotation invisible

 

/* TestCanRuntimeInvisibleAnnotations.java */ 

import java.lang.annotation.*;

@Documented
@Retention(value = RetentionPolicy.CLASS)
@Target(value = { ElementType.TYPE, ElementType.FIELD, ElementType.METHOD })
public @interface TestCanRuntimeInvisibleAnnotations {
  int id();
  String surname();
  String forename();
}

 

/* TestCanRuntimeVisibleAnnotations.java */ 

import java.lang.annotation.*;

@Documented
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.TYPE, ElementType.FIELD, ElementType.METHOD })
public @interface TestCanRuntimeVisibleAnnotations {
  int id();
  String surname();
  String forename();
}

 

/* TestCanRuntimeInvisibleAnnotations2.java */ 

import java.lang.annotation.*;


@TestCanRuntimeInvisibleAnnotations(id = 1, 
                                      surname = "Java", 
                                      forename = "Can")
@TestCanRuntimeVisibleAnnotations(id = 1, 
                                    surname = "World!", 
                                    forename = "Hello")
public class TestCanRuntimeInvisibleAnnotations2 {
  
  
  @Retention(value = RetentionPolicy.CLASS)
  @Target(value = { ElementType.ANNOTATION_TYPE,
                    ElementType.CONSTRUCTOR,
                    ElementType.FIELD,
                    ElementType.LOCAL_VARIABLE,
                    ElementType.METHOD,
                    ElementType.PACKAGE,
                    ElementType.PARAMETER,
                    ElementType.TYPE })
  public @interface Annotation1 {
    byte byteValue() default 1;
    char[] charValue() default { 'a', 'b' };
    double doubleValue();
    float floatValue();
    int[] intValue();
    long longValue();
    short shortValue();
    boolean[] booleanValue();
    String[] stringValue();
  }
  
  
  @Retention(value = RetentionPolicy.CLASS)
  @Target(value = { ElementType.ANNOTATION_TYPE,
                    ElementType.CONSTRUCTOR,
                    ElementType.FIELD,
                    ElementType.LOCAL_VARIABLE,
                    ElementType.METHOD,
                    ElementType.PACKAGE,
                    ElementType.PARAMETER,
                    ElementType.TYPE })
  public @interface Annotation2 {
    enum Direction { NORTH, SOUTH, WEST, EAST };
    Direction value1();
    Class value2();
    Class<? extends Number>[] value3() default Integer.class;
  }
  
  
  @Retention(value = RetentionPolicy.CLASS)
  @Target(value = { ElementType.ANNOTATION_TYPE,
                    ElementType.CONSTRUCTOR,
                    ElementType.FIELD,
                    ElementType.LOCAL_VARIABLE,
                    ElementType.METHOD,
                    ElementType.PACKAGE,
                    ElementType.PARAMETER,
                    ElementType.TYPE })
  public @interface Annotation3 {
    Annotation1[] value1() default {
            @Annotation1(byteValue = 1, intValue = 4),
            @Annotation1(charValue = { 'a', 'b' }, booleanValue = { true }),
            @Annotation1(floatValue = 1.23f, stringValue = { "Hello", "Can!" })};
    Annotation2[] value2() default {
            @Annotation2(value1 = 
                TestCanRuntimeInvisibleAnnotations2.Annotation2.Direction.NORTH,
                         value2 = Object.class,
                         value3 = { Byte.class, Integer.class }),
            @Annotation2(value1 = 
                TestCanRuntimeInvisibleAnnotations2.Annotation2.Direction.SOUTH,
                         value2 = StringBuffer.class,
                         value3 = { Float.class, Double.class })};
  }
  
  
  @Retention(value = RetentionPolicy.RUNTIME)
  @Target(value = { ElementType.ANNOTATION_TYPE,
                    ElementType.CONSTRUCTOR,
                    ElementType.FIELD,
                    ElementType.LOCAL_VARIABLE,
                    ElementType.METHOD,
                    ElementType.PACKAGE,
                    ElementType.PARAMETER,
                    ElementType.TYPE })
  public @interface Annotation4 {
    byte byteValue();
    String[] stringValue();
  }
  
  
  
  @Annotation1(byteValue = 1, 
               charValue = { 'a', 'b', 'c' },
               doubleValue = 1.23,
               floatValue = 4.56f,
               intValue = { 2, 3, 4 },
               longValue = 5,
               shortValue = 6,
               booleanValue = { true },
               stringValue = { "Hello World!" })
  @Annotation4(byteValue = 1, 
               stringValue = { "Hello World!" })
  String str = "Hello";
  
  
  @Annotation2(value1 = 
                TestCanRuntimeInvisibleAnnotations2.Annotation2.Direction.NORTH,
               value2 = Object.class,
               value3 = { Byte.class, Integer.class })
  @Annotation4(byteValue = 1, 
               stringValue = { "Hello World!" })
  public void method1(String s) {
    System.out.println(str + s);
  }
    
  
  @Annotation3(
    value1 = { @Annotation1(byteValue = 1, 
                            charValue = { 'a', 'b' }, 
                            doubleValue = 1.23,
                            floatValue = 4.56f,
                            intValue = { 2, 3, 4},
                            longValue = 5,
                            shortValue = 6,
                            booleanValue = { true, false },
                            stringValue = { "Hello", "Can!" }),
               @Annotation1(byteValue = 2, 
                            charValue = { 'c', 'd' }),
               @Annotation1(byteValue = 3) },
    value2 = { @Annotation2(value1 = 
                TestCanRuntimeInvisibleAnnotations2.Annotation2.Direction.NORTH,
                            value2 = Object.class,
                            value3 = { Byte.class, Integer.class }),
               @Annotation2(value1 = 
                TestCanRuntimeInvisibleAnnotations2.Annotation2.Direction.SOUTH,
                            value2 = StringBuffer.class,
                            value3 = { Float.class, Double.class })})
  @TestCanRuntimeVisibleAnnotations(id = 2, 
                                      surname = "World!", 
                                      forename = "Hello")
  public static void main(String[] args) {
    TestCanRuntimeInvisibleAnnotations2 tcria = 
        new TestCanRuntimeInvisibleAnnotations2(); 
    tcria.method1(" Java!");
  }
}

 

> javac TestCanRuntimeInvisibleAnnotations.java
> javac TestCanRuntimeVisibleAnnotations.java
> javac TestCanRuntimeInvisibleAnnotations2.java

> java ClassFileAnalyzer TestCanRuntimeInvisibleAnnotations.class
> java ClassFileAnalyzer TestCanRuntimeVisibleAnnotations.class
> java ClassFileAnalyzer TestCanRuntimeInvisibleAnnotations2.class
> java ClassFileAnalyzer TestClaraRuntimeInvisibleAnnotations2$Annotation1.class
> java ClassFileAnalyzer TestClaraRuntimeInvisibleAnnotations2$Annotation2.class
> java ClassFileAnalyzer TestClaraRuntimeInvisibleAnnotations2$Annotation3.class
> java ClassFileAnalyzer TestClaraRuntimeInvisibleAnnotations2$Annotation4.class
> java ClassFileAnalyzer 
             TestClaraRuntimeInvisibleAnnotations2$Annotation2$Direction.class

 

; TestCanRuntimeInvisibleAnnotations.j

; Generated by ClassFileAnalyzer (Can)
; Analyzer and Disassembler for Java class files
; (Jasmin syntax 2, http://jasmin.sourceforge.net)
;
; ClassFileAnalyzer, version 0.7.0 


.bytecode 50.0
.source TestCanRuntimeInvisibleAnnotations.java
.interface public abstract annotation TestCanRuntimeInvisibleAnnotations
; Flag ACC_SUPER not set, see JVM spec
.super java/lang/Object
.implements java/lang/annotation/Annotation
.annotation visible Ljava/lang/annotation/Documented;
  .end annotation
.annotation visible Ljava/lang/annotation/Retention;
  value e Ljava/lang/annotation/RetentionPolicy; = CLASS
  .end annotation
.annotation visible Ljava/lang/annotation/Target;
  value [e Ljava/lang/annotation/ElementType; = TYPE FIELD METHOD
  .end annotation

.method public abstract id()I
.end method

.method public abstract surname()Ljava/lang/String;
.end method

.method public abstract forename()Ljava/lang/String;
.end method

 

; TestCanRuntimeVisibleAnnotations.j

; Generated by ClassFileAnalyzer (Can)
; Analyzer and Disassembler for Java class files
; (Jasmin syntax 2, http://jasmin.sourceforge.net)
;
; ClassFileAnalyzer, version 0.7.0 


.bytecode 50.0
.source TestCanRuntimeVisibleAnnotations.java
.interface public abstract annotation TestCanRuntimeVisibleAnnotations
; Flag ACC_SUPER not set, see JVM spec
.super java/lang/Object
.implements java/lang/annotation/Annotation
.annotation visible Ljava/lang/annotation/Documented;
  .end annotation
.annotation visible Ljava/lang/annotation/Retention;
  value e Ljava/lang/annotation/RetentionPolicy; = RUNTIME
  .end annotation
.annotation visible Ljava/lang/annotation/Target;
  value [e Ljava/lang/annotation/ElementType; = TYPE FIELD METHOD
  .end annotation

.method public abstract id()I
.end method

.method public abstract surname()Ljava/lang/String;
.end method

.method public abstract forename()Ljava/lang/String;
.end method

 

; TestCanRuntimeInvisibleAnnotations2.j

; Generated by ClassFileAnalyzer (Can)
; Analyzer and Disassembler for Java class files
; (Jasmin syntax 2, http://jasmin.sourceforge.net)
;
; ClassFileAnalyzer, version 0.7.0 


.bytecode 50.0
.source TestCanRuntimeInvisibleAnnotations2.java
.class public TestCanRuntimeInvisibleAnnotations2
.super java/lang/Object
.annotation visible LTestCanRuntimeVisibleAnnotations;
  id I = 1
  surname s = "World!"
  forename s = "Hello"
  .end annotation
.annotation invisible LTestCanRuntimeInvisibleAnnotations;
  id I = 1
  surname s = "Java"
  forename s = "Can"
  .end annotation
; one line
.inner interface public static abstract annotation Annotation4
        inner TestCanRuntimeInvisibleAnnotations2$Annotation4
        outer TestCanRuntimeInvisibleAnnotations2
; one line
.inner interface public static abstract annotation Annotation3
        inner TestCanRuntimeInvisibleAnnotations2$Annotation3
        outer TestCanRuntimeInvisibleAnnotations2
; one line
.inner interface public static abstract annotation Annotation2
        inner TestCanRuntimeInvisibleAnnotations2$Annotation2
        outer TestCanRuntimeInvisibleAnnotations2
; one line
.inner interface public static abstract annotation Annotation1
        inner TestCanRuntimeInvisibleAnnotations2$Annotation1
        outer TestCanRuntimeInvisibleAnnotations2
; one line
.inner class public static final enum Direction
        inner TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction
        outer TestCanRuntimeInvisibleAnnotations2$Annotation2

.field str Ljava/lang/String;
  .annotation visible LTestCanRuntimeInvisibleAnnotations2$Annotation4;
    byteValue B = 1
    stringValue [s = "Hello World!"
    .end annotation
  .annotation invisible LTestCanRuntimeInvisibleAnnotations2$Annotation1;
    byteValue B = 1
    charValue [C = 97 98 99
    doubleValue D = 1.23
    floatValue F = 4.56
    intValue [I = 2 3 4
    longValue J = 5
    shortValue S = 6
    booleanValue [Z = 1
    stringValue [s = "Hello World!"
    .end annotation
  .end field

.method public <init>()V
  .limit stack 2
  .limit locals 1
  .line 12
  0: aload_0
  1: invokespecial java/lang/Object/<init>()V
  .line 96
  4: aload_0
  5: ldc "Hello"
  7: putfield TestCanRuntimeInvisibleAnnotations2/str Ljava/lang/String;
  10: return
.end method

.method public method1(Ljava/lang/String;)V
  .limit stack 3
  .limit locals 2
  .line 117
  0: getstatic java/lang/System/out Ljava/io/PrintStream;
  3: new java/lang/StringBuilder
  6: dup
  7: invokespecial java/lang/StringBuilder/<init>()V
  10: aload_0
  11: getfield TestCanRuntimeInvisibleAnnotations2/str Ljava/lang/String;
  ; one line
  14: invokevirtual 
      java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  17: aload_1
  ; one line
  18: invokevirtual
      java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  21: invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
  24: invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
  .line 118
  27: return
  .annotation visible LTestCanRuntimeInvisibleAnnotations2$Annotation4;
    byteValue B = 1
    stringValue [s = "Hello World!"
    .end annotation
  .annotation invisible LTestCanRuntimeInvisibleAnnotations2$Annotation2;
    value1 e LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction; = NORTH
    value2 c = Ljava/lang/Object;
    value3 [c = Ljava/lang/Byte; Ljava/lang/Integer;
    .end annotation
.end method

.method public static main([Ljava/lang/String;)V
  .limit stack 2
  .limit locals 2
  .line 146
  0: new TestCanRuntimeInvisibleAnnotations2
  3: dup
  4: invokespecial TestCanRuntimeInvisibleAnnotations2/<init>()V
  7: astore_1
  .line 148
  8: aload_1
  9: ldc " Java!"
  ; one line
  11: invokevirtual 
      TestCanRuntimeInvisibleAnnotations2/method1(Ljava/lang/String;)V
  .line 149
  14: return
  .annotation visible LTestCanRuntimeVisibleAnnotations;
    id I = 2
    surname s = "World!"
    forename s = "Hello"
    .end annotation
  .annotation invisible LTestCanRuntimeInvisibleAnnotations2$Annotation3;
    value1 [@ LTestCanRuntimeInvisibleAnnotations2$Annotation1; = .annotation
    byteValue B = 1
    charValue [C = 97 98
    doubleValue D = 1.23
    floatValue F = 4.56
    intValue [I = 2 3 4
    longValue J = 5
    shortValue S = 6
    booleanValue [Z = 1 0
    stringValue [s = "Hello" "Can!"
    .end annotation
    .annotation
    byteValue B = 2
    charValue [C = 99 100
    .end annotation
    .annotation
    byteValue B = 3
    .end annotation
    value2 [@ LTestCanRuntimeInvisibleAnnotations2$Annotation2; = .annotation
    value1 e LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction; = NORTH
    value2 c = Ljava/lang/Object;
    value3 [c = Ljava/lang/Byte; Ljava/lang/Integer;
    .end annotation
    .annotation
    value1 e LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction; = SOUTH
    value2 c = Ljava/lang/StringBuffer;
    value3 [c = Ljava/lang/Float; Ljava/lang/Double;
    .end annotation
    .end annotation
.end method

 

; TestCanRuntimeInvisibleAnnotations2$Annotation1.j

; Generated by ClassFileAnalyzer (Can)
; Analyzer and Disassembler for Java class files
; (Jasmin syntax 2, http://jasmin.sourceforge.net)
;
; ClassFileAnalyzer, version 0.7.0 


.bytecode 50.0
.source TestCanRuntimeInvisibleAnnotations2.java
;one line
.interface public abstract annotation 
        TestCanRuntimeInvisibleAnnotations2$Annotation1
; Flag ACC_SUPER not set, see JVM spec
.super java/lang/Object
.implements java/lang/annotation/Annotation
.annotation visible Ljava/lang/annotation/Retention;
  value e Ljava/lang/annotation/RetentionPolicy; = CLASS
  .end annotation
.annotation visible Ljava/lang/annotation/Target;
  ;one line
  value [e Ljava/lang/annotation/ElementType; = ANNOTATION_TYPE CONSTRUCTOR
          FIELD LOCAL_VARIABLE METHOD PACKAGE PARAMETER TYPE
  .end annotation
;one line
.inner interface public static abstract annotation Annotation1 
        inner TestCanRuntimeInvisibleAnnotations2$Annotation1 
        outer TestCanRuntimeInvisibleAnnotations2

.method public abstract byteValue()B
  .annotation default
    B = 1
    .end annotation
.end method

.method public abstract charValue()[C
  .annotation default
    [C = 97 98
    .end annotation
.end method

.method public abstract doubleValue()D
.end method

.method public abstract floatValue()F
.end method

.method public abstract intValue()[I
.end method

.method public abstract longValue()J
.end method

.method public abstract shortValue()S
.end method

.method public abstract booleanValue()[Z
.end method

.method public abstract stringValue()[Ljava/lang/String;
.end method

 

; TestCanRuntimeInvisibleAnnotations2$Annotation2.j

; Generated by ClassFileAnalyzer (Can)
; Analyzer and Disassembler for Java class files
; (Jasmin syntax 2, http://jasmin.sourceforge.net)
;
; ClassFileAnalyzer, version 0.7.0 


.bytecode 50.0
.source TestCanRuntimeInvisibleAnnotations2.java
; one line
.interface public abstract annotation
        TestCanRuntimeInvisibleAnnotations2$Annotation2
; Flag ACC_SUPER not set, see JVM spec
.super java/lang/Object
.implements java/lang/annotation/Annotation
.annotation visible Ljava/lang/annotation/Retention;
  value e Ljava/lang/annotation/RetentionPolicy; = CLASS
  .end annotation
.annotation visible Ljava/lang/annotation/Target;
  ; one line
  value [e Ljava/lang/annotation/ElementType; = ANNOTATION_TYPE CONSTRUCTOR
          FIELD LOCAL_VARIABLE METHOD PACKAGE PARAMETER TYPE
  .end annotation
; one line
.inner interface public static abstract annotation Annotation2
        inner TestCanRuntimeInvisibleAnnotations2$Annotation2
        outer TestCanRuntimeInvisibleAnnotations2
; one line
.inner class public static final enum Direction
        inner TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction
        outer TestCanRuntimeInvisibleAnnotations2$Annotation2

; one line
.method public abstract
        value1()LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
.end method

.method public abstract value2()Ljava/lang/Class;
.end method

.method public abstract value3()[Ljava/lang/Class;
  .annotation default
    [c = Ljava/lang/Integer;
    .end annotation
  .signature "()[Ljava/lang/Class<+Ljava/lang/Number;>;"
.end method

 

; TestCanRuntimeInvisibleAnnotations2$Annotation3.j

; Generated by ClassFileAnalyzer (Can)
; Analyzer and Disassembler for Java class files
; (Jasmin syntax 2, http://jasmin.sourceforge.net)
;
; ClassFileAnalyzer, version 0.7.0 


.bytecode 50.0
.source TestCanRuntimeInvisibleAnnotations2.java
; one line
.interface public abstract annotation
        TestCanRuntimeInvisibleAnnotations2$Annotation3
; Flag ACC_SUPER not set, see JVM spec
.super java/lang/Object
.implements java/lang/annotation/Annotation
.annotation visible Ljava/lang/annotation/Retention;
  value e Ljava/lang/annotation/RetentionPolicy; = CLASS
  .end annotation
.annotation visible Ljava/lang/annotation/Target;
  ; one line
  value [e Ljava/lang/annotation/ElementType; = ANNOTATION_TYPE CONSTRUCTOR
          FIELD LOCAL_VARIABLE METHOD PACKAGE PARAMETER TYPE
  .end annotation
; one line
.inner interface public static abstract annotation Annotation1
        inner TestCanRuntimeInvisibleAnnotations2$Annotation1
        outer TestCanRuntimeInvisibleAnnotations2
; one line
.inner interface public static abstract annotation Annotation2
        inner TestCanRuntimeInvisibleAnnotations2$Annotation2
        outer TestCanRuntimeInvisibleAnnotations2
; one line
.inner class public static final enum Direction
        inner TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction
        outer TestCanRuntimeInvisibleAnnotations2$Annotation2
; one line
.inner interface public static abstract annotation Annotation3
        inner TestCanRuntimeInvisibleAnnotations2$Annotation3
        outer TestCanRuntimeInvisibleAnnotations2

.method public abstract value1()[LTestCanRuntimeInvisibleAnnotations2$Annotation1;
  .annotation default
    [@ LTestCanRuntimeInvisibleAnnotations2$Annotation1; = .annotation
    byteValue B = 1
    intValue [I = 4
    .end annotation
    .annotation
    charValue [C = 97 98
    booleanValue [Z = 1
    .end annotation
    .annotation
    floatValue F = 1.23
    stringValue [s = "Hello" "Can!"
    .end annotation
    .end annotation
.end method

.method public abstract value2()[LTestCanRuntimeInvisibleAnnotations2$Annotation2;
  .annotation default
    [@ LTestCanRuntimeInvisibleAnnotations2$Annotation2; = .annotation
    value1 e LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction; = NORTH
    value2 c = Ljava/lang/Object;
    value3 [c = Ljava/lang/Byte; Ljava/lang/Integer;
    .end annotation
    .annotation
    value1 e LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction; = SOUTH
    value2 c = Ljava/lang/StringBuffer;
    value3 [c = Ljava/lang/Float; Ljava/lang/Double;
    .end annotation
    .end annotation
.end method

 

; TestCanRuntimeInvisibleAnnotations2$Annotation4.j

; Generated by ClassFileAnalyzer (Can)
; Analyzer and Disassembler for Java class files
; (Jasmin syntax 2, http://jasmin.sourceforge.net)
;
; ClassFileAnalyzer, version 0.7.0 


.bytecode 50.0
.source TestCanRuntimeInvisibleAnnotations2.java
; one line
.interface public abstract annotation
        TestCanRuntimeInvisibleAnnotations2$Annotation4
; Flag ACC_SUPER not set, see JVM spec
.super java/lang/Object
.implements java/lang/annotation/Annotation
.annotation visible Ljava/lang/annotation/Retention;
  value e Ljava/lang/annotation/RetentionPolicy; = RUNTIME
  .end annotation
.annotation visible Ljava/lang/annotation/Target;
  ; one line
  value [e Ljava/lang/annotation/ElementType; = ANNOTATION_TYPE CONSTRUCTOR
          FIELD LOCAL_VARIABLE METHOD PACKAGE PARAMETER TYPE
  .end annotation
; one line
.inner interface public static abstract annotation Annotation4
        inner TestCanRuntimeInvisibleAnnotations2$Annotation4
        outer TestCanRuntimeInvisibleAnnotations2

.method public abstract byteValue()B
.end method

.method public abstract stringValue()[Ljava/lang/String;
.end method

 

; TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction.j

; Generated by ClassFileAnalyzer (Can)
; Analyzer and Disassembler for Java class files
; (Jasmin syntax 2, http://jasmin.sourceforge.net)
;
; ClassFileAnalyzer, version 0.7.0 


.bytecode 50.0
.source TestCanRuntimeInvisibleAnnotations2.java
.class public final enum TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction
.super java/lang/Enum
; one line
.signature
  "Ljava/lang/Enum<LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;>;"
; one line
.inner interface public static abstract annotation Annotation2
        inner TestCanRuntimeInvisibleAnnotations2$Annotation2
        outer TestCanRuntimeInvisibleAnnotations2
; one line
.inner class public static final enum Direction
        inner TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction
        outer TestCanRuntimeInvisibleAnnotations2$Annotation2

; one line
.field public static final enum
        NORTH LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
; one line
.field public static final enum
        SOUTH LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
; one line
.field public static final enum
        WEST LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
; one line
.field public static final enum
        EAST LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
; one line
.field private static final synthetic
        $VALUES [LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;

; one line
.method public static
        values()[LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  .limit stack 1
  .limit locals 0
  .line 47
  ; one line
  0: getstatic
          TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/$VALUES
          [LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  ; one line
  3: invokevirtual
          [LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
          /clone()Ljava/lang/Object;
  6: checkcast [LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  9: areturn
.end method

; one line
.method public static
        valueOf(Ljava/lang/String;)LTestCanRuntimeInvisibleAnnotations2$
        Annotation2$Direction;
  .limit stack 2
  .limit locals 1
  .line 47
  0: ldc_w "TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction"
  3: aload_0
  ; one line
  4: invokestatic
          java/lang/Enum/valueOf(Ljava/lang/Class;Ljava/lang/String;)
          Ljava/lang/Enum;
  7: checkcast TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction
  10: areturn
.end method

.method private <init>(Ljava/lang/String;I)V
  .limit stack 3
  .limit locals 3
  .line 47
  0: aload_0
  1: aload_1
  2: iload_2
  3: invokespecial java/lang/Enum/<init>(Ljava/lang/String;I)V
  6: return
  .signature "()V"
.end method

.method static <clinit>()V
  .limit stack 4
  .limit locals 0
  .line 47
  0: new TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction
  3: dup
  4: ldc "NORTH"
  6: iconst_0
  ; one line
  7: invokespecial
          TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/<init>
          (Ljava/lang/String;I)V
  ; one line
  10: putstatic
          TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/NORTH
          LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  13: new TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction
  16: dup
  17: ldc "SOUTH"
  19: iconst_1
  ; one line
  20: invokespecial
          TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/<init>
          (Ljava/lang/String;I)V
  ; one line
  23: putstatic TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/SOUTH
          LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  26: new TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction
  29: dup
  30: ldc "WEST"
  32: iconst_2
  ; one line
  33: invokespecial TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/
          <init>(Ljava/lang/String;I)V
  ; one line
  36: putstatic TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/WEST
          LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  39: new TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction
  42: dup
  43: ldc "EAST"
  45: iconst_3
  ; one line
  46: invokespecial TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/
          <init>(Ljava/lang/String;I)V
  ; one line
  49: putstatic TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/EAST
          LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  52: iconst_4
  53: anewarray TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction
  56: dup
  57: iconst_0
  ; one line
  58: getstatic TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/NORTH
          LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  61: aastore
  62: dup
  63: iconst_1
  ; one line
  64: getstatic TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/SOUTH
          LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  67: aastore
  68: dup
  69: iconst_2
  ; one line
  70: getstatic TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/WEST
          LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  73: aastore
  74: dup
  75: iconst_3
  ; one line
  76: getstatic TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/EAST
          LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  79: aastore
  ; one line
  80: putstatic TestCanRuntimeInvisibleAnnotations2$Annotation2$Direction/$VALUES
          [LTestCanRuntimeInvisibleAnnotations2$Annotation2$Direction;
  83: return
.end method