public class com.oracle.truffle.object.dsl.processor.LayoutGenerator
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.object.dsl.processor.LayoutGenerator
  super_class: java.lang.Object
{
  private final com.oracle.truffle.object.dsl.processor.model.LayoutModel layout;
    descriptor: Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private javax.annotation.processing.ProcessingEnvironment processingEnv;
    descriptor: Ljavax/annotation/processing/ProcessingEnvironment;
    flags: (0x0002) ACC_PRIVATE

  private final javax.lang.model.type.TypeMirror dispatchDefaultValue;
    descriptor: Ljavax/lang/model/type/TypeMirror;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(com.oracle.truffle.object.dsl.processor.model.LayoutModel, javax.annotation.processing.ProcessingEnvironment);
    descriptor: (Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;Ljavax/annotation/processing/ProcessingEnvironment;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
        start local 1 // com.oracle.truffle.object.dsl.processor.model.LayoutModel layout
        start local 2 // javax.annotation.processing.ProcessingEnvironment processingEnv
         0: .line 65
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 66
            aload 0 /* this */
            aload 1 /* layout */
            putfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
         2: .line 67
            aload 0 /* this */
            aload 2 /* processingEnv */
            putfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
         3: .line 68
            aload 0 /* this */
            aload 2 /* processingEnv */
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getElementUtils:()Ljavax/lang/model/util/Elements;
            ldc "com.oracle.truffle.api.object.dsl.Layout.DispatchDefaultValue"
            invokeinterface javax.lang.model.util.Elements.getTypeElement:(Ljava/lang/CharSequence;)Ljavax/lang/model/element/TypeElement;
            invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            putfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.dispatchDefaultValue:Ljavax/lang/model/type/TypeMirror;
         4: .line 69
            return
        end local 2 // javax.annotation.processing.ProcessingEnvironment processingEnv
        end local 1 // com.oracle.truffle.object.dsl.processor.model.LayoutModel layout
        end local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;
            0    5     1         layout  Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            0    5     2  processingEnv  Ljavax/annotation/processing/ProcessingEnvironment;
    MethodParameters:
               Name  Flags
      layout         
      processingEnv  

  public void generate(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
        start local 1 // java.io.PrintStream stream
         0: .line 72
            aload 1 /* stream */
            ldc "package %s;%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getPackageName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         1: .line 73
            aload 1 /* stream */
            invokevirtual java.io.PrintStream.println:()V
         2: .line 75
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual com.oracle.truffle.object.dsl.processor.LayoutGenerator.generateImports:(Ljava/io/PrintStream;)V
         3: .line 77
            aload 1 /* stream */
            invokevirtual java.io.PrintStream.println:()V
         4: .line 78
            aload 1 /* stream */
            ldc "@SuppressWarnings(\"deprecation\")"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         5: .line 79
            aload 1 /* stream */
            ldc "@GeneratedBy(%s.class)%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getInterfaceFullName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         6: .line 80
            aload 1 /* stream */
            ldc "public class %sLayoutImpl"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         7: .line 82
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            ifnull 9
         8: .line 83
            aload 1 /* stream */
            ldc " extends %sLayoutImpl"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         9: .line 86
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc " implements %sLayout {%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        10: .line 88
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        11: .line 89
            aload 1 /* stream */
            ldc "    public static final %sLayout INSTANCE = new %sLayoutImpl();%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        12: .line 90
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        13: .line 92
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual com.oracle.truffle.object.dsl.processor.LayoutGenerator.generateObjectType:(Ljava/io/PrintStream;)V
        14: .line 94
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasShapeProperties:()Z
            ifne 19
        15: .line 95
            aload 1 /* stream */
            ldc "    protected static final %sType %s_TYPE = new %sType();%n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
        16: .line 96
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
        17: .line 95
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        18: .line 97
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        19: .line 100
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual com.oracle.truffle.object.dsl.processor.LayoutGenerator.generateAllocator:(Ljava/io/PrintStream;)V
        20: .line 101
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual com.oracle.truffle.object.dsl.processor.LayoutGenerator.generateProperties:(Ljava/io/PrintStream;)V
        21: .line 103
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasShapeProperties:()Z
            ifne 26
        22: .line 104
            aload 1 /* stream */
            ldc "    private static final DynamicObjectFactory %s_FACTORY = create%sShape();%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        23: .line 105
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
        24: .line 104
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        25: .line 106
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        26: .line 109
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    protected %sLayoutImpl() {%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        27: .line 110
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        28: .line 111
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        29: .line 113
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual com.oracle.truffle.object.dsl.processor.LayoutGenerator.generateShapeFactory:(Ljava/io/PrintStream;)V
        30: .line 114
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual com.oracle.truffle.object.dsl.processor.LayoutGenerator.generateFactory:(Ljava/io/PrintStream;)V
        31: .line 115
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual com.oracle.truffle.object.dsl.processor.LayoutGenerator.generateGuards:(Ljava/io/PrintStream;)V
        32: .line 116
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual com.oracle.truffle.object.dsl.processor.LayoutGenerator.generateAccessors:(Ljava/io/PrintStream;)V
        33: .line 118
            aload 1 /* stream */
            ldc "}"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        34: .line 119
            return
        end local 1 // java.io.PrintStream stream
        end local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   35     0    this  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;
            0   35     1  stream  Ljava/io/PrintStream;
    MethodParameters:
        Name  Flags
      stream  final

  private void generateImports(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=11, args_size=2
        start local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
        start local 1 // java.io.PrintStream stream
         0: .line 122
            iconst_0
            istore 2 /* needsAtomicInteger */
        start local 2 // boolean needsAtomicInteger
         1: .line 123
            iconst_0
            istore 3 /* needsAtomicBoolean */
        start local 3 // boolean needsAtomicBoolean
         2: .line 124
            iconst_0
            istore 4 /* needsAtomicReference */
        start local 4 // boolean needsAtomicReference
         3: .line 125
            iconst_0
            istore 5 /* needsIncompatibleLocationException */
        start local 5 // boolean needsIncompatibleLocationException
         4: .line 126
            iconst_0
            istore 6 /* needsFinalLocationException */
        start local 6 // boolean needsFinalLocationException
         5: .line 127
            iconst_0
            istore 7 /* needsHiddenKey */
        start local 7 // boolean needsHiddenKey
         6: .line 128
            iconst_0
            istore 8 /* needsBoundary */
        start local 8 // boolean needsBoundary
         7: .line 130
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 26
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int int int int int int int top java.util.Iterator
      StackMap stack:
         8: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 9 /* property */
        start local 9 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
         9: .line 131
            aload 9 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isShapeProperty:()Z
            ifne 11
            aload 9 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasIdentifier:()Z
            ifne 11
        10: .line 132
            iconst_1
            istore 7 /* needsHiddenKey */
        11: .line 135
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int int int int int int int com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator
      StackMap stack:
            aload 9 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isVolatile:()Z
            ifeq 20
        12: .line 136
            aload 9 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.INT:Ljavax/lang/model/type/TypeKind;
            if_acmpne 15
        13: .line 137
            iconst_1
            istore 2 /* needsAtomicInteger */
        14: .line 138
            goto 24
      StackMap locals:
      StackMap stack:
        15: aload 9 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.BOOLEAN:Ljavax/lang/model/type/TypeKind;
            if_acmpne 18
        16: .line 139
            iconst_1
            istore 3 /* needsAtomicBoolean */
        17: .line 140
            goto 24
        18: .line 141
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 4 /* needsAtomicReference */
        19: .line 143
            goto 24
        20: .line 144
      StackMap locals:
      StackMap stack:
            aload 9 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasSetter:()Z
            ifeq 24
        21: .line 145
            aload 9 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isShapeProperty:()Z
            ifne 24
        22: .line 146
            iconst_1
            istore 5 /* needsIncompatibleLocationException */
        23: .line 147
            iconst_1
            istore 6 /* needsFinalLocationException */
        24: .line 152
      StackMap locals:
      StackMap stack:
            aload 9 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isShapeProperty:()Z
            ifeq 26
            aload 9 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasSetter:()Z
            ifne 25
            aload 9 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasShapeSetter:()Z
            ifeq 26
        25: .line 153
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 8 /* needsBoundary */
        end local 9 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        26: .line 130
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int int int int int int int top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        27: .line 157
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasFinalInstanceProperties:()Z
            ifne 28
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasNonNullableInstanceProperties:()Z
            ifeq 29
        28: .line 158
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int int int int int int int
      StackMap stack:
            aload 1 /* stream */
            ldc "import java.util.EnumSet;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        29: .line 161
      StackMap locals:
      StackMap stack:
            iload 3 /* needsAtomicBoolean */
            ifeq 31
        30: .line 162
            aload 1 /* stream */
            ldc "import java.util.concurrent.atomic.AtomicBoolean;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        31: .line 165
      StackMap locals:
      StackMap stack:
            iload 2 /* needsAtomicInteger */
            ifeq 33
        32: .line 166
            aload 1 /* stream */
            ldc "import java.util.concurrent.atomic.AtomicInteger;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        33: .line 169
      StackMap locals:
      StackMap stack:
            iload 4 /* needsAtomicReference */
            ifeq 35
        34: .line 170
            aload 1 /* stream */
            ldc "import java.util.concurrent.atomic.AtomicReference;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        35: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasBuilder:()Z
            ifne 37
        36: .line 174
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.CompilerAsserts;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        37: .line 176
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.dsl.GeneratedBy;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        38: .line 178
            iload 8 /* needsBoundary */
            ifeq 40
        39: .line 179
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        40: .line 182
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.object.DynamicObject;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        41: .line 183
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.object.DynamicObjectFactory;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        42: .line 185
            iload 6 /* needsFinalLocationException */
            ifeq 44
        43: .line 186
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.object.FinalLocationException;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        44: .line 189
      StackMap locals:
      StackMap stack:
            iload 7 /* needsHiddenKey */
            ifeq 46
        45: .line 190
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.object.HiddenKey;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        46: .line 193
      StackMap locals:
      StackMap stack:
            iload 5 /* needsIncompatibleLocationException */
            ifeq 48
        47: .line 194
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.object.IncompatibleLocationException;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        48: .line 197
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            ifnonnull 50
        49: .line 198
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.object.Layout;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        50: .line 201
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasFinalInstanceProperties:()Z
            ifne 51
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasNonNullableInstanceProperties:()Z
            ifeq 52
        51: .line 202
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.object.LocationModifier;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        52: .line 205
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.object.ObjectType;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        53: .line 207
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getInstanceProperties:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 55
        54: .line 208
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.object.Property;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        55: .line 211
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "import com.oracle.truffle.api.object.Shape;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        56: .line 212
            aload 1 /* stream */
            ldc "import %s;%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getInterfaceFullName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        57: .line 214
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            ifnull 59
        58: .line 215
            aload 1 /* stream */
            ldc "import %s.%sLayoutImpl;%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getPackageName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        59: .line 217
      StackMap locals:
      StackMap stack:
            return
        end local 8 // boolean needsBoundary
        end local 7 // boolean needsHiddenKey
        end local 6 // boolean needsFinalLocationException
        end local 5 // boolean needsIncompatibleLocationException
        end local 4 // boolean needsAtomicReference
        end local 3 // boolean needsAtomicBoolean
        end local 2 // boolean needsAtomicInteger
        end local 1 // java.io.PrintStream stream
        end local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
      LocalVariableTable:
        Start  End  Slot                                Name  Signature
            0   60     0                                this  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;
            0   60     1                              stream  Ljava/io/PrintStream;
            1   60     2                  needsAtomicInteger  Z
            2   60     3                  needsAtomicBoolean  Z
            3   60     4                needsAtomicReference  Z
            4   60     5  needsIncompatibleLocationException  Z
            5   60     6         needsFinalLocationException  Z
            6   60     7                      needsHiddenKey  Z
            7   60     8                       needsBoundary  Z
            9   26     9                            property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
    MethodParameters:
        Name  Flags
      stream  

  private void generateObjectType(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
        start local 1 // java.io.PrintStream stream
         0: .line 222
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            ifnonnull 3
         1: .line 223
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getObjectTypeSuperclass:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            astore 2 /* typeSuperclass */
        start local 2 // java.lang.String typeSuperclass
         2: .line 224
            goto 4
        end local 2 // java.lang.String typeSuperclass
         3: .line 225
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "LayoutImpl."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "Type"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* typeSuperclass */
        start local 2 // java.lang.String typeSuperclass
         4: .line 228
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* stream */
            ldc "    public static class %sType extends %s {%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* typeSuperclass */
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         5: .line 230
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.processingEnv:Ljavax/annotation/processing/ProcessingEnvironment;
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getTypeUtils:()Ljavax/lang/model/util/Types;
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getDispatch:()Ljavax/lang/model/type/TypeMirror;
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.dispatchDefaultValue:Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.util.Types.isSameType:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifne 11
         6: .line 231
            aload 1 /* stream */
            ldc "        "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 232
            aload 1 /* stream */
            ldc "        @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         8: .line 233
            aload 1 /* stream */
            ldc "        public Class<?> dispatch() {"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 234
            aload 1 /* stream */
            ldc "            return %s.class;%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getDispatch:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        10: .line 235
            aload 1 /* stream */
            ldc "        }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        11: .line 238
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasShapeProperties:()Z
            ifeq 46
        12: .line 239
            aload 1 /* stream */
            ldc "        "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        13: .line 241
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getShapeProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 16
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream java.lang.String top java.util.Iterator
      StackMap stack:
        14: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 3 /* property */
        start local 3 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        15: .line 242
            aload 1 /* stream */
            ldc "        protected final %s %s;%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_1
            aload 3 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        end local 3 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        16: .line 241
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        17: .line 245
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getShapeProperties:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 19
        18: .line 246
            aload 1 /* stream */
            ldc "        "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        19: .line 249
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream java.lang.String
      StackMap stack:
            aload 1 /* stream */
            ldc "        public %sType(%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        20: .line 251
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllShapeProperties:()Ljava/util/List;
            new com.oracle.truffle.object.dsl.processor.LayoutGenerator$1
            dup
            aload 0 /* this */
            aload 1 /* stream */
            invokespecial com.oracle.truffle.object.dsl.processor.LayoutGenerator$1.<init>:(Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;Ljava/io/PrintStream;)V
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.iterateProperties:(Ljava/util/List;Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator$PropertyIteratorAction;)V
        21: .line 266
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getInheritedShapeProperties:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 24
        22: .line 267
            aload 1 /* stream */
            ldc "            super("
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        23: .line 269
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getInheritedShapeProperties:()Ljava/util/List;
            new com.oracle.truffle.object.dsl.processor.LayoutGenerator$2
            dup
            aload 0 /* this */
            aload 1 /* stream */
            invokespecial com.oracle.truffle.object.dsl.processor.LayoutGenerator$2.<init>:(Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;Ljava/io/PrintStream;)V
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.iterateProperties:(Ljava/util/List;Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator$PropertyIteratorAction;)V
        24: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getShapeProperties:()Ljava/util/List;
            new com.oracle.truffle.object.dsl.processor.LayoutGenerator$3
            dup
            aload 0 /* this */
            aload 1 /* stream */
            invokespecial com.oracle.truffle.object.dsl.processor.LayoutGenerator$3.<init>:(Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;Ljava/io/PrintStream;)V
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.iterateProperties:(Ljava/util/List;Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator$PropertyIteratorAction;)V
        25: .line 294
            aload 1 /* stream */
            ldc "        }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        26: .line 295
            aload 1 /* stream */
            ldc "        "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        27: .line 297
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllShapeProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 44
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream java.lang.String top java.util.Iterator
      StackMap stack:
        28: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 3 /* property */
        start local 3 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        29: .line 298
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getShapeProperties:()Ljava/util/List;
            aload 3 /* property */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 30
            iconst_0
            goto 31
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream java.lang.String com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator
      StackMap stack:
        30: iconst_1
      StackMap locals:
      StackMap stack: int
        31: istore 5 /* inherited */
        start local 5 // boolean inherited
        32: .line 300
            iload 5 /* inherited */
            ifne 37
        33: .line 301
            aload 1 /* stream */
            ldc "        public %s %s() {%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_1
            aload 3 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asGetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        34: .line 302
            aload 1 /* stream */
            ldc "            return %s;%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        35: .line 303
            aload 1 /* stream */
            ldc "        }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        36: .line 304
            aload 1 /* stream */
            ldc "        "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        37: .line 307
      StackMap locals: int
      StackMap stack:
            iload 5 /* inherited */
            ifeq 39
        38: .line 308
            aload 1 /* stream */
            ldc "        @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        39: .line 311
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "        public %sType %s(%s %s) {%n"
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 3 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asSetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
            aload 3 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_3
            aload 3 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        40: .line 312
            aload 1 /* stream */
            ldc "            return new %sType(%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        41: .line 314
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllShapeProperties:()Ljava/util/List;
            new com.oracle.truffle.object.dsl.processor.LayoutGenerator$4
            dup
            aload 0 /* this */
            aload 1 /* stream */
            invokespecial com.oracle.truffle.object.dsl.processor.LayoutGenerator$4.<init>:(Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;Ljava/io/PrintStream;)V
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.iterateProperties:(Ljava/util/List;Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator$PropertyIteratorAction;)V
        42: .line 329
            aload 1 /* stream */
            ldc "        }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        43: .line 330
            aload 1 /* stream */
            ldc "        "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 5 // boolean inherited
        end local 3 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        44: .line 297
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream java.lang.String top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 28
        45: .line 332
            goto 47
        46: .line 333
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream java.lang.String
      StackMap stack:
            aload 1 /* stream */
            ldc "        "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        47: .line 336
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        48: .line 337
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        49: .line 338
            return
        end local 2 // java.lang.String typeSuperclass
        end local 1 // java.io.PrintStream stream
        end local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   50     0            this  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;
            0   50     1          stream  Ljava/io/PrintStream;
            2    3     2  typeSuperclass  Ljava/lang/String;
            4   50     2  typeSuperclass  Ljava/lang/String;
           15   16     3        property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
           29   44     3        property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
           32   44     5       inherited  Z
    MethodParameters:
        Name  Flags
      stream  final

  private void generateAllocator(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
        start local 1 // java.io.PrintStream stream
         0: .line 341
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            ifnonnull 11
         1: .line 342
            aload 1 /* stream */
            ldc "    protected static final Layout LAYOUT = Layout.newLayout()"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         2: .line 344
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getImplicitCasts:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 7
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.VariableElement
            astore 2 /* implicitCast */
        start local 2 // javax.lang.model.element.VariableElement implicitCast
         4: .line 345
            aload 1 /* stream */
            ldc ".addAllowedImplicitCast(Layout.ImplicitCast."
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         5: .line 346
            aload 1 /* stream */
            aload 2 /* implicitCast */
            invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         6: .line 347
            aload 1 /* stream */
            ldc ")"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        end local 2 // javax.lang.model.element.VariableElement implicitCast
         7: .line 344
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         8: .line 350
            aload 1 /* stream */
            ldc ".build();"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 352
            aload 1 /* stream */
            ldc "    protected static final Shape.Allocator %S_ALLOCATOR = LAYOUT.createAllocator();%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        10: .line 353
            goto 53
        11: .line 354
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream
      StackMap stack:
            aload 1 /* stream */
            ldc "    protected static final Shape.Allocator %S_ALLOCATOR = LAYOUT.createAllocator();%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        12: .line 355
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        13: .line 357
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasInstanceProperties:()Z
            ifeq 53
        14: .line 358
            aload 1 /* stream */
            ldc "    static {"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        15: .line 360
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getSuperLayout:()Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllInstanceProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 50
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
        16: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 2 /* property */
        start local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        17: .line 361
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* modifiers */
        start local 4 // java.util.List modifiers
        18: .line 363
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isNullable:()Z
            ifne 20
        19: .line 364
            aload 4 /* modifiers */
            ldc "LocationModifier.NonNull"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        20: .line 367
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator java.util.List
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isFinal:()Z
            ifeq 22
        21: .line 368
            aload 4 /* modifiers */
            ldc "LocationModifier.Final"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        22: .line 373
      StackMap locals:
      StackMap stack:
            aload 4 /* modifiers */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 25
        23: .line 374
            ldc ""
            astore 5 /* modifiersExpression */
        start local 5 // java.lang.String modifiersExpression
        24: .line 375
            goto 35
        end local 5 // java.lang.String modifiersExpression
        25: .line 376
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 6 /* modifiersExpressionBuilder */
        start local 6 // java.lang.StringBuilder modifiersExpressionBuilder
        26: .line 377
            aload 6 /* modifiersExpressionBuilder */
            ldc ", EnumSet.of("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        27: .line 379
            aload 4 /* modifiers */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 32
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator java.util.List top java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
        28: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* modifier */
        start local 7 // java.lang.String modifier
        29: .line 380
            aload 7 /* modifier */
            aload 4 /* modifiers */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 31
        30: .line 381
            aload 6 /* modifiersExpressionBuilder */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        31: .line 384
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator java.util.List top java.lang.StringBuilder java.lang.String java.util.Iterator
      StackMap stack:
            aload 6 /* modifiersExpressionBuilder */
            aload 7 /* modifier */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 7 // java.lang.String modifier
        32: .line 379
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator java.util.List top java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 28
        33: .line 387
            aload 6 /* modifiersExpressionBuilder */
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        34: .line 388
            aload 6 /* modifiersExpressionBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* modifiersExpression */
        end local 6 // java.lang.StringBuilder modifiersExpressionBuilder
        start local 5 // java.lang.String modifiersExpression
        35: .line 393
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator java.util.List java.lang.String
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isVolatile:()Z
            ifeq 44
        36: .line 394
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.INT:Ljavax/lang/model/type/TypeKind;
            if_acmpne 39
        37: .line 395
            ldc "AtomicInteger"
            astore 6 /* locationType */
        start local 6 // java.lang.String locationType
        38: .line 396
            goto 45
        end local 6 // java.lang.String locationType
      StackMap locals:
      StackMap stack:
        39: aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.BOOLEAN:Ljavax/lang/model/type/TypeKind;
            if_acmpne 42
        40: .line 397
            ldc "AtomicBoolean"
            astore 6 /* locationType */
        start local 6 // java.lang.String locationType
        41: .line 398
            goto 45
        end local 6 // java.lang.String locationType
        42: .line 399
      StackMap locals:
      StackMap stack:
            ldc "AtomicReference"
            astore 6 /* locationType */
        start local 6 // java.lang.String locationType
        43: .line 401
            goto 45
        end local 6 // java.lang.String locationType
        44: .line 402
      StackMap locals:
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.typeWithoutParameters:(Ljava/lang/String;)Ljava/lang/String;
            astore 6 /* locationType */
        start local 6 // java.lang.String locationType
        45: .line 405
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* stream */
            ldc "         %s_ALLOCATOR.locationForType(%s.class%s);%n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        46: .line 406
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
        47: .line 407
            aload 6 /* locationType */
            aastore
            dup
            iconst_2
        48: .line 408
            aload 5 /* modifiersExpression */
            aastore
        49: .line 405
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        end local 6 // java.lang.String locationType
        end local 5 // java.lang.String modifiersExpression
        end local 4 // java.util.List modifiers
        end local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        50: .line 360
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 16
        51: .line 411
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        52: .line 412
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        53: .line 415
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream
      StackMap stack:
            return
        end local 1 // java.io.PrintStream stream
        end local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   54     0                        this  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;
            0   54     1                      stream  Ljava/io/PrintStream;
            4    7     2                implicitCast  Ljavax/lang/model/element/VariableElement;
           17   50     2                    property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
           18   50     4                   modifiers  Ljava/util/List<Ljava/lang/String;>;
           24   25     5         modifiersExpression  Ljava/lang/String;
           35   50     5         modifiersExpression  Ljava/lang/String;
           26   35     6  modifiersExpressionBuilder  Ljava/lang/StringBuilder;
           29   32     7                    modifier  Ljava/lang/String;
           38   39     6                locationType  Ljava/lang/String;
           41   42     6                locationType  Ljava/lang/String;
           43   44     6                locationType  Ljava/lang/String;
           45   50     6                locationType  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      stream  final

  private void generateProperties(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
        start local 1 // java.io.PrintStream stream
         0: .line 418
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getInstanceProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 40
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 2 /* property */
        start local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
         2: .line 419
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasIdentifier:()Z
            ifne 4
         3: .line 420
            aload 1 /* stream */
            ldc "    protected static final HiddenKey %s_IDENTIFIER = new HiddenKey(\"%s\");%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         4: .line 423
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* modifiers */
        start local 4 // java.util.List modifiers
         5: .line 425
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isNullable:()Z
            ifne 7
         6: .line 426
            aload 4 /* modifiers */
            ldc "LocationModifier.NonNull"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 429
      StackMap locals: java.util.List
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isFinal:()Z
            ifeq 9
         8: .line 430
            aload 4 /* modifiers */
            ldc "LocationModifier.Final"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         9: .line 435
      StackMap locals:
      StackMap stack:
            aload 4 /* modifiers */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 12
        10: .line 436
            ldc ""
            astore 5 /* modifiersExpression */
        start local 5 // java.lang.String modifiersExpression
        11: .line 437
            goto 22
        end local 5 // java.lang.String modifiersExpression
        12: .line 438
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 6 /* modifiersExpressionBuilder */
        start local 6 // java.lang.StringBuilder modifiersExpressionBuilder
        13: .line 439
            aload 6 /* modifiersExpressionBuilder */
            ldc ", EnumSet.of("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        14: .line 441
            aload 4 /* modifiers */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 19
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator java.util.List top java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
        15: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* modifier */
        start local 7 // java.lang.String modifier
        16: .line 442
            aload 7 /* modifier */
            aload 4 /* modifiers */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
        17: .line 443
            aload 6 /* modifiersExpressionBuilder */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        18: .line 446
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator java.util.List top java.lang.StringBuilder java.lang.String java.util.Iterator
      StackMap stack:
            aload 6 /* modifiersExpressionBuilder */
            aload 7 /* modifier */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 7 // java.lang.String modifier
        19: .line 441
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator java.util.List top java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        20: .line 449
            aload 6 /* modifiersExpressionBuilder */
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        21: .line 450
            aload 6 /* modifiersExpressionBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* modifiersExpression */
        end local 6 // java.lang.StringBuilder modifiersExpressionBuilder
        start local 5 // java.lang.String modifiersExpression
        22: .line 455
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator java.util.List java.lang.String
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isVolatile:()Z
            ifeq 31
        23: .line 456
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.INT:Ljavax/lang/model/type/TypeKind;
            if_acmpne 26
        24: .line 457
            ldc "AtomicInteger"
            astore 6 /* locationType */
        start local 6 // java.lang.String locationType
        25: .line 458
            goto 32
        end local 6 // java.lang.String locationType
      StackMap locals:
      StackMap stack:
        26: aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.BOOLEAN:Ljavax/lang/model/type/TypeKind;
            if_acmpne 29
        27: .line 459
            ldc "AtomicBoolean"
            astore 6 /* locationType */
        start local 6 // java.lang.String locationType
        28: .line 460
            goto 32
        end local 6 // java.lang.String locationType
        29: .line 461
      StackMap locals:
      StackMap stack:
            ldc "AtomicReference"
            astore 6 /* locationType */
        start local 6 // java.lang.String locationType
        30: .line 463
            goto 32
        end local 6 // java.lang.String locationType
        31: .line 464
      StackMap locals:
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.typeWithoutParameters:(Ljava/lang/String;)Ljava/lang/String;
            astore 6 /* locationType */
        start local 6 // java.lang.String locationType
        32: .line 467
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* stream */
            ldc "    protected static final Property %S_PROPERTY = Property.create(%s_IDENTIFIER, %S_ALLOCATOR.locationForType(%s.class%s), 0);%n"
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
        33: .line 468
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
        34: .line 469
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        35: .line 470
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_3
        36: .line 471
            aload 6 /* locationType */
            aastore
            dup
            iconst_4
        37: .line 472
            aload 5 /* modifiersExpression */
            aastore
        38: .line 467
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        39: .line 474
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 6 // java.lang.String locationType
        end local 5 // java.lang.String modifiersExpression
        end local 4 // java.util.List modifiers
        end local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        40: .line 418
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        41: .line 476
            return
        end local 1 // java.io.PrintStream stream
        end local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   42     0                        this  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;
            0   42     1                      stream  Ljava/io/PrintStream;
            2   40     2                    property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
            5   40     4                   modifiers  Ljava/util/List<Ljava/lang/String;>;
           11   12     5         modifiersExpression  Ljava/lang/String;
           22   40     5         modifiersExpression  Ljava/lang/String;
           13   22     6  modifiersExpressionBuilder  Ljava/lang/StringBuilder;
           16   19     7                    modifier  Ljava/lang/String;
           25   26     6                locationType  Ljava/lang/String;
           28   29     6                locationType  Ljava/lang/String;
           30   31     6                locationType  Ljava/lang/String;
           32   40     6                locationType  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      stream  final

  private void generateShapeFactory(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
        start local 1 // java.io.PrintStream stream
         0: .line 479
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasShapeProperties:()Z
            ifeq 4
         1: .line 480
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 481
            aload 1 /* stream */
            ldc "    public"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         3: .line 482
            goto 5
         4: .line 483
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    private static"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         5: .line 486
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc " DynamicObjectFactory create%sShape("
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         6: .line 488
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasShapeProperties:()Z
            ifeq 17
         7: .line 489
            aload 1 /* stream */
            invokevirtual java.io.PrintStream.println:()V
         8: .line 491
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllShapeProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 15
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
         9: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 2 /* property */
        start local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        10: .line 492
            aload 1 /* stream */
            ldc "            %s %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        11: .line 494
            aload 2 /* property */
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllShapeProperties:()Ljava/util/List;
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllShapeProperties:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            if_acmpne 14
        12: .line 495
            aload 1 /* stream */
            ldc ") {"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        13: .line 496
            goto 15
        14: .line 497
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator
      StackMap stack:
            aload 1 /* stream */
            ldc ","
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        15: .line 491
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        16: .line 500
            goto 18
        17: .line 501
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream
      StackMap stack:
            aload 1 /* stream */
            ldc ") {"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        18: .line 504
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "        return LAYOUT.createShape(new %sType("
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        19: .line 506
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasShapeProperties:()Z
            ifeq 23
        20: .line 507
            aload 1 /* stream */
            invokevirtual java.io.PrintStream.println:()V
        21: .line 509
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllShapeProperties:()Ljava/util/List;
            new com.oracle.truffle.object.dsl.processor.LayoutGenerator$5
            dup
            aload 0 /* this */
            aload 1 /* stream */
            invokespecial com.oracle.truffle.object.dsl.processor.LayoutGenerator$5.<init>:(Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;Ljava/io/PrintStream;)V
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.iterateProperties:(Ljava/util/List;Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator$PropertyIteratorAction;)V
        22: .line 523
            goto 24
        23: .line 524
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "))"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        24: .line 527
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllInstanceProperties:()Ljava/util/List;
            new com.oracle.truffle.object.dsl.processor.LayoutGenerator$6
            dup
            aload 0 /* this */
            aload 1 /* stream */
            invokespecial com.oracle.truffle.object.dsl.processor.LayoutGenerator$6.<init>:(Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;Ljava/io/PrintStream;)V
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.iterateProperties:(Ljava/util/List;Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator$PropertyIteratorAction;)V
        25: .line 536
            aload 1 /* stream */
            ldc "            .createFactory();"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        26: .line 538
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        27: .line 539
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        28: .line 540
            return
        end local 1 // java.io.PrintStream stream
        end local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   29     0      this  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;
            0   29     1    stream  Ljava/io/PrintStream;
           10   15     2  property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
    MethodParameters:
        Name  Flags
      stream  final

  private void generateFactory(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
        start local 1 // java.io.PrintStream stream
         0: .line 544
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasShapeProperties:()Z
            ifne 30
         1: .line 545
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 546
            aload 1 /* stream */
            ldc "    public DynamicObject create%s("
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         3: .line 548
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 6
         4: .line 549
            aload 1 /* stream */
            ldc ") {"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         5: .line 550
            goto 15
         6: .line 551
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            invokevirtual java.io.PrintStream.println:()V
         7: .line 553
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 14
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
         8: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 2 /* property */
        start local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
         9: .line 554
            aload 1 /* stream */
            ldc "            %s %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        10: .line 556
            aload 2 /* property */
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            if_acmpne 13
        11: .line 557
            aload 1 /* stream */
            ldc ") {"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        12: .line 558
            goto 14
        13: .line 559
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator
      StackMap stack:
            aload 1 /* stream */
            ldc ","
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        14: .line 553
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        15: .line 564
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream
      StackMap stack:
            aload 1 /* stream */
            ldc "        return create%s(%s_FACTORY"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        16: .line 566
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 19
        17: .line 567
            aload 1 /* stream */
            ldc ");"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        18: .line 568
            goto 28
        19: .line 569
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc ","
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        20: .line 571
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 27
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
        21: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 2 /* property */
        start local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        22: .line 572
            aload 1 /* stream */
            ldc "            %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        23: .line 574
            aload 2 /* property */
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            if_acmpne 26
        24: .line 575
            aload 1 /* stream */
            ldc ");"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        25: .line 576
            goto 27
        26: .line 577
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator
      StackMap stack:
            aload 1 /* stream */
            ldc ","
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        27: .line 571
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 21
        28: .line 582
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream
      StackMap stack:
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        29: .line 583
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        30: .line 587
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasBuilder:()Z
            istore 2 /* builder */
        start local 2 // boolean builder
        31: .line 588
            iload 2 /* builder */
            ifeq 32
            ldc "build"
            goto 33
      StackMap locals: int
      StackMap stack:
        32: new java.lang.StringBuilder
            dup
            ldc "create"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
        33: astore 3 /* methodName */
        start local 3 // java.lang.String methodName
        34: .line 589
            iload 2 /* builder */
            ifeq 35
            ldc "Object[]"
            goto 36
      StackMap locals: java.lang.String
      StackMap stack:
        35: ldc "DynamicObject"
      StackMap locals:
      StackMap stack: java.lang.String
        36: astore 4 /* returnType */
        start local 4 // java.lang.String returnType
        37: .line 591
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasShapeProperties:()Z
            ifeq 41
        38: .line 592
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        39: .line 593
            aload 1 /* stream */
            ldc "    public"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        40: .line 594
            goto 44
        41: .line 595
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* stream */
            ldc "    private"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        42: .line 597
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasObjectTypeGuard:()Z
            ifne 44
        43: .line 598
            aload 1 /* stream */
            ldc " static"
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        44: .line 602
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasInstanceProperties:()Z
            ifeq 57
        45: .line 603
            aload 1 /* stream */
            ldc " %s %s(%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* returnType */
            aastore
            dup
            iconst_1
            aload 3 /* methodName */
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        46: .line 604
            iload 2 /* builder */
            ifne 48
        47: .line 605
            aload 1 /* stream */
            ldc "            DynamicObjectFactory factory,"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        48: .line 608
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllInstanceProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 55
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String top java.util.Iterator
      StackMap stack:
        49: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 5 /* property */
        start local 5 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        50: .line 609
            aload 1 /* stream */
            ldc "            %s %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        51: .line 611
            aload 5 /* property */
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            if_acmpne 54
        52: .line 612
            aload 1 /* stream */
            ldc ") {"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        53: .line 613
            goto 55
        54: .line 614
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator
      StackMap stack:
            aload 1 /* stream */
            ldc ","
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 5 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        55: .line 608
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 49
        56: .line 617
            goto 61
        57: .line 618
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String
      StackMap stack:
            iload 2 /* builder */
            ifeq 58
            ldc ""
            goto 59
      StackMap locals:
      StackMap stack:
        58: ldc "DynamicObjectFactory factory"
      StackMap locals:
      StackMap stack: java.lang.String
        59: astore 5 /* factoryArg */
        start local 5 // java.lang.String factoryArg
        60: .line 619
            aload 1 /* stream */
            ldc " %s %s(%s) {%n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* returnType */
            aastore
            dup
            iconst_1
            aload 3 /* methodName */
            aastore
            dup
            iconst_2
            aload 5 /* factoryArg */
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        end local 5 // java.lang.String factoryArg
        61: .line 622
      StackMap locals:
      StackMap stack:
            iload 2 /* builder */
            ifne 69
        62: .line 623
            aload 1 /* stream */
            ldc "        assert factory != null;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        63: .line 624
            aload 1 /* stream */
            ldc "        CompilerAsserts.partialEvaluationConstant(factory);"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        64: .line 625
            aload 1 /* stream */
            ldc "        assert creates%s(factory);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        65: .line 627
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllInstanceProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 68
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String top java.util.Iterator
      StackMap stack:
        66: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 5 /* property */
        start local 5 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        67: .line 628
            aload 1 /* stream */
            ldc "        assert factory.getShape().hasProperty(%s_IDENTIFIER);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        end local 5 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        68: .line 627
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 66
        69: .line 632
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllInstanceProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 73
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String top java.util.Iterator
      StackMap stack:
        70: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 5 /* property */
        start local 5 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        71: .line 633
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            invokevirtual javax.lang.model.type.TypeKind.isPrimitive:()Z
            ifne 73
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isNullable:()Z
            ifne 73
        72: .line 634
            aload 1 /* stream */
            ldc "        assert %s != null;%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        end local 5 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        73: .line 632
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 70
        74: .line 638
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasInstanceProperties:()Z
            ifeq 99
        75: .line 639
            iload 2 /* builder */
            ifeq 78
        76: .line 640
            aload 1 /* stream */
            ldc "        return new Object[] { "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        77: .line 641
            goto 79
        78: .line 642
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String
      StackMap stack:
            aload 1 /* stream */
            ldc "        return factory.newInstance("
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        79: .line 645
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllInstanceProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 97
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String top java.util.Iterator
      StackMap stack:
        80: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 5 /* property */
        start local 5 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        81: .line 646
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isVolatile:()Z
            ifeq 90
        82: .line 647
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.INT:Ljavax/lang/model/type/TypeKind;
            if_acmpne 85
        83: .line 648
            aload 1 /* stream */
            ldc "            new AtomicInteger(%s)"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        84: .line 649
            goto 91
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator
      StackMap stack:
        85: aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.BOOLEAN:Ljavax/lang/model/type/TypeKind;
            if_acmpne 88
        86: .line 650
            aload 1 /* stream */
            ldc "            new AtomicBoolean(%s)"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        87: .line 651
            goto 91
        88: .line 652
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "            new AtomicReference<>(%s)"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        89: .line 654
            goto 91
        90: .line 655
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "            %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        91: .line 658
      StackMap locals:
      StackMap stack:
            aload 5 /* property */
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getAllProperties:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            if_acmpne 96
        92: .line 659
            aload 1 /* stream */
            iload 2 /* builder */
            ifeq 93
            ldc " };"
            goto 94
      StackMap locals:
      StackMap stack: java.io.PrintStream
        93: ldc ");"
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator
      StackMap stack: java.io.PrintStream java.lang.String
        94: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        95: .line 660
            goto 97
        96: .line 661
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc ","
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 5 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        97: .line 645
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 80
        98: .line 664
            goto 103
        99: .line 665
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream int java.lang.String java.lang.String
      StackMap stack:
            iload 2 /* builder */
            ifeq 102
       100: .line 666
            aload 1 /* stream */
            ldc "        return new Object[0];"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       101: .line 667
            goto 103
       102: .line 668
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "        return factory.newInstance();"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       103: .line 672
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       104: .line 673
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       105: .line 674
            return
        end local 4 // java.lang.String returnType
        end local 3 // java.lang.String methodName
        end local 2 // boolean builder
        end local 1 // java.io.PrintStream stream
        end local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0  106     0        this  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;
            0  106     1      stream  Ljava/io/PrintStream;
            9   14     2    property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
           22   27     2    property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
           31  106     2     builder  Z
           34  106     3  methodName  Ljava/lang/String;
           37  106     4  returnType  Ljava/lang/String;
           50   55     5    property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
           60   61     5  factoryArg  Ljava/lang/String;
           67   68     5    property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
           71   73     5    property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
           81   97     5    property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
    MethodParameters:
        Name  Flags
      stream  final

  private void generateGuards(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
        start local 1 // java.io.PrintStream stream
         0: .line 677
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasObjectGuard:()Z
            ifeq 6
         1: .line 678
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 679
            aload 1 /* stream */
            ldc "    public boolean is%s(Object object) {%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         3: .line 680
            aload 1 /* stream */
            ldc "        return (object instanceof DynamicObject) && is%s((DynamicObject) object);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         4: .line 681
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         5: .line 682
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         6: .line 685
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasDynamicObjectGuard:()Z
            ifne 7
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasGettersOrSetters:()Z
            ifeq 18
         7: .line 686
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasDynamicObjectGuard:()Z
            ifeq 11
         8: .line 687
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 688
            aload 1 /* stream */
            ldc "    public"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        10: .line 689
            goto 12
        11: .line 690
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    private"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        12: .line 693
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasDynamicObjectGuard:()Z
            ifne 14
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasObjectTypeGuard:()Z
            ifne 14
        13: .line 694
            aload 1 /* stream */
            ldc " static"
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        14: .line 697
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc " boolean is%s(DynamicObject object) {%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        15: .line 698
            aload 1 /* stream */
            ldc "        return is%s(object.getShape().getObjectType());%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        16: .line 699
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        17: .line 700
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        18: .line 703
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasObjectTypeGuard:()Z
            ifeq 22
        19: .line 704
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        20: .line 705
            aload 1 /* stream */
            ldc "    public"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        21: .line 706
            goto 23
        22: .line 707
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    private static"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        23: .line 710
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc " boolean is%s(ObjectType objectType) {%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        24: .line 711
            aload 1 /* stream */
            ldc "        return objectType instanceof %sType;%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        25: .line 712
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        26: .line 714
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasBuilder:()Z
            ifne 34
        27: .line 715
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        28: .line 716
            aload 1 /* stream */
            ldc "    private"
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        29: .line 718
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasObjectTypeGuard:()Z
            ifne 31
        30: .line 719
            aload 1 /* stream */
            ldc " static"
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        31: .line 722
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc " boolean creates%s(DynamicObjectFactory factory) {%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        32: .line 723
            aload 1 /* stream */
            ldc "        return is%s(factory.getShape().getObjectType());%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        33: .line 724
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        34: .line 726
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        35: .line 727
            return
        end local 1 // java.io.PrintStream stream
        end local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   36     0    this  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;
            0   36     1  stream  Ljava/io/PrintStream;
    MethodParameters:
        Name  Flags
      stream  final

  private void generateAccessors(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
        start local 1 // java.io.PrintStream stream
         0: .line 730
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getProperties:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 156
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            astore 2 /* property */
        start local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
         2: .line 731
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasObjectTypeGetter:()Z
            ifeq 9
         3: .line 732
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 733
            aload 1 /* stream */
            ldc "    public %s %s(ObjectType objectType) {%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_1
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asGetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         5: .line 734
            aload 1 /* stream */
            ldc "        assert is%s(objectType);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         6: .line 735
            aload 1 /* stream */
            ldc "        return ((%sType) objectType).%s();%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asGetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         7: .line 736
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         8: .line 737
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 740
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream com.oracle.truffle.object.dsl.processor.model.PropertyModel java.util.Iterator
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasShapeGetter:()Z
            ifeq 16
        10: .line 741
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        11: .line 742
            aload 1 /* stream */
            ldc "    public %s %s(DynamicObjectFactory factory) {%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_1
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asGetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        12: .line 743
            aload 1 /* stream */
            ldc "        assert creates%s(factory);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        13: .line 744
            aload 1 /* stream */
            ldc "        return ((%sType) factory.getShape().getObjectType()).%s();%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asGetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        14: .line 745
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        15: .line 746
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        16: .line 749
      StackMap locals:
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasGetter:()Z
            ifeq 40
        17: .line 750
            aload 1 /* stream */
            aload 2 /* property */
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.addSuppressWarningsUncheckedCast:(Ljava/io/PrintStream;Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;)V
        18: .line 751
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        19: .line 752
            aload 1 /* stream */
            ldc "    public %s %s(DynamicObject object) {%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_1
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asGetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        20: .line 753
            aload 1 /* stream */
            ldc "        assert is%s(object);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        21: .line 755
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isShapeProperty:()Z
            ifeq 24
        22: .line 756
            aload 1 /* stream */
            ldc "        return getObjectType(object).%s();%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asGetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        23: .line 757
            goto 38
        24: .line 758
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "        assert object.getShape().hasProperty(%s_IDENTIFIER);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        25: .line 759
            aload 1 /* stream */
            ldc "        "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        26: .line 761
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isVolatile:()Z
            ifeq 37
        27: .line 762
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.INT:Ljavax/lang/model/type/TypeKind;
            if_acmpne 30
        28: .line 763
            aload 1 /* stream */
            ldc "        return ((AtomicInteger) %s_PROPERTY.get(object, is%s(object))).get();%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        29: .line 764
            goto 38
      StackMap locals:
      StackMap stack:
        30: aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.BOOLEAN:Ljavax/lang/model/type/TypeKind;
            if_acmpne 33
        31: .line 765
            aload 1 /* stream */
            ldc "        return ((AtomicBoolean) %s_PROPERTY.get(object, is%s(object))).get();%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        32: .line 766
            goto 38
        33: .line 767
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "        return ((AtomicReference<%s>) %s_PROPERTY.get(object, is%s(object))).get();%n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_1
        34: .line 768
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
        35: .line 767
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        36: .line 770
            goto 38
        37: .line 771
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "        return %s%s_PROPERTY.get(object, is%s(object));%n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.cast:(Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        38: .line 775
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        39: .line 776
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        40: .line 779
      StackMap locals:
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasShapeSetter:()Z
            ifeq 49
        41: .line 780
            aload 1 /* stream */
            ldc "    @TruffleBoundary"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        42: .line 781
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        43: .line 782
            aload 1 /* stream */
            ldc "    public DynamicObjectFactory %s(DynamicObjectFactory factory, %s value) {%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asSetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        44: .line 783
            aload 1 /* stream */
            ldc "        assert creates%s(factory);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        45: .line 784
            aload 1 /* stream */
            ldc "        final Shape shape = factory.getShape();"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        46: .line 785
            aload 1 /* stream */
            ldc "        return shape.changeType(((%sType) shape.getObjectType()).%s(value)).createFactory();%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asSetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        47: .line 786
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        48: .line 787
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        49: .line 790
      StackMap locals:
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasSetter:()Z
            ifne 50
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasUnsafeSetter:()Z
            ifeq 90
        50: .line 791
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            aload 2 /* property */
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.addSuppressWarningsForSetter:(Ljava/io/PrintStream;Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;)V
        51: .line 792
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isShapeProperty:()Z
            ifeq 53
        52: .line 793
            aload 1 /* stream */
            ldc "    @TruffleBoundary"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        53: .line 796
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        54: .line 800
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasUnsafeSetter:()Z
            ifeq 57
        55: .line 801
            ldc "Unsafe"
            astore 4 /* methodNameSuffix */
        start local 4 // java.lang.String methodNameSuffix
        56: .line 802
            goto 58
        end local 4 // java.lang.String methodNameSuffix
        57: .line 803
      StackMap locals:
      StackMap stack:
            ldc ""
            astore 4 /* methodNameSuffix */
        start local 4 // java.lang.String methodNameSuffix
        58: .line 806
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* stream */
            ldc "    public void %s%s(DynamicObject object, %s value) {%n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asSetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 4 /* methodNameSuffix */
            aastore
            dup
            iconst_2
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        59: .line 807
            aload 1 /* stream */
            ldc "        assert is%s(object);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        60: .line 809
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isShapeProperty:()Z
            ifeq 64
        61: .line 810
            aload 1 /* stream */
            ldc "        final Shape shape = object.getShape();"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        62: .line 811
            aload 1 /* stream */
            ldc "        object.setShapeAndGrow(shape, shape.changeType(getObjectType(object).%s(value)));%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asSetter:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        63: .line 812
            goto 88
        64: .line 813
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "        assert object.getShape().hasProperty(%s_IDENTIFIER);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        65: .line 815
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            invokevirtual javax.lang.model.type.TypeKind.isPrimitive:()Z
            ifne 67
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isNullable:()Z
            ifne 67
        66: .line 816
            aload 1 /* stream */
            ldc "        assert value != null;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        67: .line 819
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "        "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        68: .line 821
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasUnsafeSetter:()Z
            ifeq 71
        69: .line 822
            aload 1 /* stream */
            ldc "        %s_PROPERTY.setInternal(object, value);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        70: .line 823
            goto 88
      StackMap locals:
      StackMap stack:
        71: aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isVolatile:()Z
            ifeq 83
        72: .line 824
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.INT:Ljavax/lang/model/type/TypeKind;
            if_acmpne 75
        73: .line 825
            aload 1 /* stream */
            ldc "        ((AtomicInteger) %s_PROPERTY.get(object, is%s(object))).set(value);%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        74: .line 826
            goto 88
      StackMap locals:
      StackMap stack:
        75: aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.BOOLEAN:Ljavax/lang/model/type/TypeKind;
            if_acmpne 78
        76: .line 827
            aload 1 /* stream */
            ldc "        ((AtomicBoolean) %s_PROPERTY.get(object, is%s(object))).set(value);%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        77: .line 828
            goto 88
        78: .line 829
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "        ((AtomicReference<%s>) %s_PROPERTY.get(object, is%s(object))).set(value);%n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_1
        79: .line 830
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        80: .line 831
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
        81: .line 829
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        82: .line 833
            goto 88
        83: .line 834
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "        try {%n"
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        84: .line 835
            aload 1 /* stream */
            ldc "            %s_PROPERTY.set(object, value, object.getShape());%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        85: .line 836
            aload 1 /* stream */
            ldc "        } catch (IncompatibleLocationException | FinalLocationException e) {%n"
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        86: .line 837
            aload 1 /* stream */
            ldc "            throw new UnsupportedOperationException(e);%n"
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        87: .line 838
            aload 1 /* stream */
            ldc "        }%n"
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        88: .line 842
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        89: .line 843
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 4 // java.lang.String methodNameSuffix
        90: .line 846
      StackMap locals:
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasCompareAndSet:()Z
            ifeq 123
        91: .line 847
            aload 1 /* stream */
            aload 2 /* property */
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.addSuppressWarningsUncheckedCast:(Ljava/io/PrintStream;Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;)V
        92: .line 849
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        93: .line 850
            aload 1 /* stream */
            ldc "    public boolean %s(DynamicObject object, %s expected_value, %s value) {%n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        94: .line 851
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asCompareAndSet:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
        95: .line 852
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_2
        96: .line 853
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
        97: .line 850
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        98: .line 855
            aload 1 /* stream */
            ldc "        assert is%s(object);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        99: .line 856
            aload 1 /* stream */
            ldc "        assert object.getShape().hasProperty(%s_IDENTIFIER);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
       100: .line 857
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
       101: .line 856
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       102: .line 858
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            invokevirtual javax.lang.model.type.TypeKind.isPrimitive:()Z
            ifne 104
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isNullable:()Z
            ifne 104
       103: .line 859
            aload 1 /* stream */
            ldc "        assert value != null;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       104: .line 862
      StackMap locals:
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.INT:Ljavax/lang/model/type/TypeKind;
            if_acmpne 110
       105: .line 863
            aload 1 /* stream */
       106: .line 864
            ldc "        return ((AtomicInteger) %s_PROPERTY.get(object, is%s(object))).compareAndSet(expected_value, value);%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
       107: .line 865
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
       108: .line 863
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       109: .line 866
            goto 121
      StackMap locals:
      StackMap stack:
       110: aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.BOOLEAN:Ljavax/lang/model/type/TypeKind;
            if_acmpne 116
       111: .line 867
            aload 1 /* stream */
       112: .line 868
            ldc "        return ((AtomicBoolean) %s_PROPERTY.get(object, is%s(object))).compareAndSet(expected_value, value);%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
       113: .line 869
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
       114: .line 867
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       115: .line 870
            goto 121
       116: .line 871
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
       117: .line 872
            ldc "        return ((AtomicReference<%s>) %s_PROPERTY.get(object, is%s(object))).compareAndSet(expected_value, value);%n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
       118: .line 873
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_1
       119: .line 874
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
       120: .line 871
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       121: .line 877
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       122: .line 878
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       123: .line 881
      StackMap locals:
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.hasGetAndSet:()Z
            ifeq 156
       124: .line 882
            aload 1 /* stream */
            aload 2 /* property */
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.addSuppressWarningsUncheckedCast:(Ljava/io/PrintStream;Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;)V
       125: .line 884
            aload 1 /* stream */
            ldc "    @Override"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       126: .line 885
            aload 1 /* stream */
            ldc "    public %s %s(DynamicObject object, %s value) {%n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
       127: .line 886
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_1
       128: .line 887
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.asGetAndSet:(Ljava/lang/String;)Ljava/lang/Object;
            aastore
            dup
            iconst_2
       129: .line 888
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
       130: .line 885
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       131: .line 890
            aload 1 /* stream */
            ldc "        assert is%s(object);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       132: .line 891
            aload 1 /* stream */
            ldc "        assert object.getShape().hasProperty(%s_IDENTIFIER);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
       133: .line 892
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
       134: .line 891
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       135: .line 893
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            invokevirtual javax.lang.model.type.TypeKind.isPrimitive:()Z
            ifne 137
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isNullable:()Z
            ifne 137
       136: .line 894
            aload 1 /* stream */
            ldc "        assert value != null;"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       137: .line 897
      StackMap locals:
      StackMap stack:
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.INT:Ljavax/lang/model/type/TypeKind;
            if_acmpne 143
       138: .line 898
            aload 1 /* stream */
       139: .line 899
            ldc "        return ((AtomicInteger) %s_PROPERTY.get(object, is%s(object))).getAndSet(value);%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
       140: .line 900
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
       141: .line 898
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       142: .line 901
            goto 154
      StackMap locals:
      StackMap stack:
       143: aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.BOOLEAN:Ljavax/lang/model/type/TypeKind;
            if_acmpne 149
       144: .line 902
            aload 1 /* stream */
       145: .line 903
            ldc "        return ((AtomicBoolean) %s_PROPERTY.get(object, is%s(object))).getAndSet(value);%n"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
       146: .line 904
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
       147: .line 902
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       148: .line 905
            goto 154
       149: .line 906
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
       150: .line 907
            ldc "        return ((AtomicReference<%s>) %s_PROPERTY.get(object, is%s(object))).getAndSet(value);%n"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
       151: .line 908
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            dup
            iconst_1
       152: .line 909
            aload 2 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.object.dsl.processor.model.NameUtils.identifierToConstant:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
       153: .line 906
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       154: .line 912
      StackMap locals:
      StackMap stack:
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       155: .line 913
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 2 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
       156: .line 730
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
       157: .line 917
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getShapeProperties:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 166
       158: .line 918
            aload 1 /* stream */
            ldc "    private"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
       159: .line 920
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.hasObjectTypeGuard:()Z
            ifne 161
       160: .line 921
            aload 1 /* stream */
            ldc " static"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
       161: .line 924
      StackMap locals: com.oracle.truffle.object.dsl.processor.LayoutGenerator java.io.PrintStream
      StackMap stack:
            aload 1 /* stream */
            ldc " %sType getObjectType(DynamicObject object) {%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       162: .line 925
            aload 1 /* stream */
            ldc "        assert is%s(object);%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       163: .line 926
            aload 1 /* stream */
            ldc "        return (%sType) object.getShape().getObjectType();%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
       164: .line 927
            aload 1 /* stream */
            ldc "    }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       165: .line 928
            aload 1 /* stream */
            ldc "    "
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
       166: .line 930
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.PrintStream stream
        end local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0  167     0              this  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;
            0  167     1            stream  Ljava/io/PrintStream;
            2  156     2          property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
           56   57     4  methodNameSuffix  Ljava/lang/String;
           58   90     4  methodNameSuffix  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      stream  final

  private static boolean needsUncheckedCast(com.oracle.truffle.object.dsl.processor.model.PropertyModel);
    descriptor: (Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
         0: .line 933
            aload 0 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            bipush 60
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 2
            aload 0 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.isVolatile:()Z
            ifeq 1
            aload 0 /* property */
            invokevirtual com.oracle.truffle.object.dsl.processor.model.PropertyModel.getType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            invokevirtual javax.lang.model.type.TypeKind.isPrimitive:()Z
            ifeq 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_1
            ireturn
        end local 0 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
    MethodParameters:
          Name  Flags
      property  

  private static void addSuppressWarningsUncheckedCast(java.io.PrintStream, com.oracle.truffle.object.dsl.processor.model.PropertyModel);
    descriptor: (Ljava/io/PrintStream;Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.io.PrintStream stream
        start local 1 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
         0: .line 937
            aload 1 /* property */
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.needsUncheckedCast:(Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;)Z
            ifeq 2
         1: .line 938
            aload 0 /* stream */
            ldc "unchecked"
            invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.addSuppressWarnings:(Ljava/io/PrintStream;Ljava/util/Collection;)V
         2: .line 940
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        end local 0 // java.io.PrintStream stream
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0    stream  Ljava/io/PrintStream;
            0    3     1  property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
    MethodParameters:
          Name  Flags
      stream    final
      property  

  private static void addSuppressWarningsForSetter(java.io.PrintStream, com.oracle.truffle.object.dsl.processor.model.PropertyModel);
    descriptor: (Ljava/io/PrintStream;Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.io.PrintStream stream
        start local 1 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
         0: .line 943
            new java.util.ArrayList
            dup
            iconst_2
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 2 /* warnings */
        start local 2 // java.util.Collection warnings
         1: .line 944
            aload 1 /* property */
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.needsUncheckedCast:(Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;)Z
            ifeq 3
         2: .line 945
            aload 2 /* warnings */
            ldc "unchecked"
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
         3: .line 947
      StackMap locals: java.util.Collection
      StackMap stack:
            aload 0 /* stream */
            aload 2 /* warnings */
            invokestatic com.oracle.truffle.object.dsl.processor.LayoutGenerator.addSuppressWarnings:(Ljava/io/PrintStream;Ljava/util/Collection;)V
         4: .line 948
            return
        end local 2 // java.util.Collection warnings
        end local 1 // com.oracle.truffle.object.dsl.processor.model.PropertyModel property
        end local 0 // java.io.PrintStream stream
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0    stream  Ljava/io/PrintStream;
            0    5     1  property  Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;
            1    5     2  warnings  Ljava/util/Collection<Ljava/lang/String;>;
    MethodParameters:
          Name  Flags
      stream    final
      property  

  private static void addSuppressWarnings(java.io.PrintStream, java.util.Collection<java.lang.String>);
    descriptor: (Ljava/io/PrintStream;Ljava/util/Collection;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // java.io.PrintStream stream
        start local 1 // java.util.Collection warnings
         0: .line 951
            aload 1 /* warnings */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifne 2
         1: .line 952
            aload 0 /* stream */
            ldc "    @SuppressWarnings({%s})\n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* warnings */
            invokeinterface java.util.Collection.stream:()Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  com/oracle/truffle/object/dsl/processor/LayoutGenerator.lambda$0(Ljava/lang/String;)Ljava/lang/String; (6)
                  (Ljava/lang/String;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            ldc ", "
            invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         2: .line 954
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.Collection warnings
        end local 0 // java.io.PrintStream stream
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0    stream  Ljava/io/PrintStream;
            0    3     1  warnings  Ljava/util/Collection<Ljava/lang/String;>;
    Signature: (Ljava/io/PrintStream;Ljava/util/Collection<Ljava/lang/String;>;)V
    MethodParameters:
          Name  Flags
      stream    final
      warnings  

  private static void iterateProperties(java.util.List<com.oracle.truffle.object.dsl.processor.model.PropertyModel>, com.oracle.truffle.object.dsl.processor.LayoutGenerator$PropertyIteratorAction);
    descriptor: (Ljava/util/List;Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator$PropertyIteratorAction;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // java.util.List properties
        start local 1 // com.oracle.truffle.object.dsl.processor.LayoutGenerator$PropertyIteratorAction action
         0: .line 957
            iconst_0
            istore 2 /* n */
        start local 2 // int n
         1: goto 6
         2: .line 958
      StackMap locals: int
      StackMap stack:
            aload 1 /* action */
            aload 0 /* properties */
            iload 2 /* n */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.object.dsl.processor.model.PropertyModel
            iload 2 /* n */
            aload 0 /* properties */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            if_icmpne 3
            iconst_1
            goto 4
      StackMap locals: java.util.List com.oracle.truffle.object.dsl.processor.LayoutGenerator$PropertyIteratorAction int
      StackMap stack: com.oracle.truffle.object.dsl.processor.LayoutGenerator$PropertyIteratorAction com.oracle.truffle.object.dsl.processor.model.PropertyModel
         3: iconst_0
      StackMap locals: java.util.List com.oracle.truffle.object.dsl.processor.LayoutGenerator$PropertyIteratorAction int
      StackMap stack: com.oracle.truffle.object.dsl.processor.LayoutGenerator$PropertyIteratorAction com.oracle.truffle.object.dsl.processor.model.PropertyModel int
         4: invokeinterface com.oracle.truffle.object.dsl.processor.LayoutGenerator$PropertyIteratorAction.run:(Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;Z)V
         5: .line 957
            iinc 2 /* n */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* n */
            aload 0 /* properties */
            invokeinterface java.util.List.size:()I
            if_icmplt 2
        end local 2 // int n
         7: .line 960
            return
        end local 1 // com.oracle.truffle.object.dsl.processor.LayoutGenerator$PropertyIteratorAction action
        end local 0 // java.util.List properties
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0  properties  Ljava/util/List<Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;>;
            0    8     1      action  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator$PropertyIteratorAction;
            1    7     2           n  I
    Signature: (Ljava/util/List<Lcom/oracle/truffle/object/dsl/processor/model/PropertyModel;>;Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator$PropertyIteratorAction;)V
    MethodParameters:
            Name  Flags
      properties  
      action      

  private static java.lang.String cast(javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // javax.lang.model.type.TypeMirror type
         0: .line 963
            aload 0 /* type */
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            ldc Ljava/lang/Object;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 964
            ldc ""
            areturn
         2: .line 966
      StackMap locals:
      StackMap stack:
            ldc "(%s) "
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* type */
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            areturn
        end local 0 // javax.lang.model.type.TypeMirror type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  type  Ljavax/lang/model/type/TypeMirror;
    MethodParameters:
      Name  Flags
      type  

  public java.lang.String getGeneratedClassName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
         0: .line 977
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getPackageName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.object.dsl.processor.LayoutGenerator.layout:Lcom/oracle/truffle/object/dsl/processor/model/LayoutModel;
            invokevirtual com.oracle.truffle.object.dsl.processor.model.LayoutModel.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "LayoutImpl"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.object.dsl.processor.LayoutGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/dsl/processor/LayoutGenerator;

  private static java.lang.String lambda$0(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String s
         0: .line 952
            new java.lang.StringBuilder
            dup
            bipush 34
            invokestatic java.lang.String.valueOf:(C)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* s */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            bipush 34
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     s  Ljava/lang/String;
}
SourceFile: "LayoutGenerator.java"
NestMembers:
  com.oracle.truffle.object.dsl.processor.LayoutGenerator$1  com.oracle.truffle.object.dsl.processor.LayoutGenerator$2  com.oracle.truffle.object.dsl.processor.LayoutGenerator$3  com.oracle.truffle.object.dsl.processor.LayoutGenerator$4  com.oracle.truffle.object.dsl.processor.LayoutGenerator$5  com.oracle.truffle.object.dsl.processor.LayoutGenerator$6  com.oracle.truffle.object.dsl.processor.LayoutGenerator$PropertyIteratorAction
InnerClasses:
  com.oracle.truffle.object.dsl.processor.LayoutGenerator$1
  com.oracle.truffle.object.dsl.processor.LayoutGenerator$2
  com.oracle.truffle.object.dsl.processor.LayoutGenerator$3
  com.oracle.truffle.object.dsl.processor.LayoutGenerator$4
  com.oracle.truffle.object.dsl.processor.LayoutGenerator$5
  com.oracle.truffle.object.dsl.processor.LayoutGenerator$6
  private abstract PropertyIteratorAction = com.oracle.truffle.object.dsl.processor.LayoutGenerator$PropertyIteratorAction of com.oracle.truffle.object.dsl.processor.LayoutGenerator
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles