public abstract class 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.api.object.Shape
  super_class: java.lang.Object
{
  static final int OBJECT_FLAGS_MASK;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 255

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

  static final int OBJECT_SHARED;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 65536

  static final int OBJECT_PROPERTY_ASSUMPTIONS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 131072

  public static com.oracle.truffle.api.object.Shape$Builder newBuilder();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape$Builder;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 95
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 96
            new com.oracle.truffle.api.object.Shape$Builder
            dup
            invokespecial com.oracle.truffle.api.object.Shape$Builder.<init>:()V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.oracle.truffle.api.object.Shape$DerivedBuilder newBuilder(com.oracle.truffle.api.object.Shape);
    descriptor: (Lcom/oracle/truffle/api/object/Shape;)Lcom/oracle/truffle/api/object/Shape$DerivedBuilder;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.object.Shape baseShape
         0: .line 416
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 417
            new com.oracle.truffle.api.object.Shape$DerivedBuilder
            dup
            aload 0 /* baseShape */
            invokespecial com.oracle.truffle.api.object.Shape$DerivedBuilder.<init>:(Lcom/oracle/truffle/api/object/Shape;)V
            areturn
        end local 0 // com.oracle.truffle.api.object.Shape baseShape
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0  baseShape  Lcom/oracle/truffle/api/object/Shape;
    MethodParameters:
           Name  Flags
      baseShape  

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.object.Shape this
         0: .line 527
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 528
            return
        end local 0 // com.oracle.truffle.api.object.Shape this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/object/Shape;

  public abstract com.oracle.truffle.api.object.Property getProperty(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      key   

  public abstract 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: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      property  

  public abstract 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: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      key    
      value  
      flags  

  public abstract 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: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                 Name  Flags
      key              
      value            
      flags            
      locationFactory  

  public abstract java.lang.Iterable<com.oracle.truffle.api.object.Property> getProperties();
    descriptor: ()Ljava/lang/Iterable;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Ljava/lang/Iterable<Lcom/oracle/truffle/api/object/Property;>;

  public abstract 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: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Lcom/oracle/truffle/api/object/Shape$Pred<Lcom/oracle/truffle/api/object/Property;>;)Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
        Name  Flags
      filter  

  public abstract java.util.List<com.oracle.truffle.api.object.Property> getPropertyList();
    descriptor: ()Ljava/util/List;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;

  public abstract java.util.List<com.oracle.truffle.api.object.Property> getPropertyListInternal(boolean);
    descriptor: (Z)Ljava/util/List;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Z)Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
    MethodParameters:
           Name  Flags
      ascending  

  public abstract 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: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Lcom/oracle/truffle/api/object/Shape$Pred<Lcom/oracle/truffle/api/object/Property;>;)Ljava/util/List<Ljava/lang/Object;>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
        Name  Flags
      filter  

  public abstract java.util.List<java.lang.Object> getKeyList();
    descriptor: ()Ljava/util/List;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Ljava/util/List<Ljava/lang/Object;>;

  public abstract java.lang.Iterable<java.lang.Object> getKeys();
    descriptor: ()Ljava/lang/Iterable;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Ljava/lang/Iterable<Ljava/lang/Object;>;

  public abstract com.oracle.truffle.api.Assumption getValidAssumption();
    descriptor: ()Lcom/oracle/truffle/api/Assumption;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean isValid();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract com.oracle.truffle.api.Assumption getLeafAssumption();
    descriptor: ()Lcom/oracle/truffle/api/Assumption;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean isLeaf();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract com.oracle.truffle.api.object.Shape getParent();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public abstract boolean hasProperty(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      key   

  public abstract 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: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
          Name  Flags
      property  

  public abstract 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: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
             Name  Flags
      oldProperty  
      newProperty  

  public abstract com.oracle.truffle.api.object.Property getLastProperty();
    descriptor: ()Lcom/oracle/truffle/api/object/Property;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract int getId();
    descriptor: ()I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public int getFlags();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.object.Shape this
         0: .line 728
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 729
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 0 // com.oracle.truffle.api.object.Shape this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/object/Shape;

  protected com.oracle.truffle.api.object.Shape setFlags(int);
    descriptor: (I)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.object.Shape this
        start local 1 // int newFlags
         0: .line 741
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 742
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 1 // int newFlags
        end local 0 // com.oracle.truffle.api.object.Shape this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/oracle/truffle/api/object/Shape;
            0    2     1  newFlags  I
    MethodParameters:
          Name  Flags
      newFlags  

  public abstract 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: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
             Name  Flags
      oldProperty  

  public abstract com.oracle.truffle.api.object.Shape$Allocator allocator();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape$Allocator;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract int getPropertyCount();
    descriptor: ()I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract com.oracle.truffle.api.object.ObjectType getObjectType();
    descriptor: ()Lcom/oracle/truffle/api/object/ObjectType;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  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.api.object.Shape this
         0: .line 784
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 785
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 0 // com.oracle.truffle.api.object.Shape this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/object/Shape;

  protected com.oracle.truffle.api.object.Shape setDynamicType(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.object.Shape this
        start local 1 // java.lang.Object objectType
         0: .line 798
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 799
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 1 // java.lang.Object objectType
        end local 0 // com.oracle.truffle.api.object.Shape this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/oracle/truffle/api/object/Shape;
            0    2     1  objectType  Ljava/lang/Object;
    MethodParameters:
            Name  Flags
      objectType  

  public abstract com.oracle.truffle.api.object.Shape getRoot();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean check(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      subject  

  public abstract com.oracle.truffle.api.object.Layout getLayout();
    descriptor: ()Lcom/oracle/truffle/api/object/Layout;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract java.lang.Object getSharedData();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean hasTransitionWithKey(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      key   

  public abstract com.oracle.truffle.api.object.Shape createSeparateShape(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
            Name  Flags
      sharedData  

  public abstract 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: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      newOps  

  public abstract com.oracle.truffle.api.object.Shape reservePrimitiveExtensionArray();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public abstract com.oracle.truffle.api.object.DynamicObject newInstance();
    descriptor: ()Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract com.oracle.truffle.api.object.DynamicObjectFactory createFactory();
    descriptor: ()Lcom/oracle/truffle/api/object/DynamicObjectFactory;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract java.lang.Object getMutex();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean isRelated(com.oracle.truffle.api.object.Shape);
    descriptor: (Lcom/oracle/truffle/api/object/Shape;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
       Name  Flags
      other  

  public abstract 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: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      other  

  public boolean isShared();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.object.Shape this
         0: .line 924
            iconst_0
            ireturn
        end local 0 // com.oracle.truffle.api.object.Shape this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/object/Shape;

  public com.oracle.truffle.api.object.Shape makeSharedShape();
    descriptor: ()Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.object.Shape this
         0: .line 938
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 939
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 0 // com.oracle.truffle.api.object.Shape this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/object/Shape;

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

  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=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.object.Shape this
        start local 1 // java.lang.Object key
         0: .line 968
            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.api.object.Shape this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/object/Shape;
            0    1     1   key  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      key   

  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=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.object.Shape this
        start local 1 // java.util.function.Predicate predicate
         0: .line 980
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 981
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 1 // java.util.function.Predicate predicate
        end local 0 // com.oracle.truffle.api.object.Shape this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/oracle/truffle/api/object/Shape;
            0    2     1  predicate  Ljava/util/function/Predicate<Lcom/oracle/truffle/api/object/Property;>;
    Signature: (Ljava/util/function/Predicate<Lcom/oracle/truffle/api/object/Property;>;)Z
    MethodParameters:
           Name  Flags
      predicate  
}
SourceFile: "Shape.java"
NestMembers:
  com.oracle.truffle.api.object.Shape$AbstractBuilder  com.oracle.truffle.api.object.Shape$Allocator  com.oracle.truffle.api.object.Shape$Builder  com.oracle.truffle.api.object.Shape$DerivedBuilder  com.oracle.truffle.api.object.Shape$Pred
InnerClasses:
  abstract AbstractBuilder = com.oracle.truffle.api.object.Shape$AbstractBuilder of com.oracle.truffle.api.object.Shape
  public abstract Allocator = com.oracle.truffle.api.object.Shape$Allocator of com.oracle.truffle.api.object.Shape
  public final Builder = com.oracle.truffle.api.object.Shape$Builder of com.oracle.truffle.api.object.Shape
  public final DerivedBuilder = com.oracle.truffle.api.object.Shape$DerivedBuilder of com.oracle.truffle.api.object.Shape
  public abstract Pred = com.oracle.truffle.api.object.Shape$Pred of com.oracle.truffle.api.object.Shape