public class com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode extends com.oracle.truffle.js.nodes.JavaScriptBaseNode
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode
  super_class: com.oracle.truffle.js.nodes.JavaScriptBaseNode
{
  private final com.oracle.truffle.js.runtime.JSContext context;
    descriptor: Lcom/oracle/truffle/js/runtime/JSContext;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private com.oracle.truffle.js.nodes.unary.IsCallableNode isCallableFulfillNode;
    descriptor: Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.js.nodes.unary.IsCallableNode isCallableRejectNode;
    descriptor: Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

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

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

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

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

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

  private com.oracle.truffle.js.nodes.promise.PromiseReactionJobNode promiseReactionJobNode;
    descriptor: Lcom/oracle/truffle/js/nodes/promise/PromiseReactionJobNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private final com.oracle.truffle.api.profiles.ConditionProfile pendingProf;
    descriptor: Lcom/oracle/truffle/api/profiles/ConditionProfile;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.api.profiles.ConditionProfile fulfilledProf;
    descriptor: Lcom/oracle/truffle/api/profiles/ConditionProfile;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.api.profiles.ConditionProfile unhandledProf;
    descriptor: Lcom/oracle/truffle/api/profiles/ConditionProfile;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.api.profiles.BranchProfile growProfile;
    descriptor: Lcom/oracle/truffle/api/profiles/BranchProfile;
    flags: (0x0012) ACC_PRIVATE, 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=1, locals=0, args_size=0
         0: .line 60
            ldc Lcom/oracle/truffle/js/nodes/promise/PerformPromiseThenNode;
            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.nodes.promise.PerformPromiseThenNode.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 75
            aload 0 /* this */
            invokespecial com.oracle.truffle.js.nodes.JavaScriptBaseNode.<init>:()V
         1: .line 62
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.unary.IsCallableNode.create:()Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.isCallableFulfillNode:Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
         2: .line 63
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.unary.IsCallableNode.create:()Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.isCallableRejectNode:Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
         3: .line 70
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.profiles.ConditionProfile.createBinaryProfile:()Lcom/oracle/truffle/api/profiles/ConditionProfile;
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.pendingProf:Lcom/oracle/truffle/api/profiles/ConditionProfile;
         4: .line 71
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.profiles.ConditionProfile.createBinaryProfile:()Lcom/oracle/truffle/api/profiles/ConditionProfile;
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.fulfilledProf:Lcom/oracle/truffle/api/profiles/ConditionProfile;
         5: .line 72
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.profiles.ConditionProfile.createBinaryProfile:()Lcom/oracle/truffle/api/profiles/ConditionProfile;
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.unhandledProf:Lcom/oracle/truffle/api/profiles/ConditionProfile;
         6: .line 73
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.profiles.BranchProfile.create:()Lcom/oracle/truffle/api/profiles/BranchProfile;
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.growProfile:Lcom/oracle/truffle/api/profiles/BranchProfile;
         7: .line 76
            aload 0 /* this */
            aload 1 /* context */
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
         8: .line 77
            aload 0 /* this */
            getstatic com.oracle.truffle.js.runtime.builtins.JSPromise.PROMISE_FULFILL_REACTIONS:Lcom/oracle/truffle/api/object/HiddenKey;
            aload 1 /* context */
            invokestatic com.oracle.truffle.js.nodes.access.PropertyGetNode.createGetHidden:(Lcom/oracle/truffle/api/object/HiddenKey;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseFulfillReactionsNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
         9: .line 78
            aload 0 /* this */
            getstatic com.oracle.truffle.js.runtime.builtins.JSPromise.PROMISE_REJECT_REACTIONS:Lcom/oracle/truffle/api/object/HiddenKey;
            aload 1 /* context */
            invokestatic com.oracle.truffle.js.nodes.access.PropertyGetNode.createGetHidden:(Lcom/oracle/truffle/api/object/HiddenKey;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseRejectReactionsNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
        10: .line 79
            aload 0 /* this */
            getstatic com.oracle.truffle.js.runtime.builtins.JSPromise.PROMISE_IS_HANDLED:Lcom/oracle/truffle/api/object/HiddenKey;
            aload 1 /* context */
            invokestatic com.oracle.truffle.js.nodes.access.PropertySetNode.createSetHidden:(Lcom/oracle/truffle/api/object/HiddenKey;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/PropertySetNode;
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.setPromiseIsHandledNode:Lcom/oracle/truffle/js/nodes/access/PropertySetNode;
        11: .line 80
            return
        end local 1 // com.oracle.truffle.js.runtime.JSContext context
        end local 0 // com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lcom/oracle/truffle/js/nodes/promise/PerformPromiseThenNode;
            0   12     1  context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
         Name  Flags
      context  

  public static com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode create(com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/promise/PerformPromiseThenNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 83
            new com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode
            dup
            aload 0 /* context */
            invokespecial com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;)V
            areturn
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
         Name  Flags
      context  

  public com.oracle.truffle.api.object.DynamicObject execute(com.oracle.truffle.api.object.DynamicObject, java.lang.Object, java.lang.Object, com.oracle.truffle.js.runtime.objects.PromiseCapabilityRecord);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/js/runtime/objects/PromiseCapabilityRecord;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=12, args_size=5
        start local 0 // com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject promise
        start local 2 // java.lang.Object onFulfilled
        start local 3 // java.lang.Object onRejected
        start local 4 // com.oracle.truffle.js.runtime.objects.PromiseCapabilityRecord resultCapability
         0: .line 88
            getstatic com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.$assertionsDisabled:Z
            ifne 1
            aload 1 /* promise */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSPromise.isJSPromise:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 89
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.isCallableFulfillNode:Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
            aload 2 /* onFulfilled */
            invokevirtual com.oracle.truffle.js.nodes.unary.IsCallableNode.executeBoolean:(Ljava/lang/Object;)Z
            ifeq 2
            aload 2 /* onFulfilled */
            goto 3
      StackMap locals:
      StackMap stack:
         2: getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
      StackMap locals:
      StackMap stack: java.lang.Object
         3: astore 5 /* onFulfilledHandler */
        start local 5 // java.lang.Object onFulfilledHandler
         4: .line 90
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.isCallableRejectNode:Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
            aload 3 /* onRejected */
            invokevirtual com.oracle.truffle.js.nodes.unary.IsCallableNode.executeBoolean:(Ljava/lang/Object;)Z
            ifeq 5
            aload 3 /* onRejected */
            goto 6
      StackMap locals: java.lang.Object
      StackMap stack:
         5: getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
      StackMap locals:
      StackMap stack: java.lang.Object
         6: astore 6 /* onRejectedHandler */
        start local 6 // java.lang.Object onRejectedHandler
         7: .line 91
            getstatic com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.$assertionsDisabled:Z
            ifne 9
            aload 4 /* resultCapability */
            ifnonnull 9
            aload 5 /* onFulfilledHandler */
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpeq 8
            aload 6 /* onRejectedHandler */
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 9
      StackMap locals: java.lang.Object
      StackMap stack:
         8: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         9: .line 92
      StackMap locals:
      StackMap stack:
            aload 4 /* resultCapability */
            aload 5 /* onFulfilledHandler */
            iconst_1
            invokestatic com.oracle.truffle.js.runtime.objects.PromiseReactionRecord.create:(Lcom/oracle/truffle/js/runtime/objects/PromiseCapabilityRecord;Ljava/lang/Object;Z)Lcom/oracle/truffle/js/runtime/objects/PromiseReactionRecord;
            astore 7 /* fulfillReaction */
        start local 7 // com.oracle.truffle.js.runtime.objects.PromiseReactionRecord fulfillReaction
        10: .line 93
            aload 4 /* resultCapability */
            aload 6 /* onRejectedHandler */
            iconst_0
            invokestatic com.oracle.truffle.js.runtime.objects.PromiseReactionRecord.create:(Lcom/oracle/truffle/js/runtime/objects/PromiseCapabilityRecord;Ljava/lang/Object;Z)Lcom/oracle/truffle/js/runtime/objects/PromiseReactionRecord;
            astore 8 /* rejectReaction */
        start local 8 // com.oracle.truffle.js.runtime.objects.PromiseReactionRecord rejectReaction
        11: .line 95
            aload 1 /* promise */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSPromise.getPromiseState:(Lcom/oracle/truffle/api/object/DynamicObject;)I
            istore 9 /* promiseState */
        start local 9 // int promiseState
        12: .line 96
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.pendingProf:Lcom/oracle/truffle/api/profiles/ConditionProfile;
            iload 9 /* promiseState */
            ifne 13
            iconst_1
            goto 14
      StackMap locals: com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode com.oracle.truffle.api.object.DynamicObject java.lang.Object java.lang.Object com.oracle.truffle.js.runtime.objects.PromiseCapabilityRecord java.lang.Object java.lang.Object com.oracle.truffle.js.runtime.objects.PromiseReactionRecord com.oracle.truffle.js.runtime.objects.PromiseReactionRecord int
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
        13: iconst_0
      StackMap locals: com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode com.oracle.truffle.api.object.DynamicObject java.lang.Object java.lang.Object com.oracle.truffle.js.runtime.objects.PromiseCapabilityRecord java.lang.Object java.lang.Object com.oracle.truffle.js.runtime.objects.PromiseReactionRecord com.oracle.truffle.js.runtime.objects.PromiseReactionRecord int
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
        14: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 18
        15: .line 97
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseFulfillReactionsNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            aload 1 /* promise */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode.getValue:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.js.runtime.util.SimpleArrayList
            aload 7 /* fulfillReaction */
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.growProfile:Lcom/oracle/truffle/api/profiles/BranchProfile;
            invokevirtual com.oracle.truffle.js.runtime.util.SimpleArrayList.add:(Ljava/lang/Object;Lcom/oracle/truffle/api/profiles/BranchProfile;)V
        16: .line 98
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseRejectReactionsNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            aload 1 /* promise */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode.getValue:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.js.runtime.util.SimpleArrayList
            aload 8 /* rejectReaction */
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.growProfile:Lcom/oracle/truffle/api/profiles/BranchProfile;
            invokevirtual com.oracle.truffle.js.runtime.util.SimpleArrayList.add:(Ljava/lang/Object;Lcom/oracle/truffle/api/profiles/BranchProfile;)V
        17: .line 99
            goto 33
      StackMap locals:
      StackMap stack:
        18: aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.fulfilledProf:Lcom/oracle/truffle/api/profiles/ConditionProfile;
            iload 9 /* promiseState */
            iconst_1
            if_icmpne 19
            iconst_1
            goto 20
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
        19: iconst_0
      StackMap locals: com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode com.oracle.truffle.api.object.DynamicObject java.lang.Object java.lang.Object com.oracle.truffle.js.runtime.objects.PromiseCapabilityRecord java.lang.Object java.lang.Object com.oracle.truffle.js.runtime.objects.PromiseReactionRecord com.oracle.truffle.js.runtime.objects.PromiseReactionRecord int
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
        20: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 25
        21: .line 100
            aload 0 /* this */
            aload 1 /* promise */
            invokevirtual com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseResult:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/lang/Object;
            astore 10 /* value */
        start local 10 // java.lang.Object value
        22: .line 101
            aload 0 /* this */
            aload 7 /* fulfillReaction */
            aload 10 /* value */
            invokevirtual com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseReactionJob:(Lcom/oracle/truffle/js/runtime/objects/PromiseReactionRecord;Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            astore 11 /* job */
        start local 11 // com.oracle.truffle.api.object.DynamicObject job
        23: .line 102
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
            aload 11 /* job */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.promiseEnqueueJob:(Lcom/oracle/truffle/js/runtime/JSRealm;Lcom/oracle/truffle/api/object/DynamicObject;)V
        end local 11 // com.oracle.truffle.api.object.DynamicObject job
        end local 10 // java.lang.Object value
        24: .line 103
            goto 33
        25: .line 104
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.$assertionsDisabled:Z
            ifne 26
            iload 9 /* promiseState */
            iconst_2
            if_icmpeq 26
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        26: .line 105
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* promise */
            invokevirtual com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseResult:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/lang/Object;
            astore 10 /* reason */
        start local 10 // java.lang.Object reason
        27: .line 106
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.unhandledProf:Lcom/oracle/truffle/api/profiles/ConditionProfile;
            aload 0 /* this */
            aload 1 /* promise */
            invokevirtual com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseIsHandled:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
            ifeq 28
            iconst_0
            goto 29
      StackMap locals: com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode com.oracle.truffle.api.object.DynamicObject java.lang.Object java.lang.Object com.oracle.truffle.js.runtime.objects.PromiseCapabilityRecord java.lang.Object java.lang.Object com.oracle.truffle.js.runtime.objects.PromiseReactionRecord com.oracle.truffle.js.runtime.objects.PromiseReactionRecord int java.lang.Object
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
        28: iconst_1
      StackMap locals: com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode com.oracle.truffle.api.object.DynamicObject java.lang.Object java.lang.Object com.oracle.truffle.js.runtime.objects.PromiseCapabilityRecord java.lang.Object java.lang.Object com.oracle.truffle.js.runtime.objects.PromiseReactionRecord com.oracle.truffle.js.runtime.objects.PromiseReactionRecord int java.lang.Object
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
        29: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 31
        30: .line 107
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            aload 1 /* promise */
            iconst_1
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.notifyPromiseRejectionTracker:(Lcom/oracle/truffle/api/object/DynamicObject;ILjava/lang/Object;)V
        31: .line 109
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* rejectReaction */
            aload 10 /* reason */
            invokevirtual com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseReactionJob:(Lcom/oracle/truffle/js/runtime/objects/PromiseReactionRecord;Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            astore 11 /* job */
        start local 11 // com.oracle.truffle.api.object.DynamicObject job
        32: .line 110
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
            aload 11 /* job */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.promiseEnqueueJob:(Lcom/oracle/truffle/js/runtime/JSRealm;Lcom/oracle/truffle/api/object/DynamicObject;)V
        end local 11 // com.oracle.truffle.api.object.DynamicObject job
        end local 10 // java.lang.Object reason
        33: .line 112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.setPromiseIsHandledNode:Lcom/oracle/truffle/js/nodes/access/PropertySetNode;
            aload 1 /* promise */
            iconst_1
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode.setValueBoolean:(Ljava/lang/Object;Z)V
        34: .line 113
            aload 4 /* resultCapability */
            ifnonnull 36
        35: .line 114
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            areturn
        36: .line 116
      StackMap locals:
      StackMap stack:
            aload 4 /* resultCapability */
            invokevirtual com.oracle.truffle.js.runtime.objects.PromiseCapabilityRecord.getPromise:()Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 9 // int promiseState
        end local 8 // com.oracle.truffle.js.runtime.objects.PromiseReactionRecord rejectReaction
        end local 7 // com.oracle.truffle.js.runtime.objects.PromiseReactionRecord fulfillReaction
        end local 6 // java.lang.Object onRejectedHandler
        end local 5 // java.lang.Object onFulfilledHandler
        end local 4 // com.oracle.truffle.js.runtime.objects.PromiseCapabilityRecord resultCapability
        end local 3 // java.lang.Object onRejected
        end local 2 // java.lang.Object onFulfilled
        end local 1 // com.oracle.truffle.api.object.DynamicObject promise
        end local 0 // com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   37     0                this  Lcom/oracle/truffle/js/nodes/promise/PerformPromiseThenNode;
            0   37     1             promise  Lcom/oracle/truffle/api/object/DynamicObject;
            0   37     2         onFulfilled  Ljava/lang/Object;
            0   37     3          onRejected  Ljava/lang/Object;
            0   37     4    resultCapability  Lcom/oracle/truffle/js/runtime/objects/PromiseCapabilityRecord;
            4   37     5  onFulfilledHandler  Ljava/lang/Object;
            7   37     6   onRejectedHandler  Ljava/lang/Object;
           10   37     7     fulfillReaction  Lcom/oracle/truffle/js/runtime/objects/PromiseReactionRecord;
           11   37     8      rejectReaction  Lcom/oracle/truffle/js/runtime/objects/PromiseReactionRecord;
           12   37     9        promiseState  I
           22   24    10               value  Ljava/lang/Object;
           23   24    11                 job  Lcom/oracle/truffle/api/object/DynamicObject;
           27   33    10              reason  Ljava/lang/Object;
           32   33    11                 job  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
                  Name  Flags
      promise           
      onFulfilled       
      onRejected        
      resultCapability  

  private com.oracle.truffle.api.object.DynamicObject getPromiseReactionJob(com.oracle.truffle.js.runtime.objects.PromiseReactionRecord, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/js/runtime/objects/PromiseReactionRecord;Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode this
        start local 1 // com.oracle.truffle.js.runtime.objects.PromiseReactionRecord reaction
        start local 2 // java.lang.Object value
         0: .line 120
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.promiseReactionJobNode:Lcom/oracle/truffle/js/nodes/promise/PromiseReactionJobNode;
            ifnonnull 3
         1: .line 121
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 122
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokestatic com.oracle.truffle.js.nodes.promise.PromiseReactionJobNode.create:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/promise/PromiseReactionJobNode;
            invokevirtual com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.nodes.promise.PromiseReactionJobNode
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.promiseReactionJobNode:Lcom/oracle/truffle/js/nodes/promise/PromiseReactionJobNode;
         3: .line 124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.promiseReactionJobNode:Lcom/oracle/truffle/js/nodes/promise/PromiseReactionJobNode;
            aload 1 /* reaction */
            aload 2 /* value */
            invokevirtual com.oracle.truffle.js.nodes.promise.PromiseReactionJobNode.execute:(Ljava/lang/Object;Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 2 // java.lang.Object value
        end local 1 // com.oracle.truffle.js.runtime.objects.PromiseReactionRecord reaction
        end local 0 // com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/oracle/truffle/js/nodes/promise/PerformPromiseThenNode;
            0    4     1  reaction  Lcom/oracle/truffle/js/runtime/objects/PromiseReactionRecord;
            0    4     2     value  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      reaction  
      value     

  private java.lang.Object getPromiseResult(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject promise
         0: .line 128
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseResultNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            ifnonnull 3
         1: .line 129
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 130
            aload 0 /* this */
            aload 0 /* this */
            getstatic com.oracle.truffle.js.runtime.builtins.JSPromise.PROMISE_RESULT:Lcom/oracle/truffle/api/object/HiddenKey;
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokestatic com.oracle.truffle.js.nodes.access.PropertyGetNode.createGetHidden:(Lcom/oracle/truffle/api/object/HiddenKey;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            invokevirtual com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.nodes.access.PropertyGetNode
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseResultNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
         3: .line 132
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseResultNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            aload 1 /* promise */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode.getValue:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // com.oracle.truffle.api.object.DynamicObject promise
        end local 0 // com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/oracle/truffle/js/nodes/promise/PerformPromiseThenNode;
            0    4     1  promise  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
         Name  Flags
      promise  

  private boolean getPromiseIsHandled(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject promise
         0: .line 137
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseIsHandledNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            ifnonnull 3
         1: .line 138
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 139
            aload 0 /* this */
            aload 0 /* this */
            getstatic com.oracle.truffle.js.runtime.builtins.JSPromise.PROMISE_IS_HANDLED:Lcom/oracle/truffle/api/object/HiddenKey;
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokestatic com.oracle.truffle.js.nodes.access.PropertyGetNode.createGetHidden:(Lcom/oracle/truffle/api/object/HiddenKey;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            invokevirtual com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.nodes.access.PropertyGetNode
            putfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseIsHandledNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
         3: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode.getPromiseIsHandledNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            aload 1 /* promise */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode.getValueBoolean:(Ljava/lang/Object;)Z
         4: ireturn
         5: .line 142
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.nodes.UnexpectedResultException
            pop
         6: .line 143
            invokestatic com.oracle.truffle.js.runtime.Errors.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 1 // com.oracle.truffle.api.object.DynamicObject promise
        end local 0 // com.oracle.truffle.js.nodes.promise.PerformPromiseThenNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lcom/oracle/truffle/js/nodes/promise/PerformPromiseThenNode;
            0    7     1  promise  Lcom/oracle/truffle/api/object/DynamicObject;
      Exception table:
        from    to  target  type
           0     4       5  Class com.oracle.truffle.api.nodes.UnexpectedResultException
    MethodParameters:
         Name  Flags
      promise  
}
SourceFile: "PerformPromiseThenNode.java"
InnerClasses:
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node