public class com.oracle.truffle.api.library.test.ExportSharingTest extends com.oracle.truffle.api.test.AbstractLibraryTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.api.library.test.ExportSharingTest
  super_class: com.oracle.truffle.api.test.AbstractLibraryTest
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.library.test.ExportSharingTest this
         0: .line 64
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.test.AbstractLibraryTest.<init>:()V
            return
        end local 0 // com.oracle.truffle.api.library.test.ExportSharingTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/library/test/ExportSharingTest;

  public void testTrivialSingletons();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.library.test.ExportSharingTest this
         0: .line 108
            new com.oracle.truffle.api.library.test.ExportSharingTest$TestSingletonCached
            dup
            invokespecial com.oracle.truffle.api.library.test.ExportSharingTest$TestSingletonCached.<init>:()V
            astore 3 /* obj */
        start local 3 // com.oracle.truffle.api.library.test.ExportSharingTest$TestSingletonCached obj
         1: .line 110
            ldc Lcom/oracle/truffle/api/library/test/ExportSharingTest$ExportSharingLibrary;
            aload 3 /* obj */
            invokestatic com.oracle.truffle.api.library.test.ExportSharingTest.getUncached:(Ljava/lang/Class;Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary
            astore 1 /* library1 */
        start local 1 // com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary library1
         2: .line 111
            ldc Lcom/oracle/truffle/api/library/test/ExportSharingTest$ExportSharingLibrary;
            aload 3 /* obj */
            invokestatic com.oracle.truffle.api.library.test.ExportSharingTest.getUncached:(Ljava/lang/Class;Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary
            astore 2 /* library2 */
        start local 2 // com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary library2
         3: .line 112
            aload 1 /* library1 */
            aload 2 /* library2 */
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 114
            ldc Lcom/oracle/truffle/api/library/test/ExportSharingTest$ExportSharingLibrary;
            aload 3 /* obj */
            invokestatic com.oracle.truffle.api.library.test.ExportSharingTest.createCached:(Ljava/lang/Class;Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary
            astore 1 /* library1 */
         5: .line 115
            ldc Lcom/oracle/truffle/api/library/test/ExportSharingTest$ExportSharingLibrary;
            aload 3 /* obj */
            invokestatic com.oracle.truffle.api.library.test.ExportSharingTest.createCached:(Ljava/lang/Class;Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary
            astore 2 /* library2 */
         6: .line 116
            aload 1 /* library1 */
            aload 2 /* library2 */
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 117
            return
        end local 3 // com.oracle.truffle.api.library.test.ExportSharingTest$TestSingletonCached obj
        end local 2 // com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary library2
        end local 1 // com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary library1
        end local 0 // com.oracle.truffle.api.library.test.ExportSharingTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lcom/oracle/truffle/api/library/test/ExportSharingTest;
            2    8     1  library1  Lcom/oracle/truffle/api/library/test/ExportSharingTest$ExportSharingLibrary;
            3    8     2  library2  Lcom/oracle/truffle/api/library/test/ExportSharingTest$ExportSharingLibrary;
            1    8     3       obj  Lcom/oracle/truffle/api/library/test/ExportSharingTest$TestSingletonCached;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testCachedNodeAdoption();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.library.test.ExportSharingTest this
         0: .line 154
            new com.oracle.truffle.api.library.test.ExportSharingTest$TestSimpleCached
            dup
            invokespecial com.oracle.truffle.api.library.test.ExportSharingTest$TestSimpleCached.<init>:()V
            astore 1 /* obj */
        start local 1 // com.oracle.truffle.api.library.test.ExportSharingTest$TestSimpleCached obj
         1: .line 155
            ldc Lcom/oracle/truffle/api/library/test/ExportSharingTest$ExportSharingLibrary;
            aload 1 /* obj */
            invokestatic com.oracle.truffle.api.library.test.ExportSharingTest.createCached:(Ljava/lang/Class;Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary
            astore 2 /* library1 */
        start local 2 // com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary library1
         2: .line 156
            ldc Lcom/oracle/truffle/api/library/test/ExportSharingTest$ExportSharingLibrary;
            aload 1 /* obj */
            invokestatic com.oracle.truffle.api.library.test.ExportSharingTest.createCached:(Ljava/lang/Class;Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary
            astore 3 /* library2 */
        start local 3 // com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary library2
         3: .line 157
            aload 2 /* library1 */
            invokevirtual com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary.getChildren:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.hasNext:()Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         4: .line 158
            aload 3 /* library2 */
            invokevirtual com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary.getChildren:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.hasNext:()Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         5: .line 159
            aload 2 /* library1 */
            aload 1 /* obj */
            invokevirtual com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary.accepts:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         6: .line 160
            aload 3 /* library2 */
            aload 1 /* obj */
            invokevirtual com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary.accepts:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 161
            aload 2 /* library1 */
            ldc ""
            invokevirtual com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary.accepts:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         8: .line 162
            aload 3 /* library2 */
            ldc ""
            invokevirtual com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary.accepts:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         9: .line 164
            aload 2 /* library1 */
            aload 3 /* library2 */
            invokestatic org.junit.Assert.assertNotSame:(Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 165
            aload 2 /* library1 */
            aload 3 /* library2 */
            invokestatic org.junit.Assert.assertNotEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        11: .line 167
            aload 2 /* library1 */
            aload 1 /* obj */
            invokevirtual com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary.m0:(Ljava/lang/Object;)Ljava/lang/String;
            pop
        12: .line 168
            aload 3 /* library2 */
            aload 1 /* obj */
            invokevirtual com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary.m0:(Ljava/lang/Object;)Ljava/lang/String;
            pop
        13: .line 170
            aload 2 /* library1 */
            invokevirtual com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary.getChildren:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 4 /* node */
        start local 4 // java.util.Iterator node
        14: .line 171
            aload 4 /* node */
            invokeinterface java.util.Iterator.hasNext:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        15: .line 172
            aload 4 /* node */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.nodes.Node
            astore 5 /* child */
        start local 5 // com.oracle.truffle.api.nodes.Node child
        16: .line 173
            aload 2 /* library1 */
            aload 5 /* child */
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
        17: .line 174
            aload 5 /* child */
            instanceof com.oracle.truffle.api.library.test.ExportSharingTest$TestCached1Node
            invokestatic org.junit.Assert.assertTrue:(Z)V
        18: .line 176
            aload 3 /* library2 */
            invokevirtual com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary.getChildren:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 4 /* node */
        19: .line 177
            aload 4 /* node */
            invokeinterface java.util.Iterator.hasNext:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        20: .line 178
            aload 4 /* node */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.nodes.Node
            astore 6 /* otherChild */
        start local 6 // com.oracle.truffle.api.nodes.Node otherChild
        21: .line 179
            aload 3 /* library2 */
            aload 6 /* otherChild */
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
        22: .line 180
            aload 6 /* otherChild */
            instanceof com.oracle.truffle.api.library.test.ExportSharingTest$TestCached1Node
            invokestatic org.junit.Assert.assertTrue:(Z)V
        23: .line 181
            return
        end local 6 // com.oracle.truffle.api.nodes.Node otherChild
        end local 5 // com.oracle.truffle.api.nodes.Node child
        end local 4 // java.util.Iterator node
        end local 3 // com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary library2
        end local 2 // com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary library1
        end local 1 // com.oracle.truffle.api.library.test.ExportSharingTest$TestSimpleCached obj
        end local 0 // com.oracle.truffle.api.library.test.ExportSharingTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   24     0        this  Lcom/oracle/truffle/api/library/test/ExportSharingTest;
            1   24     1         obj  Lcom/oracle/truffle/api/library/test/ExportSharingTest$TestSimpleCached;
            2   24     2    library1  Lcom/oracle/truffle/api/library/test/ExportSharingTest$ExportSharingLibrary;
            3   24     3    library2  Lcom/oracle/truffle/api/library/test/ExportSharingTest$ExportSharingLibrary;
           14   24     4        node  Ljava/util/Iterator<Lcom/oracle/truffle/api/nodes/Node;>;
           16   24     5       child  Lcom/oracle/truffle/api/nodes/Node;
           21   24     6  otherChild  Lcom/oracle/truffle/api/nodes/Node;
    RuntimeVisibleAnnotations: 
      org.junit.Test()
}
SourceFile: "ExportSharingTest.java"
NestMembers:
  com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary  com.oracle.truffle.api.library.test.ExportSharingTest$TestCached1Node  com.oracle.truffle.api.library.test.ExportSharingTest$TestSharedCached  com.oracle.truffle.api.library.test.ExportSharingTest$TestSharedCachedWithArgs  com.oracle.truffle.api.library.test.ExportSharingTest$TestSimpleCached  com.oracle.truffle.api.library.test.ExportSharingTest$TestSingletonCached
InnerClasses:
  public abstract ExportSharingLibrary = com.oracle.truffle.api.library.test.ExportSharingTest$ExportSharingLibrary of com.oracle.truffle.api.library.test.ExportSharingTest
  abstract TestCached1Node = com.oracle.truffle.api.library.test.ExportSharingTest$TestCached1Node of com.oracle.truffle.api.library.test.ExportSharingTest
  TestSharedCached = com.oracle.truffle.api.library.test.ExportSharingTest$TestSharedCached of com.oracle.truffle.api.library.test.ExportSharingTest
  TestSharedCachedWithArgs = com.oracle.truffle.api.library.test.ExportSharingTest$TestSharedCachedWithArgs of com.oracle.truffle.api.library.test.ExportSharingTest
  TestSimpleCached = com.oracle.truffle.api.library.test.ExportSharingTest$TestSimpleCached of com.oracle.truffle.api.library.test.ExportSharingTest
  final TestSingletonCached = com.oracle.truffle.api.library.test.ExportSharingTest$TestSingletonCached of com.oracle.truffle.api.library.test.ExportSharingTest