public abstract class com.oracle.truffle.object.ShapeImpl extends com.oracle.truffle.api.object.Shape
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.object.ShapeImpl
  super_class: com.oracle.truffle.api.object.Shape
{
  protected final int flags;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final com.oracle.truffle.object.LayoutImpl layout;
    descriptor: Lcom/oracle/truffle/object/LayoutImpl;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.Object objectType;
    descriptor: Ljava/lang/Object;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final com.oracle.truffle.object.ShapeImpl parent;
    descriptor: Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final com.oracle.truffle.object.PropertyMap propertyMap;
    descriptor: Lcom/oracle/truffle/object/PropertyMap;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.Object sharedData;
    descriptor: Ljava/lang/Object;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private final com.oracle.truffle.object.ShapeImpl root;
    descriptor: Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected final int objectArraySize;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final int objectArrayCapacity;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final int objectFieldSize;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final int primitiveFieldSize;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final int primitiveArraySize;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final int primitiveArrayCapacity;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final boolean hasPrimitiveArray;
    descriptor: Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final int depth;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final int propertyCount;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final com.oracle.truffle.api.Assumption validAssumption;
    descriptor: Lcom/oracle/truffle/api/Assumption;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected volatile com.oracle.truffle.api.Assumption leafAssumption;
    descriptor: Lcom/oracle/truffle/api/Assumption;
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$CompilationFinal()

  private volatile java.lang.Object transitionMap;
    descriptor: Ljava/lang/Object;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private final com.oracle.truffle.object.Transition transitionFromParent;
    descriptor: Lcom/oracle/truffle/object/Transition;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile com.oracle.truffle.object.ShapeImpl$PropertyAssumptions sharedPropertyAssumptions;
    descriptor: Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<com.oracle.truffle.object.ShapeImpl, java.lang.Object> TRANSITION_MAP_UPDATER;
    descriptor: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;>;

  private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.Assumption> LEAF_ASSUMPTION_UPDATER;
    descriptor: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/Assumption;>;

  private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.ShapeImpl$PropertyAssumptions> PROPERTY_ASSUMPTIONS_UPDATER;
    descriptor: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;>;

  protected static final int FLAG_SHARED_SHAPE;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 65536

  protected static final int FLAG_ALLOW_PROPERTY_ASSUMPTIONS;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 131072

  protected static final int FLAG_HAS_INSTANCE_PROPERTIES;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 262144

  protected static final int OBJECT_FLAGS_MASK;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 255

  protected static final int OBJECT_FLAGS_SHIFT;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final com.oracle.truffle.object.DebugCounter shapeCount;
    descriptor: Lcom/oracle/truffle/object/DebugCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final com.oracle.truffle.object.DebugCounter shapeCloneCount;
    descriptor: Lcom/oracle/truffle/object/DebugCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final com.oracle.truffle.object.DebugCounter shapeCacheHitCount;
    descriptor: Lcom/oracle/truffle/object/DebugCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final com.oracle.truffle.object.DebugCounter shapeCacheMissCount;
    descriptor: Lcom/oracle/truffle/object/DebugCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final com.oracle.truffle.object.DebugCounter shapeCacheExpunged;
    descriptor: Lcom/oracle/truffle/object/DebugCounter;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final com.oracle.truffle.object.DebugCounter propertyAssumptionsCreated;
    descriptor: Lcom/oracle/truffle/object/DebugCounter;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final com.oracle.truffle.object.DebugCounter propertyAssumptionsRemoved;
    descriptor: Lcom/oracle/truffle/object/DebugCounter;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 98
            ldc Lcom/oracle/truffle/object/ShapeImpl;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
         3: .line 156
            ldc Lcom/oracle/truffle/object/ShapeImpl;
            ldc Ljava/lang/Object;
            ldc "transitionMap"
            invokestatic java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
            putstatic com.oracle.truffle.object.ShapeImpl.TRANSITION_MAP_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
         4: .line 157
            ldc Lcom/oracle/truffle/object/ShapeImpl;
            ldc Lcom/oracle/truffle/api/Assumption;
            ldc "leafAssumption"
            invokestatic java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
            putstatic com.oracle.truffle.object.ShapeImpl.LEAF_ASSUMPTION_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
         5: .line 159
            ldc Lcom/oracle/truffle/object/ShapeImpl;
            ldc Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
            ldc "sharedPropertyAssumptions"
            invokestatic java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
         6: .line 158
            putstatic com.oracle.truffle.object.ShapeImpl.PROPERTY_ASSUMPTIONS_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
         7: .line 1508
            ldc "Shapes allocated total"
            invokestatic com.oracle.truffle.object.DebugCounter.create:(Ljava/lang/String;)Lcom/oracle/truffle/object/DebugCounter;
            putstatic com.oracle.truffle.object.ShapeImpl.shapeCount:Lcom/oracle/truffle/object/DebugCounter;
         8: .line 1509
            ldc "Shapes allocated cloned"
            invokestatic com.oracle.truffle.object.DebugCounter.create:(Ljava/lang/String;)Lcom/oracle/truffle/object/DebugCounter;
            putstatic com.oracle.truffle.object.ShapeImpl.shapeCloneCount:Lcom/oracle/truffle/object/DebugCounter;
         9: .line 1510
            ldc "Shape cache hits"
            invokestatic com.oracle.truffle.object.DebugCounter.create:(Ljava/lang/String;)Lcom/oracle/truffle/object/DebugCounter;
            putstatic com.oracle.truffle.object.ShapeImpl.shapeCacheHitCount:Lcom/oracle/truffle/object/DebugCounter;
        10: .line 1511
            ldc "Shape cache misses"
            invokestatic com.oracle.truffle.object.DebugCounter.create:(Ljava/lang/String;)Lcom/oracle/truffle/object/DebugCounter;
            putstatic com.oracle.truffle.object.ShapeImpl.shapeCacheMissCount:Lcom/oracle/truffle/object/DebugCounter;
        11: .line 1512
            ldc "Shape cache expunged"
            invokestatic com.oracle.truffle.object.DebugCounter.create:(Ljava/lang/String;)Lcom/oracle/truffle/object/DebugCounter;
            putstatic com.oracle.truffle.object.ShapeImpl.shapeCacheExpunged:Lcom/oracle/truffle/object/DebugCounter;
        12: .line 1513
            ldc "Property assumptions created"
            invokestatic com.oracle.truffle.object.DebugCounter.create:(Ljava/lang/String;)Lcom/oracle/truffle/object/DebugCounter;
            putstatic com.oracle.truffle.object.ShapeImpl.propertyAssumptionsCreated:Lcom/oracle/truffle/object/DebugCounter;
        13: .line 1514
            ldc "Property assumptions removed"
            invokestatic com.oracle.truffle.object.DebugCounter.create:(Ljava/lang/String;)Lcom/oracle/truffle/object/DebugCounter;
            putstatic com.oracle.truffle.object.ShapeImpl.propertyAssumptionsRemoved:Lcom/oracle/truffle/object/DebugCounter;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(com.oracle.truffle.api.object.Layout, com.oracle.truffle.object.ShapeImpl, java.lang.Object, java.lang.Object, com.oracle.truffle.object.PropertyMap, com.oracle.truffle.object.Transition, int, int, int, int, boolean, int, com.oracle.truffle.api.Assumption);
    descriptor: (Lcom/oracle/truffle/api/object/Layout;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;IIIIZILcom/oracle/truffle/api/Assumption;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=15, args_size=14
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Layout layout
        start local 2 // com.oracle.truffle.object.ShapeImpl parent
        start local 3 // java.lang.Object objectType
        start local 4 // java.lang.Object sharedData
        start local 5 // com.oracle.truffle.object.PropertyMap propertyMap
        start local 6 // com.oracle.truffle.object.Transition transitionFromParent
        start local 7 // int objectArraySize
        start local 8 // int objectFieldSize
        start local 9 // int primitiveFieldSize
        start local 10 // int primitiveArraySize
        start local 11 // boolean hasPrimitiveArray
        start local 12 // int flags
        start local 13 // com.oracle.truffle.api.Assumption singleContextAssumption
         0: .line 177
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.object.Shape.<init>:()V
         1: .line 179
            aload 0 /* this */
            aload 1 /* layout */
            checkcast com.oracle.truffle.object.LayoutImpl
            putfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
         2: .line 180
            aload 0 /* this */
            aload 3 /* objectType */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            putfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
         3: .line 181
            aload 0 /* this */
            aload 5 /* propertyMap */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.object.PropertyMap
            putfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
         4: .line 182
            aload 0 /* this */
            aload 2 /* parent */
            ifnull 5
            aload 2 /* parent */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getRoot:()Lcom/oracle/truffle/object/ShapeImpl;
            goto 6
      StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.api.object.Layout com.oracle.truffle.object.ShapeImpl java.lang.Object java.lang.Object com.oracle.truffle.object.PropertyMap com.oracle.truffle.object.Transition int int int int int int com.oracle.truffle.api.Assumption
      StackMap stack: com.oracle.truffle.object.ShapeImpl
         5: aload 0 /* this */
      StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.api.object.Layout com.oracle.truffle.object.ShapeImpl java.lang.Object java.lang.Object com.oracle.truffle.object.PropertyMap com.oracle.truffle.object.Transition int int int int int int com.oracle.truffle.api.Assumption
      StackMap stack: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.ShapeImpl
         6: putfield com.oracle.truffle.object.ShapeImpl.root:Lcom/oracle/truffle/object/ShapeImpl;
         7: .line 183
            aload 0 /* this */
            aload 2 /* parent */
            putfield com.oracle.truffle.object.ShapeImpl.parent:Lcom/oracle/truffle/object/ShapeImpl;
         8: .line 185
            aload 0 /* this */
            iload 7 /* objectArraySize */
            putfield com.oracle.truffle.object.ShapeImpl.objectArraySize:I
         9: .line 186
            aload 0 /* this */
            iload 7 /* objectArraySize */
            invokestatic com.oracle.truffle.object.ShapeImpl.capacityFromSize:(I)I
            putfield com.oracle.truffle.object.ShapeImpl.objectArrayCapacity:I
        10: .line 187
            aload 0 /* this */
            iload 8 /* objectFieldSize */
            putfield com.oracle.truffle.object.ShapeImpl.objectFieldSize:I
        11: .line 188
            aload 0 /* this */
            iload 9 /* primitiveFieldSize */
            putfield com.oracle.truffle.object.ShapeImpl.primitiveFieldSize:I
        12: .line 189
            aload 0 /* this */
            iload 10 /* primitiveArraySize */
            putfield com.oracle.truffle.object.ShapeImpl.primitiveArraySize:I
        13: .line 190
            aload 0 /* this */
            iload 10 /* primitiveArraySize */
            invokestatic com.oracle.truffle.object.ShapeImpl.capacityFromSize:(I)I
            putfield com.oracle.truffle.object.ShapeImpl.primitiveArrayCapacity:I
        14: .line 191
            aload 0 /* this */
            iload 11 /* hasPrimitiveArray */
            putfield com.oracle.truffle.object.ShapeImpl.hasPrimitiveArray:Z
        15: .line 193
            aload 2 /* parent */
            ifnull 19
        16: .line 194
            aload 0 /* this */
            aload 2 /* parent */
            aload 5 /* propertyMap */
            aload 6 /* transitionFromParent */
            invokestatic com.oracle.truffle.object.ShapeImpl.makePropertyCount:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;)I
            putfield com.oracle.truffle.object.ShapeImpl.propertyCount:I
        17: .line 195
            aload 0 /* this */
            aload 2 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.depth:I
            iconst_1
            iadd
            putfield com.oracle.truffle.object.ShapeImpl.depth:I
        18: .line 196
            goto 21
        19: .line 197
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.object.ShapeImpl.propertyCount:I
        20: .line 198
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.object.ShapeImpl.depth:I
        21: .line 201
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic com.oracle.truffle.object.ShapeImpl.createValidAssumption:()Lcom/oracle/truffle/api/Assumption;
            putfield com.oracle.truffle.object.ShapeImpl.validAssumption:Lcom/oracle/truffle/api/Assumption;
        22: .line 203
            iload 12 /* flags */
            istore 14 /* allFlags */
        start local 14 // int allFlags
        23: .line 204
            iload 14 /* allFlags */
            ldc 262144
            iand
            ifne 26
        24: .line 205
            iload 8 /* objectFieldSize */
            ifne 25
            iload 7 /* objectArraySize */
            ifne 25
            iload 9 /* primitiveFieldSize */
            ifne 25
            iload 10 /* primitiveArraySize */
            ifeq 26
        25: .line 206
      StackMap locals: int
      StackMap stack:
            iload 14 /* allFlags */
            ldc 262144
            ior
            istore 14 /* allFlags */
        26: .line 210
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 14 /* allFlags */
            putfield com.oracle.truffle.object.ShapeImpl.flags:I
        27: .line 211
            aload 0 /* this */
            aload 6 /* transitionFromParent */
            putfield com.oracle.truffle.object.ShapeImpl.transitionFromParent:Lcom/oracle/truffle/object/Transition;
        28: .line 212
            aload 0 /* this */
            aload 4 /* sharedData */
            putfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
        29: .line 213
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 30
            aload 2 /* parent */
            ifnull 30
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            aload 2 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            if_acmpeq 30
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        30: .line 215
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* parent */
            ifnonnull 32
            iload 12 /* flags */
            ldc 131072
            iand
            ifeq 32
            aload 13 /* singleContextAssumption */
            ifnull 32
        31: .line 216
            new com.oracle.truffle.object.ShapeImpl$PropertyAssumptions
            dup
            aload 13 /* singleContextAssumption */
            invokespecial com.oracle.truffle.object.ShapeImpl$PropertyAssumptions.<init>:(Lcom/oracle/truffle/api/Assumption;)V
            goto 33
        32: .line 217
      StackMap locals:
      StackMap stack: com.oracle.truffle.object.ShapeImpl
            aconst_null
        33: .line 215
      StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.api.object.Layout com.oracle.truffle.object.ShapeImpl java.lang.Object java.lang.Object com.oracle.truffle.object.PropertyMap com.oracle.truffle.object.Transition int int int int int int com.oracle.truffle.api.Assumption int
      StackMap stack: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.ShapeImpl$PropertyAssumptions
            putfield com.oracle.truffle.object.ShapeImpl.sharedPropertyAssumptions:Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
        34: .line 219
            getstatic com.oracle.truffle.object.ShapeImpl.shapeCount:Lcom/oracle/truffle/object/DebugCounter;
            invokevirtual com.oracle.truffle.object.DebugCounter.inc:()V
        35: .line 220
            getstatic com.oracle.truffle.object.ObjectStorageOptions.DumpShapes:Z
            ifeq 37
        36: .line 221
            aload 0 /* this */
            invokestatic com.oracle.truffle.object.Debug.trackShape:(Lcom/oracle/truffle/object/ShapeImpl;)V
        37: .line 223
      StackMap locals:
      StackMap stack:
            return
        end local 14 // int allFlags
        end local 13 // com.oracle.truffle.api.Assumption singleContextAssumption
        end local 12 // int flags
        end local 11 // boolean hasPrimitiveArray
        end local 10 // int primitiveArraySize
        end local 9 // int primitiveFieldSize
        end local 8 // int objectFieldSize
        end local 7 // int objectArraySize
        end local 6 // com.oracle.truffle.object.Transition transitionFromParent
        end local 5 // com.oracle.truffle.object.PropertyMap propertyMap
        end local 4 // java.lang.Object sharedData
        end local 3 // java.lang.Object objectType
        end local 2 // com.oracle.truffle.object.ShapeImpl parent
        end local 1 // com.oracle.truffle.api.object.Layout layout
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   38     0                     this  Lcom/oracle/truffle/object/ShapeImpl;
            0   38     1                   layout  Lcom/oracle/truffle/api/object/Layout;
            0   38     2                   parent  Lcom/oracle/truffle/object/ShapeImpl;
            0   38     3               objectType  Ljava/lang/Object;
            0   38     4               sharedData  Ljava/lang/Object;
            0   38     5              propertyMap  Lcom/oracle/truffle/object/PropertyMap;
            0   38     6     transitionFromParent  Lcom/oracle/truffle/object/Transition;
            0   38     7          objectArraySize  I
            0   38     8          objectFieldSize  I
            0   38     9       primitiveFieldSize  I
            0   38    10       primitiveArraySize  I
            0   38    11        hasPrimitiveArray  Z
            0   38    12                    flags  I
            0   38    13  singleContextAssumption  Lcom/oracle/truffle/api/Assumption;
           23   38    14                 allFlags  I
    MethodParameters:
                         Name  Flags
      layout                   
      parent                   
      objectType               
      sharedData               
      propertyMap              
      transitionFromParent     
      objectArraySize          
      objectFieldSize          
      primitiveFieldSize       
      primitiveArraySize       
      hasPrimitiveArray        
      flags                    
      singleContextAssumption  

  protected void <init>(com.oracle.truffle.api.object.Layout, com.oracle.truffle.object.ShapeImpl, java.lang.Object, java.lang.Object, com.oracle.truffle.object.PropertyMap, com.oracle.truffle.object.Transition, com.oracle.truffle.api.object.Shape$Allocator, int);
    descriptor: (Lcom/oracle/truffle/api/object/Layout;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=14, locals=9, args_size=9
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Layout layout
        start local 2 // com.oracle.truffle.object.ShapeImpl parent
        start local 3 // java.lang.Object objectType
        start local 4 // java.lang.Object sharedData
        start local 5 // com.oracle.truffle.object.PropertyMap propertyMap
        start local 6 // com.oracle.truffle.object.Transition transition
        start local 7 // com.oracle.truffle.api.object.Shape$Allocator allocator
        start local 8 // int flags
         0: .line 227
            aload 0 /* this */
            aload 1 /* layout */
            aload 2 /* parent */
            aload 3 /* objectType */
            aload 4 /* sharedData */
            aload 5 /* propertyMap */
            aload 6 /* transition */
            aload 7 /* allocator */
            checkcast com.oracle.truffle.object.ShapeImpl$BaseAllocator
            getfield com.oracle.truffle.object.ShapeImpl$BaseAllocator.objectArraySize:I
            aload 7 /* allocator */
            checkcast com.oracle.truffle.object.ShapeImpl$BaseAllocator
            getfield com.oracle.truffle.object.ShapeImpl$BaseAllocator.objectFieldSize:I
         1: .line 228
            aload 7 /* allocator */
            checkcast com.oracle.truffle.object.ShapeImpl$BaseAllocator
            getfield com.oracle.truffle.object.ShapeImpl$BaseAllocator.primitiveFieldSize:I
            aload 7 /* allocator */
            checkcast com.oracle.truffle.object.ShapeImpl$BaseAllocator
            getfield com.oracle.truffle.object.ShapeImpl$BaseAllocator.primitiveArraySize:I
            aload 7 /* allocator */
            checkcast com.oracle.truffle.object.ShapeImpl$BaseAllocator
            getfield com.oracle.truffle.object.ShapeImpl$BaseAllocator.hasPrimitiveArray:Z
            iload 8 /* flags */
            aconst_null
            invokespecial com.oracle.truffle.object.ShapeImpl.<init>:(Lcom/oracle/truffle/api/object/Layout;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;IIIIZILcom/oracle/truffle/api/Assumption;)V
         2: .line 229
            return
        end local 8 // int flags
        end local 7 // com.oracle.truffle.api.object.Shape$Allocator allocator
        end local 6 // com.oracle.truffle.object.Transition transition
        end local 5 // com.oracle.truffle.object.PropertyMap propertyMap
        end local 4 // java.lang.Object sharedData
        end local 3 // java.lang.Object objectType
        end local 2 // com.oracle.truffle.object.ShapeImpl parent
        end local 1 // com.oracle.truffle.api.object.Layout layout
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lcom/oracle/truffle/object/ShapeImpl;
            0    3     1       layout  Lcom/oracle/truffle/api/object/Layout;
            0    3     2       parent  Lcom/oracle/truffle/object/ShapeImpl;
            0    3     3   objectType  Ljava/lang/Object;
            0    3     4   sharedData  Ljava/lang/Object;
            0    3     5  propertyMap  Lcom/oracle/truffle/object/PropertyMap;
            0    3     6   transition  Lcom/oracle/truffle/object/Transition;
            0    3     7    allocator  Lcom/oracle/truffle/api/object/Shape$Allocator;
            0    3     8        flags  I
    MethodParameters:
             Name  Flags
      layout       
      parent       
      objectType   
      sharedData   
      propertyMap  
      transition   
      allocator    
      flags        

  protected abstract com.oracle.truffle.object.ShapeImpl createShape(com.oracle.truffle.api.object.Layout, java.lang.Object, com.oracle.truffle.object.ShapeImpl, java.lang.Object, com.oracle.truffle.object.PropertyMap, com.oracle.truffle.object.Transition, com.oracle.truffle.api.object.Shape$Allocator, int);
    descriptor: (Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
             Name  Flags
      layout       
      sharedData   
      parent       
      objectType   
      propertyMap  
      transition   
      allocator    
      id           

  protected void <init>(com.oracle.truffle.api.object.Layout, java.lang.Object, java.lang.Object, int, com.oracle.truffle.api.Assumption);
    descriptor: (Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/Assumption;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=14, locals=6, args_size=6
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Layout layout
        start local 2 // java.lang.Object dynamicType
        start local 3 // java.lang.Object sharedData
        start local 4 // int flags
        start local 5 // com.oracle.truffle.api.Assumption constantObjectAssumption
         0: .line 237
            aload 0 /* this */
            aload 1 /* layout */
            aconst_null
            aload 2 /* dynamicType */
            aload 3 /* sharedData */
            invokestatic com.oracle.truffle.object.PropertyMap.empty:()Lcom/oracle/truffle/object/PropertyMap;
            aconst_null
            iconst_0
            iconst_0
            iconst_0
            iconst_0
            iconst_1
            iload 4 /* flags */
            aload 5 /* constantObjectAssumption */
            invokespecial com.oracle.truffle.object.ShapeImpl.<init>:(Lcom/oracle/truffle/api/object/Layout;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;IIIIZILcom/oracle/truffle/api/Assumption;)V
         1: .line 238
            return
        end local 5 // com.oracle.truffle.api.Assumption constantObjectAssumption
        end local 4 // int flags
        end local 3 // java.lang.Object sharedData
        end local 2 // java.lang.Object dynamicType
        end local 1 // com.oracle.truffle.api.object.Layout layout
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    2     0                      this  Lcom/oracle/truffle/object/ShapeImpl;
            0    2     1                    layout  Lcom/oracle/truffle/api/object/Layout;
            0    2     2               dynamicType  Ljava/lang/Object;
            0    2     3                sharedData  Ljava/lang/Object;
            0    2     4                     flags  I
            0    2     5  constantObjectAssumption  Lcom/oracle/truffle/api/Assumption;
    MethodParameters:
                          Name  Flags
      layout                    
      dynamicType               
      sharedData                
      flags                     
      constantObjectAssumption  

  private static int makePropertyCount(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.PropertyMap, com.oracle.truffle.object.Transition);
    descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=3
        start local 0 // com.oracle.truffle.object.ShapeImpl parent
        start local 1 // com.oracle.truffle.object.PropertyMap propertyMap
        start local 2 // com.oracle.truffle.object.Transition transitionFromParent
         0: .line 241
            aload 1 /* propertyMap */
            invokevirtual com.oracle.truffle.object.PropertyMap.size:()I
            istore 3 /* thisSize */
        start local 3 // int thisSize
         1: .line 242
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            invokevirtual com.oracle.truffle.object.PropertyMap.size:()I
            istore 4 /* parentSize */
        start local 4 // int parentSize
         2: .line 243
            iload 3 /* thisSize */
            iload 4 /* parentSize */
            if_icmple 6
         3: .line 244
            aload 1 /* propertyMap */
            invokevirtual com.oracle.truffle.object.PropertyMap.getLastProperty:()Lcom/oracle/truffle/api/object/Property;
            astore 5 /* lastProperty */
        start local 5 // com.oracle.truffle.api.object.Property lastProperty
         4: .line 245
            aload 5 /* lastProperty */
            invokevirtual com.oracle.truffle.api.object.Property.isHidden:()Z
            ifne 9
         5: .line 246
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.propertyCount:I
            iconst_1
            iadd
            ireturn
        end local 5 // com.oracle.truffle.api.object.Property lastProperty
         6: .line 248
      StackMap locals: int int
      StackMap stack:
            iload 3 /* thisSize */
            iload 4 /* parentSize */
            if_icmpge 9
            aload 2 /* transitionFromParent */
            instanceof com.oracle.truffle.object.Transition$RemovePropertyTransition
            ifeq 9
         7: .line 249
            aload 2 /* transitionFromParent */
            checkcast com.oracle.truffle.object.Transition$RemovePropertyTransition
            invokevirtual com.oracle.truffle.object.Transition$RemovePropertyTransition.getProperty:()Lcom/oracle/truffle/api/object/Property;
            invokevirtual com.oracle.truffle.api.object.Property.isHidden:()Z
            ifne 9
         8: .line 250
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.propertyCount:I
            iconst_1
            isub
            ireturn
         9: .line 253
      StackMap locals:
      StackMap stack:
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.propertyCount:I
            ireturn
        end local 4 // int parentSize
        end local 3 // int thisSize
        end local 2 // com.oracle.truffle.object.Transition transitionFromParent
        end local 1 // com.oracle.truffle.object.PropertyMap propertyMap
        end local 0 // com.oracle.truffle.object.ShapeImpl parent
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   10     0                parent  Lcom/oracle/truffle/object/ShapeImpl;
            0   10     1           propertyMap  Lcom/oracle/truffle/object/PropertyMap;
            0   10     2  transitionFromParent  Lcom/oracle/truffle/object/Transition;
            1   10     3              thisSize  I
            2   10     4            parentSize  I
            4    6     5          lastProperty  Lcom/oracle/truffle/api/object/Property;
    MethodParameters:
                      Name  Flags
      parent                
      propertyMap           
      transitionFromParent  

  public final com.oracle.truffle.api.object.Property getLastProperty();
    descriptor: ()Lcom/oracle/truffle/api/object/Property;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 259
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            invokevirtual com.oracle.truffle.object.PropertyMap.getLastProperty:()Lcom/oracle/truffle/api/object/Property;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final int getId();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 265
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            invokestatic com.oracle.truffle.object.ShapeImpl.getObjectFlags:(I)I
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final int getFlags();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 270
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            invokestatic com.oracle.truffle.object.ShapeImpl.getObjectFlags:(I)I
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final int getFlagsInternal();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 274
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  private static int capacityFromSize(int);
    descriptor: (I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // int size
         0: .line 281
            iload 0 /* size */
            ifne 2
         1: .line 282
            iconst_0
            ireturn
         2: .line 283
      StackMap locals:
      StackMap stack:
            iload 0 /* size */
            iconst_4
            if_icmpgt 4
         3: .line 284
            iconst_4
            ireturn
         4: .line 285
      StackMap locals:
      StackMap stack:
            iload 0 /* size */
            bipush 8
            if_icmpgt 6
         5: .line 286
            bipush 8
            ireturn
         6: .line 290
      StackMap locals:
      StackMap stack:
            iload 0 /* size */
            invokestatic java.lang.Integer.highestOneBit:(I)I
            istore 1 /* hi */
        start local 1 // int hi
         7: .line 291
            iload 1 /* hi */
            istore 2 /* cap */
        start local 2 // int cap
         8: .line 292
            iload 2 /* cap */
            iload 0 /* size */
            if_icmpge 14
         9: .line 293
            iload 1 /* hi */
            iload 1 /* hi */
            iconst_1
            iushr
            iadd
            istore 2 /* cap */
        10: .line 294
            iload 2 /* cap */
            iload 0 /* size */
            if_icmpge 14
        11: .line 295
            iload 1 /* hi */
            iconst_1
            ishl
            istore 2 /* cap */
        12: .line 296
            iload 2 /* cap */
            iload 0 /* size */
            if_icmpge 14
        13: .line 298
            iload 0 /* size */
            istore 2 /* cap */
        14: .line 302
      StackMap locals: int int
      StackMap stack:
            iload 2 /* cap */
            ireturn
        end local 2 // int cap
        end local 1 // int hi
        end local 0 // int size
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0  size  I
            7   15     1    hi  I
            8   15     2   cap  I
    MethodParameters:
      Name  Flags
      size  

  public final int getObjectArraySize();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 308
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.objectArraySize:I
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final int getObjectFieldSize();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 313
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.objectFieldSize:I
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final int getPrimitiveFieldSize();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 318
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.primitiveFieldSize:I
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final int getObjectArrayCapacity();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 323
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.objectArrayCapacity:I
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final int getPrimitiveArrayCapacity();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 328
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.primitiveArrayCapacity:I
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final int getPrimitiveArraySize();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 333
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.primitiveArraySize:I
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final boolean hasPrimitiveArray();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 338
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.hasPrimitiveArray:Z
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  protected boolean hasInstanceProperties();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 346
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            ldc 262144
            iand
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public com.oracle.truffle.api.object.Property getProperty(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // java.lang.Object key
         0: .line 359
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            aload 1 /* key */
            invokevirtual com.oracle.truffle.object.PropertyMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            areturn
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;
            0    1     1   key  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
      Name  Flags
      key   

  public final com.oracle.truffle.object.PropertyMap getPropertyMap();
    descriptor: ()Lcom/oracle/truffle/object/PropertyMap;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 364
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final void addDirectTransition(com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl);
    descriptor: (Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.object.Transition transition
        start local 2 // com.oracle.truffle.object.ShapeImpl next
         0: .line 369
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 2
            aload 2 /* next */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getParent:()Lcom/oracle/truffle/object/ShapeImpl;
            aload 0 /* this */
            if_acmpne 1
            aload 1 /* transition */
            invokevirtual com.oracle.truffle.object.Transition.isDirect:()Z
            ifne 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 370
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* transition */
            aload 2 /* next */
            invokevirtual com.oracle.truffle.object.ShapeImpl.addTransitionInternal:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
         3: .line 371
            return
        end local 2 // com.oracle.truffle.object.ShapeImpl next
        end local 1 // com.oracle.truffle.object.Transition transition
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lcom/oracle/truffle/object/ShapeImpl;
            0    4     1  transition  Lcom/oracle/truffle/object/Transition;
            0    4     2        next  Lcom/oracle/truffle/object/ShapeImpl;
    MethodParameters:
            Name  Flags
      transition  
      next        

  public final void addIndirectTransition(com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl);
    descriptor: (Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.object.Transition transition
        start local 2 // com.oracle.truffle.object.ShapeImpl next
         0: .line 375
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.isShared:()Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 376
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 3
            aload 2 /* next */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getParent:()Lcom/oracle/truffle/object/ShapeImpl;
            aload 0 /* this */
            if_acmpeq 2
            aload 1 /* transition */
            invokevirtual com.oracle.truffle.object.Transition.isDirect:()Z
            ifeq 3
      StackMap locals:
      StackMap stack:
         2: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 377
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* transition */
            aload 2 /* next */
            invokevirtual com.oracle.truffle.object.ShapeImpl.addTransitionInternal:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
         4: .line 378
            return
        end local 2 // com.oracle.truffle.object.ShapeImpl next
        end local 1 // com.oracle.truffle.object.Transition transition
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/oracle/truffle/object/ShapeImpl;
            0    5     1  transition  Lcom/oracle/truffle/object/Transition;
            0    5     2        next  Lcom/oracle/truffle/object/ShapeImpl;
    MethodParameters:
            Name  Flags
      transition  
      next        

  private void addTransitionInternal(com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl);
    descriptor: (Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.object.Transition transition
        start local 2 // com.oracle.truffle.object.ShapeImpl successor
         0: .line 381
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 385
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.TRANSITION_MAP_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* prev */
        start local 3 // java.lang.Object prev
         2: .line 386
            aload 3 /* prev */
            ifnonnull 6
         3: .line 387
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.invalidateLeafAssumption:()V
         4: .line 388
            aload 1 /* transition */
            aload 2 /* successor */
            invokestatic com.oracle.truffle.object.ShapeImpl.newSingleEntry:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)Ljava/lang/Object;
            astore 4 /* next */
        start local 4 // java.lang.Object next
         5: .line 389
            goto 16
        end local 4 // java.lang.Object next
      StackMap locals: java.lang.Object
      StackMap stack:
         6: aload 3 /* prev */
            invokestatic com.oracle.truffle.object.ShapeImpl.isSingleEntry:(Ljava/lang/Object;)Z
            ifeq 15
         7: .line 390
            aload 3 /* prev */
            invokestatic com.oracle.truffle.object.ShapeImpl.asSingleEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/StrongKeyWeakValueEntry;
            astore 5 /* entry */
        start local 5 // com.oracle.truffle.object.StrongKeyWeakValueEntry entry
         8: .line 391
            aload 5 /* entry */
            invokevirtual com.oracle.truffle.object.StrongKeyWeakValueEntry.getKey:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.Transition
            astore 6 /* exTra */
        start local 6 // com.oracle.truffle.object.Transition exTra
         9: .line 392
            aload 5 /* entry */
            invokevirtual com.oracle.truffle.object.StrongKeyWeakValueEntry.getValue:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.ShapeImpl
            astore 7 /* exSucc */
        start local 7 // com.oracle.truffle.object.ShapeImpl exSucc
        10: .line 393
            aload 7 /* exSucc */
            ifnull 13
        11: .line 394
            aload 6 /* exTra */
            aload 7 /* exSucc */
            aload 1 /* transition */
            aload 2 /* successor */
            invokestatic com.oracle.truffle.object.ShapeImpl.newTransitionMap:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)Ljava/lang/Object;
            astore 4 /* next */
        start local 4 // java.lang.Object next
        12: .line 395
            goto 16
        end local 4 // java.lang.Object next
        13: .line 396
      StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.Transition com.oracle.truffle.object.ShapeImpl java.lang.Object top com.oracle.truffle.object.StrongKeyWeakValueEntry com.oracle.truffle.object.Transition com.oracle.truffle.object.ShapeImpl
      StackMap stack:
            aload 1 /* transition */
            aload 2 /* successor */
            invokestatic com.oracle.truffle.object.ShapeImpl.newSingleEntry:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)Ljava/lang/Object;
            astore 4 /* next */
        end local 7 // com.oracle.truffle.object.ShapeImpl exSucc
        end local 6 // com.oracle.truffle.object.Transition exTra
        end local 5 // com.oracle.truffle.object.StrongKeyWeakValueEntry entry
        start local 4 // java.lang.Object next
        14: .line 398
            goto 16
        end local 4 // java.lang.Object next
        15: .line 399
      StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.Transition com.oracle.truffle.object.ShapeImpl java.lang.Object
      StackMap stack:
            aload 1 /* transition */
            aload 2 /* successor */
            aload 3 /* prev */
            invokestatic com.oracle.truffle.object.ShapeImpl.addToTransitionMap:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* next */
        start local 4 // java.lang.Object next
        16: .line 401
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 3 /* prev */
            aload 4 /* next */
            if_acmpne 18
        17: .line 402
            goto 19
        18: .line 404
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.TRANSITION_MAP_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
            aload 0 /* this */
            aload 3 /* prev */
            aload 4 /* next */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 1
        19: .line 405
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.lang.Object next
        end local 3 // java.lang.Object prev
        end local 2 // com.oracle.truffle.object.ShapeImpl successor
        end local 1 // com.oracle.truffle.object.Transition transition
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   20     0        this  Lcom/oracle/truffle/object/ShapeImpl;
            0   20     1  transition  Lcom/oracle/truffle/object/Transition;
            0   20     2   successor  Lcom/oracle/truffle/object/ShapeImpl;
            2   20     3        prev  Ljava/lang/Object;
            5    6     4        next  Ljava/lang/Object;
           12   13     4        next  Ljava/lang/Object;
           14   15     4        next  Ljava/lang/Object;
           16   20     4        next  Ljava/lang/Object;
            8   14     5       entry  Lcom/oracle/truffle/object/StrongKeyWeakValueEntry<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
            9   14     6       exTra  Lcom/oracle/truffle/object/Transition;
           10   14     7      exSucc  Lcom/oracle/truffle/object/ShapeImpl;
    MethodParameters:
            Name  Flags
      transition  
      successor   

  private static java.lang.Object newTransitionMap(com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl);
    descriptor: (Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.object.Transition firstTransition
        start local 1 // com.oracle.truffle.object.ShapeImpl firstShape
        start local 2 // com.oracle.truffle.object.Transition secondTransition
        start local 3 // com.oracle.truffle.object.ShapeImpl secondShape
         0: .line 408
            invokestatic com.oracle.truffle.object.ShapeImpl.newTransitionMap:()Ljava/util/Map;
            astore 4 /* map */
        start local 4 // java.util.Map map
         1: .line 409
            aload 4 /* map */
            aload 0 /* firstTransition */
            aload 1 /* firstShape */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 410
            aload 4 /* map */
            aload 2 /* secondTransition */
            aload 3 /* secondShape */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 411
            aload 4 /* map */
            areturn
        end local 4 // java.util.Map map
        end local 3 // com.oracle.truffle.object.ShapeImpl secondShape
        end local 2 // com.oracle.truffle.object.Transition secondTransition
        end local 1 // com.oracle.truffle.object.ShapeImpl firstShape
        end local 0 // com.oracle.truffle.object.Transition firstTransition
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    4     0   firstTransition  Lcom/oracle/truffle/object/Transition;
            0    4     1        firstShape  Lcom/oracle/truffle/object/ShapeImpl;
            0    4     2  secondTransition  Lcom/oracle/truffle/object/Transition;
            0    4     3       secondShape  Lcom/oracle/truffle/object/ShapeImpl;
            1    4     4               map  Ljava/util/Map<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
    MethodParameters:
                  Name  Flags
      firstTransition   
      firstShape        
      secondTransition  
      secondShape       

  private static java.lang.Object addToTransitionMap(com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.truffle.object.Transition transition
        start local 1 // com.oracle.truffle.object.ShapeImpl successor
        start local 2 // java.lang.Object prevMap
         0: .line 415
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 1
            aload 2 /* prevMap */
            invokestatic com.oracle.truffle.object.ShapeImpl.isTransitionMap:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 416
      StackMap locals:
      StackMap stack:
            aload 2 /* prevMap */
            invokestatic com.oracle.truffle.object.ShapeImpl.asTransitionMap:(Ljava/lang/Object;)Ljava/util/Map;
            astore 3 /* map */
        start local 3 // java.util.Map map
         2: .line 417
            aload 3 /* map */
            aload 0 /* transition */
            aload 1 /* successor */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 418
            aload 3 /* map */
            areturn
        end local 3 // java.util.Map map
        end local 2 // java.lang.Object prevMap
        end local 1 // com.oracle.truffle.object.ShapeImpl successor
        end local 0 // com.oracle.truffle.object.Transition transition
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0  transition  Lcom/oracle/truffle/object/Transition;
            0    4     1   successor  Lcom/oracle/truffle/object/ShapeImpl;
            0    4     2     prevMap  Ljava/lang/Object;
            2    4     3         map  Ljava/util/Map<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
    MethodParameters:
            Name  Flags
      transition  
      successor   
      prevMap     

  private static java.util.Map<com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl> newTransitionMap();
    descriptor: ()Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 422
            new com.oracle.truffle.object.TransitionMap
            dup
            invokespecial com.oracle.truffle.object.TransitionMap.<init>:()V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: ()Ljava/util/Map<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;

  private static java.util.Map<com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl> asTransitionMap();
    descriptor: (Ljava/lang/Object;)Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object map
         0: .line 427
            aload 0 /* map */
            checkcast java.util.Map
            areturn
        end local 0 // java.lang.Object map
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   map  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/util/Map<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
    MethodParameters:
      Name  Flags
      map   

  private static boolean isTransitionMap(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object trans
         0: .line 431
            aload 0 /* trans */
            instanceof java.util.Map
            ireturn
        end local 0 // java.lang.Object trans
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  trans  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      trans  

  private static java.lang.Object newSingleEntry(com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl);
    descriptor: (Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.Transition transition
        start local 1 // com.oracle.truffle.object.ShapeImpl successor
         0: .line 435
            new com.oracle.truffle.object.StrongKeyWeakValueEntry
            dup
            aload 0 /* transition */
            aload 1 /* successor */
            invokespecial com.oracle.truffle.object.StrongKeyWeakValueEntry.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
            areturn
        end local 1 // com.oracle.truffle.object.ShapeImpl successor
        end local 0 // com.oracle.truffle.object.Transition transition
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  transition  Lcom/oracle/truffle/object/Transition;
            0    1     1   successor  Lcom/oracle/truffle/object/ShapeImpl;
    MethodParameters:
            Name  Flags
      transition  
      successor   

  private static boolean isSingleEntry(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object trans
         0: .line 439
            aload 0 /* trans */
            instanceof com.oracle.truffle.object.StrongKeyWeakValueEntry
            ireturn
        end local 0 // java.lang.Object trans
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  trans  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      trans  

  private static com.oracle.truffle.object.StrongKeyWeakValueEntry<com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl> asSingleEntry();
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/object/StrongKeyWeakValueEntry;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object trans
         0: .line 444
            aload 0 /* trans */
            checkcast com.oracle.truffle.object.StrongKeyWeakValueEntry
            areturn
        end local 0 // java.lang.Object trans
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  trans  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Lcom/oracle/truffle/object/StrongKeyWeakValueEntry<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
    MethodParameters:
       Name  Flags
      trans  

  public final java.util.Map<com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl> getTransitionMapForRead();
    descriptor: ()Ljava/util/Map;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 453
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 1 /* snapshot */
        start local 1 // java.util.Map snapshot
         1: .line 454
            aload 0 /* this */
            new com.oracle.truffle.object.ShapeImpl$1
            dup
            aload 0 /* this */
            aload 1 /* snapshot */
            invokespecial com.oracle.truffle.object.ShapeImpl$1.<init>:(Lcom/oracle/truffle/object/ShapeImpl;Ljava/util/Map;)V
            invokevirtual com.oracle.truffle.object.ShapeImpl.forEachTransition:(Ljava/util/function/BiConsumer;)V
         2: .line 460
            aload 1 /* snapshot */
            areturn
        end local 1 // java.util.Map snapshot
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/oracle/truffle/object/ShapeImpl;
            1    3     1  snapshot  Ljava/util/Map<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
    Signature: ()Ljava/util/Map<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public final void forEachTransition(java.util.function.BiConsumer<com.oracle.truffle.object.Transition, com.oracle.truffle.object.ShapeImpl>);
    descriptor: (Ljava/util/function/BiConsumer;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // java.util.function.BiConsumer consumer
         0: .line 464
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.transitionMap:Ljava/lang/Object;
            astore 2 /* trans */
        start local 2 // java.lang.Object trans
         1: .line 465
            aload 2 /* trans */
            ifnonnull 3
         2: .line 466
            return
         3: .line 467
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* trans */
            invokestatic com.oracle.truffle.object.ShapeImpl.isSingleEntry:(Ljava/lang/Object;)Z
            ifeq 10
         4: .line 468
            aload 2 /* trans */
            invokestatic com.oracle.truffle.object.ShapeImpl.asSingleEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/StrongKeyWeakValueEntry;
            astore 3 /* entry */
        start local 3 // com.oracle.truffle.object.StrongKeyWeakValueEntry entry
         5: .line 469
            aload 3 /* entry */
            invokevirtual com.oracle.truffle.object.StrongKeyWeakValueEntry.getValue:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.ShapeImpl
            astore 4 /* shape */
        start local 4 // com.oracle.truffle.object.ShapeImpl shape
         6: .line 470
            aload 4 /* shape */
            ifnull 13
         7: .line 471
            aload 3 /* entry */
            invokevirtual com.oracle.truffle.object.StrongKeyWeakValueEntry.getKey:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.Transition
            astore 5 /* key */
        start local 5 // com.oracle.truffle.object.Transition key
         8: .line 472
            aload 1 /* consumer */
            aload 5 /* key */
            aload 4 /* shape */
            invokeinterface java.util.function.BiConsumer.accept:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 5 // com.oracle.truffle.object.Transition key
        end local 4 // com.oracle.truffle.object.ShapeImpl shape
        end local 3 // com.oracle.truffle.object.StrongKeyWeakValueEntry entry
         9: .line 474
            goto 13
        10: .line 475
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 11
            aload 2 /* trans */
            invokestatic com.oracle.truffle.object.ShapeImpl.isTransitionMap:(Ljava/lang/Object;)Z
            ifne 11
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        11: .line 476
      StackMap locals:
      StackMap stack:
            aload 2 /* trans */
            invokestatic com.oracle.truffle.object.ShapeImpl.asTransitionMap:(Ljava/lang/Object;)Ljava/util/Map;
            astore 3 /* map */
        start local 3 // java.util.Map map
        12: .line 477
            aload 3 /* map */
            aload 1 /* consumer */
            invokeinterface java.util.Map.forEach:(Ljava/util/function/BiConsumer;)V
        end local 3 // java.util.Map map
        13: .line 479
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Object trans
        end local 1 // java.util.function.BiConsumer consumer
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0      this  Lcom/oracle/truffle/object/ShapeImpl;
            0   14     1  consumer  Ljava/util/function/BiConsumer<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
            1   14     2     trans  Ljava/lang/Object;
            5    9     3     entry  Lcom/oracle/truffle/object/StrongKeyWeakValueEntry<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
            6    9     4     shape  Lcom/oracle/truffle/object/ShapeImpl;
            8    9     5       key  Lcom/oracle/truffle/object/Transition;
           12   13     3       map  Ljava/util/Map<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
    Signature: (Ljava/util/function/BiConsumer<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;)V
    MethodParameters:
          Name  Flags
      consumer  

  private com.oracle.truffle.object.ShapeImpl queryTransitionImpl(com.oracle.truffle.object.Transition);
    descriptor: (Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.object.Transition transition
         0: .line 482
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.transitionMap:Ljava/lang/Object;
            astore 2 /* trans */
        start local 2 // java.lang.Object trans
         1: .line 483
            aload 2 /* trans */
            ifnonnull 3
         2: .line 484
            aconst_null
            areturn
         3: .line 485
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* trans */
            invokestatic com.oracle.truffle.object.ShapeImpl.isSingleEntry:(Ljava/lang/Object;)Z
            ifeq 9
         4: .line 486
            aload 2 /* trans */
            invokestatic com.oracle.truffle.object.ShapeImpl.asSingleEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/StrongKeyWeakValueEntry;
            astore 3 /* entry */
        start local 3 // com.oracle.truffle.object.StrongKeyWeakValueEntry entry
         5: .line 487
            aload 3 /* entry */
            invokevirtual com.oracle.truffle.object.StrongKeyWeakValueEntry.getKey:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.Transition
            astore 4 /* key */
        start local 4 // com.oracle.truffle.object.Transition key
         6: .line 488
            aload 4 /* key */
            aload 1 /* transition */
            invokevirtual com.oracle.truffle.object.Transition.equals:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 489
            aload 3 /* entry */
            invokevirtual com.oracle.truffle.object.StrongKeyWeakValueEntry.getValue:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.ShapeImpl
            areturn
         8: .line 491
      StackMap locals: com.oracle.truffle.object.StrongKeyWeakValueEntry com.oracle.truffle.object.Transition
      StackMap stack:
            aconst_null
            areturn
        end local 4 // com.oracle.truffle.object.Transition key
        end local 3 // com.oracle.truffle.object.StrongKeyWeakValueEntry entry
         9: .line 494
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 10
            aload 2 /* trans */
            invokestatic com.oracle.truffle.object.ShapeImpl.isTransitionMap:(Ljava/lang/Object;)Z
            ifne 10
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        10: .line 495
      StackMap locals:
      StackMap stack:
            aload 2 /* trans */
            invokestatic com.oracle.truffle.object.ShapeImpl.asTransitionMap:(Ljava/lang/Object;)Ljava/util/Map;
            astore 3 /* map */
        start local 3 // java.util.Map map
        11: .line 496
            aload 3 /* map */
            aload 1 /* transition */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.object.ShapeImpl
            areturn
        end local 3 // java.util.Map map
        end local 2 // java.lang.Object trans
        end local 1 // com.oracle.truffle.object.Transition transition
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0        this  Lcom/oracle/truffle/object/ShapeImpl;
            0   12     1  transition  Lcom/oracle/truffle/object/Transition;
            1   12     2       trans  Ljava/lang/Object;
            5    9     3       entry  Lcom/oracle/truffle/object/StrongKeyWeakValueEntry<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
            6    9     4         key  Lcom/oracle/truffle/object/Transition;
           11   12     3         map  Ljava/util/Map<Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;>;
    MethodParameters:
            Name  Flags
      transition  

  public final com.oracle.truffle.object.ShapeImpl queryTransition(com.oracle.truffle.object.Transition);
    descriptor: (Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.object.Transition transition
         0: .line 502
            aload 0 /* this */
            aload 1 /* transition */
            invokevirtual com.oracle.truffle.object.ShapeImpl.queryTransitionImpl:(Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
            astore 2 /* cachedShape */
        start local 2 // com.oracle.truffle.object.ShapeImpl cachedShape
         1: .line 503
            aload 2 /* cachedShape */
            ifnull 4
         2: .line 504
            getstatic com.oracle.truffle.object.ShapeImpl.shapeCacheHitCount:Lcom/oracle/truffle/object/DebugCounter;
            invokevirtual com.oracle.truffle.object.DebugCounter.inc:()V
         3: .line 505
            aload 2 /* cachedShape */
            areturn
         4: .line 507
      StackMap locals: com.oracle.truffle.object.ShapeImpl
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.shapeCacheMissCount:Lcom/oracle/truffle/object/DebugCounter;
            invokevirtual com.oracle.truffle.object.DebugCounter.inc:()V
         5: .line 509
            aconst_null
            areturn
        end local 2 // com.oracle.truffle.object.ShapeImpl cachedShape
        end local 1 // com.oracle.truffle.object.Transition transition
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lcom/oracle/truffle/object/ShapeImpl;
            0    6     1   transition  Lcom/oracle/truffle/object/Transition;
            1    6     2  cachedShape  Lcom/oracle/truffle/object/ShapeImpl;
    MethodParameters:
            Name  Flags
      transition  

  public com.oracle.truffle.object.ShapeImpl addProperty(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Property property
         0: .line 522
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.isValid:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 523
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* property */
            invokevirtual com.oracle.truffle.object.ShapeImpl.onPropertyTransition:(Lcom/oracle/truffle/api/object/Property;)V
         2: .line 525
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.getStrategy:()Lcom/oracle/truffle/object/LayoutStrategy;
            aload 0 /* this */
            aload 1 /* property */
            invokevirtual com.oracle.truffle.object.LayoutStrategy.addProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 1 // com.oracle.truffle.api.object.Property property
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/oracle/truffle/object/ShapeImpl;
            0    3     1  property  Lcom/oracle/truffle/api/object/Property;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
          Name  Flags
      property  

  protected void onPropertyTransition(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Property property
         0: .line 531
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allowPropertyAssumptions:()Z
            ifeq 4
         1: .line 532
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyAssumptions:()Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
            astore 2 /* propertyAssumptions */
        start local 2 // com.oracle.truffle.object.ShapeImpl$PropertyAssumptions propertyAssumptions
         2: .line 533
            aload 2 /* propertyAssumptions */
            ifnull 4
         3: .line 534
            aload 2 /* propertyAssumptions */
            aload 1 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            invokevirtual com.oracle.truffle.object.ShapeImpl$PropertyAssumptions.invalidatePropertyAssumption:(Ljava/lang/Object;)V
        end local 2 // com.oracle.truffle.object.ShapeImpl$PropertyAssumptions propertyAssumptions
         4: .line 537
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            instanceof com.oracle.truffle.api.object.ShapeListener
            ifeq 6
         5: .line 538
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.ShapeListener
            aload 1 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            invokeinterface com.oracle.truffle.api.object.ShapeListener.onPropertyTransition:(Ljava/lang/Object;)V
         6: .line 540
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.object.Property property
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    7     0                 this  Lcom/oracle/truffle/object/ShapeImpl;
            0    7     1             property  Lcom/oracle/truffle/api/object/Property;
            2    4     2  propertyAssumptions  Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
          Name  Flags
      property  

  public com.oracle.truffle.object.ShapeImpl defineProperty(java.lang.Object, java.lang.Object, int);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;I)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // java.lang.Object key
        start local 2 // java.lang.Object value
        start local 3 // int propertyFlags
         0: .line 546
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* value */
            iload 3 /* propertyFlags */
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.getStrategy:()Lcom/oracle/truffle/object/LayoutStrategy;
            invokevirtual com.oracle.truffle.object.LayoutStrategy.getDefaultLocationFactory:()Lcom/oracle/truffle/api/object/LocationFactory;
            invokevirtual com.oracle.truffle.object.ShapeImpl.defineProperty:(Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 3 // int propertyFlags
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/oracle/truffle/object/ShapeImpl;
            0    1     1            key  Ljava/lang/Object;
            0    1     2          value  Ljava/lang/Object;
            0    1     3  propertyFlags  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
               Name  Flags
      key            
      value          
      propertyFlags  

  public com.oracle.truffle.object.ShapeImpl defineProperty(java.lang.Object, java.lang.Object, int, com.oracle.truffle.api.object.LocationFactory);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // java.lang.Object key
        start local 2 // java.lang.Object value
        start local 3 // int propertyFlags
        start local 4 // com.oracle.truffle.api.object.LocationFactory locationFactory
         0: .line 553
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.getStrategy:()Lcom/oracle/truffle/object/LayoutStrategy;
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* value */
            iload 3 /* propertyFlags */
            aload 4 /* locationFactory */
            invokevirtual com.oracle.truffle.object.LayoutStrategy.defineProperty:(Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 4 // com.oracle.truffle.api.object.LocationFactory locationFactory
        end local 3 // int propertyFlags
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             this  Lcom/oracle/truffle/object/ShapeImpl;
            0    1     1              key  Ljava/lang/Object;
            0    1     2            value  Ljava/lang/Object;
            0    1     3    propertyFlags  I
            0    1     4  locationFactory  Lcom/oracle/truffle/api/object/LocationFactory;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
                 Name  Flags
      key              
      value            
      propertyFlags    
      locationFactory  

  protected com.oracle.truffle.object.ShapeImpl cloneRoot(com.oracle.truffle.object.ShapeImpl, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=3, args_size=3
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.object.ShapeImpl from
        start local 2 // java.lang.Object newSharedData
         0: .line 558
            aload 0 /* this */
            aload 1 /* from */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            aload 2 /* newSharedData */
            aconst_null
            aload 1 /* from */
            getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
            aload 1 /* from */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            aconst_null
            aload 1 /* from */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            aload 1 /* from */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            invokevirtual com.oracle.truffle.object.ShapeImpl.createShape:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 2 // java.lang.Object newSharedData
        end local 1 // com.oracle.truffle.object.ShapeImpl from
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/oracle/truffle/object/ShapeImpl;
            0    1     1           from  Lcom/oracle/truffle/object/ShapeImpl;
            0    1     2  newSharedData  Ljava/lang/Object;
    MethodParameters:
               Name  Flags
      from           
      newSharedData  

  protected final com.oracle.truffle.object.ShapeImpl cloneOnto(com.oracle.truffle.object.ShapeImpl);
    descriptor: (Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=9, locals=4, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.object.ShapeImpl newParent
         0: .line 568
            aload 0 /* this */
            astore 2 /* from */
        start local 2 // com.oracle.truffle.object.ShapeImpl from
         1: .line 569
            aload 0 /* this */
            aload 1 /* newParent */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            aload 1 /* newParent */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            aload 1 /* newParent */
            aload 2 /* from */
            getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
            aload 2 /* from */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            aload 2 /* from */
            getfield com.oracle.truffle.object.ShapeImpl.transitionFromParent:Lcom/oracle/truffle/object/Transition;
            aload 2 /* from */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            aload 1 /* newParent */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            invokevirtual com.oracle.truffle.object.ShapeImpl.createShape:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
            astore 3 /* newShape */
        start local 3 // com.oracle.truffle.object.ShapeImpl newShape
         2: .line 571
            getstatic com.oracle.truffle.object.ShapeImpl.shapeCloneCount:Lcom/oracle/truffle/object/DebugCounter;
            invokevirtual com.oracle.truffle.object.DebugCounter.inc:()V
         3: .line 573
            aload 1 /* newParent */
            aload 2 /* from */
            getfield com.oracle.truffle.object.ShapeImpl.transitionFromParent:Lcom/oracle/truffle/object/Transition;
            aload 3 /* newShape */
            invokevirtual com.oracle.truffle.object.ShapeImpl.addDirectTransition:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
         4: .line 574
            aload 3 /* newShape */
            areturn
        end local 3 // com.oracle.truffle.object.ShapeImpl newShape
        end local 2 // com.oracle.truffle.object.ShapeImpl from
        end local 1 // com.oracle.truffle.object.ShapeImpl newParent
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lcom/oracle/truffle/object/ShapeImpl;
            0    5     1  newParent  Lcom/oracle/truffle/object/ShapeImpl;
            1    5     2       from  Lcom/oracle/truffle/object/ShapeImpl;
            2    5     3   newShape  Lcom/oracle/truffle/object/ShapeImpl;
    MethodParameters:
           Name  Flags
      newParent  

  public final com.oracle.truffle.object.Transition getTransitionFromParent();
    descriptor: ()Lcom/oracle/truffle/object/Transition;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 579
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.transitionFromParent:Lcom/oracle/truffle/object/Transition;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  protected static com.oracle.truffle.object.ShapeImpl makeShapeWithAddedProperty(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.Transition$AddPropertyTransition);
    descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/Transition$AddPropertyTransition;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=9, locals=6, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl parent
        start local 1 // com.oracle.truffle.object.Transition$AddPropertyTransition addTransition
         0: .line 588
            aload 1 /* addTransition */
            invokevirtual com.oracle.truffle.object.Transition$AddPropertyTransition.getProperty:()Lcom/oracle/truffle/api/object/Property;
            astore 2 /* addend */
        start local 2 // com.oracle.truffle.api.object.Property addend
         1: .line 589
            aload 0 /* parent */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            aload 2 /* addend */
            invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
            invokevirtual com.oracle.truffle.object.ShapeImpl$BaseAllocator.addLocation:(Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            astore 3 /* allocator */
        start local 3 // com.oracle.truffle.object.ShapeImpl$BaseAllocator allocator
         2: .line 591
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            aload 2 /* addend */
            invokevirtual com.oracle.truffle.object.PropertyMap.putCopy:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/PropertyMap;
            astore 4 /* newPropertyMap */
        start local 4 // com.oracle.truffle.object.PropertyMap newPropertyMap
         3: .line 593
            aload 0 /* parent */
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            aload 0 /* parent */
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
            aload 4 /* newPropertyMap */
            aload 1 /* addTransition */
            aload 3 /* allocator */
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            invokevirtual com.oracle.truffle.object.ShapeImpl.createShape:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
            astore 5 /* newShape */
        start local 5 // com.oracle.truffle.object.ShapeImpl newShape
         4: .line 594
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 5
            aload 2 /* addend */
            invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
            checkcast com.oracle.truffle.object.LocationImpl
            invokevirtual com.oracle.truffle.object.LocationImpl.primitiveArrayCount:()I
            ifeq 5
            aload 5 /* newShape */
            getfield com.oracle.truffle.object.ShapeImpl.hasPrimitiveArray:Z
            ifne 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 595
      StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.Transition$AddPropertyTransition com.oracle.truffle.api.object.Property com.oracle.truffle.object.ShapeImpl$BaseAllocator com.oracle.truffle.object.PropertyMap com.oracle.truffle.object.ShapeImpl
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 6
            aload 5 /* newShape */
            getfield com.oracle.truffle.object.ShapeImpl.depth:I
            aload 3 /* allocator */
            getfield com.oracle.truffle.object.ShapeImpl$BaseAllocator.depth:I
            if_icmpeq 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 596
      StackMap locals:
      StackMap stack:
            aload 5 /* newShape */
            areturn
        end local 5 // com.oracle.truffle.object.ShapeImpl newShape
        end local 4 // com.oracle.truffle.object.PropertyMap newPropertyMap
        end local 3 // com.oracle.truffle.object.ShapeImpl$BaseAllocator allocator
        end local 2 // com.oracle.truffle.api.object.Property addend
        end local 1 // com.oracle.truffle.object.Transition$AddPropertyTransition addTransition
        end local 0 // com.oracle.truffle.object.ShapeImpl parent
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0          parent  Lcom/oracle/truffle/object/ShapeImpl;
            0    7     1   addTransition  Lcom/oracle/truffle/object/Transition$AddPropertyTransition;
            1    7     2          addend  Lcom/oracle/truffle/api/object/Property;
            2    7     3       allocator  Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            3    7     4  newPropertyMap  Lcom/oracle/truffle/object/PropertyMap;
            4    7     5        newShape  Lcom/oracle/truffle/object/ShapeImpl;
    MethodParameters:
               Name  Flags
      parent         
      addTransition  

  protected static com.oracle.truffle.object.ShapeImpl makeShapeWithPrimitiveExtensionArray(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.Transition);
    descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=9, locals=4, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl parent
        start local 1 // com.oracle.truffle.object.Transition transition
         0: .line 605
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* parent */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getLayout:()Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.hasPrimitiveExtensionArray:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 606
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 2
            aload 0 /* parent */
            invokevirtual com.oracle.truffle.object.ShapeImpl.hasPrimitiveArray:()Z
            ifeq 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 607
      StackMap locals:
      StackMap stack:
            aload 0 /* parent */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            aload 0 /* parent */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getLayout:()Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.getPrimitiveArrayLocation:()Lcom/oracle/truffle/api/object/Location;
            invokevirtual com.oracle.truffle.object.ShapeImpl$BaseAllocator.addLocation:(Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            astore 2 /* allocator */
        start local 2 // com.oracle.truffle.object.ShapeImpl$BaseAllocator allocator
         3: .line 608
            aload 0 /* parent */
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            aload 0 /* parent */
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            aload 1 /* transition */
            aload 2 /* allocator */
            aload 0 /* parent */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            invokevirtual com.oracle.truffle.object.ShapeImpl.createShape:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
            astore 3 /* newShape */
        start local 3 // com.oracle.truffle.object.ShapeImpl newShape
         4: .line 609
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 5
            aload 3 /* newShape */
            invokevirtual com.oracle.truffle.object.ShapeImpl.hasPrimitiveArray:()Z
            ifne 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 610
      StackMap locals: com.oracle.truffle.object.ShapeImpl$BaseAllocator com.oracle.truffle.object.ShapeImpl
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 6
            aload 3 /* newShape */
            getfield com.oracle.truffle.object.ShapeImpl.depth:I
            aload 2 /* allocator */
            getfield com.oracle.truffle.object.ShapeImpl$BaseAllocator.depth:I
            if_icmpeq 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 611
      StackMap locals:
      StackMap stack:
            aload 3 /* newShape */
            areturn
        end local 3 // com.oracle.truffle.object.ShapeImpl newShape
        end local 2 // com.oracle.truffle.object.ShapeImpl$BaseAllocator allocator
        end local 1 // com.oracle.truffle.object.Transition transition
        end local 0 // com.oracle.truffle.object.ShapeImpl parent
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0      parent  Lcom/oracle/truffle/object/ShapeImpl;
            0    7     1  transition  Lcom/oracle/truffle/object/Transition;
            3    7     2   allocator  Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            4    7     3    newShape  Lcom/oracle/truffle/object/ShapeImpl;
    MethodParameters:
            Name  Flags
      parent      
      transition  

  public boolean isRelated(com.oracle.truffle.api.object.Shape);
    descriptor: (Lcom/oracle/truffle/api/object/Shape;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Shape other
         0: .line 623
            aload 0 /* this */
            aload 1 /* other */
            if_acmpne 2
         1: .line 624
            iconst_1
            ireturn
         2: .line 626
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getRoot:()Lcom/oracle/truffle/object/ShapeImpl;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getRoot:()Lcom/oracle/truffle/object/ShapeImpl;
            if_acmpne 4
         3: .line 627
            iconst_1
            ireturn
         4: .line 629
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // com.oracle.truffle.api.object.Shape other
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/oracle/truffle/object/ShapeImpl;
            0    5     1  other  Lcom/oracle/truffle/api/object/Shape;
    MethodParameters:
       Name  Flags
      other  

  public final java.util.List<com.oracle.truffle.api.object.Property> getPropertyList(com.oracle.truffle.api.object.Shape$Pred<com.oracle.truffle.api.object.Property>);
    descriptor: (Lcom/oracle/truffle/api/object/Shape$Pred;)Ljava/util/List;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Shape$Pred filter
         0: .line 641
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            astore 2 /* props */
        start local 2 // java.util.ArrayDeque props
         1: .line 642
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            invokevirtual com.oracle.truffle.object.PropertyMap.reverseOrderedValueIterator:()Ljava/util/Iterator;
            astore 3 /* it */
        start local 3 // java.util.Iterator it
         2: goto 6
         3: .line 643
      StackMap locals: java.util.ArrayDeque java.util.Iterator
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 4 /* currentProperty */
        start local 4 // com.oracle.truffle.api.object.Property currentProperty
         4: .line 644
            aload 4 /* currentProperty */
            invokevirtual com.oracle.truffle.api.object.Property.isHidden:()Z
            ifne 6
            aload 1 /* filter */
            aload 4 /* currentProperty */
            invokeinterface com.oracle.truffle.api.object.Shape$Pred.test:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 645
            aload 2 /* props */
            aload 4 /* currentProperty */
            invokevirtual java.util.ArrayDeque.addFirst:(Ljava/lang/Object;)V
        end local 4 // com.oracle.truffle.api.object.Property currentProperty
         6: .line 642
      StackMap locals:
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        end local 3 // java.util.Iterator it
         7: .line 648
            aload 2 /* props */
            iconst_0
            anewarray com.oracle.truffle.api.object.Property
            invokevirtual java.util.ArrayDeque.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property[]
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 2 // java.util.ArrayDeque props
        end local 1 // com.oracle.truffle.api.object.Shape$Pred filter
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Lcom/oracle/truffle/object/ShapeImpl;
            0    8     1           filter  Lcom/oracle/truffle/api/object/Shape$Pred<Lcom/oracle/truffle/api/object/Property;>;
            1    8     2            props  Ljava/util/ArrayDeque<Lcom/oracle/truffle/api/object/Property;>;
            2    7     3               it  Ljava/util/Iterator<Lcom/oracle/truffle/api/object/Property;>;
            4    6     4  currentProperty  Lcom/oracle/truffle/api/object/Property;
    Signature: (Lcom/oracle/truffle/api/object/Shape$Pred<Lcom/oracle/truffle/api/object/Property;>;)Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
        Name  Flags
      filter  

  public final java.util.List<com.oracle.truffle.api.object.Property> getPropertyList();
    descriptor: ()Ljava/util/List;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 655
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyArray:()[Lcom/oracle/truffle/api/object/Property;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;
    Signature: ()Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  public final com.oracle.truffle.api.object.Property[] getPropertyArray();
    descriptor: ()[Lcom/oracle/truffle/api/object/Property;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 660
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyCount:()I
            anewarray com.oracle.truffle.api.object.Property
            astore 1 /* props */
        start local 1 // com.oracle.truffle.api.object.Property[] props
         1: .line 661
            aload 1 /* props */
            arraylength
            istore 2 /* i */
        start local 2 // int i
         2: .line 662
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            invokevirtual com.oracle.truffle.object.PropertyMap.reverseOrderedValueIterator:()Ljava/util/Iterator;
            astore 3 /* it */
        start local 3 // java.util.Iterator it
         3: goto 7
         4: .line 663
      StackMap locals: com.oracle.truffle.api.object.Property[] int java.util.Iterator
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 4 /* currentProperty */
        start local 4 // com.oracle.truffle.api.object.Property currentProperty
         5: .line 664
            aload 4 /* currentProperty */
            invokevirtual com.oracle.truffle.api.object.Property.isHidden:()Z
            ifne 7
         6: .line 665
            aload 1 /* props */
            iinc 2 /* i */ -1
            iload 2 /* i */
            aload 4 /* currentProperty */
            aastore
        end local 4 // com.oracle.truffle.api.object.Property currentProperty
         7: .line 662
      StackMap locals:
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        end local 3 // java.util.Iterator it
         8: .line 668
            aload 1 /* props */
            areturn
        end local 2 // int i
        end local 1 // com.oracle.truffle.api.object.Property[] props
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    9     0             this  Lcom/oracle/truffle/object/ShapeImpl;
            1    9     1            props  [Lcom/oracle/truffle/api/object/Property;
            2    9     2                i  I
            3    8     3               it  Ljava/util/Iterator<Lcom/oracle/truffle/api/object/Property;>;
            5    7     4  currentProperty  Lcom/oracle/truffle/api/object/Property;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  public final java.util.List<com.oracle.truffle.api.object.Property> getPropertyListInternal(boolean);
    descriptor: (Z)Ljava/util/List;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // boolean ascending
         0: .line 680
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            invokevirtual com.oracle.truffle.object.PropertyMap.size:()I
            anewarray com.oracle.truffle.api.object.Property
            astore 2 /* props */
        start local 2 // com.oracle.truffle.api.object.Property[] props
         1: .line 681
            iload 1 /* ascending */
            ifeq 2
            aload 2 /* props */
            arraylength
            goto 3
      StackMap locals: com.oracle.truffle.api.object.Property[]
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: istore 3 /* i */
        start local 3 // int i
         4: .line 682
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            invokevirtual com.oracle.truffle.object.PropertyMap.reverseOrderedValueIterator:()Ljava/util/Iterator;
            astore 4 /* it */
        start local 4 // java.util.Iterator it
         5: goto 11
         6: .line 683
      StackMap locals: int java.util.Iterator
      StackMap stack:
            aload 4 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 5 /* current */
        start local 5 // com.oracle.truffle.api.object.Property current
         7: .line 684
            iload 1 /* ascending */
            ifeq 10
         8: .line 685
            aload 2 /* props */
            iinc 3 /* i */ -1
            iload 3 /* i */
            aload 5 /* current */
            aastore
         9: .line 686
            goto 11
        10: .line 687
      StackMap locals: com.oracle.truffle.api.object.Property
      StackMap stack:
            aload 2 /* props */
            iload 3 /* i */
            iinc 3 /* i */ 1
            aload 5 /* current */
            aastore
        end local 5 // com.oracle.truffle.api.object.Property current
        11: .line 682
      StackMap locals:
      StackMap stack:
            aload 4 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        end local 4 // java.util.Iterator it
        12: .line 690
            aload 2 /* props */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 3 // int i
        end local 2 // com.oracle.truffle.api.object.Property[] props
        end local 1 // boolean ascending
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0       this  Lcom/oracle/truffle/object/ShapeImpl;
            0   13     1  ascending  Z
            1   13     2      props  [Lcom/oracle/truffle/api/object/Property;
            4   13     3          i  I
            5   12     4         it  Ljava/util/Iterator<Lcom/oracle/truffle/api/object/Property;>;
            7   11     5    current  Lcom/oracle/truffle/api/object/Property;
    Signature: (Z)Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
           Name  Flags
      ascending  

  public final java.util.List<java.lang.Object> getKeyList(com.oracle.truffle.api.object.Shape$Pred<com.oracle.truffle.api.object.Property>);
    descriptor: (Lcom/oracle/truffle/api/object/Shape$Pred;)Ljava/util/List;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Shape$Pred filter
         0: .line 702
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            astore 2 /* keys */
        start local 2 // java.util.ArrayDeque keys
         1: .line 703
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            invokevirtual com.oracle.truffle.object.PropertyMap.reverseOrderedValueIterator:()Ljava/util/Iterator;
            astore 3 /* it */
        start local 3 // java.util.Iterator it
         2: goto 6
         3: .line 704
      StackMap locals: java.util.ArrayDeque java.util.Iterator
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 4 /* currentProperty */
        start local 4 // com.oracle.truffle.api.object.Property currentProperty
         4: .line 705
            aload 4 /* currentProperty */
            invokevirtual com.oracle.truffle.api.object.Property.isHidden:()Z
            ifne 6
            aload 1 /* filter */
            aload 4 /* currentProperty */
            invokeinterface com.oracle.truffle.api.object.Shape$Pred.test:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 706
            aload 2 /* keys */
            aload 4 /* currentProperty */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            invokevirtual java.util.ArrayDeque.addFirst:(Ljava/lang/Object;)V
        end local 4 // com.oracle.truffle.api.object.Property currentProperty
         6: .line 703
      StackMap locals:
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        end local 3 // java.util.Iterator it
         7: .line 709
            aload 2 /* keys */
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.util.ArrayDeque.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 2 // java.util.ArrayDeque keys
        end local 1 // com.oracle.truffle.api.object.Shape$Pred filter
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Lcom/oracle/truffle/object/ShapeImpl;
            0    8     1           filter  Lcom/oracle/truffle/api/object/Shape$Pred<Lcom/oracle/truffle/api/object/Property;>;
            1    8     2             keys  Ljava/util/ArrayDeque<Ljava/lang/Object;>;
            2    7     3               it  Ljava/util/Iterator<Lcom/oracle/truffle/api/object/Property;>;
            4    6     4  currentProperty  Lcom/oracle/truffle/api/object/Property;
    Signature: (Lcom/oracle/truffle/api/object/Shape$Pred<Lcom/oracle/truffle/api/object/Property;>;)Ljava/util/List<Ljava/lang/Object;>;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
        Name  Flags
      filter  

  public final java.util.List<java.lang.Object> getKeyList();
    descriptor: ()Ljava/util/List;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 716
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getKeyArray:()[Ljava/lang/Object;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;
    Signature: ()Ljava/util/List<Ljava/lang/Object;>;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  public final java.lang.Object[] getKeyArray();
    descriptor: ()[Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 721
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyCount:()I
            anewarray java.lang.Object
            astore 1 /* props */
        start local 1 // java.lang.Object[] props
         1: .line 722
            aload 1 /* props */
            arraylength
            istore 2 /* i */
        start local 2 // int i
         2: .line 723
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            invokevirtual com.oracle.truffle.object.PropertyMap.reverseOrderedValueIterator:()Ljava/util/Iterator;
            astore 3 /* it */
        start local 3 // java.util.Iterator it
         3: goto 7
         4: .line 724
      StackMap locals: java.lang.Object[] int java.util.Iterator
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 4 /* currentProperty */
        start local 4 // com.oracle.truffle.api.object.Property currentProperty
         5: .line 725
            aload 4 /* currentProperty */
            invokevirtual com.oracle.truffle.api.object.Property.isHidden:()Z
            ifne 7
         6: .line 726
            aload 1 /* props */
            iinc 2 /* i */ -1
            iload 2 /* i */
            aload 4 /* currentProperty */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            aastore
        end local 4 // com.oracle.truffle.api.object.Property currentProperty
         7: .line 723
      StackMap locals:
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        end local 3 // java.util.Iterator it
         8: .line 729
            aload 1 /* props */
            areturn
        end local 2 // int i
        end local 1 // java.lang.Object[] props
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    9     0             this  Lcom/oracle/truffle/object/ShapeImpl;
            1    9     1            props  [Ljava/lang/Object;
            2    9     2                i  I
            3    8     3               it  Ljava/util/Iterator<Lcom/oracle/truffle/api/object/Property;>;
            5    7     4  currentProperty  Lcom/oracle/truffle/api/object/Property;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  public java.lang.Iterable<java.lang.Object> getKeys();
    descriptor: ()Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 735
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getKeyList:()Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;
    Signature: ()Ljava/lang/Iterable<Ljava/lang/Object;>;

  public final boolean isValid();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 741
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getValidAssumption:()Lcom/oracle/truffle/api/Assumption;
            invokeinterface com.oracle.truffle.api.Assumption.isValid:()Z
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final com.oracle.truffle.api.Assumption getValidAssumption();
    descriptor: ()Lcom/oracle/truffle/api/Assumption;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 747
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.validAssumption:Lcom/oracle/truffle/api/Assumption;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  private static com.oracle.truffle.api.Assumption createValidAssumption();
    descriptor: ()Lcom/oracle/truffle/api/Assumption;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 751
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            ldc "valid shape"
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createAssumption:(Ljava/lang/String;)Lcom/oracle/truffle/api/Assumption;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public final void invalidateValidAssumption();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 756
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getValidAssumption:()Lcom/oracle/truffle/api/Assumption;
            invokeinterface com.oracle.truffle.api.Assumption.invalidate:()V
         1: .line 757
            return
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final boolean isLeaf();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 763
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.leafAssumption:Lcom/oracle/truffle/api/Assumption;
            astore 1 /* assumption */
        start local 1 // com.oracle.truffle.api.Assumption assumption
         1: .line 764
            aload 1 /* assumption */
            ifnull 2
            aload 1 /* assumption */
            invokeinterface com.oracle.truffle.api.Assumption.isValid:()Z
            ifne 2
            iconst_0
            ireturn
      StackMap locals: com.oracle.truffle.api.Assumption
      StackMap stack:
         2: iconst_1
            ireturn
        end local 1 // com.oracle.truffle.api.Assumption assumption
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lcom/oracle/truffle/object/ShapeImpl;
            1    3     1  assumption  Lcom/oracle/truffle/api/Assumption;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  public final com.oracle.truffle.api.Assumption getLeafAssumption();
    descriptor: ()Lcom/oracle/truffle/api/Assumption;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 770
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.leafAssumption:Lcom/oracle/truffle/api/Assumption;
            astore 1 /* assumption */
        start local 1 // com.oracle.truffle.api.Assumption assumption
         1: .line 771
            aload 1 /* assumption */
            ifnull 3
         2: .line 772
            aload 1 /* assumption */
            areturn
         3: .line 774
      StackMap locals: com.oracle.truffle.api.Assumption
      StackMap stack:
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         4: .line 778
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.LEAF_ASSUMPTION_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.Assumption
            astore 2 /* prev */
        start local 2 // com.oracle.truffle.api.Assumption prev
         5: .line 779
            aload 2 /* prev */
            ifnull 7
         6: .line 780
            aload 2 /* prev */
            areturn
         7: .line 782
      StackMap locals: com.oracle.truffle.api.Assumption
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.transitionMap:Ljava/lang/Object;
            ifnonnull 8
            iconst_1
            goto 9
      StackMap locals:
      StackMap stack:
         8: iconst_0
      StackMap locals:
      StackMap stack: int
         9: istore 4 /* isLeafShape */
        start local 4 // boolean isLeafShape
        10: .line 783
            iload 4 /* isLeafShape */
            ifeq 11
            invokestatic com.oracle.truffle.object.ShapeImpl.createLeafAssumption:()Lcom/oracle/truffle/api/Assumption;
            goto 12
      StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.api.Assumption com.oracle.truffle.api.Assumption top int
      StackMap stack:
        11: getstatic com.oracle.truffle.api.utilities.NeverValidAssumption.INSTANCE:Lcom/oracle/truffle/api/utilities/NeverValidAssumption;
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.Assumption
        12: astore 3 /* next */
        end local 4 // boolean isLeafShape
        start local 3 // com.oracle.truffle.api.Assumption next
        13: .line 785
            getstatic com.oracle.truffle.object.ShapeImpl.LEAF_ASSUMPTION_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
            aload 0 /* this */
            aload 2 /* prev */
            aload 3 /* next */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 4
        14: .line 786
            aload 3 /* next */
            areturn
        end local 3 // com.oracle.truffle.api.Assumption next
        end local 2 // com.oracle.truffle.api.Assumption prev
        end local 1 // com.oracle.truffle.api.Assumption assumption
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   15     0         this  Lcom/oracle/truffle/object/ShapeImpl;
            1   15     1   assumption  Lcom/oracle/truffle/api/Assumption;
            5   15     2         prev  Lcom/oracle/truffle/api/Assumption;
           13   15     3         next  Lcom/oracle/truffle/api/Assumption;
           10   13     4  isLeafShape  Z

  private static com.oracle.truffle.api.Assumption createLeafAssumption();
    descriptor: ()Lcom/oracle/truffle/api/Assumption;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 791
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            ldc "leaf shape"
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createAssumption:(Ljava/lang/String;)Lcom/oracle/truffle/api/Assumption;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void invalidateLeafAssumption();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 798
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.LEAF_ASSUMPTION_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.Assumption
            astore 1 /* prev */
        start local 1 // com.oracle.truffle.api.Assumption prev
         1: .line 799
            aload 1 /* prev */
            getstatic com.oracle.truffle.api.utilities.NeverValidAssumption.INSTANCE:Lcom/oracle/truffle/api/utilities/NeverValidAssumption;
            if_acmpne 3
         2: .line 800
            goto 6
         3: .line 802
      StackMap locals: com.oracle.truffle.api.Assumption
      StackMap stack:
            aload 1 /* prev */
            ifnull 5
         4: .line 803
            aload 1 /* prev */
            invokeinterface com.oracle.truffle.api.Assumption.invalidate:()V
         5: .line 805
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.LEAF_ASSUMPTION_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
            aload 0 /* this */
            aload 1 /* prev */
            getstatic com.oracle.truffle.api.utilities.NeverValidAssumption.INSTANCE:Lcom/oracle/truffle/api/utilities/NeverValidAssumption;
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 0
         6: .line 806
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.Assumption prev
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/truffle/object/ShapeImpl;
            1    7     1  prev  Lcom/oracle/truffle/api/Assumption;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 811
            aload 0 /* this */
            ldc 2147483647
            invokevirtual com.oracle.truffle.object.ShapeImpl.toStringLimit:(I)Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public java.lang.String toStringLimit(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // int limit
         0: .line 817
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
         1: .line 818
            aload 2 /* sb */
            bipush 64
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         2: .line 819
            aload 2 /* sb */
            aload 0 /* this */
            invokevirtual java.lang.Object.hashCode:()I
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 820
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.isValid:()Z
            ifne 5
         4: .line 821
            aload 2 /* sb */
            bipush 33
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         5: .line 824
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 2 /* sb */
            ldc "{"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 825
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            invokevirtual com.oracle.truffle.object.PropertyMap.reverseOrderedValueIterator:()Ljava/util/Iterator;
            astore 3 /* iterator */
        start local 3 // java.util.Iterator iterator
         7: goto 16
         8: .line 826
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 3 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 4 /* p */
        start local 4 // com.oracle.truffle.api.object.Property p
         9: .line 827
            aload 2 /* sb */
            aload 4 /* p */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
        10: .line 828
            aload 3 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 12
        11: .line 829
            aload 2 /* sb */
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        12: .line 831
      StackMap locals: com.oracle.truffle.api.object.Property
      StackMap stack:
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.length:()I
            iload 1 /* limit */
            if_icmplt 15
        13: .line 832
            aload 2 /* sb */
            ldc "..."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        14: .line 833
            goto 17
        15: .line 835
      StackMap locals:
      StackMap stack:
            aload 2 /* sb */
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 4 // com.oracle.truffle.api.object.Property p
        16: .line 825
      StackMap locals:
      StackMap stack:
            aload 3 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        end local 3 // java.util.Iterator iterator
        17: .line 837
      StackMap locals:
      StackMap stack:
            aload 2 /* sb */
            ldc "}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        18: .line 839
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder sb
        end local 1 // int limit
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   19     0      this  Lcom/oracle/truffle/object/ShapeImpl;
            0   19     1     limit  I
            1   19     2        sb  Ljava/lang/StringBuilder;
            7   17     3  iterator  Ljava/util/Iterator<Lcom/oracle/truffle/api/object/Property;>;
            9   16     4         p  Lcom/oracle/truffle/api/object/Property;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
       Name  Flags
      limit  

  public final com.oracle.truffle.object.ShapeImpl getParent();
    descriptor: ()Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 845
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.parent:Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final int getDepth();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 850
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.depth:I
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final boolean hasProperty(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // java.lang.Object name
         0: .line 856
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getProperty:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.Object name
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/object/ShapeImpl;
            0    2     1  name  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      name  

  public final com.oracle.truffle.object.ShapeImpl removeProperty(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Property prop
         0: .line 863
            aload 0 /* this */
            aload 1 /* prop */
            invokevirtual com.oracle.truffle.object.ShapeImpl.onPropertyTransition:(Lcom/oracle/truffle/api/object/Property;)V
         1: .line 865
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.getStrategy:()Lcom/oracle/truffle/object/LayoutStrategy;
            aload 0 /* this */
            aload 1 /* prop */
            invokevirtual com.oracle.truffle.object.LayoutStrategy.removeProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 1 // com.oracle.truffle.api.object.Property prop
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/object/ShapeImpl;
            0    2     1  prop  Lcom/oracle/truffle/api/object/Property;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
      Name  Flags
      prop  

  public final com.oracle.truffle.object.ShapeImpl append(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Property oldProperty
         0: .line 872
            aload 0 /* this */
            aload 1 /* oldProperty */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            aload 1 /* oldProperty */
            invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
            invokevirtual com.oracle.truffle.object.ShapeImpl$BaseAllocator.moveLocation:(Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/api/object/Location;
            invokevirtual com.oracle.truffle.api.object.Property.relocate:(Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/api/object/Property;
            invokevirtual com.oracle.truffle.object.ShapeImpl.addProperty:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 1 // com.oracle.truffle.api.object.Property oldProperty
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/oracle/truffle/object/ShapeImpl;
            0    1     1  oldProperty  Lcom/oracle/truffle/api/object/Property;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
             Name  Flags
      oldProperty  

  public final com.oracle.truffle.object.ShapeImpl$BaseAllocator allocator();
    descriptor: ()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 878
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.getStrategy:()Lcom/oracle/truffle/object/LayoutStrategy;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.LayoutStrategy.createAllocator:(Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public com.oracle.truffle.object.ShapeImpl replaceProperty(com.oracle.truffle.api.object.Property, com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Property oldProperty
        start local 2 // com.oracle.truffle.api.object.Property newProperty
         0: .line 889
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 1
            aload 1 /* oldProperty */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            aload 2 /* newProperty */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 890
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* oldProperty */
            invokevirtual com.oracle.truffle.object.ShapeImpl.onPropertyTransition:(Lcom/oracle/truffle/api/object/Property;)V
         2: .line 892
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.getStrategy:()Lcom/oracle/truffle/object/LayoutStrategy;
            aload 0 /* this */
            aload 1 /* oldProperty */
            aload 2 /* newProperty */
            invokevirtual com.oracle.truffle.object.LayoutStrategy.replaceProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 2 // com.oracle.truffle.api.object.Property newProperty
        end local 1 // com.oracle.truffle.api.object.Property oldProperty
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lcom/oracle/truffle/object/ShapeImpl;
            0    3     1  oldProperty  Lcom/oracle/truffle/api/object/Property;
            0    3     2  newProperty  Lcom/oracle/truffle/api/object/Property;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
             Name  Flags
      oldProperty  
      newProperty  

  public static com.oracle.truffle.object.ShapeImpl findCommonAncestor(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.ShapeImpl);
    descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl left
        start local 1 // com.oracle.truffle.object.ShapeImpl right
         0: .line 901
            aload 0 /* left */
            aload 1 /* right */
            invokevirtual com.oracle.truffle.object.ShapeImpl.isRelated:(Lcom/oracle/truffle/api/object/Shape;)Z
            ifne 2
         1: .line 902
            new java.lang.IllegalArgumentException
            dup
            ldc "shapes must have the same root"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 903
      StackMap locals:
      StackMap stack:
            aload 0 /* left */
            aload 1 /* right */
            if_acmpne 4
         3: .line 904
            aload 0 /* left */
            areturn
         4: .line 906
      StackMap locals:
      StackMap stack:
            aload 0 /* left */
            getfield com.oracle.truffle.object.ShapeImpl.depth:I
            istore 2 /* leftLength */
        start local 2 // int leftLength
         5: .line 907
            aload 1 /* right */
            getfield com.oracle.truffle.object.ShapeImpl.depth:I
            istore 3 /* rightLength */
        start local 3 // int rightLength
         6: .line 908
            aload 0 /* left */
            astore 4 /* leftPtr */
        start local 4 // com.oracle.truffle.object.ShapeImpl leftPtr
         7: .line 909
            aload 1 /* right */
            astore 5 /* rightPtr */
        start local 5 // com.oracle.truffle.object.ShapeImpl rightPtr
         8: .line 910
            goto 11
         9: .line 911
      StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.ShapeImpl int int com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.ShapeImpl
      StackMap stack:
            aload 4 /* leftPtr */
            getfield com.oracle.truffle.object.ShapeImpl.parent:Lcom/oracle/truffle/object/ShapeImpl;
            astore 4 /* leftPtr */
        10: .line 912
            iinc 2 /* leftLength */ -1
        11: .line 910
      StackMap locals:
      StackMap stack:
            iload 2 /* leftLength */
            iload 3 /* rightLength */
            if_icmpgt 9
        12: .line 914
            goto 15
        13: .line 915
      StackMap locals:
      StackMap stack:
            aload 5 /* rightPtr */
            getfield com.oracle.truffle.object.ShapeImpl.parent:Lcom/oracle/truffle/object/ShapeImpl;
            astore 5 /* rightPtr */
        14: .line 916
            iinc 3 /* rightLength */ -1
        15: .line 914
      StackMap locals:
      StackMap stack:
            iload 3 /* rightLength */
            iload 2 /* leftLength */
            if_icmpgt 13
        16: .line 918
            goto 19
        17: .line 919
      StackMap locals:
      StackMap stack:
            aload 4 /* leftPtr */
            getfield com.oracle.truffle.object.ShapeImpl.parent:Lcom/oracle/truffle/object/ShapeImpl;
            astore 4 /* leftPtr */
        18: .line 920
            aload 5 /* rightPtr */
            getfield com.oracle.truffle.object.ShapeImpl.parent:Lcom/oracle/truffle/object/ShapeImpl;
            astore 5 /* rightPtr */
        19: .line 918
      StackMap locals:
      StackMap stack:
            aload 4 /* leftPtr */
            aload 5 /* rightPtr */
            if_acmpne 17
        20: .line 922
            aload 4 /* leftPtr */
            areturn
        end local 5 // com.oracle.truffle.object.ShapeImpl rightPtr
        end local 4 // com.oracle.truffle.object.ShapeImpl leftPtr
        end local 3 // int rightLength
        end local 2 // int leftLength
        end local 1 // com.oracle.truffle.object.ShapeImpl right
        end local 0 // com.oracle.truffle.object.ShapeImpl left
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   21     0         left  Lcom/oracle/truffle/object/ShapeImpl;
            0   21     1        right  Lcom/oracle/truffle/object/ShapeImpl;
            5   21     2   leftLength  I
            6   21     3  rightLength  I
            7   21     4      leftPtr  Lcom/oracle/truffle/object/ShapeImpl;
            8   21     5     rightPtr  Lcom/oracle/truffle/object/ShapeImpl;
    MethodParameters:
       Name  Flags
      left   
      right  

  public final int getPropertyCount();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 928
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyCount:I
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public static java.util.List<com.oracle.truffle.api.object.Property> diff(com.oracle.truffle.api.object.Shape, com.oracle.truffle.api.object.Shape);
    descriptor: (Lcom/oracle/truffle/api/object/Shape;Lcom/oracle/truffle/api/object/Shape;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // com.oracle.truffle.api.object.Shape oldShape
        start local 1 // com.oracle.truffle.api.object.Shape newShape
         0: .line 937
            aload 0 /* oldShape */
            iconst_0
            invokevirtual com.oracle.truffle.api.object.Shape.getPropertyListInternal:(Z)Ljava/util/List;
            astore 2 /* oldList */
        start local 2 // java.util.List oldList
         1: .line 938
            aload 1 /* newShape */
            iconst_0
            invokevirtual com.oracle.truffle.api.object.Shape.getPropertyListInternal:(Z)Ljava/util/List;
            astore 3 /* newList */
        start local 3 // java.util.List newList
         2: .line 940
            new java.util.ArrayList
            dup
            aload 2 /* oldList */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 4 /* diff */
        start local 4 // java.util.List diff
         3: .line 941
            aload 4 /* diff */
            aload 3 /* newList */
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         4: .line 942
            new java.util.ArrayList
            dup
            aload 2 /* oldList */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 5 /* intersection */
        start local 5 // java.util.List intersection
         5: .line 943
            aload 5 /* intersection */
            aload 3 /* newList */
            invokeinterface java.util.List.retainAll:(Ljava/util/Collection;)Z
            pop
         6: .line 944
            aload 4 /* diff */
            aload 5 /* intersection */
            invokeinterface java.util.List.removeAll:(Ljava/util/Collection;)Z
            pop
         7: .line 945
            aload 4 /* diff */
            areturn
        end local 5 // java.util.List intersection
        end local 4 // java.util.List diff
        end local 3 // java.util.List newList
        end local 2 // java.util.List oldList
        end local 1 // com.oracle.truffle.api.object.Shape newShape
        end local 0 // com.oracle.truffle.api.object.Shape oldShape
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0      oldShape  Lcom/oracle/truffle/api/object/Shape;
            0    8     1      newShape  Lcom/oracle/truffle/api/object/Shape;
            1    8     2       oldList  Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
            2    8     3       newList  Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
            3    8     4          diff  Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
            5    8     5  intersection  Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
    Signature: (Lcom/oracle/truffle/api/object/Shape;Lcom/oracle/truffle/api/object/Shape;)Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
    MethodParameters:
          Name  Flags
      oldShape  
      newShape  

  public com.oracle.truffle.api.object.ObjectType getObjectType();
    descriptor: ()Lcom/oracle/truffle/api/object/ObjectType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 951
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.ObjectType
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public java.lang.Object getDynamicType();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 956
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  protected com.oracle.truffle.object.ShapeImpl setDynamicType(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=5, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // java.lang.Object newObjectType
         0: .line 962
            aload 1 /* newObjectType */
            ldc "dynamicType"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 963
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getDynamicType:()Ljava/lang/Object;
            aload 1 /* newObjectType */
            if_acmpne 3
         2: .line 964
            aload 0 /* this */
            areturn
         3: .line 966
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getLayout:()Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.isLegacyLayout:()Z
            ifeq 5
            aload 1 /* newObjectType */
            instanceof com.oracle.truffle.api.object.ObjectType
            ifne 5
         4: .line 967
            new java.lang.IllegalArgumentException
            dup
            ldc "dynamicType must be an instance of ObjectType"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 969
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.object.Transition$ObjectTypeTransition
            dup
            aload 1 /* newObjectType */
            invokespecial com.oracle.truffle.object.Transition$ObjectTypeTransition.<init>:(Ljava/lang/Object;)V
            astore 2 /* transition */
        start local 2 // com.oracle.truffle.object.Transition$ObjectTypeTransition transition
         6: .line 970
            aload 0 /* this */
            aload 2 /* transition */
            invokevirtual com.oracle.truffle.object.ShapeImpl.queryTransition:(Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
            astore 3 /* cachedShape */
        start local 3 // com.oracle.truffle.object.ShapeImpl cachedShape
         7: .line 971
            aload 3 /* cachedShape */
            ifnull 9
         8: .line 972
            aload 3 /* cachedShape */
            areturn
         9: .line 975
      StackMap locals: com.oracle.truffle.object.Transition$ObjectTypeTransition com.oracle.truffle.object.ShapeImpl
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            aload 0 /* this */
            aload 1 /* newObjectType */
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            aload 2 /* transition */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            invokevirtual com.oracle.truffle.object.ShapeImpl.createShape:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
            astore 4 /* newShape */
        start local 4 // com.oracle.truffle.object.ShapeImpl newShape
        10: .line 976
            aload 0 /* this */
            aload 2 /* transition */
            aload 4 /* newShape */
            invokevirtual com.oracle.truffle.object.ShapeImpl.addDirectTransition:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
        11: .line 977
            aload 4 /* newShape */
            areturn
        end local 4 // com.oracle.truffle.object.ShapeImpl newShape
        end local 3 // com.oracle.truffle.object.ShapeImpl cachedShape
        end local 2 // com.oracle.truffle.object.Transition$ObjectTypeTransition transition
        end local 1 // java.lang.Object newObjectType
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   12     0           this  Lcom/oracle/truffle/object/ShapeImpl;
            0   12     1  newObjectType  Ljava/lang/Object;
            6   12     2     transition  Lcom/oracle/truffle/object/Transition$ObjectTypeTransition;
            7   12     3    cachedShape  Lcom/oracle/truffle/object/ShapeImpl;
           10   12     4       newShape  Lcom/oracle/truffle/object/ShapeImpl;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
               Name  Flags
      newObjectType  

  public com.oracle.truffle.object.ShapeImpl getRoot();
    descriptor: ()Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 983
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.root:Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final boolean check(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.DynamicObject subject
         0: .line 989
            aload 1 /* subject */
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            aload 0 /* this */
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // com.oracle.truffle.api.object.DynamicObject subject
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/oracle/truffle/object/ShapeImpl;
            0    2     1  subject  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
         Name  Flags
      subject  

  public final com.oracle.truffle.object.LayoutImpl getLayout();
    descriptor: ()Lcom/oracle/truffle/object/LayoutImpl;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 995
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final java.lang.Object getSharedData();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1001
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  final java.lang.Object getSharedDataInternal();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1005
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  final boolean allowPropertyAssumptions();
    descriptor: ()Z
    flags: (0x0010) ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1009
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            ldc 131072
            iand
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  private com.oracle.truffle.object.ShapeImpl$PropertyAssumptions getOrCreatePropertyAssumptions();
    descriptor: ()Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1013
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 1014
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 2
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allowPropertyAssumptions:()Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 1015
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.root:Lcom/oracle/truffle/object/ShapeImpl;
            getfield com.oracle.truffle.object.ShapeImpl.sharedPropertyAssumptions:Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
            astore 1 /* ass */
        start local 1 // com.oracle.truffle.object.ShapeImpl$PropertyAssumptions ass
         3: .line 1016
            aload 1 /* ass */
            ifnonnull 7
         4: .line 1017
            new com.oracle.truffle.object.ShapeImpl$PropertyAssumptions
            dup
            aconst_null
            invokespecial com.oracle.truffle.object.ShapeImpl$PropertyAssumptions.<init>:(Lcom/oracle/truffle/api/Assumption;)V
            astore 1 /* ass */
         5: .line 1018
            getstatic com.oracle.truffle.object.ShapeImpl.PROPERTY_ASSUMPTIONS_UPDATER:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.root:Lcom/oracle/truffle/object/ShapeImpl;
            aconst_null
            aload 1 /* ass */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
            ifne 7
         6: .line 1019
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyAssumptions:()Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
            astore 1 /* ass */
         7: .line 1022
      StackMap locals: com.oracle.truffle.object.ShapeImpl$PropertyAssumptions
      StackMap stack:
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 8
            aload 1 /* ass */
            ifnonnull 8
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         8: .line 1023
      StackMap locals:
      StackMap stack:
            aload 1 /* ass */
            areturn
        end local 1 // com.oracle.truffle.object.ShapeImpl$PropertyAssumptions ass
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/oracle/truffle/object/ShapeImpl;
            3    9     1   ass  Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;

  private com.oracle.truffle.object.ShapeImpl$PropertyAssumptions getPropertyAssumptions();
    descriptor: ()Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1027
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 1028
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 2
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allowPropertyAssumptions:()Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 1029
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.root:Lcom/oracle/truffle/object/ShapeImpl;
            getfield com.oracle.truffle.object.ShapeImpl.sharedPropertyAssumptions:Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  protected void invalidateAllPropertyAssumptions();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1034
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allowPropertyAssumptions:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 1035
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyAssumptions:()Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
            astore 1 /* propertyAssumptions */
        start local 1 // com.oracle.truffle.object.ShapeImpl$PropertyAssumptions propertyAssumptions
         2: .line 1036
            aload 1 /* propertyAssumptions */
            ifnull 4
         3: .line 1037
            aload 1 /* propertyAssumptions */
            invokevirtual com.oracle.truffle.object.ShapeImpl$PropertyAssumptions.invalidateAllPropertyAssumptions:()V
         4: .line 1039
      StackMap locals: com.oracle.truffle.object.ShapeImpl$PropertyAssumptions
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.object.ShapeImpl$PropertyAssumptions propertyAssumptions
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    5     0                 this  Lcom/oracle/truffle/object/ShapeImpl;
            2    5     1  propertyAssumptions  Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  protected com.oracle.truffle.api.Assumption getSingleContextAssumption();
    descriptor: ()Lcom/oracle/truffle/api/Assumption;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1042
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyAssumptions:()Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
            astore 1 /* propertyAssumptions */
        start local 1 // com.oracle.truffle.object.ShapeImpl$PropertyAssumptions propertyAssumptions
         1: .line 1043
            aload 1 /* propertyAssumptions */
            ifnull 3
         2: .line 1044
            aload 1 /* propertyAssumptions */
            invokevirtual com.oracle.truffle.object.ShapeImpl$PropertyAssumptions.getSingleContextAssumption:()Lcom/oracle/truffle/api/Assumption;
            areturn
         3: .line 1046
      StackMap locals: com.oracle.truffle.object.ShapeImpl$PropertyAssumptions
      StackMap stack:
            aconst_null
            areturn
        end local 1 // com.oracle.truffle.object.ShapeImpl$PropertyAssumptions propertyAssumptions
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Lcom/oracle/truffle/object/ShapeImpl;
            1    4     1  propertyAssumptions  Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;

  public final boolean hasTransitionWithKey(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // java.lang.Object key
         0: .line 1053
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getTransitionMapForRead:()Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: com.oracle.truffle.object.ShapeImpl java.lang.Object top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.object.Transition
            astore 2 /* transition */
        start local 2 // com.oracle.truffle.object.Transition transition
         2: .line 1054
            aload 2 /* transition */
            instanceof com.oracle.truffle.object.Transition$PropertyTransition
            ifeq 5
         3: .line 1055
            aload 2 /* transition */
            checkcast com.oracle.truffle.object.Transition$PropertyTransition
            invokevirtual com.oracle.truffle.object.Transition$PropertyTransition.getProperty:()Lcom/oracle/truffle/api/object/Property;
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            aload 1 /* key */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 1056
            iconst_1
            ireturn
        end local 2 // com.oracle.truffle.object.Transition transition
         5: .line 1053
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 1060
            iconst_0
            ireturn
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lcom/oracle/truffle/object/ShapeImpl;
            0    7     1         key  Ljava/lang/Object;
            2    5     2  transition  Lcom/oracle/truffle/object/Transition;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
      Name  Flags
      key   

  public final com.oracle.truffle.object.ShapeImpl createSeparateShape(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // java.lang.Object newSharedData
         0: .line 1071
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.parent:Lcom/oracle/truffle/object/ShapeImpl;
            ifnonnull 2
         1: .line 1072
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* newSharedData */
            invokevirtual com.oracle.truffle.object.ShapeImpl.cloneRoot:(Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
         2: .line 1074
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.parent:Lcom/oracle/truffle/object/ShapeImpl;
            aload 1 /* newSharedData */
            invokevirtual com.oracle.truffle.object.ShapeImpl.createSeparateShape:(Ljava/lang/Object;)Lcom/oracle/truffle/object/ShapeImpl;
            invokevirtual com.oracle.truffle.object.ShapeImpl.cloneOnto:(Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 1 // java.lang.Object newSharedData
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lcom/oracle/truffle/object/ShapeImpl;
            0    3     1  newSharedData  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
               Name  Flags
      newSharedData  

  public final com.oracle.truffle.object.ShapeImpl changeType(com.oracle.truffle.api.object.ObjectType);
    descriptor: (Lcom/oracle/truffle/api/object/ObjectType;)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.ObjectType newObjectType
         0: .line 1082
            aload 0 /* this */
            aload 1 /* newObjectType */
            invokevirtual com.oracle.truffle.object.ShapeImpl.setDynamicType:(Ljava/lang/Object;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 1 // com.oracle.truffle.api.object.ObjectType newObjectType
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/oracle/truffle/object/ShapeImpl;
            0    1     1  newObjectType  Lcom/oracle/truffle/api/object/ObjectType;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
               Name  Flags
      newObjectType  

  protected com.oracle.truffle.object.ShapeImpl setFlags(int);
    descriptor: (I)Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=6, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // int newShapeFlags
         0: .line 1088
            iload 1 /* newShapeFlags */
            invokestatic com.oracle.truffle.object.ShapeImpl.checkObjectFlags:(I)I
            pop
         1: .line 1089
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getFlags:()I
            iload 1 /* newShapeFlags */
            if_icmpne 3
         2: .line 1090
            aload 0 /* this */
            areturn
         3: .line 1093
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.object.Transition$ObjectFlagsTransition
            dup
            iload 1 /* newShapeFlags */
            invokespecial com.oracle.truffle.object.Transition$ObjectFlagsTransition.<init>:(I)V
            astore 2 /* transition */
        start local 2 // com.oracle.truffle.object.Transition$ObjectFlagsTransition transition
         4: .line 1094
            aload 0 /* this */
            aload 2 /* transition */
            invokevirtual com.oracle.truffle.object.ShapeImpl.queryTransition:(Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
            astore 3 /* cachedShape */
        start local 3 // com.oracle.truffle.object.ShapeImpl cachedShape
         5: .line 1095
            aload 3 /* cachedShape */
            ifnull 7
         6: .line 1096
            aload 3 /* cachedShape */
            areturn
         7: .line 1099
      StackMap locals: com.oracle.truffle.object.Transition$ObjectFlagsTransition com.oracle.truffle.object.ShapeImpl
      StackMap stack:
            iload 1 /* newShapeFlags */
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            sipush -256
            iand
            ior
            istore 4 /* newFlags */
        start local 4 // int newFlags
         8: .line 1100
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            aload 2 /* transition */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            iload 4 /* newFlags */
            invokevirtual com.oracle.truffle.object.ShapeImpl.createShape:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
            astore 5 /* newShape */
        start local 5 // com.oracle.truffle.object.ShapeImpl newShape
         9: .line 1101
            aload 0 /* this */
            aload 2 /* transition */
            aload 5 /* newShape */
            invokevirtual com.oracle.truffle.object.ShapeImpl.addDirectTransition:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
        10: .line 1102
            aload 5 /* newShape */
            areturn
        end local 5 // com.oracle.truffle.object.ShapeImpl newShape
        end local 4 // int newFlags
        end local 3 // com.oracle.truffle.object.ShapeImpl cachedShape
        end local 2 // com.oracle.truffle.object.Transition$ObjectFlagsTransition transition
        end local 1 // int newShapeFlags
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0           this  Lcom/oracle/truffle/object/ShapeImpl;
            0   11     1  newShapeFlags  I
            4   11     2     transition  Lcom/oracle/truffle/object/Transition$ObjectFlagsTransition;
            5   11     3    cachedShape  Lcom/oracle/truffle/object/ShapeImpl;
            8   11     4       newFlags  I
            9   11     5       newShape  Lcom/oracle/truffle/object/ShapeImpl;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
               Name  Flags
      newShapeFlags  

  public final com.oracle.truffle.object.ShapeImpl reservePrimitiveExtensionArray();
    descriptor: ()Lcom/oracle/truffle/object/ShapeImpl;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1108
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.hasPrimitiveExtensionArray:()Z
            ifeq 2
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.hasPrimitiveArray:()Z
            ifne 2
         1: .line 1109
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.getStrategy:()Lcom/oracle/truffle/object/LayoutStrategy;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.LayoutStrategy.addPrimitiveExtensionArray:(Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
         2: .line 1111
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final java.lang.Iterable<com.oracle.truffle.api.object.Property> getProperties();
    descriptor: ()Ljava/lang/Iterable;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1117
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyList:()Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;
    Signature: ()Ljava/lang/Iterable<Lcom/oracle/truffle/api/object/Property;>;

  public final com.oracle.truffle.api.object.DynamicObject newInstance();
    descriptor: ()Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1123
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.LayoutImpl.newInstance:(Lcom/oracle/truffle/api/object/Shape;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public final com.oracle.truffle.api.object.DynamicObjectFactory createFactory();
    descriptor: ()Lcom/oracle/truffle/api/object/DynamicObjectFactory;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1129
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.isLegacyLayout:()Z
            ifne 2
         1: .line 1130
            invokestatic com.oracle.truffle.object.DefaultLayout.unsupported:()Ljava/lang/UnsupportedOperationException;
            athrow
         2: .line 1133
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyListInternal:(Z)Ljava/util/List;
            astore 1 /* properties */
        start local 1 // java.util.List properties
         3: .line 1134
            aconst_null
            astore 2 /* filtered */
        start local 2 // java.util.List filtered
         4: .line 1135
            aload 1 /* properties */
            invokeinterface java.util.List.listIterator:()Ljava/util/ListIterator;
            astore 3 /* iterator */
        start local 3 // java.util.ListIterator iterator
         5: goto 15
         6: .line 1136
      StackMap locals: java.util.List java.util.List java.util.ListIterator
      StackMap stack:
            aload 3 /* iterator */
            invokeinterface java.util.ListIterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 4 /* property */
        start local 4 // com.oracle.truffle.api.object.Property property
         7: .line 1138
            getstatic com.oracle.truffle.object.ShapeImpl.$assertionsDisabled:Z
            ifne 8
            aload 4 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            invokevirtual com.oracle.truffle.object.LayoutImpl.getPrimitiveArrayLocation:()Lcom/oracle/truffle/api/object/Location;
            if_acmpne 8
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         8: .line 1139
      StackMap locals: com.oracle.truffle.api.object.Property
      StackMap stack:
            aload 4 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
            invokevirtual com.oracle.truffle.api.object.Location.isValue:()Z
            ifeq 13
         9: .line 1140
            aload 2 /* filtered */
            ifnonnull 15
        10: .line 1141
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* filtered */
        11: .line 1142
            aload 2 /* filtered */
            aload 1 /* properties */
            iconst_0
            aload 3 /* iterator */
            invokeinterface java.util.ListIterator.previousIndex:()I
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        12: .line 1144
            goto 15
      StackMap locals:
      StackMap stack:
        13: aload 2 /* filtered */
            ifnull 15
        14: .line 1145
            aload 2 /* filtered */
            aload 4 /* property */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // com.oracle.truffle.api.object.Property property
        15: .line 1135
      StackMap locals:
      StackMap stack:
            aload 3 /* iterator */
            invokeinterface java.util.ListIterator.hasNext:()Z
            ifne 6
        end local 3 // java.util.ListIterator iterator
        16: .line 1149
            aload 2 /* filtered */
            ifnull 18
        17: .line 1150
            aload 2 /* filtered */
            astore 1 /* properties */
        18: .line 1152
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.object.ShapeImpl$DynamicObjectFactoryImpl
            dup
            aload 0 /* this */
            aload 1 /* properties */
            invokespecial com.oracle.truffle.object.ShapeImpl$DynamicObjectFactoryImpl.<init>:(Lcom/oracle/truffle/object/ShapeImpl;Ljava/util/List;)V
            areturn
        end local 2 // java.util.List filtered
        end local 1 // java.util.List properties
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   19     0        this  Lcom/oracle/truffle/object/ShapeImpl;
            3   19     1  properties  Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
            4   19     2    filtered  Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
            5   16     3    iterator  Ljava/util/ListIterator<Lcom/oracle/truffle/api/object/Property;>;
            7   15     4    property  Lcom/oracle/truffle/api/object/Property;

  public java.lang.Object getMutex();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1158
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getRoot:()Lcom/oracle/truffle/object/ShapeImpl;
            areturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public com.oracle.truffle.api.object.Shape tryMerge(com.oracle.truffle.api.object.Shape);
    descriptor: (Lcom/oracle/truffle/api/object/Shape;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // com.oracle.truffle.api.object.Shape other
         0: .line 1164
            aconst_null
            areturn
        end local 1 // com.oracle.truffle.api.object.Shape other
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/object/ShapeImpl;
            0    1     1  other  Lcom/oracle/truffle/api/object/Shape;
    MethodParameters:
       Name  Flags
      other  

  public boolean isShared();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1170
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            ldc 65536
            iand
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/object/ShapeImpl;

  public com.oracle.truffle.api.object.Shape makeSharedShape();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=4, args_size=1
        start local 0 // com.oracle.truffle.object.ShapeImpl this
         0: .line 1177
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.isShared:()Z
            ifeq 2
         1: .line 1178
            new java.lang.UnsupportedOperationException
            dup
            ldc "makeSharedShape() can only be called on non-shared shapes."
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1181
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.object.Transition$ShareShapeTransition
            dup
            invokespecial com.oracle.truffle.object.Transition$ShareShapeTransition.<init>:()V
            astore 1 /* transition */
        start local 1 // com.oracle.truffle.object.Transition transition
         3: .line 1182
            aload 0 /* this */
            aload 1 /* transition */
            invokevirtual com.oracle.truffle.object.ShapeImpl.queryTransition:(Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
            astore 2 /* cachedShape */
        start local 2 // com.oracle.truffle.object.ShapeImpl cachedShape
         4: .line 1183
            aload 2 /* cachedShape */
            ifnull 6
         5: .line 1184
            aload 2 /* cachedShape */
            areturn
         6: .line 1187
      StackMap locals: com.oracle.truffle.object.Transition com.oracle.truffle.object.ShapeImpl
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.layout:Lcom/oracle/truffle/object/LayoutImpl;
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.propertyMap:Lcom/oracle/truffle/object/PropertyMap;
            aload 1 /* transition */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            aload 0 /* this */
            getfield com.oracle.truffle.object.ShapeImpl.flags:I
            ldc 65536
            ior
            invokevirtual com.oracle.truffle.object.ShapeImpl.createShape:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
            astore 3 /* newShape */
        start local 3 // com.oracle.truffle.object.ShapeImpl newShape
         7: .line 1188
            aload 0 /* this */
            aload 1 /* transition */
            aload 3 /* newShape */
            invokevirtual com.oracle.truffle.object.ShapeImpl.addDirectTransition:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
         8: .line 1189
            aload 3 /* newShape */
            areturn
        end local 3 // com.oracle.truffle.object.ShapeImpl newShape
        end local 2 // com.oracle.truffle.object.ShapeImpl cachedShape
        end local 1 // com.oracle.truffle.object.Transition transition
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Lcom/oracle/truffle/object/ShapeImpl;
            3    9     1   transition  Lcom/oracle/truffle/object/Transition;
            4    9     2  cachedShape  Lcom/oracle/truffle/object/ShapeImpl;
            7    9     3     newShape  Lcom/oracle/truffle/object/ShapeImpl;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  protected static int getObjectFlags(int);
    descriptor: (I)I
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int flags
         0: .line 1197
            iload 0 /* flags */
            sipush 255
            iand
            iconst_0
            iushr
            ireturn
        end local 0 // int flags
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  flags  I
    MethodParameters:
       Name  Flags
      flags  

  protected static int checkObjectFlags(int);
    descriptor: (I)I
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int flags
         0: .line 1201
            iload 0 /* flags */
            sipush -256
            iand
            ifeq 2
         1: .line 1202
            new java.lang.IllegalArgumentException
            dup
            ldc "flags must be in the range [0, 255]"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1204
      StackMap locals:
      StackMap stack:
            iload 0 /* flags */
            ireturn
        end local 0 // int flags
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  flags  I
    MethodParameters:
       Name  Flags
      flags  

  public com.oracle.truffle.api.Assumption getPropertyAssumption(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/Assumption;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // java.lang.Object key
         0: .line 1211
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.allowPropertyAssumptions:()Z
            ifeq 4
         1: .line 1212
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getOrCreatePropertyAssumptions:()Lcom/oracle/truffle/object/ShapeImpl$PropertyAssumptions;
            aload 1 /* key */
            invokevirtual com.oracle.truffle.object.ShapeImpl$PropertyAssumptions.getPropertyAssumption:(Ljava/lang/Object;)Lcom/oracle/truffle/api/Assumption;
            astore 2 /* propertyAssumption */
        start local 2 // com.oracle.truffle.api.Assumption propertyAssumption
         2: .line 1213
            aload 2 /* propertyAssumption */
            ifnull 4
            aload 2 /* propertyAssumption */
            invokeinterface com.oracle.truffle.api.Assumption.isValid:()Z
            ifeq 4
         3: .line 1214
            aload 2 /* propertyAssumption */
            areturn
        end local 2 // com.oracle.truffle.api.Assumption propertyAssumption
         4: .line 1217
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.api.utilities.NeverValidAssumption.INSTANCE:Lcom/oracle/truffle/api/utilities/NeverValidAssumption;
            areturn
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lcom/oracle/truffle/object/ShapeImpl;
            0    5     1                 key  Ljava/lang/Object;
            2    4     2  propertyAssumption  Lcom/oracle/truffle/api/Assumption;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
      Name  Flags
      key   

  protected boolean testPropertyFlags(java.util.function.IntPredicate);
    descriptor: (Ljava/util/function/IntPredicate;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // java.util.function.IntPredicate predicate
         0: .line 1221
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getProperties:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: com.oracle.truffle.object.ShapeImpl java.util.function.IntPredicate top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 2 /* p */
        start local 2 // com.oracle.truffle.api.object.Property p
         2: .line 1222
            aload 1 /* predicate */
            aload 2 /* p */
            invokevirtual com.oracle.truffle.api.object.Property.getFlags:()I
            invokeinterface java.util.function.IntPredicate.test:(I)Z
            ifeq 4
         3: .line 1223
            goto 5
         4: .line 1225
      StackMap locals: com.oracle.truffle.object.ShapeImpl java.util.function.IntPredicate com.oracle.truffle.api.object.Property java.util.Iterator
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // com.oracle.truffle.api.object.Property p
         5: .line 1221
      StackMap locals: com.oracle.truffle.object.ShapeImpl java.util.function.IntPredicate top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 1228
            iconst_1
            ireturn
        end local 1 // java.util.function.IntPredicate predicate
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lcom/oracle/truffle/object/ShapeImpl;
            0    7     1  predicate  Ljava/util/function/IntPredicate;
            2    5     2          p  Lcom/oracle/truffle/api/object/Property;
    MethodParameters:
           Name  Flags
      predicate  

  public boolean allPropertiesMatch(java.util.function.Predicate<com.oracle.truffle.api.object.Property>);
    descriptor: (Ljava/util/function/Predicate;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.object.ShapeImpl this
        start local 1 // java.util.function.Predicate predicate
         0: .line 1235
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.ShapeImpl.getProperties:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: com.oracle.truffle.object.ShapeImpl java.util.function.Predicate top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 2 /* p */
        start local 2 // com.oracle.truffle.api.object.Property p
         2: .line 1236
            aload 1 /* predicate */
            aload 2 /* p */
            invokeinterface java.util.function.Predicate.test:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 1237
            goto 5
         4: .line 1239
      StackMap locals: com.oracle.truffle.object.ShapeImpl java.util.function.Predicate com.oracle.truffle.api.object.Property java.util.Iterator
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // com.oracle.truffle.api.object.Property p
         5: .line 1235
      StackMap locals: com.oracle.truffle.object.ShapeImpl java.util.function.Predicate top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 1242
            iconst_1
            ireturn
        end local 1 // java.util.function.Predicate predicate
        end local 0 // com.oracle.truffle.object.ShapeImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lcom/oracle/truffle/object/ShapeImpl;
            0    7     1  predicate  Ljava/util/function/Predicate<Lcom/oracle/truffle/api/object/Property;>;
            2    5     2          p  Lcom/oracle/truffle/api/object/Property;
    Signature: (Ljava/util/function/Predicate<Lcom/oracle/truffle/api/object/Property;>;)Z
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
           Name  Flags
      predicate  

  public com.oracle.truffle.api.object.Shape append(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.oracle.truffle.object.ShapeImpl.append:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Shape removeProperty(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.oracle.truffle.object.ShapeImpl.removeProperty:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Shape createSeparateShape(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.oracle.truffle.object.ShapeImpl.createSeparateShape:(Ljava/lang/Object;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Shape$Allocator allocator();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape$Allocator;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected com.oracle.truffle.api.object.Shape setDynamicType(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.oracle.truffle.object.ShapeImpl.setDynamicType:(Ljava/lang/Object;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Shape addProperty(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.oracle.truffle.object.ShapeImpl.addProperty:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Shape getParent();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.oracle.truffle.object.ShapeImpl.getParent:()Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Shape defineProperty(java.lang.Object, java.lang.Object, int, com.oracle.truffle.api.object.LocationFactory);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=5, locals=5, args_size=5
         0: .line 1
            aload 0
            aload 1
            aload 2
            iload 3
            aload 4
            invokevirtual com.oracle.truffle.object.ShapeImpl.defineProperty:(Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Shape defineProperty(java.lang.Object, java.lang.Object, int);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;I)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=4, locals=4, args_size=4
         0: .line 1
            aload 0
            aload 1
            aload 2
            iload 3
            invokevirtual com.oracle.truffle.object.ShapeImpl.defineProperty:(Ljava/lang/Object;Ljava/lang/Object;I)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Shape replaceProperty(com.oracle.truffle.api.object.Property, com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            invokevirtual com.oracle.truffle.object.ShapeImpl.replaceProperty:(Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Layout getLayout();
    descriptor: ()Lcom/oracle/truffle/api/object/Layout;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.oracle.truffle.object.ShapeImpl.getLayout:()Lcom/oracle/truffle/object/LayoutImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected com.oracle.truffle.api.object.Shape setFlags(int);
    descriptor: (I)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            iload 1
            invokevirtual com.oracle.truffle.object.ShapeImpl.setFlags:(I)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Shape getRoot();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.oracle.truffle.object.ShapeImpl.getRoot:()Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Shape changeType(com.oracle.truffle.api.object.ObjectType);
    descriptor: (Lcom/oracle/truffle/api/object/ObjectType;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.oracle.truffle.object.ShapeImpl.changeType:(Lcom/oracle/truffle/api/object/ObjectType;)Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.api.object.Shape reservePrimitiveExtensionArray();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.oracle.truffle.object.ShapeImpl.reservePrimitiveExtensionArray:()Lcom/oracle/truffle/object/ShapeImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "ShapeImpl.java"
NestMembers:
  com.oracle.truffle.object.ShapeImpl$1  com.oracle.truffle.object.ShapeImpl$BaseAllocator  com.oracle.truffle.object.ShapeImpl$DynamicObjectFactoryImpl  com.oracle.truffle.object.ShapeImpl$PropertyAssumptions
InnerClasses:
  public abstract CompilationFinal = com.oracle.truffle.api.CompilerDirectives$CompilationFinal of com.oracle.truffle.api.CompilerDirectives
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract Allocator = com.oracle.truffle.api.object.Shape$Allocator of com.oracle.truffle.api.object.Shape
  public abstract Pred = com.oracle.truffle.api.object.Shape$Pred of com.oracle.truffle.api.object.Shape
  com.oracle.truffle.object.ShapeImpl$1
  public abstract BaseAllocator = com.oracle.truffle.object.ShapeImpl$BaseAllocator of com.oracle.truffle.object.ShapeImpl
  public final DynamicObjectFactoryImpl = com.oracle.truffle.object.ShapeImpl$DynamicObjectFactoryImpl of com.oracle.truffle.object.ShapeImpl
  final PropertyAssumptions = com.oracle.truffle.object.ShapeImpl$PropertyAssumptions of com.oracle.truffle.object.ShapeImpl
  public final AddPropertyTransition = com.oracle.truffle.object.Transition$AddPropertyTransition of com.oracle.truffle.object.Transition
  final ObjectFlagsTransition = com.oracle.truffle.object.Transition$ObjectFlagsTransition of com.oracle.truffle.object.Transition
  public final ObjectTypeTransition = com.oracle.truffle.object.Transition$ObjectTypeTransition of com.oracle.truffle.object.Transition
  public abstract PropertyTransition = com.oracle.truffle.object.Transition$PropertyTransition of com.oracle.truffle.object.Transition
  public final RemovePropertyTransition = com.oracle.truffle.object.Transition$RemovePropertyTransition of com.oracle.truffle.object.Transition
  public final ShareShapeTransition = com.oracle.truffle.object.Transition$ShareShapeTransition of com.oracle.truffle.object.Transition