public class com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest
  super_class: java.lang.Object
{
  private static final com.oracle.truffle.api.object.DynamicObjectLibrary LIBRARY;
    descriptor: Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  final com.oracle.truffle.api.object.Layout layout;
    descriptor: Lcom/oracle/truffle/api/object/Layout;
    flags: (0x0010) ACC_FINAL

  final com.oracle.truffle.api.object.Shape rootShape;
    descriptor: Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0010) ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 54
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            putstatic com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest.LIBRARY:Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest this
         0: .line 53
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 56
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.object.Layout.newLayout:()Lcom/oracle/truffle/api/object/Layout$Builder;
            invokevirtual com.oracle.truffle.api.object.Layout$Builder.build:()Lcom/oracle/truffle/api/object/Layout;
            putfield com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest.layout:Lcom/oracle/truffle/api/object/Layout;
         2: .line 57
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest.layout:Lcom/oracle/truffle/api/object/Layout;
            new com.oracle.truffle.api.object.ObjectType
            dup
            invokespecial com.oracle.truffle.api.object.ObjectType.<init>:()V
            invokevirtual com.oracle.truffle.api.object.Layout.createShape:(Lcom/oracle/truffle/api/object/ObjectType;)Lcom/oracle/truffle/api/object/Shape;
            putfield com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest.rootShape:Lcom/oracle/truffle/api/object/Shape;
         3: .line 53
            return
        end local 0 // com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/object/basic/test/DynamicObjectFactoryTest;

  public void testFactory();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest this
         0: .line 61
            aload 0 /* this */
            getfield com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest.rootShape:Lcom/oracle/truffle/api/object/Shape;
            ldc "x"
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_0
            invokevirtual com.oracle.truffle.api.object.Shape.defineProperty:(Ljava/lang/Object;Ljava/lang/Object;I)Lcom/oracle/truffle/api/object/Shape;
            ldc "y"
            iconst_2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_0
            invokevirtual com.oracle.truffle.api.object.Shape.defineProperty:(Ljava/lang/Object;Ljava/lang/Object;I)Lcom/oracle/truffle/api/object/Shape;
            astore 1 /* shape */
        start local 1 // com.oracle.truffle.api.object.Shape shape
         1: .line 62
            aload 1 /* shape */
            invokevirtual com.oracle.truffle.api.object.Shape.createFactory:()Lcom/oracle/truffle/api/object/DynamicObjectFactory;
            astore 2 /* factory */
        start local 2 // com.oracle.truffle.api.object.DynamicObjectFactory factory
         2: .line 65
            aload 2 /* factory */
            iconst_0
            anewarray java.lang.Object
            invokeinterface com.oracle.truffle.api.object.DynamicObjectFactory.newInstance:([Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            pop
         3: .line 66
            invokestatic org.junit.Assert.fail:()V
         4: .line 67
            goto 7
      StackMap locals: com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest com.oracle.truffle.api.object.Shape com.oracle.truffle.api.object.DynamicObjectFactory
      StackMap stack: java.lang.AssertionError
         5: astore 3 /* e */
        start local 3 // java.lang.AssertionError e
         6: .line 68
            ldc "0 arguments given but the factory takes 2: x, y"
            aload 3 /* e */
            invokevirtual java.lang.AssertionError.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 3 // java.lang.AssertionError e
         7: .line 72
      StackMap locals:
      StackMap stack:
            aload 2 /* factory */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "only one argument"
            aastore
            invokeinterface com.oracle.truffle.api.object.DynamicObjectFactory.newInstance:([Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            pop
         8: .line 73
            invokestatic org.junit.Assert.fail:()V
         9: .line 74
            goto 12
      StackMap locals:
      StackMap stack: java.lang.AssertionError
        10: astore 3 /* e */
        start local 3 // java.lang.AssertionError e
        11: .line 75
            ldc "1 arguments given but the factory takes 2: x, y"
            aload 3 /* e */
            invokevirtual java.lang.AssertionError.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 3 // java.lang.AssertionError e
        12: .line 78
      StackMap locals:
      StackMap stack:
            aload 2 /* factory */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            iconst_3
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iconst_4
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokeinterface com.oracle.truffle.api.object.DynamicObjectFactory.newInstance:([Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            astore 3 /* object */
        start local 3 // com.oracle.truffle.api.object.DynamicObject object
        13: .line 79
            iconst_3
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            getstatic com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest.LIBRARY:Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 3 /* object */
            ldc "x"
            aconst_null
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.getOrDefault:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        14: .line 80
            iconst_4
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            getstatic com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest.LIBRARY:Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 3 /* object */
            ldc "y"
            aconst_null
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.getOrDefault:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        15: .line 83
            aload 2 /* factory */
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iconst_2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iconst_3
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokeinterface com.oracle.truffle.api.object.DynamicObjectFactory.newInstance:([Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            pop
        16: .line 84
            invokestatic org.junit.Assert.fail:()V
        17: .line 85
            goto 20
      StackMap locals: com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest com.oracle.truffle.api.object.Shape com.oracle.truffle.api.object.DynamicObjectFactory com.oracle.truffle.api.object.DynamicObject
      StackMap stack: java.lang.AssertionError
        18: astore 4 /* e */
        start local 4 // java.lang.AssertionError e
        19: .line 86
            ldc "3 arguments given but the factory takes 2: x, y"
            aload 4 /* e */
            invokevirtual java.lang.AssertionError.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 4 // java.lang.AssertionError e
        20: .line 88
      StackMap locals:
      StackMap stack:
            return
        end local 3 // com.oracle.truffle.api.object.DynamicObject object
        end local 2 // com.oracle.truffle.api.object.DynamicObjectFactory factory
        end local 1 // com.oracle.truffle.api.object.Shape shape
        end local 0 // com.oracle.truffle.object.basic.test.DynamicObjectFactoryTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   21     0     this  Lcom/oracle/truffle/object/basic/test/DynamicObjectFactoryTest;
            1   21     1    shape  Lcom/oracle/truffle/api/object/Shape;
            2   21     2  factory  Lcom/oracle/truffle/api/object/DynamicObjectFactory;
            6    7     3        e  Ljava/lang/AssertionError;
           11   12     3        e  Ljava/lang/AssertionError;
           13   21     3   object  Lcom/oracle/truffle/api/object/DynamicObject;
           19   20     4        e  Ljava/lang/AssertionError;
      Exception table:
        from    to  target  type
           2     4       5  Class java.lang.AssertionError
           7     9      10  Class java.lang.AssertionError
          15    17      18  Class java.lang.AssertionError
    RuntimeVisibleAnnotations: 
      org.junit.Test()
}
SourceFile: "DynamicObjectFactoryTest.java"
InnerClasses:
  public final Builder = com.oracle.truffle.api.object.Layout$Builder of com.oracle.truffle.api.object.Layout