public final class com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode extends com.oracle.truffle.js.nodes.access.PropertySetNode$LinkedPropertySetNode
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode
  super_class: com.oracle.truffle.js.nodes.access.PropertySetNode$LinkedPropertySetNode
{
  private com.oracle.truffle.js.nodes.interop.ExportValueNode export;
    descriptor: Lcom/oracle/truffle/js/nodes/interop/ExportValueNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private boolean optimistic;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$CompilationFinal()

  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.api.interop.InteropLibrary interop;
    descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.api.interop.InteropLibrary setterInterop;
    descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
    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 1058
            ldc Lcom/oracle/truffle/js/nodes/access/PropertySetNode;
            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.access.PropertySetNode$ForeignPropertySetNode.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 1067
            aload 0 /* this */
            new com.oracle.truffle.js.nodes.access.PropertyCacheNode$ForeignLanguageCheckNode
            dup
            invokespecial com.oracle.truffle.js.nodes.access.PropertyCacheNode$ForeignLanguageCheckNode.<init>:()V
            invokespecial com.oracle.truffle.js.nodes.access.PropertySetNode$LinkedPropertySetNode.<init>:(Lcom/oracle/truffle/js/nodes/access/PropertyCacheNode$ReceiverCheckNode;)V
         1: .line 1061
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.optimistic:Z
         2: .line 1068
            aload 0 /* this */
            aload 1 /* context */
            putfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
         3: .line 1069
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.interop.ExportValueNode.create:()Lcom/oracle/truffle/js/nodes/interop/ExportValueNode;
            putfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.export:Lcom/oracle/truffle/js/nodes/interop/ExportValueNode;
         4: .line 1070
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            iconst_5
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.createDispatched:(I)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            putfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
         5: .line 1071
            return
        end local 1 // com.oracle.truffle.js.runtime.JSContext context
        end local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lcom/oracle/truffle/js/nodes/access/PropertySetNode$ForeignPropertySetNode;
            0    6     1  context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
         Name  Flags
      context  

  private java.lang.Object nullCheck(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
        start local 1 // java.lang.Object truffleObject
        start local 2 // java.lang.Object key
         0: .line 1074
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 1 /* truffleObject */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isNull:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 1075
            aload 2 /* key */
            aload 1 /* truffleObject */
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokestatic com.oracle.truffle.js.runtime.Errors.createTypeErrorCannotSetProperty:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
         2: .line 1077
      StackMap locals:
      StackMap stack:
            aload 1 /* truffleObject */
            areturn
        end local 2 // java.lang.Object key
        end local 1 // java.lang.Object truffleObject
        end local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lcom/oracle/truffle/js/nodes/access/PropertySetNode$ForeignPropertySetNode;
            0    3     1  truffleObject  Ljava/lang/Object;
            0    3     2            key  Ljava/lang/Object;
    MethodParameters:
               Name  Flags
      truffleObject  
      key            

  protected boolean setValueInt(java.lang.Object, int, java.lang.Object, com.oracle.truffle.js.nodes.access.PropertySetNode, boolean);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertySetNode;Z)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=8, args_size=6
        start local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
        start local 1 // java.lang.Object thisObj
        start local 2 // int value
        start local 3 // java.lang.Object receiver
        start local 4 // com.oracle.truffle.js.nodes.access.PropertySetNode root
        start local 5 // boolean guard
         0: .line 1082
            aload 4 /* root */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode.getKey:()Ljava/lang/Object;
            astore 6 /* key */
        start local 6 // java.lang.Object key
         1: .line 1083
            aload 0 /* this */
            aload 1 /* thisObj */
            aload 6 /* key */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.nullCheck:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* truffleObject */
        start local 7 // java.lang.Object truffleObject
         2: .line 1084
            aload 6 /* key */
            instanceof java.lang.String
            ifne 4
         3: .line 1085
            iconst_0
            ireturn
         4: .line 1087
      StackMap locals: java.lang.Object java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 7 /* truffleObject */
            iload 2 /* value */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 4 /* root */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.performWriteMember:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertySetNode;)Z
            ireturn
        end local 7 // java.lang.Object truffleObject
        end local 6 // java.lang.Object key
        end local 5 // boolean guard
        end local 4 // com.oracle.truffle.js.nodes.access.PropertySetNode root
        end local 3 // java.lang.Object receiver
        end local 2 // int value
        end local 1 // java.lang.Object thisObj
        end local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lcom/oracle/truffle/js/nodes/access/PropertySetNode$ForeignPropertySetNode;
            0    5     1        thisObj  Ljava/lang/Object;
            0    5     2          value  I
            0    5     3       receiver  Ljava/lang/Object;
            0    5     4           root  Lcom/oracle/truffle/js/nodes/access/PropertySetNode;
            0    5     5          guard  Z
            1    5     6            key  Ljava/lang/Object;
            2    5     7  truffleObject  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      thisObj   
      value     
      receiver  
      root      
      guard     

  protected boolean setValueDouble(java.lang.Object, double, java.lang.Object, com.oracle.truffle.js.nodes.access.PropertySetNode, boolean);
    descriptor: (Ljava/lang/Object;DLjava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertySetNode;Z)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=9, args_size=6
        start local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
        start local 1 // java.lang.Object thisObj
        start local 2 // double value
        start local 4 // java.lang.Object receiver
        start local 5 // com.oracle.truffle.js.nodes.access.PropertySetNode root
        start local 6 // boolean guard
         0: .line 1092
            aload 5 /* root */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode.getKey:()Ljava/lang/Object;
            astore 7 /* key */
        start local 7 // java.lang.Object key
         1: .line 1093
            aload 0 /* this */
            aload 1 /* thisObj */
            aload 7 /* key */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.nullCheck:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 8 /* truffleObject */
        start local 8 // java.lang.Object truffleObject
         2: .line 1094
            aload 7 /* key */
            instanceof java.lang.String
            ifne 4
         3: .line 1095
            iconst_0
            ireturn
         4: .line 1097
      StackMap locals: java.lang.Object java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 8 /* truffleObject */
            dload 2 /* value */
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            aload 5 /* root */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.performWriteMember:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertySetNode;)Z
            ireturn
        end local 8 // java.lang.Object truffleObject
        end local 7 // java.lang.Object key
        end local 6 // boolean guard
        end local 5 // com.oracle.truffle.js.nodes.access.PropertySetNode root
        end local 4 // java.lang.Object receiver
        end local 2 // double value
        end local 1 // java.lang.Object thisObj
        end local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lcom/oracle/truffle/js/nodes/access/PropertySetNode$ForeignPropertySetNode;
            0    5     1        thisObj  Ljava/lang/Object;
            0    5     2          value  D
            0    5     4       receiver  Ljava/lang/Object;
            0    5     5           root  Lcom/oracle/truffle/js/nodes/access/PropertySetNode;
            0    5     6          guard  Z
            1    5     7            key  Ljava/lang/Object;
            2    5     8  truffleObject  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      thisObj   
      value     
      receiver  
      root      
      guard     

  protected boolean setValue(java.lang.Object, java.lang.Object, java.lang.Object, com.oracle.truffle.js.nodes.access.PropertySetNode, boolean);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertySetNode;Z)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=9, args_size=6
        start local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
        start local 1 // java.lang.Object thisObj
        start local 2 // java.lang.Object value
        start local 3 // java.lang.Object receiver
        start local 4 // com.oracle.truffle.js.nodes.access.PropertySetNode root
        start local 5 // boolean guard
         0: .line 1102
            aload 4 /* root */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode.getKey:()Ljava/lang/Object;
            astore 6 /* key */
        start local 6 // java.lang.Object key
         1: .line 1103
            aload 0 /* this */
            aload 1 /* thisObj */
            aload 6 /* key */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.nullCheck:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* truffleObject */
        start local 7 // java.lang.Object truffleObject
         2: .line 1104
            aload 6 /* key */
            instanceof java.lang.String
            ifne 4
         3: .line 1105
            iconst_0
            ireturn
         4: .line 1107
      StackMap locals: java.lang.Object java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.export:Lcom/oracle/truffle/js/nodes/interop/ExportValueNode;
            aload 2 /* value */
            invokevirtual com.oracle.truffle.js.nodes.interop.ExportValueNode.execute:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 8 /* exportedValue */
        start local 8 // java.lang.Object exportedValue
         5: .line 1108
            aload 0 /* this */
            aload 7 /* truffleObject */
            aload 8 /* exportedValue */
            aload 4 /* root */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.performWriteMember:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertySetNode;)Z
            ireturn
        end local 8 // java.lang.Object exportedValue
        end local 7 // java.lang.Object truffleObject
        end local 6 // java.lang.Object key
        end local 5 // boolean guard
        end local 4 // com.oracle.truffle.js.nodes.access.PropertySetNode root
        end local 3 // java.lang.Object receiver
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object thisObj
        end local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lcom/oracle/truffle/js/nodes/access/PropertySetNode$ForeignPropertySetNode;
            0    6     1        thisObj  Ljava/lang/Object;
            0    6     2          value  Ljava/lang/Object;
            0    6     3       receiver  Ljava/lang/Object;
            0    6     4           root  Lcom/oracle/truffle/js/nodes/access/PropertySetNode;
            0    6     5          guard  Z
            1    6     6            key  Ljava/lang/Object;
            2    6     7  truffleObject  Ljava/lang/Object;
            5    6     8  exportedValue  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      thisObj   
      value     
      receiver  
      root      
      guard     

  private boolean performWriteMember(java.lang.Object, java.lang.Object, com.oracle.truffle.js.nodes.access.PropertySetNode);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertySetNode;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
        start local 1 // java.lang.Object truffleObject
        start local 2 // java.lang.Object value
        start local 3 // com.oracle.truffle.js.nodes.access.PropertySetNode root
         0: .line 1112
            aload 3 /* root */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* stringKey */
        start local 4 // java.lang.String stringKey
         1: .line 1113
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.isOptionNashornCompatibilityMode:()Z
            ifeq 4
         2: .line 1114
            aload 0 /* this */
            aload 1 /* truffleObject */
            aload 2 /* value */
            aload 3 /* root */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.tryInvokeSetter:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertySetNode;)Z
            ifeq 4
         3: .line 1115
            iconst_1
            ireturn
         4: .line 1118
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.optimistic:Z
            ifeq 12
         5: .line 1120
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 1 /* truffleObject */
            aload 4 /* stringKey */
            aload 2 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.writeMember:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
         6: .line 1121
            goto 17
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.UnknownIdentifierException
         7: pop
         8: .line 1122
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         9: .line 1123
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.optimistic:Z
            goto 17
        10: .line 1124
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.InteropException
            astore 5 /* e */
        start local 5 // com.oracle.truffle.api.interop.InteropException e
        11: .line 1125
            aload 1 /* truffleObject */
            aload 5 /* e */
            ldc "writeMember"
            aload 4 /* stringKey */
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.runtime.Errors.createTypeErrorInteropException:(Ljava/lang/Object;Lcom/oracle/truffle/api/interop/InteropException;Ljava/lang/String;Ljava/lang/Object;Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
        end local 5 // com.oracle.truffle.api.interop.InteropException e
        12: .line 1128
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 1 /* truffleObject */
            aload 4 /* stringKey */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberWritable:(Ljava/lang/Object;Ljava/lang/String;)Z
            ifeq 17
        13: .line 1130
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 1 /* truffleObject */
            aload 4 /* stringKey */
            aload 2 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.writeMember:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
        14: .line 1131
            goto 17
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.InteropException
        15: astore 5 /* e */
        start local 5 // com.oracle.truffle.api.interop.InteropException e
        16: .line 1132
            aload 1 /* truffleObject */
            aload 5 /* e */
            ldc "writeMember"
            aload 4 /* stringKey */
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.runtime.Errors.createTypeErrorInteropException:(Ljava/lang/Object;Lcom/oracle/truffle/api/interop/InteropException;Ljava/lang/String;Ljava/lang/Object;Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
        end local 5 // com.oracle.truffle.api.interop.InteropException e
        17: .line 1136
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 4 // java.lang.String stringKey
        end local 3 // com.oracle.truffle.js.nodes.access.PropertySetNode root
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object truffleObject
        end local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0           this  Lcom/oracle/truffle/js/nodes/access/PropertySetNode$ForeignPropertySetNode;
            0   18     1  truffleObject  Ljava/lang/Object;
            0   18     2          value  Ljava/lang/Object;
            0   18     3           root  Lcom/oracle/truffle/js/nodes/access/PropertySetNode;
            1   18     4      stringKey  Ljava/lang/String;
           11   12     5              e  Lcom/oracle/truffle/api/interop/InteropException;
           16   17     5              e  Lcom/oracle/truffle/api/interop/InteropException;
      Exception table:
        from    to  target  type
           5     6       7  Class com.oracle.truffle.api.interop.UnknownIdentifierException
           5     6      10  Class com.oracle.truffle.api.interop.UnsupportedTypeException
           5     6      10  Class com.oracle.truffle.api.interop.UnsupportedMessageException
          13    14      15  Class com.oracle.truffle.api.interop.UnknownIdentifierException
          13    14      15  Class com.oracle.truffle.api.interop.UnsupportedTypeException
          13    14      15  Class com.oracle.truffle.api.interop.UnsupportedMessageException
    MethodParameters:
               Name  Flags
      truffleObject  
      value          
      root           

  private boolean tryInvokeSetter(java.lang.Object, java.lang.Object, com.oracle.truffle.js.nodes.access.PropertySetNode);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertySetNode;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=4
        start local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
        start local 1 // java.lang.Object thisObj
        start local 2 // java.lang.Object value
        start local 3 // com.oracle.truffle.js.nodes.access.PropertySetNode root
         0: .line 1141
            getstatic com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.isOptionNashornCompatibilityMode:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 1142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            astore 4 /* env */
        start local 4 // com.oracle.truffle.api.TruffleLanguage$Env env
         2: .line 1143
            aload 4 /* env */
            aload 1 /* thisObj */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.isHostObject:(Ljava/lang/Object;)Z
            ifeq 14
         3: .line 1144
            aload 3 /* root */
            ldc "set"
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode.getAccessorKey:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* setterKey */
        start local 5 // java.lang.String setterKey
         4: .line 1145
            aload 5 /* setterKey */
            ifnonnull 6
         5: .line 1146
            iconst_0
            ireturn
         6: .line 1148
      StackMap locals: com.oracle.truffle.api.TruffleLanguage$Env java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.setterInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
            ifnonnull 9
         7: .line 1149
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         8: .line 1150
            aload 0 /* this */
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            iconst_5
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.createDispatched:(I)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            invokevirtual com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            putfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.setterInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
         9: .line 1152
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.setterInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 1 /* thisObj */
            aload 5 /* setterKey */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberInvocable:(Ljava/lang/Object;Ljava/lang/String;)Z
            ifne 11
        10: .line 1153
            iconst_0
            ireturn
        11: .line 1156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode.setterInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 1 /* thisObj */
            aload 5 /* setterKey */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* value */
            aastore
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.invokeMember:(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 1157
            iconst_1
            ireturn
        13: .line 1158
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.InteropException
            pop
        end local 5 // java.lang.String setterKey
        14: .line 1162
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // com.oracle.truffle.api.TruffleLanguage$Env env
        end local 3 // com.oracle.truffle.js.nodes.access.PropertySetNode root
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object thisObj
        end local 0 // com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0       this  Lcom/oracle/truffle/js/nodes/access/PropertySetNode$ForeignPropertySetNode;
            0   15     1    thisObj  Ljava/lang/Object;
            0   15     2      value  Ljava/lang/Object;
            0   15     3       root  Lcom/oracle/truffle/js/nodes/access/PropertySetNode;
            2   15     4        env  Lcom/oracle/truffle/api/TruffleLanguage$Env;
            4   14     5  setterKey  Ljava/lang/String;
      Exception table:
        from    to  target  type
          11    12      13  Class com.oracle.truffle.api.interop.UnknownIdentifierException
          11    12      13  Class com.oracle.truffle.api.interop.UnsupportedMessageException
          11    12      13  Class com.oracle.truffle.api.interop.UnsupportedTypeException
          11    12      13  Class com.oracle.truffle.api.interop.ArityException
    MethodParameters:
         Name  Flags
      thisObj  
      value    
      root     
}
SourceFile: "PropertySetNode.java"
NestHost: com.oracle.truffle.js.nodes.access.PropertySetNode
InnerClasses:
  public abstract CompilationFinal = com.oracle.truffle.api.CompilerDirectives$CompilationFinal of com.oracle.truffle.api.CompilerDirectives
  public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
  protected final ForeignLanguageCheckNode = com.oracle.truffle.js.nodes.access.PropertyCacheNode$ForeignLanguageCheckNode of com.oracle.truffle.js.nodes.access.PropertyCacheNode
  protected abstract ReceiverCheckNode = com.oracle.truffle.js.nodes.access.PropertyCacheNode$ReceiverCheckNode of com.oracle.truffle.js.nodes.access.PropertyCacheNode
  public final ForeignPropertySetNode = com.oracle.truffle.js.nodes.access.PropertySetNode$ForeignPropertySetNode of com.oracle.truffle.js.nodes.access.PropertySetNode
  public abstract LinkedPropertySetNode = com.oracle.truffle.js.nodes.access.PropertySetNode$LinkedPropertySetNode of com.oracle.truffle.js.nodes.access.PropertySetNode