class com.oracle.truffle.js.parser.GraalJSTranslator$2 extends com.oracle.js.parser.ir.visitor.NodeVisitor<com.oracle.js.parser.ir.LexicalContext>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.truffle.js.parser.GraalJSTranslator$2
  super_class: com.oracle.js.parser.ir.visitor.NodeVisitor
{
  void <init>(com.oracle.js.parser.ir.LexicalContext);
    descriptor: (Lcom/oracle/js/parser/ir/LexicalContext;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
        start local 1 // com.oracle.js.parser.ir.LexicalContext $anonymous0
         0: .line 942
            aload 0 /* this */
            aload 1 /* $anonymous0 */
            invokespecial com.oracle.js.parser.ir.visitor.NodeVisitor.<init>:(Lcom/oracle/js/parser/ir/LexicalContext;)V
            return
        end local 1 // com.oracle.js.parser.ir.LexicalContext $anonymous0
        end local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/oracle/truffle/js/parser/GraalJSTranslator$2;
            0    1     1  $anonymous0  Lcom/oracle/js/parser/ir/LexicalContext;
    MethodParameters:
             Name  Flags
      $anonymous0  

  public boolean enterIdentNode(com.oracle.js.parser.ir.IdentNode);
    descriptor: (Lcom/oracle/js/parser/ir/IdentNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
        start local 1 // com.oracle.js.parser.ir.IdentNode identNode
         0: .line 945
            aload 1 /* identNode */
            invokevirtual com.oracle.js.parser.ir.IdentNode.isPropertyName:()Z
            ifne 3
         1: .line 946
            aload 1 /* identNode */
            invokevirtual com.oracle.js.parser.ir.IdentNode.getName:()Ljava/lang/String;
            astore 2 /* varName */
        start local 2 // java.lang.String varName
         2: .line 947
            aload 0 /* this */
            aload 2 /* varName */
            invokevirtual com.oracle.truffle.js.parser.GraalJSTranslator$2.findSymbol:(Ljava/lang/String;)V
        end local 2 // java.lang.String varName
         3: .line 949
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // com.oracle.js.parser.ir.IdentNode identNode
        end local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/oracle/truffle/js/parser/GraalJSTranslator$2;
            0    4     1  identNode  Lcom/oracle/js/parser/ir/IdentNode;
            2    3     2    varName  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      identNode  

  public boolean enterAccessNode(com.oracle.js.parser.ir.AccessNode);
    descriptor: (Lcom/oracle/js/parser/ir/AccessNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
        start local 1 // com.oracle.js.parser.ir.AccessNode accessNode
         0: .line 954
            aload 1 /* accessNode */
            invokevirtual com.oracle.js.parser.ir.AccessNode.isPrivate:()Z
            ifeq 2
         1: .line 955
            aload 0 /* this */
            aload 1 /* accessNode */
            invokevirtual com.oracle.js.parser.ir.AccessNode.getPrivateName:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.js.parser.GraalJSTranslator$2.findSymbol:(Ljava/lang/String;)V
         2: .line 957
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // com.oracle.js.parser.ir.AccessNode accessNode
        end local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lcom/oracle/truffle/js/parser/GraalJSTranslator$2;
            0    3     1  accessNode  Lcom/oracle/js/parser/ir/AccessNode;
    MethodParameters:
            Name  Flags
      accessNode  

  private void findSymbol(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=8, args_size=2
        start local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
        start local 1 // java.lang.String varName
         0: .line 961
            iconst_1
            istore 2 /* local */
        start local 2 // boolean local
         1: .line 962
            aconst_null
            astore 3 /* lastFunction */
        start local 3 // com.oracle.js.parser.ir.FunctionNode lastFunction
         2: .line 963
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.GraalJSTranslator$2.lc:Lcom/oracle/js/parser/ir/LexicalContext;
            invokevirtual com.oracle.js.parser.ir.LexicalContext.getAllNodes:()Ljava/util/Iterator;
            astore 4 /* iterator */
        start local 4 // java.util.Iterator iterator
         3: goto 39
         4: .line 964
      StackMap locals: int com.oracle.js.parser.ir.FunctionNode java.util.Iterator
      StackMap stack:
            aload 4 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.js.parser.ir.LexicalContextNode
            astore 5 /* node */
        start local 5 // com.oracle.js.parser.ir.LexicalContextNode node
         5: .line 965
            aload 5 /* node */
            instanceof com.oracle.js.parser.ir.LexicalContextScope
            ifeq 11
         6: .line 966
            aload 5 /* node */
            checkcast com.oracle.js.parser.ir.LexicalContextScope
            invokeinterface com.oracle.js.parser.ir.LexicalContextScope.getScope:()Lcom/oracle/js/parser/ir/Scope;
            aload 1 /* varName */
            invokevirtual com.oracle.js.parser.ir.Scope.getExistingSymbol:(Ljava/lang/String;)Lcom/oracle/js/parser/ir/Symbol;
            astore 6 /* foundSymbol */
        start local 6 // com.oracle.js.parser.ir.Symbol foundSymbol
         7: .line 967
            aload 6 /* foundSymbol */
            ifnull 39
            aload 6 /* foundSymbol */
            invokevirtual com.oracle.js.parser.ir.Symbol.isGlobal:()Z
            ifne 39
         8: .line 968
            iload 2 /* local */
            ifne 40
         9: .line 969
            aload 0 /* this */
            aload 3 /* lastFunction */
            iconst_1
            invokevirtual com.oracle.truffle.js.parser.GraalJSTranslator$2.markUsesAncestorScopeUntil:(Lcom/oracle/js/parser/ir/FunctionNode;Z)V
        10: .line 971
            goto 40
        end local 6 // com.oracle.js.parser.ir.Symbol foundSymbol
        11: .line 973
      StackMap locals: com.oracle.js.parser.ir.LexicalContextNode
      StackMap stack:
            aload 5 /* node */
            instanceof com.oracle.js.parser.ir.FunctionNode
            ifeq 36
        12: .line 974
            aload 5 /* node */
            checkcast com.oracle.js.parser.ir.FunctionNode
            astore 6 /* function */
        start local 6 // com.oracle.js.parser.ir.FunctionNode function
        13: .line 975
            aload 6 /* function */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.isNamedFunctionExpression:()Z
            ifeq 17
            aload 1 /* varName */
            aload 6 /* function */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.getIdent:()Lcom/oracle/js/parser/ir/IdentNode;
            invokevirtual com.oracle.js.parser.ir.IdentNode.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
        14: .line 976
            iload 2 /* local */
            ifne 40
        15: .line 977
            aload 0 /* this */
            aload 3 /* lastFunction */
            iconst_1
            invokevirtual com.oracle.truffle.js.parser.GraalJSTranslator$2.markUsesAncestorScopeUntil:(Lcom/oracle/js/parser/ir/FunctionNode;Z)V
        16: .line 979
            goto 40
        17: .line 980
      StackMap locals: com.oracle.js.parser.ir.FunctionNode
      StackMap stack:
            aload 6 /* function */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.isArrow:()Z
            ifeq 23
            aload 0 /* this */
            aload 1 /* varName */
            invokevirtual com.oracle.truffle.js.parser.GraalJSTranslator$2.isVarLexicallyScopedInArrowFunction:(Ljava/lang/String;)Z
            ifeq 23
        18: .line 981
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.GraalJSTranslator$2.lc:Lcom/oracle/js/parser/ir/LexicalContext;
            invokevirtual com.oracle.js.parser.ir.LexicalContext.getCurrentNonArrowFunction:()Lcom/oracle/js/parser/ir/FunctionNode;
            astore 7 /* nonArrowFunction */
        start local 7 // com.oracle.js.parser.ir.FunctionNode nonArrowFunction
        19: .line 984
            aload 1 /* varName */
            ldc "this"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 20
            aload 7 /* nonArrowFunction */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.isDerivedConstructor:()Z
            ifeq 40
        20: .line 985
      StackMap locals: com.oracle.js.parser.ir.FunctionNode
      StackMap stack:
            aload 7 /* nonArrowFunction */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.isProgram:()Z
            ifne 40
        21: .line 986
            aload 0 /* this */
            aload 7 /* nonArrowFunction */
            iconst_0
            invokevirtual com.oracle.truffle.js.parser.GraalJSTranslator$2.markUsesAncestorScopeUntil:(Lcom/oracle/js/parser/ir/FunctionNode;Z)V
        22: .line 989
            goto 40
        end local 7 // com.oracle.js.parser.ir.FunctionNode nonArrowFunction
        23: .line 990
      StackMap locals:
      StackMap stack:
            aload 6 /* function */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.isProgram:()Z
            ifne 26
            aload 1 /* varName */
            ldc "arguments"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 26
        24: .line 991
            getstatic com.oracle.truffle.js.parser.GraalJSTranslator.$assertionsDisabled:Z
            ifne 25
            aload 6 /* function */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.isArrow:()Z
            ifeq 25
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        25: .line 992
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.parser.GraalJSTranslator.$assertionsDisabled:Z
            ifne 40
            iload 2 /* local */
            ifne 40
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        26: .line 994
      StackMap locals:
      StackMap stack:
            aload 6 /* function */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.hasEval:()Z
            ifeq 30
            aload 6 /* function */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.isProgram:()Z
            ifne 30
        27: .line 995
            iload 2 /* local */
            ifne 33
        28: .line 996
            aload 0 /* this */
            aload 3 /* lastFunction */
            iconst_1
            invokevirtual com.oracle.truffle.js.parser.GraalJSTranslator$2.markUsesAncestorScopeUntil:(Lcom/oracle/js/parser/ir/FunctionNode;Z)V
        29: .line 998
            goto 33
      StackMap locals:
      StackMap stack:
        30: aload 6 /* function */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.isModule:()Z
            ifeq 33
            aload 0 /* this */
            aload 1 /* varName */
            invokevirtual com.oracle.truffle.js.parser.GraalJSTranslator$2.isImport:(Ljava/lang/String;)Z
            ifeq 33
        31: .line 1000
            iload 2 /* local */
            ifne 33
        32: .line 1001
            aload 0 /* this */
            aload 3 /* lastFunction */
            iconst_1
            invokevirtual com.oracle.truffle.js.parser.GraalJSTranslator$2.markUsesAncestorScopeUntil:(Lcom/oracle/js/parser/ir/FunctionNode;Z)V
        33: .line 1004
      StackMap locals:
      StackMap stack:
            aload 6 /* function */
            astore 3 /* lastFunction */
        34: .line 1005
            iconst_0
            istore 2 /* local */
        end local 6 // com.oracle.js.parser.ir.FunctionNode function
        35: .line 1006
            goto 39
      StackMap locals:
      StackMap stack:
        36: aload 5 /* node */
            instanceof com.oracle.js.parser.ir.WithNode
            ifeq 39
        37: .line 1007
            iload 2 /* local */
            ifne 39
        38: .line 1008
            aload 0 /* this */
            aload 3 /* lastFunction */
            iconst_1
            invokevirtual com.oracle.truffle.js.parser.GraalJSTranslator$2.markUsesAncestorScopeUntil:(Lcom/oracle/js/parser/ir/FunctionNode;Z)V
        end local 5 // com.oracle.js.parser.ir.LexicalContextNode node
        39: .line 963
      StackMap locals:
      StackMap stack:
            aload 4 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        end local 4 // java.util.Iterator iterator
        40: .line 1012
      StackMap locals:
      StackMap stack:
            return
        end local 3 // com.oracle.js.parser.ir.FunctionNode lastFunction
        end local 2 // boolean local
        end local 1 // java.lang.String varName
        end local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   41     0              this  Lcom/oracle/truffle/js/parser/GraalJSTranslator$2;
            0   41     1           varName  Ljava/lang/String;
            1   41     2             local  Z
            2   41     3      lastFunction  Lcom/oracle/js/parser/ir/FunctionNode;
            3   40     4          iterator  Ljava/util/Iterator<Lcom/oracle/js/parser/ir/LexicalContextNode;>;
            5   39     5              node  Lcom/oracle/js/parser/ir/LexicalContextNode;
            7   11     6       foundSymbol  Lcom/oracle/js/parser/ir/Symbol;
           13   35     6          function  Lcom/oracle/js/parser/ir/FunctionNode;
           19   23     7  nonArrowFunction  Lcom/oracle/js/parser/ir/FunctionNode;
    MethodParameters:
         Name  Flags
      varName  

  private boolean isVarLexicallyScopedInArrowFunction(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
        start local 1 // java.lang.String varName
         0: .line 1015
            aload 1 /* varName */
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 4
          -2035517098: 1
              3559070: 2
            109801339: 3
            219634079: 4
              default: 6
          }
      StackMap locals: java.lang.String
      StackMap stack:
         1: aload 2
            ldc "arguments"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
            goto 6
      StackMap locals:
      StackMap stack:
         2: aload 2
            ldc "this"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
            goto 6
      StackMap locals:
      StackMap stack:
         3: aload 2
            ldc "super"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
            goto 6
      StackMap locals:
      StackMap stack:
         4: aload 2
            ldc "new.target"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
            goto 6
         5: .line 1020
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         6: .line 1022
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.String varName
        end local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lcom/oracle/truffle/js/parser/GraalJSTranslator$2;
            0    7     1  varName  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      varName  

  private boolean isImport(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
        start local 1 // java.lang.String varName
         0: .line 1027
            aload 1 /* varName */
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
          -1184795739: 1
           1423530670: 2
              default: 4
          }
      StackMap locals: java.lang.String
      StackMap stack:
         1: aload 2
            ldc "import"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 3
            goto 4
      StackMap locals:
      StackMap stack:
         2: aload 2
            ldc "import.meta"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 3
            goto 4
         3: .line 1030
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         4: .line 1032
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.String varName
        end local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lcom/oracle/truffle/js/parser/GraalJSTranslator$2;
            0    5     1  varName  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      varName  

  private void markUsesAncestorScopeUntil(com.oracle.js.parser.ir.FunctionNode, boolean);
    descriptor: (Lcom/oracle/js/parser/ir/FunctionNode;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
        start local 1 // com.oracle.js.parser.ir.FunctionNode untilFunction
        start local 2 // boolean inclusive
         0: .line 1037
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.GraalJSTranslator$2.lc:Lcom/oracle/js/parser/ir/LexicalContext;
            invokevirtual com.oracle.js.parser.ir.LexicalContext.getFunctions:()Ljava/util/Iterator;
            astore 3 /* functions */
        start local 3 // java.util.Iterator functions
         1: goto 8
         2: .line 1038
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 3 /* functions */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.js.parser.ir.FunctionNode
            astore 4 /* function */
        start local 4 // com.oracle.js.parser.ir.FunctionNode function
         3: .line 1039
            iload 2 /* inclusive */
            ifne 5
            aload 4 /* function */
            aload 1 /* untilFunction */
            if_acmpne 5
         4: .line 1040
            goto 9
         5: .line 1042
      StackMap locals: com.oracle.js.parser.ir.FunctionNode
      StackMap stack:
            aload 4 /* function */
            iconst_1
            invokevirtual com.oracle.js.parser.ir.FunctionNode.setUsesAncestorScope:(Z)V
         6: .line 1043
            iload 2 /* inclusive */
            ifeq 8
            aload 4 /* function */
            aload 1 /* untilFunction */
            if_acmpne 8
         7: .line 1044
            goto 9
        end local 4 // com.oracle.js.parser.ir.FunctionNode function
         8: .line 1037
      StackMap locals:
      StackMap stack:
            aload 3 /* functions */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        end local 3 // java.util.Iterator functions
         9: .line 1047
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean inclusive
        end local 1 // com.oracle.js.parser.ir.FunctionNode untilFunction
        end local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Lcom/oracle/truffle/js/parser/GraalJSTranslator$2;
            0   10     1  untilFunction  Lcom/oracle/js/parser/ir/FunctionNode;
            0   10     2      inclusive  Z
            1    9     3      functions  Ljava/util/Iterator<Lcom/oracle/js/parser/ir/FunctionNode;>;
            3    8     4       function  Lcom/oracle/js/parser/ir/FunctionNode;
    MethodParameters:
               Name  Flags
      untilFunction  
      inclusive      

  public boolean enterFunctionNode(com.oracle.js.parser.ir.FunctionNode);
    descriptor: (Lcom/oracle/js/parser/ir/FunctionNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
        start local 1 // com.oracle.js.parser.ir.FunctionNode functionNode
         0: .line 1051
            aload 1 /* functionNode */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.hasEval:()Z
            ifeq 2
         1: .line 1052
            aload 0 /* this */
            aconst_null
            iconst_0
            invokevirtual com.oracle.truffle.js.parser.GraalJSTranslator$2.markUsesAncestorScopeUntil:(Lcom/oracle/js/parser/ir/FunctionNode;Z)V
         2: .line 1055
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // com.oracle.js.parser.ir.FunctionNode functionNode
        end local 0 // com.oracle.truffle.js.parser.GraalJSTranslator$2 this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/oracle/truffle/js/parser/GraalJSTranslator$2;
            0    3     1  functionNode  Lcom/oracle/js/parser/ir/FunctionNode;
    MethodParameters:
              Name  Flags
      functionNode  
}
Signature: Lcom/oracle/js/parser/ir/visitor/NodeVisitor<Lcom/oracle/js/parser/ir/LexicalContext;>;
SourceFile: "GraalJSTranslator.java"
EnclosingMethod: com.oracle.truffle.js.parser.GraalJSTranslator.functionNeedsParentFramePass:(Lcom/oracle/js/parser/ir/FunctionNode;Lcom/oracle/truffle/js/runtime/JSContext;)V
NestHost: com.oracle.truffle.js.parser.GraalJSTranslator
InnerClasses:
  com.oracle.truffle.js.parser.GraalJSTranslator$2