public abstract class com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode extends com.oracle.truffle.js.nodes.unary.JSUnaryNode
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode
  super_class: com.oracle.truffle.js.nodes.unary.JSUnaryNode
{
  private final com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type type;
    descriptor: Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected void <init>(com.oracle.truffle.js.nodes.JavaScriptNode, com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type);
    descriptor: (Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // com.oracle.truffle.js.nodes.JavaScriptNode childNode
        start local 2 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type type
         0: .line 116
            aload 0 /* this */
            aload 1 /* childNode */
            invokespecial com.oracle.truffle.js.nodes.unary.JSUnaryNode.<init>:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;)V
         1: .line 117
            aload 0 /* this */
            aload 2 /* type */
            putfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
         2: .line 118
            return
        end local 2 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type type
        end local 1 // com.oracle.truffle.js.nodes.JavaScriptNode childNode
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    3     1  childNode  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            0    3     2       type  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
    MethodParameters:
           Name  Flags
      childNode  
      type       

  public static com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode create(com.oracle.truffle.js.nodes.JavaScriptNode, com.oracle.truffle.js.nodes.access.JSConstantNode$JSConstantStringNode);
    descriptor: (Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/access/JSConstantNode$JSConstantStringNode;)Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.JavaScriptNode childNode
        start local 1 // com.oracle.truffle.js.nodes.access.JSConstantNode$JSConstantStringNode constStringNode
         0: .line 121
            aload 0 /* childNode */
            aload 1 /* constStringNode */
            aconst_null
            invokevirtual com.oracle.truffle.js.nodes.access.JSConstantNode$JSConstantStringNode.execute:(Lcom/oracle/truffle/api/frame/VirtualFrame;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.create:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;Ljava/lang/String;)Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            areturn
        end local 1 // com.oracle.truffle.js.nodes.access.JSConstantNode$JSConstantStringNode constStringNode
        end local 0 // com.oracle.truffle.js.nodes.JavaScriptNode childNode
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0        childNode  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            0    1     1  constStringNode  Lcom/oracle/truffle/js/nodes/access/JSConstantNode$JSConstantStringNode;
    MethodParameters:
                 Name  Flags
      childNode        
      constStringNode  

  public static com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode create(com.oracle.truffle.js.nodes.JavaScriptNode, java.lang.String);
    descriptor: (Lcom/oracle/truffle/js/nodes/JavaScriptNode;Ljava/lang/String;)Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
         0: .line 125
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tJSTypeofIdenticalNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
           Name  Flags
      childNode  
      string     

  private static com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type typeStringToEnum(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.String string
         0: .line 129
            aload 0 /* string */
            dup
            astore 1
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 8
          -1389167889: 1
          -1038130864: 2
          -1034364087: 3
          -1023368385: 4
           -891985903: 5
           -887523944: 6
             64711720: 7
           1380938712: 8
              default: 17
          }
      StackMap locals: java.lang.String
      StackMap stack:
         1: aload 1
            ldc "bigint"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
            goto 17
      StackMap locals:
      StackMap stack:
         2: aload 1
            ldc "undefined"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 14
            goto 17
      StackMap locals:
      StackMap stack:
         3: aload 1
            ldc "number"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 9
            goto 17
      StackMap locals:
      StackMap stack:
         4: aload 1
            ldc "object"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 13
            goto 17
      StackMap locals:
      StackMap stack:
         5: aload 1
            ldc "string"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
            goto 17
      StackMap locals:
      StackMap stack:
         6: aload 1
            ldc "symbol"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 16
            goto 17
      StackMap locals:
      StackMap stack:
         7: aload 1
            ldc "boolean"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
            goto 17
      StackMap locals:
      StackMap stack:
         8: aload 1
            ldc "function"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 15
            goto 17
         9: .line 131
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Number:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            areturn
        10: .line 133
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.BigInt:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            areturn
        11: .line 135
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.String:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            areturn
        12: .line 137
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Boolean:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            areturn
        13: .line 139
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Object:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            areturn
        14: .line 141
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Undefined:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            areturn
        15: .line 143
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Function:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            areturn
        16: .line 145
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Symbol:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            areturn
        17: .line 147
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.False:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            areturn
        end local 0 // java.lang.String string
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   18     0  string  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      string  

  public boolean hasTag(java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // java.lang.Class tag
         0: .line 153
            aload 1 /* tag */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$BinaryOperationTag;
            if_acmpeq 1
            aload 1 /* tag */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$UnaryOperationTag;
            if_acmpeq 1
            aload 1 /* tag */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag;
            if_acmpne 2
         1: .line 154
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         2: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* tag */
            invokespecial com.oracle.truffle.js.nodes.unary.JSUnaryNode.hasTag:(Ljava/lang/Class;)Z
            ireturn
        end local 1 // java.lang.Class tag
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    3     1   tag  Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;
    Signature: (Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;)Z
    MethodParameters:
      Name  Flags
      tag   

  public com.oracle.truffle.api.instrumentation.InstrumentableNode materializeInstrumentableNodes(java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>);
    descriptor: (Ljava/util/Set;)Lcom/oracle/truffle/api/instrumentation/InstrumentableNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // java.util.Set materializedTags
         0: .line 162
            aload 1 /* materializedTags */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$BinaryOperationTag;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 1
            aload 1 /* materializedTags */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$UnaryOperationTag;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 1
            aload 1 /* materializedTags */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 17
         1: .line 163
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.parseMaterializationInfo:()[Ljava/lang/Object;
            astore 2 /* info */
        start local 2 // java.lang.Object[] info
         2: .line 164
            aload 2 /* info */
            ifnonnull 4
         3: .line 165
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            invokevirtual com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.name:()Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
            dup
            iconst_2
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
            astore 2 /* info */
         4: .line 167
      StackMap locals: java.lang.Object[]
      StackMap stack:
            aload 2 /* info */
            iconst_0
            aaload
            invokestatic com.oracle.truffle.js.nodes.access.JSConstantNode.create:(Ljava/lang/Object;)Lcom/oracle/truffle/js/nodes/access/JSConstantNode;
            astore 3 /* lhs */
        start local 3 // com.oracle.truffle.js.nodes.JavaScriptNode lhs
         5: .line 168
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.getOperand:()Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            aload 1 /* materializedTags */
            invokestatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.cloneUninitialized:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;Ljava/util/Set;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            invokestatic com.oracle.truffle.js.nodes.unary.TypeOfNode.create:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/unary/TypeOfNode;
            astore 4 /* rhs */
        start local 4 // com.oracle.truffle.js.nodes.JavaScriptNode rhs
         6: .line 169
            aload 2 /* info */
            iconst_2
            aaload
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 10
         7: .line 170
            aload 3 /* lhs */
            astore 5 /* tmp */
        start local 5 // com.oracle.truffle.js.nodes.JavaScriptNode tmp
         8: .line 171
            aload 4 /* rhs */
            astore 3 /* lhs */
         9: .line 172
            aload 5 /* tmp */
            astore 4 /* rhs */
        end local 5 // com.oracle.truffle.js.nodes.JavaScriptNode tmp
        10: .line 174
      StackMap locals: com.oracle.truffle.js.nodes.JavaScriptNode com.oracle.truffle.js.nodes.JavaScriptNode
      StackMap stack:
            aload 2 /* info */
            iconst_1
            aaload
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 11
            aload 3 /* lhs */
            aload 4 /* rhs */
            invokestatic com.oracle.truffle.js.nodes.binary.JSIdenticalNode.createUnoptimized:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 3 /* lhs */
            aload 4 /* rhs */
            invokestatic com.oracle.truffle.js.nodes.binary.JSEqualNode.createUnoptimized:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
      StackMap locals:
      StackMap stack: com.oracle.truffle.js.nodes.JavaScriptNode
        12: astore 5 /* materialized */
        start local 5 // com.oracle.truffle.js.nodes.JavaScriptNode materialized
        13: .line 175
            aload 0 /* this */
            aload 3 /* lhs */
            invokestatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.transferSourceSectionAddExpressionTag:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)V
        14: .line 176
            aload 0 /* this */
            aload 4 /* rhs */
            invokestatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.transferSourceSectionAddExpressionTag:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)V
        15: .line 177
            aload 0 /* this */
            aload 5 /* materialized */
            invokestatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.transferSourceSectionAndTags:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)V
        16: .line 178
            aload 5 /* materialized */
            areturn
        end local 5 // com.oracle.truffle.js.nodes.JavaScriptNode materialized
        end local 4 // com.oracle.truffle.js.nodes.JavaScriptNode rhs
        end local 3 // com.oracle.truffle.js.nodes.JavaScriptNode lhs
        end local 2 // java.lang.Object[] info
        17: .line 180
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 1 // java.util.Set materializedTags
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   18     0              this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0   18     1  materializedTags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            2   17     2              info  [Ljava/lang/Object;
            5   17     3               lhs  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            6   17     4               rhs  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            8   10     5               tmp  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
           13   17     5      materialized  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    Signature: (Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)Lcom/oracle/truffle/api/instrumentation/InstrumentableNode;
    MethodParameters:
                  Name  Flags
      materializedTags  

  private com.oracle.truffle.js.lang.JavaScriptLanguage getLanguage();
    descriptor: ()Lcom/oracle/truffle/js/lang/JavaScriptLanguage;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
         0: .line 186
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.getRootNode:()Lcom/oracle/truffle/api/nodes/RootNode;
            ldc Lcom/oracle/truffle/js/lang/JavaScriptLanguage;
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getLanguage:(Ljava/lang/Class;)Lcom/oracle/truffle/api/TruffleLanguage;
            checkcast com.oracle.truffle.js.lang.JavaScriptLanguage
            areturn
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;

  private java.lang.Object[] parseMaterializationInfo();
    descriptor: ()[Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
         0: .line 193
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.getLanguage:()Lcom/oracle/truffle/js/lang/JavaScriptLanguage;
            invokevirtual com.oracle.truffle.js.lang.JavaScriptLanguage.getJSContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            astore 4 /* context */
        start local 4 // com.oracle.truffle.js.runtime.JSContext context
         1: .line 195
            aload 4 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getEvaluator:()Lcom/oracle/truffle/js/runtime/Evaluator;
            aload 4 /* context */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
            invokeinterface com.oracle.truffle.js.runtime.Evaluator.parseExpression:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/String;)Lcom/oracle/js/parser/ir/Expression;
            astore 5 /* expression */
        start local 5 // com.oracle.js.parser.ir.Expression expression
         2: .line 196
            aload 5 /* expression */
            instanceof com.oracle.js.parser.ir.BinaryNode
            ifeq 23
         3: .line 197
            aload 5 /* expression */
            checkcast com.oracle.js.parser.ir.BinaryNode
            astore 6 /* binaryNode */
        start local 6 // com.oracle.js.parser.ir.BinaryNode binaryNode
         4: .line 198
            aload 6 /* binaryNode */
            invokevirtual com.oracle.js.parser.ir.BinaryNode.getLhs:()Lcom/oracle/js/parser/ir/Expression;
            astore 7 /* lhs */
        start local 7 // com.oracle.js.parser.ir.Expression lhs
         5: .line 199
            aload 6 /* binaryNode */
            invokevirtual com.oracle.js.parser.ir.BinaryNode.getRhs:()Lcom/oracle/js/parser/ir/Expression;
            astore 8 /* rhs */
        start local 8 // com.oracle.js.parser.ir.Expression rhs
         6: .line 200
            aload 7 /* lhs */
            invokestatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.isTypeOf:(Lcom/oracle/js/parser/ir/Expression;)Z
            ifeq 10
            aload 8 /* rhs */
            instanceof com.oracle.js.parser.ir.LiteralNode
            ifeq 10
         7: .line 201
            iconst_1
            istore 3 /* typeofAsLeftOperand */
        start local 3 // boolean typeofAsLeftOperand
         8: .line 202
            aload 8 /* rhs */
            checkcast com.oracle.js.parser.ir.LiteralNode
            invokevirtual com.oracle.js.parser.ir.LiteralNode.getString:()Ljava/lang/String;
            astore 1 /* literal */
        start local 1 // java.lang.String literal
         9: .line 203
            goto 15
        end local 3 // boolean typeofAsLeftOperand
        end local 1 // java.lang.String literal
      StackMap locals: com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode top top top com.oracle.truffle.js.runtime.JSContext com.oracle.js.parser.ir.Expression com.oracle.js.parser.ir.BinaryNode com.oracle.js.parser.ir.Expression com.oracle.js.parser.ir.Expression
      StackMap stack:
        10: aload 8 /* rhs */
            invokestatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.isTypeOf:(Lcom/oracle/js/parser/ir/Expression;)Z
            ifeq 14
            aload 7 /* lhs */
            instanceof com.oracle.js.parser.ir.LiteralNode
            ifeq 14
        11: .line 204
            iconst_0
            istore 3 /* typeofAsLeftOperand */
        start local 3 // boolean typeofAsLeftOperand
        12: .line 205
            aload 7 /* lhs */
            checkcast com.oracle.js.parser.ir.LiteralNode
            invokevirtual com.oracle.js.parser.ir.LiteralNode.getString:()Ljava/lang/String;
            astore 1 /* literal */
        start local 1 // java.lang.String literal
        13: .line 206
            goto 15
        end local 3 // boolean typeofAsLeftOperand
        end local 1 // java.lang.String literal
        14: .line 207
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        start local 1 // java.lang.String literal
        start local 3 // boolean typeofAsLeftOperand
        15: .line 209
      StackMap locals: com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode java.lang.String top int com.oracle.truffle.js.runtime.JSContext com.oracle.js.parser.ir.Expression com.oracle.js.parser.ir.BinaryNode com.oracle.js.parser.ir.Expression com.oracle.js.parser.ir.Expression
      StackMap stack:
            aload 6 /* binaryNode */
            invokevirtual com.oracle.js.parser.ir.BinaryNode.tokenType:()Lcom/oracle/js/parser/TokenType;
            astore 9 /* tokenType */
        start local 9 // com.oracle.js.parser.TokenType tokenType
        16: .line 210
            aload 9 /* tokenType */
            getstatic com.oracle.js.parser.TokenType.EQ:Lcom/oracle/js/parser/TokenType;
            if_acmpne 19
        17: .line 211
            iconst_0
            istore 2 /* identity */
        start local 2 // boolean identity
        18: .line 212
            goto 26
        end local 2 // boolean identity
      StackMap locals: com.oracle.js.parser.TokenType
      StackMap stack:
        19: aload 9 /* tokenType */
            getstatic com.oracle.js.parser.TokenType.EQ_STRICT:Lcom/oracle/js/parser/TokenType;
            if_acmpne 22
        20: .line 213
            iconst_1
            istore 2 /* identity */
        start local 2 // boolean identity
        21: .line 214
            goto 26
        end local 2 // boolean identity
        22: .line 215
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 9 // com.oracle.js.parser.TokenType tokenType
        end local 8 // com.oracle.js.parser.ir.Expression rhs
        end local 7 // com.oracle.js.parser.ir.Expression lhs
        end local 6 // com.oracle.js.parser.ir.BinaryNode binaryNode
        end local 3 // boolean typeofAsLeftOperand
        end local 1 // java.lang.String literal
        23: .line 218
      StackMap locals: com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode top top top com.oracle.truffle.js.runtime.JSContext com.oracle.js.parser.ir.Expression
      StackMap stack:
            aconst_null
            areturn
        end local 5 // com.oracle.js.parser.ir.Expression expression
        24: .line 220
      StackMap locals: com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode top top top com.oracle.truffle.js.runtime.JSContext
      StackMap stack: com.oracle.js.parser.ParserException
            pop
        25: .line 221
            aconst_null
            areturn
        start local 1 // java.lang.String literal
        start local 2 // boolean identity
        start local 3 // boolean typeofAsLeftOperand
        26: .line 223
      StackMap locals: com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode java.lang.String int int com.oracle.truffle.js.runtime.JSContext
      StackMap stack:
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* literal */
            aastore
            dup
            iconst_1
            iload 2 /* identity */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
            dup
            iconst_2
            iload 3 /* typeofAsLeftOperand */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
            areturn
        end local 4 // com.oracle.truffle.js.runtime.JSContext context
        end local 3 // boolean typeofAsLeftOperand
        end local 2 // boolean identity
        end local 1 // java.lang.String literal
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   27     0                 this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            9   10     1              literal  Ljava/lang/String;
           13   14     1              literal  Ljava/lang/String;
           15   23     1              literal  Ljava/lang/String;
           26   27     1              literal  Ljava/lang/String;
           18   19     2             identity  Z
           21   22     2             identity  Z
           26   27     2             identity  Z
            8   10     3  typeofAsLeftOperand  Z
           12   14     3  typeofAsLeftOperand  Z
           15   23     3  typeofAsLeftOperand  Z
           26   27     3  typeofAsLeftOperand  Z
            1   27     4              context  Lcom/oracle/truffle/js/runtime/JSContext;
            2   24     5           expression  Lcom/oracle/js/parser/ir/Expression;
            4   23     6           binaryNode  Lcom/oracle/js/parser/ir/BinaryNode;
            5   23     7                  lhs  Lcom/oracle/js/parser/ir/Expression;
            6   23     8                  rhs  Lcom/oracle/js/parser/ir/Expression;
           16   23     9            tokenType  Lcom/oracle/js/parser/TokenType;
      Exception table:
        from    to  target  type
           1    14      24  Class com.oracle.js.parser.ParserException
          15    22      24  Class com.oracle.js.parser.ParserException

  private static boolean isTypeOf(com.oracle.js.parser.ir.Expression);
    descriptor: (Lcom/oracle/js/parser/ir/Expression;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.js.parser.ir.Expression expression
         0: .line 227
            aload 0 /* expression */
            instanceof com.oracle.js.parser.ir.UnaryNode
            ifeq 1
            aload 0 /* expression */
            checkcast com.oracle.js.parser.ir.UnaryNode
            invokevirtual com.oracle.js.parser.ir.UnaryNode.tokenType:()Lcom/oracle/js/parser/TokenType;
            getstatic com.oracle.js.parser.TokenType.TYPEOF:Lcom/oracle/js/parser/TokenType;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.js.parser.ir.Expression expression
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0  expression  Lcom/oracle/js/parser/ir/Expression;
    MethodParameters:
            Name  Flags
      expression  

  public boolean isResultAlwaysOfType(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // java.lang.Class clazz
         0: .line 232
            aload 1 /* clazz */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.Class clazz
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    2     1  clazz  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
       Name  Flags
      clazz  

  public final java.lang.Object execute(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 237
            aload 0 /* this */
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.executeBoolean:(Lcom/oracle/truffle/api/frame/VirtualFrame;)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    1     1  frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
    MethodParameters:
       Name  Flags
      frame  

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

  protected final boolean doBoolean(boolean);
    descriptor: (Z)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // boolean value
         0: .line 245
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Boolean:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // boolean value
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    2     1  value  Z
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected final boolean doNumber(int);
    descriptor: (I)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // int value
         0: .line 250
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Number:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // int value
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    2     1  value  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected final boolean doNumber(com.oracle.truffle.js.runtime.SafeInteger);
    descriptor: (Lcom/oracle/truffle/js/runtime/SafeInteger;)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // com.oracle.truffle.js.runtime.SafeInteger value
         0: .line 255
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Number:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // com.oracle.truffle.js.runtime.SafeInteger value
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    2     1  value  Lcom/oracle/truffle/js/runtime/SafeInteger;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected final boolean doNumber(long);
    descriptor: (J)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // long value
         0: .line 260
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Number:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // long value
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    2     1  value  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected final boolean doNumber(double);
    descriptor: (D)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // double value
         0: .line 265
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Number:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // double value
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    2     1  value  D
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected final boolean doSymbol(com.oracle.truffle.js.runtime.Symbol);
    descriptor: (Lcom/oracle/truffle/js/runtime/Symbol;)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // com.oracle.truffle.js.runtime.Symbol value
         0: .line 270
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Symbol:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // com.oracle.truffle.js.runtime.Symbol value
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    2     1  value  Lcom/oracle/truffle/js/runtime/Symbol;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected final boolean doBigInt(com.oracle.truffle.js.runtime.BigInt);
    descriptor: (Lcom/oracle/truffle/js/runtime/BigInt;)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // com.oracle.truffle.js.runtime.BigInt value
         0: .line 275
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.BigInt:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // com.oracle.truffle.js.runtime.BigInt value
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    2     1  value  Lcom/oracle/truffle/js/runtime/BigInt;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected final boolean doString(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // java.lang.CharSequence value
         0: .line 280
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.String:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.CharSequence value
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0    2     1  value  Ljava/lang/CharSequence;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected final boolean doJSType(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.profiles.BranchProfile);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/profiles/BranchProfile;)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject value
        start local 2 // com.oracle.truffle.api.profiles.BranchProfile proxyBranch
         0: .line 286
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Number:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpeq 1
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.BigInt:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpeq 1
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.String:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpeq 1
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Boolean:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpeq 1
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Symbol:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpeq 1
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.False:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 2
         1: .line 287
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         2: .line 288
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Object:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 8
         3: .line 289
            aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSProxy.isJSProxy:(Ljava/lang/Object;)Z
            ifeq 6
         4: .line 290
            aload 2 /* proxyBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         5: .line 291
            aload 1 /* value */
            iconst_0
            invokestatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.checkProxy:(Lcom/oracle/truffle/api/object/DynamicObject;Z)Z
            ireturn
         6: .line 293
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            ifne 7
            aload 1 /* value */
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpeq 7
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         7: iconst_0
            ireturn
         8: .line 295
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Undefined:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 11
         9: .line 296
            aload 1 /* value */
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 10
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        10: iconst_0
            ireturn
        11: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Function:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 18
        12: .line 298
            aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            ifeq 14
        13: .line 299
            iconst_1
            ireturn
        14: .line 300
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSProxy.isJSProxy:(Ljava/lang/Object;)Z
            ifeq 17
        15: .line 301
            aload 2 /* proxyBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
        16: .line 302
            aload 1 /* value */
            iconst_1
            invokestatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.checkProxy:(Lcom/oracle/truffle/api/object/DynamicObject;Z)Z
            ireturn
        17: .line 304
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        18: .line 307
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.js.runtime.Errors.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 2 // com.oracle.truffle.api.profiles.BranchProfile proxyBranch
        end local 1 // com.oracle.truffle.api.object.DynamicObject value
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   19     0         this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0   19     1        value  Lcom/oracle/truffle/api/object/DynamicObject;
            0   19     2  proxyBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isJSDynamicObject(value)"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached(value = "create()")
    MethodParameters:
             Name  Flags
      value        
      proxyBranch  

  protected final boolean doForeignObject(java.lang.Object, com.oracle.truffle.api.interop.InteropLibrary);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/interop/InteropLibrary;)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
        start local 1 // java.lang.Object value
        start local 2 // com.oracle.truffle.api.interop.InteropLibrary interop
         0: .line 313
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Undefined:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpeq 1
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Symbol:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpeq 1
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.False:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 2
         1: .line 314
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         2: .line 316
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Boolean:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 4
         3: .line 317
            aload 2 /* interop */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isBoolean:(Ljava/lang/Object;)Z
            ireturn
         4: .line 318
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.String:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 6
         5: .line 319
            aload 2 /* interop */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isString:(Ljava/lang/Object;)Z
            ireturn
         6: .line 320
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Number:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 8
         7: .line 321
            aload 2 /* interop */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isNumber:(Ljava/lang/Object;)Z
            ireturn
         8: .line 322
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Function:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 11
         9: .line 323
            aload 2 /* interop */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isExecutable:(Ljava/lang/Object;)Z
            ifne 10
            aload 2 /* interop */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isInstantiable:(Ljava/lang/Object;)Z
            ifne 10
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        10: iconst_1
            ireturn
        11: .line 324
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode.type:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            getstatic com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type.Object:Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;
            if_acmpne 14
        12: .line 325
            aload 2 /* interop */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isExecutable:(Ljava/lang/Object;)Z
            ifne 13
            aload 2 /* interop */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isInstantiable:(Ljava/lang/Object;)Z
            ifne 13
            aload 2 /* interop */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isBoolean:(Ljava/lang/Object;)Z
            ifne 13
            aload 2 /* interop */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isString:(Ljava/lang/Object;)Z
            ifne 13
            aload 2 /* interop */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isNumber:(Ljava/lang/Object;)Z
            ifne 13
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        13: iconst_0
            ireturn
        14: .line 327
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // com.oracle.truffle.api.interop.InteropLibrary interop
        end local 1 // java.lang.Object value
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   15     0     this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
            0   15     1    value  Ljava/lang/Object;
            0   15     2  interop  Lcom/oracle/truffle/api/interop/InteropLibrary;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isForeignObject(value)"}, limit = "InteropLibraryLimit")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.library.CachedLibrary(value = "value")
    MethodParameters:
         Name  Flags
      value    
      interop  

  private static boolean checkProxy(com.oracle.truffle.api.object.DynamicObject, boolean);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Z)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.api.object.DynamicObject value
        start local 1 // boolean isFunction
         0: .line 335
            aload 0 /* value */
            astore 3 /* target */
        start local 3 // java.lang.Object target
         1: .line 337
      StackMap locals: com.oracle.truffle.api.object.DynamicObject int top java.lang.Object
      StackMap stack:
            aload 3 /* target */
            checkcast com.oracle.truffle.api.object.DynamicObject
            astore 2 /* proxy */
        start local 2 // com.oracle.truffle.api.object.DynamicObject proxy
         2: .line 338
            aload 2 /* proxy */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSProxy.getTarget:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/lang/Object;
            astore 3 /* target */
         3: .line 339
            aload 3 /* target */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSProxy.isJSProxy:(Ljava/lang/Object;)Z
            ifne 1
         4: .line 341
            aload 3 /* target */
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 7
         5: .line 342
            iload 1 /* isFunction */
            aload 2 /* proxy */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isRevokedCallableProxy:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
            if_icmpne 6
            iconst_1
            ireturn
      StackMap locals: com.oracle.truffle.api.object.DynamicObject int com.oracle.truffle.api.object.DynamicObject java.lang.Object
      StackMap stack:
         6: iconst_0
            ireturn
         7: .line 344
      StackMap locals:
      StackMap stack:
            iload 1 /* isFunction */
            ifeq 10
         8: .line 345
            aload 3 /* target */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            ifne 9
            aload 3 /* target */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isCallableForeign:(Ljava/lang/Object;)Z
            ifne 9
            aload 3 /* target */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isConstructorForeign:(Ljava/lang/Object;)Z
            ifne 9
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         9: iconst_1
            ireturn
        10: .line 347
      StackMap locals:
      StackMap stack:
            aload 3 /* target */
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.isJSDynamicObject:(Ljava/lang/Object;)Z
            ifeq 11
            aload 3 /* target */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            ifeq 13
        11: .line 348
      StackMap locals:
      StackMap stack:
            aload 3 /* target */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isForeignObject:(Ljava/lang/Object;)Z
            ifeq 12
            aload 3 /* target */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isCallableForeign:(Ljava/lang/Object;)Z
            ifne 12
            aload 3 /* target */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isConstructorForeign:(Ljava/lang/Object;)Z
            ifeq 13
        12: .line 347
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        13: iconst_1
            ireturn
        end local 3 // java.lang.Object target
        end local 2 // com.oracle.truffle.api.object.DynamicObject proxy
        end local 1 // boolean isFunction
        end local 0 // com.oracle.truffle.api.object.DynamicObject value
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0       value  Lcom/oracle/truffle/api/object/DynamicObject;
            0   14     1  isFunction  Z
            2   14     2       proxy  Lcom/oracle/truffle/api/object/DynamicObject;
            1   14     3      target  Ljava/lang/Object;
    MethodParameters:
            Name  Flags
      value       
      isFunction  

  protected com.oracle.truffle.js.nodes.JavaScriptNode copyUninitialized(java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>);
    descriptor: (Ljava/util/Set;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
         0: .line 355
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tJSTypeofIdenticalNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode;
    Signature: (Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    MethodParameters:
                  Name  Flags
      materializedTags  
}
SourceFile: "JSTypeofIdenticalNode.java"
NestMembers:
  com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type
InnerClasses:
  public final JSConstantStringNode = com.oracle.truffle.js.nodes.access.JSConstantNode$JSConstantStringNode of com.oracle.truffle.js.nodes.access.JSConstantNode
  public final Type = com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode$Type of com.oracle.truffle.js.nodes.binary.JSTypeofIdenticalNode
  public final BinaryOperationTag = com.oracle.truffle.js.nodes.instrumentation.JSTags$BinaryOperationTag of com.oracle.truffle.js.nodes.instrumentation.JSTags
  public final LiteralTag = com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag of com.oracle.truffle.js.nodes.instrumentation.JSTags
  public final UnaryOperationTag = com.oracle.truffle.js.nodes.instrumentation.JSTags$UnaryOperationTag of com.oracle.truffle.js.nodes.instrumentation.JSTags
    RuntimeInvisibleAnnotations: 
      com.oracle.truffle.api.dsl.ImportStatic(value = {Lcom/oracle/truffle/js/nodes/binary/JSTypeofIdenticalNode$Type;, Lcom/oracle/truffle/js/runtime/JSConfig;})