abstract class com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3$Foo
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3$Foo
  super_class: java.lang.Object
{
  static boolean guard1;
    descriptor: Z
    flags: (0x0008) ACC_STATIC

  static int limit;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static java.lang.Object cache0;
    descriptor: Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 146
            iconst_1
            putstatic com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3$Foo.guard1:Z
         1: .line 148
            bipush 42
            putstatic com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3$Foo.limit:I
         2: .line 154
            aconst_null
            putstatic com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3$Foo.cache0:Ljava/lang/Object;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3$Foo this
         0: .line 140
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3$Foo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/library/test/ExportNodeTest$ExportNodeTestObject3$Foo;

  static boolean guard0();
    descriptor: ()Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 143
            iconst_1
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static int limit();
    descriptor: ()I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 151
            bipush 42
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static java.lang.Object cache1();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 157
            aconst_null
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void s0(com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3, java.lang.Object, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/library/test/ExportNodeTest$ExportNodeTestObject3;Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3 receiver
        start local 1 // java.lang.Object c0
        start local 2 // java.lang.Object c1
         0: .line 164
            aload 0 /* receiver */
            dup
            getfield com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3.cachedExecute:I
            iconst_1
            iadd
            putfield com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3.cachedExecute:I
         1: .line 165
            return
        end local 2 // java.lang.Object c1
        end local 1 // java.lang.Object c0
        end local 0 // com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3 receiver
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0  receiver  Lcom/oracle/truffle/api/library/test/ExportNodeTest$ExportNodeTestObject3;
            0    2     1        c0  Ljava/lang/Object;
            0    2     2        c1  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"guard0()", "guard1", "!receiver.equals(c0)"}, limit = " limit()")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached(value = "cache0")
      2:
        com.oracle.truffle.api.dsl.Cached(value = "cache1()", allowUncached = true)
    MethodParameters:
          Name  Flags
      receiver  
      c0        
      c1        

  static void s1(com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3, java.lang.Object, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/library/test/ExportNodeTest$ExportNodeTestObject3;Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=0, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3 receiver
        start local 1 // java.lang.Object c0
        start local 2 // java.lang.Object c1
         0: .line 171
            return
        end local 2 // java.lang.Object c1
        end local 1 // java.lang.Object c0
        end local 0 // com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3 receiver
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  receiver  Lcom/oracle/truffle/api/library/test/ExportNodeTest$ExportNodeTestObject3;
            0    1     1        c0  Ljava/lang/Object;
            0    1     2        c1  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"guard0()", "guard1", "!receiver.equals(c0)"}, limit = " limit")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached(value = "cache0")
      2:
        com.oracle.truffle.api.dsl.Cached(value = "cache1()", allowUncached = true)
    MethodParameters:
          Name  Flags
      receiver  
      c0        
      c1        
}
SourceFile: "ExportNodeTest.java"
NestHost: com.oracle.truffle.api.library.test.ExportNodeTest
InnerClasses:
  ExportNodeTestObject3 = com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3 of com.oracle.truffle.api.library.test.ExportNodeTest
  abstract Foo = com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3$Foo of com.oracle.truffle.api.library.test.ExportNodeTest$ExportNodeTestObject3
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()