public abstract class com.oracle.truffle.js.builtins.helper.IsPristineObjectNode extends com.oracle.truffle.api.nodes.Node
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.js.builtins.helper.IsPristineObjectNode
  super_class: com.oracle.truffle.api.nodes.Node
{
  private final com.oracle.truffle.js.runtime.builtins.JSClass jsClass;
    descriptor: Lcom/oracle/truffle/js/runtime/builtins/JSClass;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final java.lang.Object[] propertyKeys;
    descriptor: [Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$CompilationFinal(dimensions = 1)

  private final com.oracle.truffle.api.Assumption[] propertyFinalAssumptions;
    descriptor: [Lcom/oracle/truffle/api/Assumption;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$CompilationFinal(dimensions = 1)

  private com.oracle.truffle.js.nodes.access.GetPrototypeNode getPrototypeNode;
    descriptor: Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  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=1, locals=0, args_size=0
         0: .line 75
            ldc Lcom/oracle/truffle/js/builtins/helper/IsPristineObjectNode;
            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.js.builtins.helper.IsPristineObjectNode.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(com.oracle.truffle.js.runtime.builtins.JSClass, com.oracle.truffle.api.object.Shape, java.lang.Object[]);
    descriptor: (Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/api/object/Shape;[Ljava/lang/Object;)V
    flags: (0x0080) ACC_VARARGS
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
        start local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsClass
        start local 2 // com.oracle.truffle.api.object.Shape initialPrototypeShape
        start local 3 // java.lang.Object[] propertyKeys
         0: .line 83
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.nodes.Node.<init>:()V
         1: .line 81
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.access.GetPrototypeNode.create:()Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;
            putfield com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.getPrototypeNode:Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;
         2: .line 84
            getstatic com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.$assertionsDisabled:Z
            ifne 3
            aload 1 /* jsClass */
            getstatic com.oracle.truffle.js.runtime.builtins.JSProxy.INSTANCE:Lcom/oracle/truffle/js/runtime/builtins/JSProxy;
            if_acmpne 3
            new java.lang.AssertionError
            dup
            ldc "not supported because getting the prototype of proxy objects can have side effects"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         3: .line 85
      StackMap locals: com.oracle.truffle.js.builtins.helper.IsPristineObjectNode com.oracle.truffle.js.runtime.builtins.JSClass com.oracle.truffle.api.object.Shape java.lang.Object[]
      StackMap stack:
            aload 0 /* this */
            aload 1 /* jsClass */
            putfield com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.jsClass:Lcom/oracle/truffle/js/runtime/builtins/JSClass;
         4: .line 86
            aload 0 /* this */
            aload 2 /* initialPrototypeShape */
            putfield com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.initialPrototypeShape:Lcom/oracle/truffle/api/object/Shape;
         5: .line 87
            aload 0 /* this */
            aload 3 /* propertyKeys */
            putfield com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.propertyKeys:[Ljava/lang/Object;
         6: .line 88
            aload 0 /* this */
            aload 3 /* propertyKeys */
            arraylength
            anewarray com.oracle.truffle.api.Assumption
            putfield com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.propertyFinalAssumptions:[Lcom/oracle/truffle/api/Assumption;
         7: .line 89
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         8: goto 11
         9: .line 90
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.propertyFinalAssumptions:[Lcom/oracle/truffle/api/Assumption;
            iload 4 /* i */
            aload 2 /* initialPrototypeShape */
            aload 3 /* propertyKeys */
            iload 4 /* i */
            aaload
            invokevirtual com.oracle.truffle.api.object.Shape.getProperty:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
            invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
            invokevirtual com.oracle.truffle.api.object.Location.getFinalAssumption:()Lcom/oracle/truffle/api/Assumption;
            aastore
        10: .line 89
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 4 /* i */
            aload 3 /* propertyKeys */
            arraylength
            if_icmplt 9
        end local 4 // int i
        12: .line 92
            return
        end local 3 // java.lang.Object[] propertyKeys
        end local 2 // com.oracle.truffle.api.object.Shape initialPrototypeShape
        end local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsClass
        end local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   13     0                   this  Lcom/oracle/truffle/js/builtins/helper/IsPristineObjectNode;
            0   13     1                jsClass  Lcom/oracle/truffle/js/runtime/builtins/JSClass;
            0   13     2  initialPrototypeShape  Lcom/oracle/truffle/api/object/Shape;
            0   13     3           propertyKeys  [Ljava/lang/Object;
            8   12     4                      i  I
    MethodParameters:
                       Name  Flags
      jsClass                
      initialPrototypeShape  
      propertyKeys           

  public static com.oracle.truffle.js.builtins.helper.IsPristineObjectNode create(com.oracle.truffle.js.runtime.builtins.JSClass, com.oracle.truffle.api.object.Shape, java.lang.Object[]);
    descriptor: (Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/api/object/Shape;[Ljava/lang/Object;)Lcom/oracle/truffle/js/builtins/helper/IsPristineObjectNode;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=3, args_size=3
         0: .line 95
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tIsPristineObjectNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
                       Name  Flags
      jsClass                
      initialPrototypeShape  
      propertyKeys           

  public static com.oracle.truffle.js.builtins.helper.IsPristineObjectNode createRegExpExecAndMatch(com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/builtins/helper/IsPristineObjectNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 99
            getstatic com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.$assertionsDisabled:Z
            ifne 1
            aload 0 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getEcmaScriptVersion:()I
            bipush 6
            if_icmpge 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 100
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.runtime.builtins.JSRegExp.INSTANCE:Lcom/oracle/truffle/js/runtime/builtins/JSRegExp;
            aload 0 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getInitialRegExpPrototypeShape:()Lcom/oracle/truffle/api/object/Shape;
            bipush 6
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 101
            getstatic com.oracle.truffle.js.runtime.Symbol.SYMBOL_MATCH:Lcom/oracle/truffle/js/runtime/Symbol;
            aastore
            dup
            iconst_1
         3: .line 102
            getstatic com.oracle.truffle.js.builtins.RegExpPrototypeBuiltins$RegExpPrototype.exec:Lcom/oracle/truffle/js/builtins/RegExpPrototypeBuiltins$RegExpPrototype;
            invokevirtual com.oracle.truffle.js.builtins.RegExpPrototypeBuiltins$RegExpPrototype.getKey:()Ljava/lang/Object;
            aastore
            dup
            iconst_2
         4: .line 103
            ldc "flags"
            aastore
            dup
            iconst_3
         5: .line 104
            ldc "global"
            aastore
            dup
            iconst_4
         6: .line 105
            ldc "unicode"
            aastore
            dup
            iconst_5
         7: .line 106
            ldc "sticky"
            aastore
         8: .line 100
            invokestatic com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.create:(Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/api/object/Shape;[Ljava/lang/Object;)Lcom/oracle/truffle/js/builtins/helper/IsPristineObjectNode;
            areturn
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
         Name  Flags
      context  

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

  boolean doCached(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.object.Shape, boolean);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/Shape;Z)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
        start local 2 // com.oracle.truffle.api.object.Shape cachedShape
        start local 3 // boolean isInstanceAndDoesNotOverwriteProps
         0: .line 115
            iload 3 /* isInstanceAndDoesNotOverwriteProps */
            ifeq 1
            aload 0 /* this */
            aload 1 /* object */
            invokevirtual com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.prototypeShapeUnchanged:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 3 // boolean isInstanceAndDoesNotOverwriteProps
        end local 2 // com.oracle.truffle.api.object.Shape cachedShape
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
      LocalVariableTable:
        Start  End  Slot                                Name  Signature
            0    2     0                                this  Lcom/oracle/truffle/js/builtins/helper/IsPristineObjectNode;
            0    2     1                              object  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     2                         cachedShape  Lcom/oracle/truffle/api/object/Shape;
            0    2     3  isInstanceAndDoesNotOverwriteProps  Z
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"cachedShape.check(object)"}, assumptions = {"getPropertyFinalAssumptions()"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached(value = "object.getShape()")
      2:
        com.oracle.truffle.api.dsl.Cached(value = "isInstanceAndDoesNotOverwriteProps(cachedShape)")
    MethodParameters:
                                    Name  Flags
      object                              
      cachedShape                         
      isInstanceAndDoesNotOverwriteProps  

  boolean doDynamic(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
         0: .line 120
            aload 0 /* this */
            aload 1 /* object */
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            invokevirtual com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.isInstanceAndDoesNotOverwriteProps:(Lcom/oracle/truffle/api/object/Shape;)Z
            ifeq 1
            aload 0 /* this */
            aload 1 /* object */
            invokevirtual com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.prototypeShapeUnchanged:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/oracle/truffle/js/builtins/helper/IsPristineObjectNode;
            0    2     1  object  Lcom/oracle/truffle/api/object/DynamicObject;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(assumptions = {"getPropertyFinalAssumptions()"}, replaces = {"doCached"})
    MethodParameters:
        Name  Flags
      object  

  boolean doAssumptionsInvalid(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Z
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
         0: .line 125
            iconst_0
            ireturn
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/builtins/helper/IsPristineObjectNode;
            0    1     1  object  Lcom/oracle/truffle/api/object/DynamicObject;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
        Name  Flags
      object  

  com.oracle.truffle.api.Assumption[] getPropertyFinalAssumptions();
    descriptor: ()[Lcom/oracle/truffle/api/Assumption;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
         0: .line 129
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.propertyFinalAssumptions:[Lcom/oracle/truffle/api/Assumption;
            areturn
        end local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/builtins/helper/IsPristineObjectNode;

  private boolean prototypeShapeUnchanged(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
         0: .line 133
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.getPrototypeNode:Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;
            aload 1 /* object */
            invokevirtual com.oracle.truffle.js.nodes.access.GetPrototypeNode.executeJSObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.initialPrototypeShape:Lcom/oracle/truffle/api/object/Shape;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/oracle/truffle/js/builtins/helper/IsPristineObjectNode;
            0    2     1  object  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
        Name  Flags
      object  

  boolean isInstanceAndDoesNotOverwriteProps(com.oracle.truffle.api.object.Shape);
    descriptor: (Lcom/oracle/truffle/api/object/Shape;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
        start local 1 // com.oracle.truffle.api.object.Shape objectShape
         0: .line 137
            aload 1 /* objectShape */
            invokevirtual com.oracle.truffle.api.object.Shape.getDynamicType:()Ljava/lang/Object;
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.jsClass:Lcom/oracle/truffle/js/runtime/builtins/JSClass;
            if_acmpeq 2
         1: .line 138
            iconst_0
            ireturn
         2: .line 140
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.helper.IsPristineObjectNode.propertyKeys:[Ljava/lang/Object;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 7
      StackMap locals: com.oracle.truffle.js.builtins.helper.IsPristineObjectNode com.oracle.truffle.api.object.Shape top int int java.lang.Object[]
      StackMap stack:
         3: aload 5
            iload 3
            aaload
            astore 2 /* key */
        start local 2 // java.lang.Object key
         4: .line 141
            aload 1 /* objectShape */
            aload 2 /* key */
            invokevirtual com.oracle.truffle.api.object.Shape.hasProperty:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 142
            iconst_0
            ireturn
        end local 2 // java.lang.Object key
         6: .line 140
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         7: iload 3
            iload 4
            if_icmplt 3
         8: .line 145
            iconst_1
            ireturn
        end local 1 // com.oracle.truffle.api.object.Shape objectShape
        end local 0 // com.oracle.truffle.js.builtins.helper.IsPristineObjectNode this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Lcom/oracle/truffle/js/builtins/helper/IsPristineObjectNode;
            0    9     1  objectShape  Lcom/oracle/truffle/api/object/Shape;
            4    6     2          key  Ljava/lang/Object;
    MethodParameters:
             Name  Flags
      objectShape  
}
SourceFile: "IsPristineObjectNode.java"
InnerClasses:
  public abstract CompilationFinal = com.oracle.truffle.api.CompilerDirectives$CompilationFinal of com.oracle.truffle.api.CompilerDirectives
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
  public final RegExpPrototype = com.oracle.truffle.js.builtins.RegExpPrototypeBuiltins$RegExpPrototype of com.oracle.truffle.js.builtins.RegExpPrototypeBuiltins