public class com.oracle.truffle.object.BasicLayout extends com.oracle.truffle.object.DefaultLayout
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.object.BasicLayout
  super_class: com.oracle.truffle.object.DefaultLayout
{
  void <init>(com.oracle.truffle.object.LayoutStrategy, int);
    descriptor: (Lcom/oracle/truffle/object/LayoutStrategy;I)V
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // com.oracle.truffle.object.BasicLayout this
        start local 1 // com.oracle.truffle.object.LayoutStrategy strategy
        start local 2 // int allowedImplicitCasts
         0: .line 49
            aload 0 /* this */
            ldc Lcom/oracle/truffle/object/DynamicObjectBasic;
            aload 1 /* strategy */
            iload 2 /* allowedImplicitCasts */
            getstatic com.oracle.truffle.object.DynamicObjectBasic.OBJECT_FIELD_LOCATIONS:[Lcom/oracle/truffle/object/DynamicObjectBasic$BasicObjectFieldLocation;
            getstatic com.oracle.truffle.object.DynamicObjectBasic.PRIMITIVE_FIELD_LOCATIONS:[Lcom/oracle/truffle/object/DynamicObjectBasic$BasicLongFieldLocation;
            invokespecial com.oracle.truffle.object.DefaultLayout.<init>:(Ljava/lang/Class;Lcom/oracle/truffle/object/LayoutStrategy;I[Lcom/oracle/truffle/object/CoreLocations$ObjectLocation;[Lcom/oracle/truffle/object/CoreLocations$LongLocation;)V
         1: .line 50
            return
        end local 2 // int allowedImplicitCasts
        end local 1 // com.oracle.truffle.object.LayoutStrategy strategy
        end local 0 // com.oracle.truffle.object.BasicLayout this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    2     0                  this  Lcom/oracle/truffle/object/BasicLayout;
            0    2     1              strategy  Lcom/oracle/truffle/object/LayoutStrategy;
            0    2     2  allowedImplicitCasts  I
    MethodParameters:
                      Name  Flags
      strategy              
      allowedImplicitCasts  

  public static com.oracle.truffle.object.LayoutImpl createLayoutImpl(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=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.object.Layout$Builder builder
         0: .line 53
            aload 0 /* builder */
            invokestatic com.oracle.truffle.object.BasicLayout.getType:(Lcom/oracle/truffle/api/object/Layout$Builder;)Ljava/lang/Class;
            astore 1 /* dynamicObjectClass */
        start local 1 // java.lang.Class dynamicObjectClass
         1: .line 54
            aload 1 /* dynamicObjectClass */
            ifnull 3
         2: .line 55
            aload 0 /* builder */
            invokestatic com.oracle.truffle.object.DefaultLayout.createCoreLayout:(Lcom/oracle/truffle/api/object/Layout$Builder;)Lcom/oracle/truffle/object/LayoutImpl;
            areturn
         3: .line 57
      StackMap locals: java.lang.Class
      StackMap stack:
            new com.oracle.truffle.object.BasicLayout
            dup
            getstatic com.oracle.truffle.object.DefaultStrategy.SINGLETON:Lcom/oracle/truffle/object/LayoutStrategy;
            aload 0 /* builder */
            invokestatic com.oracle.truffle.object.BasicLayout.getAllowedImplicitCasts:(Lcom/oracle/truffle/api/object/Layout$Builder;)Ljava/util/EnumSet;
            invokestatic com.oracle.truffle.object.BasicLayout.implicitCastFlags:(Ljava/util/EnumSet;)I
            invokespecial com.oracle.truffle.object.BasicLayout.<init>:(Lcom/oracle/truffle/object/LayoutStrategy;I)V
            areturn
        end local 1 // java.lang.Class dynamicObjectClass
        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  dynamicObjectClass  Ljava/lang/Class<+Lcom/oracle/truffle/api/object/DynamicObject;>;
    MethodParameters:
         Name  Flags
      builder  

  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=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.BasicLayout this
        start local 1 // com.oracle.truffle.api.object.Shape shape
         0: .line 62
            new com.oracle.truffle.object.DynamicObjectBasic
            dup
            aload 1 /* shape */
            invokespecial com.oracle.truffle.object.DynamicObjectBasic.<init>:(Lcom/oracle/truffle/api/object/Shape;)V
            areturn
        end local 1 // com.oracle.truffle.api.object.Shape shape
        end local 0 // com.oracle.truffle.object.BasicLayout this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/object/BasicLayout;
            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=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.BasicLayout this
        start local 1 // com.oracle.truffle.api.object.Shape shape
         0: .line 67
            new com.oracle.truffle.object.DynamicObjectBasic
            dup
            aload 1 /* shape */
            invokespecial com.oracle.truffle.object.DynamicObjectBasic.<init>:(Lcom/oracle/truffle/api/object/Shape;)V
            areturn
        end local 1 // com.oracle.truffle.api.object.Shape shape
        end local 0 // com.oracle.truffle.object.BasicLayout this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/object/BasicLayout;
            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.BasicLayout this
         0: .line 72
            iconst_1
            ireturn
        end local 0 // com.oracle.truffle.object.BasicLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/BasicLayout;

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

  public com.oracle.truffle.api.object.Shape$Allocator createAllocator();
    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
            invokespecial com.oracle.truffle.object.DefaultLayout.createAllocator:()Lcom/oracle/truffle/api/object/Shape$Allocator;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "BasicLayout.java"
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