class com.oracle.truffle.object.DefaultLayout extends com.oracle.truffle.object.LayoutImpl
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.truffle.object.DefaultLayout
  super_class: com.oracle.truffle.object.LayoutImpl
{
  private final com.oracle.truffle.object.CoreLocations$ObjectLocation[] objectFields;
    descriptor: [Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.object.CoreLocations$LongLocation[] primitiveFields;
    descriptor: [Lcom/oracle/truffle/object/CoreLocations$LongLocation;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  static final com.oracle.truffle.object.CoreLocations$ObjectLocation[] NO_OBJECT_FIELDS;
    descriptor: [Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final com.oracle.truffle.object.CoreLocations$LongLocation[] NO_LONG_FIELDS;
    descriptor: [Lcom/oracle/truffle/object/CoreLocations$LongLocation;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private static final java.util.Map<com.oracle.truffle.object.DefaultLayout$Key, com.oracle.truffle.object.DefaultLayout> LAYOUT_MAP;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Lcom/oracle/truffle/object/DefaultLayout$Key;Lcom/oracle/truffle/object/DefaultLayout;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 73
            iconst_0
            anewarray com.oracle.truffle.object.CoreLocations$ObjectLocation
            putstatic com.oracle.truffle.object.DefaultLayout.NO_OBJECT_FIELDS:[Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
         1: .line 74
            iconst_0
            anewarray com.oracle.truffle.object.CoreLocations$LongLocation
            putstatic com.oracle.truffle.object.DefaultLayout.NO_LONG_FIELDS:[Lcom/oracle/truffle/object/CoreLocations$LongLocation;
         2: .line 76
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putstatic com.oracle.truffle.object.DefaultLayout.LAYOUT_MAP:Ljava/util/Map;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.lang.Class<? extends com.oracle.truffle.api.object.DynamicObject>, com.oracle.truffle.object.LayoutStrategy, int, com.oracle.truffle.object.CoreLocations$ObjectLocation[], com.oracle.truffle.object.CoreLocations$LongLocation[]);
    descriptor: (Ljava/lang/Class;Lcom/oracle/truffle/object/LayoutStrategy;I[Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;[Lcom/oracle/truffle/object/CoreLocations$LongLocation;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=6
        start local 0 // com.oracle.truffle.object.DefaultLayout this
        start local 1 // java.lang.Class dynamicObjectClass
        start local 2 // com.oracle.truffle.object.LayoutStrategy strategy
        start local 3 // int implicitCastFlags
        start local 4 // com.oracle.truffle.object.CoreLocations$ObjectLocation[] objectFields
        start local 5 // com.oracle.truffle.object.CoreLocations$LongLocation[] primitiveFields
         0: .line 79
            aload 0 /* this */
            aload 1 /* dynamicObjectClass */
            aload 2 /* strategy */
            iload 3 /* implicitCastFlags */
            invokespecial com.oracle.truffle.object.LayoutImpl.<init>:(Ljava/lang/Class;Lcom/oracle/truffle/object/LayoutStrategy;I)V
         1: .line 80
            aload 0 /* this */
            getstatic com.oracle.truffle.object.CoreLocations.PRIMITIVE_ARRAY_LOCATION:Lcom/oracle/truffle/object/CoreLocations$SimpleObjectFieldLocation;
            putfield com.oracle.truffle.object.DefaultLayout.primitiveArrayLocation:Lcom/oracle/truffle/object/CoreLocation;
         2: .line 81
            aload 0 /* this */
            getstatic com.oracle.truffle.object.CoreLocations.OBJECT_ARRAY_LOCATION:Lcom/oracle/truffle/object/CoreLocations$SimpleObjectFieldLocation;
            putfield com.oracle.truffle.object.DefaultLayout.objectArrayLocation:Lcom/oracle/truffle/object/CoreLocation;
         3: .line 82
            aload 0 /* this */
            aload 4 /* objectFields */
            putfield com.oracle.truffle.object.DefaultLayout.objectFields:[Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
         4: .line 83
            aload 0 /* this */
            aload 5 /* primitiveFields */
            putfield com.oracle.truffle.object.DefaultLayout.primitiveFields:[Lcom/oracle/truffle/object/CoreLocations$LongLocation;
         5: .line 84
            return
        end local 5 // com.oracle.truffle.object.CoreLocations$LongLocation[] primitiveFields
        end local 4 // com.oracle.truffle.object.CoreLocations$ObjectLocation[] objectFields
        end local 3 // int implicitCastFlags
        end local 2 // com.oracle.truffle.object.LayoutStrategy strategy
        end local 1 // java.lang.Class dynamicObjectClass
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    6     0                this  Lcom/oracle/truffle/object/DefaultLayout;
            0    6     1  dynamicObjectClass  Ljava/lang/Class<+Lcom/oracle/truffle/api/object/DynamicObject;>;
            0    6     2            strategy  Lcom/oracle/truffle/object/LayoutStrategy;
            0    6     3   implicitCastFlags  I
            0    6     4        objectFields  [Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
            0    6     5     primitiveFields  [Lcom/oracle/truffle/object/CoreLocations$LongLocation;
    Signature: (Ljava/lang/Class<+Lcom/oracle/truffle/api/object/DynamicObject;>;Lcom/oracle/truffle/object/LayoutStrategy;I[Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;[Lcom/oracle/truffle/object/CoreLocations$LongLocation;)V
    MethodParameters:
                    Name  Flags
      dynamicObjectClass  
      strategy            
      implicitCastFlags   
      objectFields        
      primitiveFields     

  void <init>(java.lang.Class<? extends com.oracle.truffle.api.object.DynamicObject>, com.oracle.truffle.object.LayoutStrategy, );
    descriptor: (Ljava/lang/Class;Lcom/oracle/truffle/object/LayoutStrategy;I)V
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.oracle.truffle.object.DefaultLayout this
        start local 1 // java.lang.Class dynamicObjectClass
        start local 2 // com.oracle.truffle.object.LayoutStrategy strategy
        start local 3 // int implicitCastFlags
         0: .line 87
            aload 0 /* this */
            aload 1 /* dynamicObjectClass */
            aload 2 /* strategy */
            iload 3 /* implicitCastFlags */
            invokespecial com.oracle.truffle.object.LayoutImpl.<init>:(Ljava/lang/Class;Lcom/oracle/truffle/object/LayoutStrategy;I)V
         1: .line 88
            aload 0 /* this */
            getstatic com.oracle.truffle.object.CoreLocations.PRIMITIVE_ARRAY_LOCATION:Lcom/oracle/truffle/object/CoreLocations$SimpleObjectFieldLocation;
            putfield com.oracle.truffle.object.DefaultLayout.primitiveArrayLocation:Lcom/oracle/truffle/object/CoreLocation;
         2: .line 89
            aload 0 /* this */
            getstatic com.oracle.truffle.object.CoreLocations.OBJECT_ARRAY_LOCATION:Lcom/oracle/truffle/object/CoreLocations$SimpleObjectFieldLocation;
            putfield com.oracle.truffle.object.DefaultLayout.objectArrayLocation:Lcom/oracle/truffle/object/CoreLocation;
         3: .line 90
            ldc Lcom/oracle/truffle/api/object/DynamicObject;
            aload 1 /* dynamicObjectClass */
            if_acmpne 7
         4: .line 91
            aload 0 /* this */
            getstatic com.oracle.truffle.object.DefaultLayout.NO_OBJECT_FIELDS:[Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
            putfield com.oracle.truffle.object.DefaultLayout.objectFields:[Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
         5: .line 92
            aload 0 /* this */
            getstatic com.oracle.truffle.object.DefaultLayout.NO_LONG_FIELDS:[Lcom/oracle/truffle/object/CoreLocations$LongLocation;
            putfield com.oracle.truffle.object.DefaultLayout.primitiveFields:[Lcom/oracle/truffle/object/CoreLocations$LongLocation;
         6: .line 93
            goto 13
      StackMap locals: com.oracle.truffle.object.DefaultLayout java.lang.Class com.oracle.truffle.object.LayoutStrategy int
      StackMap stack:
         7: ldc Lcom/oracle/truffle/api/object/DynamicObject;
            aload 1 /* dynamicObjectClass */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 12
         8: .line 94
            aload 1 /* dynamicObjectClass */
            invokestatic com.oracle.truffle.object.DefaultLayout$LayoutInfo.getOrCreateLayoutInfo:(Ljava/lang/Class;)Lcom/oracle/truffle/object/DefaultLayout$LayoutInfo;
            astore 4 /* layoutInfo */
        start local 4 // com.oracle.truffle.object.DefaultLayout$LayoutInfo layoutInfo
         9: .line 95
            aload 0 /* this */
            aload 4 /* layoutInfo */
            getfield com.oracle.truffle.object.DefaultLayout$LayoutInfo.objectFields:[Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
            putfield com.oracle.truffle.object.DefaultLayout.objectFields:[Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
        10: .line 96
            aload 0 /* this */
            aload 4 /* layoutInfo */
            getfield com.oracle.truffle.object.DefaultLayout$LayoutInfo.primitiveFields:[Lcom/oracle/truffle/object/CoreLocations$LongLocation;
            putfield com.oracle.truffle.object.DefaultLayout.primitiveFields:[Lcom/oracle/truffle/object/CoreLocations$LongLocation;
        end local 4 // com.oracle.truffle.object.DefaultLayout$LayoutInfo layoutInfo
        11: .line 97
            goto 13
        12: .line 98
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            aload 1 /* dynamicObjectClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 100
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int implicitCastFlags
        end local 2 // com.oracle.truffle.object.LayoutStrategy strategy
        end local 1 // java.lang.Class dynamicObjectClass
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   14     0                this  Lcom/oracle/truffle/object/DefaultLayout;
            0   14     1  dynamicObjectClass  Ljava/lang/Class<+Lcom/oracle/truffle/api/object/DynamicObject;>;
            0   14     2            strategy  Lcom/oracle/truffle/object/LayoutStrategy;
            0   14     3   implicitCastFlags  I
            9   11     4          layoutInfo  Lcom/oracle/truffle/object/DefaultLayout$LayoutInfo;
    Signature: (Ljava/lang/Class<+Lcom/oracle/truffle/api/object/DynamicObject;>;Lcom/oracle/truffle/object/LayoutStrategy;I)V
    MethodParameters:
                    Name  Flags
      dynamicObjectClass  
      strategy            
      implicitCastFlags   

  public static com.oracle.truffle.object.LayoutImpl createCoreLayout(com.oracle.truffle.api.object.Layout$Builder);
    descriptor: (Lcom/oracle/truffle/api/object/Layout$Builder;)Lcom/oracle/truffle/object/LayoutImpl;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.object.Layout$Builder builder
         0: .line 103
            aload 0 /* builder */
            invokestatic com.oracle.truffle.object.DefaultLayout.getType:(Lcom/oracle/truffle/api/object/Layout$Builder;)Ljava/lang/Class;
            astore 1 /* type */
        start local 1 // java.lang.Class type
         1: .line 104
            aload 0 /* builder */
            invokestatic com.oracle.truffle.object.DefaultLayout.getAllowedImplicitCasts:(Lcom/oracle/truffle/api/object/Layout$Builder;)Ljava/util/EnumSet;
            astore 2 /* allowedImplicitCasts */
        start local 2 // java.util.EnumSet allowedImplicitCasts
         2: .line 105
            aload 2 /* allowedImplicitCasts */
            invokestatic com.oracle.truffle.object.DefaultLayout.implicitCastFlags:(Ljava/util/EnumSet;)I
            istore 3 /* implicitCastFlags */
        start local 3 // int implicitCastFlags
         3: .line 106
            aload 1 /* type */
            iload 3 /* implicitCastFlags */
            invokestatic com.oracle.truffle.object.DefaultLayout.getOrCreateLayout:(Ljava/lang/Class;I)Lcom/oracle/truffle/object/DefaultLayout;
            areturn
        end local 3 // int implicitCastFlags
        end local 2 // java.util.EnumSet allowedImplicitCasts
        end local 1 // java.lang.Class type
        end local 0 // com.oracle.truffle.api.object.Layout$Builder builder
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    4     0               builder  Lcom/oracle/truffle/api/object/Layout$Builder;
            1    4     1                  type  Ljava/lang/Class<+Lcom/oracle/truffle/api/object/DynamicObject;>;
            2    4     2  allowedImplicitCasts  Ljava/util/EnumSet<Lcom/oracle/truffle/api/object/Layout$ImplicitCast;>;
            3    4     3     implicitCastFlags  I
    MethodParameters:
         Name  Flags
      builder  

  private static com.oracle.truffle.object.DefaultLayout getOrCreateLayout(java.lang.Class<? extends com.oracle.truffle.api.object.DynamicObject>, int);
    descriptor: (Ljava/lang/Class;I)Lcom/oracle/truffle/object/DefaultLayout;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // java.lang.Class type
        start local 1 // int implicitCastFlags
         0: .line 110
            new com.oracle.truffle.object.DefaultLayout$Key
            dup
            aload 0 /* type */
            iload 1 /* implicitCastFlags */
            invokespecial com.oracle.truffle.object.DefaultLayout$Key.<init>:(Ljava/lang/Class;I)V
            astore 2 /* key */
        start local 2 // com.oracle.truffle.object.DefaultLayout$Key key
         1: .line 111
            getstatic com.oracle.truffle.object.DefaultLayout.LAYOUT_MAP:Ljava/util/Map;
            aload 2 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.object.DefaultLayout
            astore 3 /* layout */
        start local 3 // com.oracle.truffle.object.DefaultLayout layout
         2: .line 112
            aload 3 /* layout */
            ifnull 4
         3: .line 113
            aload 3 /* layout */
            areturn
         4: .line 115
      StackMap locals: com.oracle.truffle.object.DefaultLayout$Key com.oracle.truffle.object.DefaultLayout
      StackMap stack:
            new com.oracle.truffle.object.DefaultLayout
            dup
            aload 0 /* type */
            getstatic com.oracle.truffle.object.DefaultStrategy.SINGLETON:Lcom/oracle/truffle/object/LayoutStrategy;
            iload 1 /* implicitCastFlags */
            invokespecial com.oracle.truffle.object.DefaultLayout.<init>:(Ljava/lang/Class;Lcom/oracle/truffle/object/LayoutStrategy;I)V
            astore 4 /* newLayout */
        start local 4 // com.oracle.truffle.object.DefaultLayout newLayout
         5: .line 116
            getstatic com.oracle.truffle.object.DefaultLayout.LAYOUT_MAP:Ljava/util/Map;
            aload 2 /* key */
            aload 4 /* newLayout */
            invokeinterface java.util.Map.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.object.DefaultLayout
            astore 3 /* layout */
         6: .line 117
            aload 3 /* layout */
            ifnonnull 7
            aload 4 /* newLayout */
            goto 8
      StackMap locals: com.oracle.truffle.object.DefaultLayout
      StackMap stack:
         7: aload 3 /* layout */
      StackMap locals:
      StackMap stack: com.oracle.truffle.object.DefaultLayout
         8: areturn
        end local 4 // com.oracle.truffle.object.DefaultLayout newLayout
        end local 3 // com.oracle.truffle.object.DefaultLayout layout
        end local 2 // com.oracle.truffle.object.DefaultLayout$Key key
        end local 1 // int implicitCastFlags
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    9     0               type  Ljava/lang/Class<+Lcom/oracle/truffle/api/object/DynamicObject;>;
            0    9     1  implicitCastFlags  I
            1    9     2                key  Lcom/oracle/truffle/object/DefaultLayout$Key;
            2    9     3             layout  Lcom/oracle/truffle/object/DefaultLayout;
            5    9     4          newLayout  Lcom/oracle/truffle/object/DefaultLayout;
    Signature: (Ljava/lang/Class<+Lcom/oracle/truffle/api/object/DynamicObject;>;I)Lcom/oracle/truffle/object/DefaultLayout;
    MethodParameters:
                   Name  Flags
      type               
      implicitCastFlags  

  public com.oracle.truffle.api.object.DynamicObject newInstance(com.oracle.truffle.api.object.Shape);
    descriptor: (Lcom/oracle/truffle/api/object/Shape;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.DefaultLayout this
        start local 1 // com.oracle.truffle.api.object.Shape shape
         0: .line 122
            invokestatic com.oracle.truffle.object.DefaultLayout.unsupported:()Ljava/lang/UnsupportedOperationException;
            athrow
        end local 1 // com.oracle.truffle.api.object.Shape shape
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/object/DefaultLayout;
            0    1     1  shape  Lcom/oracle/truffle/api/object/Shape;
    MethodParameters:
       Name  Flags
      shape  

  protected com.oracle.truffle.api.object.DynamicObject construct(com.oracle.truffle.api.object.Shape);
    descriptor: (Lcom/oracle/truffle/api/object/Shape;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.DefaultLayout this
        start local 1 // com.oracle.truffle.api.object.Shape shape
         0: .line 127
            invokestatic com.oracle.truffle.object.DefaultLayout.unsupported:()Ljava/lang/UnsupportedOperationException;
            athrow
        end local 1 // com.oracle.truffle.api.object.Shape shape
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/object/DefaultLayout;
            0    1     1  shape  Lcom/oracle/truffle/api/object/Shape;
    MethodParameters:
       Name  Flags
      shape  

  protected boolean isLegacyLayout();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.DefaultLayout this
         0: .line 132
            iconst_0
            ireturn
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/DefaultLayout;

  static java.lang.UnsupportedOperationException unsupported();
    descriptor: ()Ljava/lang/UnsupportedOperationException;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 136
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         1: .line 137
            new java.lang.UnsupportedOperationException
            dup
            ldc "not supported by this object layout"
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected com.oracle.truffle.api.object.Shape newShape(java.lang.Object, java.lang.Object, int, com.oracle.truffle.api.Assumption);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/Assumption;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=5, args_size=5
        start local 0 // com.oracle.truffle.object.DefaultLayout this
        start local 1 // java.lang.Object objectType
        start local 2 // java.lang.Object sharedData
        start local 3 // int flags
        start local 4 // com.oracle.truffle.api.Assumption singleContextAssumption
         0: .line 142
            new com.oracle.truffle.object.ShapeBasic
            dup
            aload 0 /* this */
            aload 2 /* sharedData */
            aload 1 /* objectType */
            iload 3 /* flags */
            aload 4 /* singleContextAssumption */
            invokespecial com.oracle.truffle.object.ShapeBasic.<init>:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/Assumption;)V
            areturn
        end local 4 // com.oracle.truffle.api.Assumption singleContextAssumption
        end local 3 // int flags
        end local 2 // java.lang.Object sharedData
        end local 1 // java.lang.Object objectType
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    1     0                     this  Lcom/oracle/truffle/object/DefaultLayout;
            0    1     1               objectType  Ljava/lang/Object;
            0    1     2               sharedData  Ljava/lang/Object;
            0    1     3                    flags  I
            0    1     4  singleContextAssumption  Lcom/oracle/truffle/api/Assumption;
    MethodParameters:
                         Name  Flags
      objectType               
      sharedData               
      flags                    
      singleContextAssumption  

  protected boolean hasObjectExtensionArray();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.DefaultLayout this
         0: .line 147
            iconst_1
            ireturn
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/DefaultLayout;

  protected boolean hasPrimitiveExtensionArray();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.DefaultLayout this
         0: .line 152
            iconst_1
            ireturn
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/DefaultLayout;

  protected int getObjectFieldCount();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.DefaultLayout this
         0: .line 157
            aload 0 /* this */
            getfield com.oracle.truffle.object.DefaultLayout.objectFields:[Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
            arraylength
            ireturn
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/DefaultLayout;

  protected int getPrimitiveFieldCount();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.DefaultLayout this
         0: .line 162
            aload 0 /* this */
            getfield com.oracle.truffle.object.DefaultLayout.primitiveFields:[Lcom/oracle/truffle/object/CoreLocations$LongLocation;
            arraylength
            ireturn
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/DefaultLayout;

  protected com.oracle.truffle.object.CoreLocation getObjectArrayLocation();
    descriptor: ()Lcom/oracle/truffle/object/CoreLocation;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.DefaultLayout this
         0: .line 167
            aload 0 /* this */
            getfield com.oracle.truffle.object.DefaultLayout.objectArrayLocation:Lcom/oracle/truffle/object/CoreLocation;
            areturn
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/DefaultLayout;

  protected com.oracle.truffle.object.CoreLocation getPrimitiveArrayLocation();
    descriptor: ()Lcom/oracle/truffle/object/CoreLocation;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.DefaultLayout this
         0: .line 172
            aload 0 /* this */
            getfield com.oracle.truffle.object.DefaultLayout.primitiveArrayLocation:Lcom/oracle/truffle/object/CoreLocation;
            areturn
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/DefaultLayout;

  protected com.oracle.truffle.object.CoreLocations$ObjectLocation getObjectFieldLocation(int);
    descriptor: (I)Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.DefaultLayout this
        start local 1 // int index
         0: .line 176
            aload 0 /* this */
            getfield com.oracle.truffle.object.DefaultLayout.objectFields:[Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;
            iload 1 /* index */
            aaload
            areturn
        end local 1 // int index
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/object/DefaultLayout;
            0    1     1  index  I
    MethodParameters:
       Name  Flags
      index  

  protected com.oracle.truffle.object.CoreLocations$LongLocation getPrimitiveFieldLocation(int);
    descriptor: (I)Lcom/oracle/truffle/object/CoreLocations$LongLocation;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.DefaultLayout this
        start local 1 // int index
         0: .line 180
            aload 0 /* this */
            getfield com.oracle.truffle.object.DefaultLayout.primitiveFields:[Lcom/oracle/truffle/object/CoreLocations$LongLocation;
            iload 1 /* index */
            aaload
            areturn
        end local 1 // int index
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/object/DefaultLayout;
            0    1     1  index  I
    MethodParameters:
       Name  Flags
      index  

  protected int getLongFieldSize();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.DefaultLayout this
         0: .line 184
            iconst_1
            ireturn
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/DefaultLayout;

  public com.oracle.truffle.api.object.Shape$Allocator createAllocator();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape$Allocator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.object.DefaultLayout this
         0: .line 189
            aload 0 /* this */
            astore 1 /* layout */
        start local 1 // com.oracle.truffle.object.LayoutImpl layout
         1: .line 190
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.DefaultLayout.getStrategy:()Lcom/oracle/truffle/object/LayoutStrategy;
            aload 1 /* layout */
            invokevirtual com.oracle.truffle.object.LayoutStrategy.createAllocator:(Lcom/oracle/truffle/object/LayoutImpl;)Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
            areturn
        end local 1 // com.oracle.truffle.object.LayoutImpl layout
        end local 0 // com.oracle.truffle.object.DefaultLayout this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/oracle/truffle/object/DefaultLayout;
            1    2     1  layout  Lcom/oracle/truffle/object/LayoutImpl;

  static void resetNativeImageState();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 331
            getstatic com.oracle.truffle.object.DefaultLayout.LAYOUT_MAP:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         1: .line 332
            getstatic com.oracle.truffle.object.DefaultLayout$LayoutInfo.LAYOUT_INFO_MAP:Ljava/util/concurrent/ConcurrentMap;
            invokeinterface java.util.concurrent.ConcurrentMap.clear:()V
         2: .line 333
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected com.oracle.truffle.api.object.Location getPrimitiveArrayLocation();
    descriptor: ()Lcom/oracle/truffle/api/object/Location;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.oracle.truffle.object.DefaultLayout.getPrimitiveArrayLocation:()Lcom/oracle/truffle/object/CoreLocation;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected com.oracle.truffle.api.object.Location getObjectArrayLocation();
    descriptor: ()Lcom/oracle/truffle/api/object/Location;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.oracle.truffle.object.DefaultLayout.getObjectArrayLocation:()Lcom/oracle/truffle/object/CoreLocation;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "DefaultLayout.java"
NestMembers:
  com.oracle.truffle.object.DefaultLayout$Key  com.oracle.truffle.object.DefaultLayout$LayoutInfo
InnerClasses:
  public final Builder = com.oracle.truffle.api.object.Layout$Builder of com.oracle.truffle.api.object.Layout
  public final ImplicitCast = com.oracle.truffle.api.object.Layout$ImplicitCast of com.oracle.truffle.api.object.Layout
  public abstract Allocator = com.oracle.truffle.api.object.Shape$Allocator of com.oracle.truffle.api.object.Shape
  public abstract LongLocation = com.oracle.truffle.object.CoreLocations$LongLocation of com.oracle.truffle.object.CoreLocations
  public abstract ObjectLocation = com.oracle.truffle.object.CoreLocations$ObjectLocation of com.oracle.truffle.object.CoreLocations
  private final Key = com.oracle.truffle.object.DefaultLayout$Key of com.oracle.truffle.object.DefaultLayout
  private final LayoutInfo = com.oracle.truffle.object.DefaultLayout$LayoutInfo of com.oracle.truffle.object.DefaultLayout
  public abstract BaseAllocator = com.oracle.truffle.object.ShapeImpl$BaseAllocator of com.oracle.truffle.object.ShapeImpl