public abstract class com.oracle.truffle.js.parser.env.Environment
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.js.parser.env.Environment
  super_class: java.lang.Object
{
  public static final java.lang.String ARGUMENTS_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "arguments"

  public static final java.lang.String THIS_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "this"

  public static final java.lang.String SUPER_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "super"

  public static final java.lang.String NEW_TARGET_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "new.target"

  private final com.oracle.truffle.js.parser.env.Environment parent;
    descriptor: Lcom/oracle/truffle/js/parser/env/Environment;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected final com.oracle.truffle.js.nodes.NodeFactory factory;
    descriptor: Lcom/oracle/truffle/js/nodes/NodeFactory;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final com.oracle.truffle.js.runtime.JSContext context;
    descriptor: Lcom/oracle/truffle/js/runtime/JSContext;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 71
            ldc Lcom/oracle/truffle/js/parser/env/Environment;
            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.parser.env.Environment.$assertionsDisabled:Z
         3: .line 76
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(com.oracle.truffle.js.parser.env.Environment, com.oracle.truffle.js.nodes.NodeFactory, com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/js/parser/env/Environment;Lcom/oracle/truffle/js/nodes/NodeFactory;Lcom/oracle/truffle/js/runtime/JSContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.js.parser.env.Environment parent
        start local 2 // com.oracle.truffle.js.nodes.NodeFactory factory
        start local 3 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 82
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 83
            aload 0 /* this */
            aload 1 /* parent */
            putfield com.oracle.truffle.js.parser.env.Environment.parent:Lcom/oracle/truffle/js/parser/env/Environment;
         2: .line 84
            aload 0 /* this */
            aload 2 /* factory */
            putfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
         3: .line 85
            aload 0 /* this */
            aload 3 /* context */
            putfield com.oracle.truffle.js.parser.env.Environment.context:Lcom/oracle/truffle/js/runtime/JSContext;
         4: .line 86
            return
        end local 3 // com.oracle.truffle.js.runtime.JSContext context
        end local 2 // com.oracle.truffle.js.nodes.NodeFactory factory
        end local 1 // com.oracle.truffle.js.parser.env.Environment parent
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    5     1   parent  Lcom/oracle/truffle/js/parser/env/Environment;
            0    5     2  factory  Lcom/oracle/truffle/js/nodes/NodeFactory;
            0    5     3  context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
         Name  Flags
      parent   
      factory  
      context  

  public com.oracle.truffle.api.frame.FrameSlot declareLocalVar(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/frame/FrameSlot;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // java.lang.Object name
         0: .line 89
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            aload 1 /* name */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.declareLocalVar:(Ljava/lang/Object;)Lcom/oracle/truffle/api/frame/FrameSlot;
            areturn
        end local 1 // java.lang.Object name
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1  name  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      name  

  public com.oracle.truffle.api.frame.FrameSlot declareVar(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/frame/FrameSlot;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // java.lang.Object name
         0: .line 93
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            aload 1 /* name */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.declareVar:(Ljava/lang/Object;)Lcom/oracle/truffle/api/frame/FrameSlot;
            areturn
        end local 1 // java.lang.Object name
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1  name  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      name  

  public boolean hasLocalVar(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // java.lang.String name
         0: .line 97
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getFunctionFrameDescriptor:()Lcom/oracle/truffle/api/frame/FrameDescriptor;
            invokevirtual com.oracle.truffle.api.frame.FrameDescriptor.getIdentifiers:()Ljava/util/Set;
            aload 1 /* name */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  public com.oracle.truffle.js.parser.env.Environment$VarRef findThisVar();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 101
            aload 0 /* this */
            ldc "<this>"
            iconst_1
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findInternalSlot:(Ljava/lang/String;Z)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public com.oracle.truffle.js.parser.env.Environment$VarRef findSuperVar();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 105
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isGlobal:()Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "<super>"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findInternalSlot:(Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public com.oracle.truffle.js.parser.env.Environment$VarRef findArgumentsVar();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 110
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isGlobal:()Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 111
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "<arguments>"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findInternalSlot:(Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public com.oracle.truffle.js.parser.env.Environment$VarRef findNewTargetVar();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 115
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isGlobal:()Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 116
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "<new.target>"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findInternalSlot:(Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public com.oracle.truffle.js.parser.env.Environment$VarRef findAsyncContextVar();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 121
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isGlobal:()Z
            ifeq 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isAsyncGeneratorFunction:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 122
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "<asynccontext>"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.declareLocalVar:(Ljava/lang/Object;)Lcom/oracle/truffle/api/frame/FrameSlot;
            pop
         2: .line 123
            aload 0 /* this */
            ldc "<asynccontext>"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findInternalSlot:(Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public com.oracle.truffle.js.parser.env.Environment$VarRef findAsyncResultVar();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 128
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isGlobal:()Z
            ifeq 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isAsyncGeneratorFunction:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 129
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "<asyncresult>"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.declareLocalVar:(Ljava/lang/Object;)Lcom/oracle/truffle/api/frame/FrameSlot;
            pop
         2: .line 130
            aload 0 /* this */
            ldc "<asyncresult>"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findInternalSlot:(Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public com.oracle.truffle.js.parser.env.Environment$VarRef findYieldValueVar();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 134
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isGlobal:()Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "<yieldvalue>"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.declareLocalVar:(Ljava/lang/Object;)Lcom/oracle/truffle/api/frame/FrameSlot;
            pop
         2: .line 136
            aload 0 /* this */
            ldc "<yieldvalue>"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findInternalSlot:(Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public com.oracle.truffle.js.parser.env.Environment$VarRef findDynamicScopeVar();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 140
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isGlobal:()Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "<evalscope>"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findInternalSlot:(Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public final com.oracle.truffle.js.nodes.JavaScriptNode createLocal(com.oracle.truffle.api.frame.FrameSlot, int, int);
    descriptor: (Lcom/oracle/truffle/api/frame/FrameSlot;II)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.api.frame.FrameSlot frameSlot
        start local 2 // int level
        start local 3 // int scopeLevel
         0: .line 145
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            aload 1 /* frameSlot */
            iload 2 /* level */
            iload 3 /* scopeLevel */
            aload 0 /* this */
            iload 2 /* level */
            iload 3 /* scopeLevel */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getParentSlots:(II)[Lcom/oracle/truffle/api/frame/FrameSlot;
            iconst_0
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createLocal:(Lcom/oracle/truffle/api/frame/FrameSlot;II[Lcom/oracle/truffle/api/frame/FrameSlot;Z)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            areturn
        end local 3 // int scopeLevel
        end local 2 // int level
        end local 1 // com.oracle.truffle.api.frame.FrameSlot frameSlot
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1   frameSlot  Lcom/oracle/truffle/api/frame/FrameSlot;
            0    1     2       level  I
            0    1     3  scopeLevel  I
    MethodParameters:
            Name  Flags
      frameSlot   
      level       
      scopeLevel  

  public final com.oracle.truffle.js.nodes.JavaScriptNode createLocal(com.oracle.truffle.api.frame.FrameSlot, int, int, boolean);
    descriptor: (Lcom/oracle/truffle/api/frame/FrameSlot;IIZ)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=7, locals=5, args_size=5
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.api.frame.FrameSlot frameSlot
        start local 2 // int level
        start local 3 // int scopeLevel
        start local 4 // boolean checkTDZ
         0: .line 149
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            aload 1 /* frameSlot */
            iload 2 /* level */
            iload 3 /* scopeLevel */
            aload 0 /* this */
            iload 2 /* level */
            iload 3 /* scopeLevel */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getParentSlots:(II)[Lcom/oracle/truffle/api/frame/FrameSlot;
            iload 4 /* checkTDZ */
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createLocal:(Lcom/oracle/truffle/api/frame/FrameSlot;II[Lcom/oracle/truffle/api/frame/FrameSlot;Z)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            areturn
        end local 4 // boolean checkTDZ
        end local 3 // int scopeLevel
        end local 2 // int level
        end local 1 // com.oracle.truffle.api.frame.FrameSlot frameSlot
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1   frameSlot  Lcom/oracle/truffle/api/frame/FrameSlot;
            0    1     2       level  I
            0    1     3  scopeLevel  I
            0    1     4    checkTDZ  Z
    MethodParameters:
            Name  Flags
      frameSlot   
      level       
      scopeLevel  
      checkTDZ    

  protected final com.oracle.truffle.js.parser.env.Environment$VarRef findInternalSlot(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // java.lang.String name
         0: .line 153
            aload 0 /* this */
            aload 1 /* name */
            iconst_0
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findInternalSlot:(Ljava/lang/String;Z)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  protected final com.oracle.truffle.js.parser.env.Environment$VarRef findInternalSlot(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=6, locals=7, args_size=3
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // java.lang.String name
        start local 2 // boolean allowDebug
         0: .line 157
            aload 0 /* this */
            astore 3 /* current */
        start local 3 // com.oracle.truffle.js.parser.env.Environment current
         1: .line 158
            iconst_0
            istore 4 /* frameLevel */
        start local 4 // int frameLevel
         2: .line 159
            iconst_0
            istore 5 /* scopeLevel */
        start local 5 // int scopeLevel
         3: .line 161
      StackMap locals: com.oracle.truffle.js.parser.env.Environment int int
      StackMap stack:
            aload 3 /* current */
            aload 1 /* name */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findBlockFrameSlot:(Ljava/lang/String;)Lcom/oracle/truffle/api/frame/FrameSlot;
            astore 6 /* slot */
        start local 6 // com.oracle.truffle.api.frame.FrameSlot slot
         4: .line 162
            aload 6 /* slot */
            ifnull 6
         5: .line 163
            aload 0 /* this */
            aload 6 /* slot */
            iload 5 /* scopeLevel */
            iload 4 /* frameLevel */
            aload 1 /* name */
            aload 3 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.newFrameSlotVarRef:(Lcom/oracle/truffle/api/frame/FrameSlot;IILjava/lang/String;Lcom/oracle/truffle/js/parser/env/Environment;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
         6: .line 165
      StackMap locals: com.oracle.truffle.api.frame.FrameSlot
      StackMap stack:
            aload 3 /* current */
            instanceof com.oracle.truffle.js.parser.env.FunctionEnvironment
            ifeq 10
         7: .line 166
            iinc 4 /* frameLevel */ 1
         8: .line 167
            iconst_0
            istore 5 /* scopeLevel */
         9: .line 168
            goto 16
      StackMap locals:
      StackMap stack:
        10: aload 3 /* current */
            instanceof com.oracle.truffle.js.parser.env.BlockEnvironment
            ifeq 13
        11: .line 169
            iinc 5 /* scopeLevel */ 1
        12: .line 170
            goto 16
      StackMap locals:
      StackMap stack:
        13: aload 3 /* current */
            instanceof com.oracle.truffle.js.parser.env.DebugEnvironment
            ifeq 16
        14: .line 171
            iload 2 /* allowDebug */
            ifne 16
        15: .line 172
            goto 18
        16: .line 175
      StackMap locals:
      StackMap stack:
            aload 3 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getParent:()Lcom/oracle/truffle/js/parser/env/Environment;
            astore 3 /* current */
        end local 6 // com.oracle.truffle.api.frame.FrameSlot slot
        17: .line 176
            aload 3 /* current */
            ifnonnull 3
        18: .line 178
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 5 // int scopeLevel
        end local 4 // int frameLevel
        end local 3 // com.oracle.truffle.js.parser.env.Environment current
        end local 2 // boolean allowDebug
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   19     0        this  Lcom/oracle/truffle/js/parser/env/Environment;
            0   19     1        name  Ljava/lang/String;
            0   19     2  allowDebug  Z
            1   19     3     current  Lcom/oracle/truffle/js/parser/env/Environment;
            2   19     4  frameLevel  I
            3   19     5  scopeLevel  I
            4   17     6        slot  Lcom/oracle/truffle/api/frame/FrameSlot;
    MethodParameters:
            Name  Flags
      name        
      allowDebug  

  public final com.oracle.truffle.js.parser.env.Environment$VarRef findLocalVar(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // java.lang.String name
         0: .line 218
            aload 0 /* this */
            aload 1 /* name */
            iconst_1
            iconst_1
            iconst_0
            iconst_1
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findVar:(Ljava/lang/String;ZZZZ)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  public final com.oracle.truffle.js.parser.env.Environment$VarRef findVar(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // java.lang.String name
        start local 2 // boolean skipWith
         0: .line 222
            aload 0 /* this */
            aload 1 /* name */
            iload 2 /* skipWith */
            iload 2 /* skipWith */
            iconst_0
            iconst_0
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findVar:(Ljava/lang/String;ZZZZ)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 2 // boolean skipWith
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1      name  Ljava/lang/String;
            0    1     2  skipWith  Z
    MethodParameters:
          Name  Flags
      name      
      skipWith  

  public final com.oracle.truffle.js.parser.env.Environment$VarRef findVar(java.lang.String, boolean, boolean, boolean, boolean);
    descriptor: (Ljava/lang/String;ZZZZ)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=10, locals=13, args_size=6
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // java.lang.String name
        start local 2 // boolean skipWith
        start local 3 // boolean skipEval
        start local 4 // boolean skipBlockScoped
        start local 5 // boolean skipGlobal
         0: .line 226
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 1 /* name */
            ldc "null"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 227
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            astore 6 /* current */
        start local 6 // com.oracle.truffle.js.parser.env.Environment current
         2: .line 228
            iconst_0
            istore 7 /* frameLevel */
        start local 7 // int frameLevel
         3: .line 229
            iconst_0
            istore 8 /* scopeLevel */
        start local 8 // int scopeLevel
         4: .line 230
            aconst_null
            astore 9 /* wrapClosure */
        start local 9 // com.oracle.truffle.js.parser.env.Environment$WrapClosure wrapClosure
         5: .line 231
            iconst_0
            istore 10 /* wrapFrameLevel */
        start local 10 // int wrapFrameLevel
         6: .line 233
      StackMap locals: com.oracle.truffle.js.parser.env.Environment java.lang.String int int int int com.oracle.truffle.js.parser.env.Environment int int com.oracle.truffle.js.parser.env.Environment$WrapClosure int
      StackMap stack:
            aload 6 /* current */
            instanceof com.oracle.truffle.js.parser.env.WithEnvironment
            ifeq 11
         7: .line 234
            iload 2 /* skipWith */
            ifne 38
         8: .line 235
            aload 0 /* this */
            aload 9 /* wrapClosure */
            aload 1 /* name */
            aload 6 /* current */
            checkcast com.oracle.truffle.js.parser.env.WithEnvironment
            invokevirtual com.oracle.truffle.js.parser.env.WithEnvironment.getWithVarName:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.js.parser.env.Environment.makeWithWrapClosure:(Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;Ljava/lang/String;Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
            astore 9 /* wrapClosure */
         9: .line 236
            iload 7 /* frameLevel */
            istore 10 /* wrapFrameLevel */
        10: .line 239
            goto 38
      StackMap locals:
      StackMap stack:
        11: aload 6 /* current */
            instanceof com.oracle.truffle.js.parser.env.GlobalEnvironment
            ifeq 18
        12: .line 246
            aload 6 /* current */
            checkcast com.oracle.truffle.js.parser.env.GlobalEnvironment
            astore 11 /* globalEnv */
        start local 11 // com.oracle.truffle.js.parser.env.GlobalEnvironment globalEnv
        13: .line 247
            aload 11 /* globalEnv */
            aload 1 /* name */
            invokevirtual com.oracle.truffle.js.parser.env.GlobalEnvironment.hasLexicalDeclaration:(Ljava/lang/String;)Z
            ifeq 15
            aload 1 /* name */
            invokestatic com.oracle.truffle.js.parser.env.GlobalEnvironment.isGlobalObjectConstant:(Ljava/lang/String;)Z
            ifne 15
        14: .line 248
            aload 0 /* this */
            aload 9 /* wrapClosure */
            iload 10 /* wrapFrameLevel */
            new com.oracle.truffle.js.parser.env.Environment$GlobalLexVarRef
            dup
            aload 0 /* this */
            aload 1 /* name */
            aload 11 /* globalEnv */
            aload 1 /* name */
            invokevirtual com.oracle.truffle.js.parser.env.GlobalEnvironment.hasConstDeclaration:(Ljava/lang/String;)Z
            invokespecial com.oracle.truffle.js.parser.env.Environment$GlobalLexVarRef.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;Ljava/lang/String;Z)V
            invokevirtual com.oracle.truffle.js.parser.env.Environment.wrapIn:(Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;ILcom/oracle/truffle/js/parser/env/Environment$VarRef;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        15: .line 249
      StackMap locals: com.oracle.truffle.js.parser.env.GlobalEnvironment
      StackMap stack:
            aload 11 /* globalEnv */
            aload 1 /* name */
            invokevirtual com.oracle.truffle.js.parser.env.GlobalEnvironment.hasVarDeclaration:(Ljava/lang/String;)Z
            ifne 38
            aload 1 /* name */
            invokestatic com.oracle.truffle.js.parser.env.GlobalEnvironment.isGlobalObjectConstant:(Ljava/lang/String;)Z
            ifne 38
        16: .line 250
            aload 0 /* this */
            aload 9 /* wrapClosure */
            aload 1 /* name */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.makeGlobalWrapClosure:(Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
            astore 9 /* wrapClosure */
        end local 11 // com.oracle.truffle.js.parser.env.GlobalEnvironment globalEnv
        17: .line 252
            goto 38
        18: .line 253
      StackMap locals:
      StackMap stack:
            aload 6 /* current */
            aload 1 /* name */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findBlockFrameSlot:(Ljava/lang/String;)Lcom/oracle/truffle/api/frame/FrameSlot;
            astore 11 /* slot */
        start local 11 // com.oracle.truffle.api.frame.FrameSlot slot
        19: .line 254
            aload 11 /* slot */
            ifnull 22
        20: .line 255
            iload 4 /* skipBlockScoped */
            ifeq 21
            aload 11 /* slot */
            invokestatic com.oracle.truffle.js.runtime.JSFrameUtil.isConst:(Lcom/oracle/truffle/api/frame/FrameSlot;)Z
            ifne 22
            aload 11 /* slot */
            invokestatic com.oracle.truffle.js.runtime.JSFrameUtil.isLet:(Lcom/oracle/truffle/api/frame/FrameSlot;)Z
            ifne 22
        21: .line 256
      StackMap locals: com.oracle.truffle.api.frame.FrameSlot
      StackMap stack:
            aload 0 /* this */
            aload 9 /* wrapClosure */
            iload 10 /* wrapFrameLevel */
            aload 0 /* this */
            aload 11 /* slot */
            iload 8 /* scopeLevel */
            iload 7 /* frameLevel */
            aload 1 /* name */
            aload 6 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.newFrameSlotVarRef:(Lcom/oracle/truffle/api/frame/FrameSlot;IILjava/lang/String;Lcom/oracle/truffle/js/parser/env/Environment;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            invokevirtual com.oracle.truffle.js.parser.env.Environment.wrapIn:(Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;ILcom/oracle/truffle/js/parser/env/Environment$VarRef;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        22: .line 259
      StackMap locals:
      StackMap stack:
            aload 6 /* current */
            instanceof com.oracle.truffle.js.parser.env.FunctionEnvironment
            ifeq 36
        23: .line 260
            aload 6 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            astore 12 /* fnEnv */
        start local 12 // com.oracle.truffle.js.parser.env.FunctionEnvironment fnEnv
        24: .line 261
            aload 12 /* fnEnv */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isNamedFunctionExpression:()Z
            ifeq 26
            aload 12 /* fnEnv */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getFunctionName:()Ljava/lang/String;
            aload 1 /* name */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 26
        25: .line 262
            aload 0 /* this */
            aload 9 /* wrapClosure */
            iload 10 /* wrapFrameLevel */
            new com.oracle.truffle.js.parser.env.Environment$FunctionCalleeVarRef
            dup
            aload 0 /* this */
            iload 8 /* scopeLevel */
            iload 7 /* frameLevel */
            aload 1 /* name */
            aload 6 /* current */
            invokespecial com.oracle.truffle.js.parser.env.Environment$FunctionCalleeVarRef.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;IILjava/lang/String;Lcom/oracle/truffle/js/parser/env/Environment;)V
            invokevirtual com.oracle.truffle.js.parser.env.Environment.wrapIn:(Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;ILcom/oracle/truffle/js/parser/env/Environment$VarRef;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        26: .line 264
      StackMap locals: com.oracle.truffle.js.parser.env.FunctionEnvironment
      StackMap stack:
            iload 3 /* skipEval */
            ifne 29
            aload 12 /* fnEnv */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isDynamicallyScoped:()Z
            ifeq 29
        27: .line 265
            aload 0 /* this */
            aload 9 /* wrapClosure */
            aload 1 /* name */
            iload 7 /* frameLevel */
            iload 8 /* scopeLevel */
            aload 6 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.makeEvalWrapClosure:(Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;Ljava/lang/String;IILcom/oracle/truffle/js/parser/env/Environment;)Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
            astore 9 /* wrapClosure */
        28: .line 266
            iload 7 /* frameLevel */
            istore 10 /* wrapFrameLevel */
        29: .line 268
      StackMap locals:
      StackMap stack:
            aload 12 /* fnEnv */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isGlobal:()Z
            ifne 33
            aload 12 /* fnEnv */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isEval:()Z
            ifne 33
            aload 1 /* name */
            ldc "arguments"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 33
        30: .line 269
            aload 12 /* fnEnv */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.hasArgumentsSlot:()Z
            ifeq 32
        31: .line 270
            aload 0 /* this */
            aload 9 /* wrapClosure */
            iload 10 /* wrapFrameLevel */
            new com.oracle.truffle.js.parser.env.Environment$ArgumentsVarRef
            dup
            aload 0 /* this */
            iload 8 /* scopeLevel */
            iload 7 /* frameLevel */
            aload 1 /* name */
            aload 6 /* current */
            invokespecial com.oracle.truffle.js.parser.env.Environment$ArgumentsVarRef.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;IILjava/lang/String;Lcom/oracle/truffle/js/parser/env/Environment;)V
            invokevirtual com.oracle.truffle.js.parser.env.Environment.wrapIn:(Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;ILcom/oracle/truffle/js/parser/env/Environment$VarRef;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        32: .line 272
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 33
            aload 12 /* fnEnv */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isArrowFunction:()Z
            ifne 33
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        33: .line 277
      StackMap locals:
      StackMap stack:
            iinc 7 /* frameLevel */ 1
        34: .line 278
            iconst_0
            istore 8 /* scopeLevel */
        end local 12 // com.oracle.truffle.js.parser.env.FunctionEnvironment fnEnv
        35: .line 279
            goto 38
      StackMap locals:
      StackMap stack:
        36: aload 6 /* current */
            instanceof com.oracle.truffle.js.parser.env.BlockEnvironment
            ifeq 38
        37: .line 280
            iinc 8 /* scopeLevel */ 1
        end local 11 // com.oracle.truffle.api.frame.FrameSlot slot
        38: .line 283
      StackMap locals:
      StackMap stack:
            aload 6 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getParent:()Lcom/oracle/truffle/js/parser/env/Environment;
            astore 6 /* current */
        39: .line 284
            aload 6 /* current */
            ifnonnull 6
        40: .line 286
            iload 5 /* skipGlobal */
            ifeq 42
        41: .line 287
            aconst_null
            areturn
        42: .line 290
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 9 /* wrapClosure */
            iload 10 /* wrapFrameLevel */
            new com.oracle.truffle.js.parser.env.Environment$GlobalVarRef
            dup
            aload 0 /* this */
            aload 1 /* name */
            invokespecial com.oracle.truffle.js.parser.env.Environment$GlobalVarRef.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;Ljava/lang/String;)V
            invokevirtual com.oracle.truffle.js.parser.env.Environment.wrapIn:(Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;ILcom/oracle/truffle/js/parser/env/Environment$VarRef;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 10 // int wrapFrameLevel
        end local 9 // com.oracle.truffle.js.parser.env.Environment$WrapClosure wrapClosure
        end local 8 // int scopeLevel
        end local 7 // int frameLevel
        end local 6 // com.oracle.truffle.js.parser.env.Environment current
        end local 5 // boolean skipGlobal
        end local 4 // boolean skipBlockScoped
        end local 3 // boolean skipEval
        end local 2 // boolean skipWith
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   43     0             this  Lcom/oracle/truffle/js/parser/env/Environment;
            0   43     1             name  Ljava/lang/String;
            0   43     2         skipWith  Z
            0   43     3         skipEval  Z
            0   43     4  skipBlockScoped  Z
            0   43     5       skipGlobal  Z
            2   43     6          current  Lcom/oracle/truffle/js/parser/env/Environment;
            3   43     7       frameLevel  I
            4   43     8       scopeLevel  I
            5   43     9      wrapClosure  Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
            6   43    10   wrapFrameLevel  I
           13   17    11        globalEnv  Lcom/oracle/truffle/js/parser/env/GlobalEnvironment;
           19   38    11             slot  Lcom/oracle/truffle/api/frame/FrameSlot;
           24   35    12            fnEnv  Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
    MethodParameters:
                 Name  Flags
      name             
      skipWith         
      skipEval         
      skipBlockScoped  
      skipGlobal       

  void ensureFrameLevelAvailable(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // int frameLevel
         0: .line 294
            iconst_0
            istore 2 /* level */
        start local 2 // int level
         1: .line 295
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            astore 3 /* currentFunction */
        start local 3 // com.oracle.truffle.js.parser.env.FunctionEnvironment currentFunction
         2: goto 5
         3: .line 296
      StackMap locals: int com.oracle.truffle.js.parser.env.FunctionEnvironment
      StackMap stack:
            aload 3 /* currentFunction */
            iconst_1
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.setNeedsParentFrame:(Z)V
         4: .line 295
            aload 3 /* currentFunction */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getParentFunction:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            astore 3 /* currentFunction */
            iinc 2 /* level */ 1
      StackMap locals:
      StackMap stack:
         5: aload 3 /* currentFunction */
            ifnull 6
            iload 2 /* level */
            iload 1 /* frameLevel */
            if_icmplt 3
        end local 3 // com.oracle.truffle.js.parser.env.FunctionEnvironment currentFunction
         6: .line 298
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int level
        end local 1 // int frameLevel
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    7     0             this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    7     1       frameLevel  I
            1    7     2            level  I
            2    6     3  currentFunction  Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
    MethodParameters:
            Name  Flags
      frameLevel  

  private com.oracle.truffle.js.parser.env.Environment$WrapClosure makeEvalWrapClosure(com.oracle.truffle.js.parser.env.Environment$WrapClosure, java.lang.String, int, int, com.oracle.truffle.js.parser.env.Environment);
    descriptor: (Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;Ljava/lang/String;IILcom/oracle/truffle/js/parser/env/Environment;)Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=7, args_size=6
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.js.parser.env.Environment$WrapClosure wrapClosure
        start local 2 // java.lang.String name
        start local 3 // int frameLevel
        start local 4 // int scopeLevel
        start local 5 // com.oracle.truffle.js.parser.env.Environment current
         0: .line 301
            aload 5 /* current */
            ldc "<evalscope>"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findBlockFrameSlot:(Ljava/lang/String;)Lcom/oracle/truffle/api/frame/FrameSlot;
            astore 6 /* dynamicScopeSlot */
        start local 6 // com.oracle.truffle.api.frame.FrameSlot dynamicScopeSlot
         1: .line 302
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 2
            aload 6 /* dynamicScopeSlot */
            ifnonnull 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 303
      StackMap locals: com.oracle.truffle.api.frame.FrameSlot
      StackMap stack:
            aload 1 /* wrapClosure */
            new com.oracle.truffle.js.parser.env.Environment$1
            dup
            aload 0 /* this */
            aload 6 /* dynamicScopeSlot */
            iload 3 /* frameLevel */
            iload 4 /* scopeLevel */
            aload 2 /* name */
            invokespecial com.oracle.truffle.js.parser.env.Environment$1.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;Lcom/oracle/truffle/api/frame/FrameSlot;IILjava/lang/String;)V
            invokestatic com.oracle.truffle.js.parser.env.Environment$WrapClosure.compose:(Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;)Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
            areturn
        end local 6 // com.oracle.truffle.api.frame.FrameSlot dynamicScopeSlot
        end local 5 // com.oracle.truffle.js.parser.env.Environment current
        end local 4 // int scopeLevel
        end local 3 // int frameLevel
        end local 2 // java.lang.String name
        end local 1 // com.oracle.truffle.js.parser.env.Environment$WrapClosure wrapClosure
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    3     0              this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    3     1       wrapClosure  Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
            0    3     2              name  Ljava/lang/String;
            0    3     3        frameLevel  I
            0    3     4        scopeLevel  I
            0    3     5           current  Lcom/oracle/truffle/js/parser/env/Environment;
            1    3     6  dynamicScopeSlot  Lcom/oracle/truffle/api/frame/FrameSlot;
    MethodParameters:
             Name  Flags
      wrapClosure  
      name         
      frameLevel   
      scopeLevel   
      current      

  private com.oracle.truffle.js.parser.env.Environment$WrapClosure makeWithWrapClosure(com.oracle.truffle.js.parser.env.Environment$WrapClosure, java.lang.String, java.lang.String);
    descriptor: (Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;Ljava/lang/String;Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.js.parser.env.Environment$WrapClosure wrapClosure
        start local 2 // java.lang.String name
        start local 3 // java.lang.String withVarName
         0: .line 325
            aload 1 /* wrapClosure */
            new com.oracle.truffle.js.parser.env.Environment$2
            dup
            aload 0 /* this */
            aload 2 /* name */
            aload 3 /* withVarName */
            invokespecial com.oracle.truffle.js.parser.env.Environment$2.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;Ljava/lang/String;Ljava/lang/String;)V
            invokestatic com.oracle.truffle.js.parser.env.Environment$WrapClosure.compose:(Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;)Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
            areturn
        end local 3 // java.lang.String withVarName
        end local 2 // java.lang.String name
        end local 1 // com.oracle.truffle.js.parser.env.Environment$WrapClosure wrapClosure
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1  wrapClosure  Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
            0    1     2         name  Ljava/lang/String;
            0    1     3  withVarName  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      wrapClosure  
      name         
      withVarName  

  private com.oracle.truffle.js.parser.env.Environment$WrapClosure makeGlobalWrapClosure(com.oracle.truffle.js.parser.env.Environment$WrapClosure, java.lang.String);
    descriptor: (Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;Ljava/lang/String;)Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.js.parser.env.Environment$WrapClosure wrapClosure
        start local 2 // java.lang.String name
         0: .line 368
            aload 1 /* wrapClosure */
            new com.oracle.truffle.js.parser.env.Environment$3
            dup
            aload 0 /* this */
            aload 2 /* name */
            invokespecial com.oracle.truffle.js.parser.env.Environment$3.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;Ljava/lang/String;)V
            invokestatic com.oracle.truffle.js.parser.env.Environment$WrapClosure.compose:(Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;)Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
            areturn
        end local 2 // java.lang.String name
        end local 1 // com.oracle.truffle.js.parser.env.Environment$WrapClosure wrapClosure
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1  wrapClosure  Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
            0    1     2         name  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      wrapClosure  
      name         

  private com.oracle.truffle.js.parser.env.Environment$VarRef wrapIn(com.oracle.truffle.js.parser.env.Environment$WrapClosure, int, com.oracle.truffle.js.parser.env.Environment$VarRef);
    descriptor: (Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;ILcom/oracle/truffle/js/parser/env/Environment$VarRef;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.js.parser.env.Environment$WrapClosure wrapClosure
        start local 2 // int wrapFrameLevel
        start local 3 // com.oracle.truffle.js.parser.env.Environment$VarRef wrappee
         0: .line 390
            aload 1 /* wrapClosure */
            ifnull 3
         1: .line 391
            aload 0 /* this */
            iload 2 /* wrapFrameLevel */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.ensureFrameLevelAvailable:(I)V
         2: .line 392
            new com.oracle.truffle.js.parser.env.Environment$WrappedVarRef
            dup
            aload 0 /* this */
            aload 3 /* wrappee */
            invokevirtual com.oracle.truffle.js.parser.env.Environment$VarRef.getName:()Ljava/lang/String;
            aload 3 /* wrappee */
            aload 1 /* wrapClosure */
            invokespecial com.oracle.truffle.js.parser.env.Environment$WrappedVarRef.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;Ljava/lang/String;Lcom/oracle/truffle/js/parser/env/Environment$VarRef;Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;)V
            areturn
         3: .line 394
      StackMap locals:
      StackMap stack:
            aload 3 /* wrappee */
            areturn
        end local 3 // com.oracle.truffle.js.parser.env.Environment$VarRef wrappee
        end local 2 // int wrapFrameLevel
        end local 1 // com.oracle.truffle.js.parser.env.Environment$WrapClosure wrapClosure
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    4     1     wrapClosure  Lcom/oracle/truffle/js/parser/env/Environment$WrapClosure;
            0    4     2  wrapFrameLevel  I
            0    4     3         wrappee  Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    MethodParameters:
                Name  Flags
      wrapClosure     
      wrapFrameLevel  
      wrappee         

  protected abstract com.oracle.truffle.api.frame.FrameSlot findBlockFrameSlot(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/api/frame/FrameSlot;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      name  

  public com.oracle.truffle.api.frame.FrameDescriptor getBlockFrameDescriptor();
    descriptor: ()Lcom/oracle/truffle/api/frame/FrameDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 400
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getFunctionFrameDescriptor:()Lcom/oracle/truffle/api/frame/FrameDescriptor;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  private com.oracle.truffle.js.parser.env.Environment$VarRef newFrameSlotVarRef(com.oracle.truffle.api.frame.FrameSlot, int, int, java.lang.String, com.oracle.truffle.js.parser.env.Environment);
    descriptor: (Lcom/oracle/truffle/api/frame/FrameSlot;IILjava/lang/String;Lcom/oracle/truffle/js/parser/env/Environment;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=6, args_size=6
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.api.frame.FrameSlot slot
        start local 2 // int scopeLevel
        start local 3 // int frameLevel
        start local 4 // java.lang.String name
        start local 5 // com.oracle.truffle.js.parser.env.Environment current
         0: .line 404
            aload 5 /* current */
            instanceof com.oracle.truffle.js.parser.env.DebugEnvironment
            ifeq 2
         1: .line 405
            new com.oracle.truffle.js.parser.env.Environment$LazyFrameSlotVarRef
            dup
            aload 0 /* this */
            aload 1 /* slot */
            iload 2 /* scopeLevel */
            iload 3 /* frameLevel */
            aload 4 /* name */
            aload 5 /* current */
            invokespecial com.oracle.truffle.js.parser.env.Environment$LazyFrameSlotVarRef.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;Lcom/oracle/truffle/api/frame/FrameSlot;IILjava/lang/String;Lcom/oracle/truffle/js/parser/env/Environment;)V
            areturn
         2: .line 406
      StackMap locals:
      StackMap stack:
            aload 1 /* slot */
            aload 5 /* current */
            invokestatic com.oracle.truffle.js.parser.env.Environment.isMappedArgumentsParameter:(Lcom/oracle/truffle/api/frame/FrameSlot;Lcom/oracle/truffle/js/parser/env/Environment;)Z
            ifeq 4
         3: .line 407
            new com.oracle.truffle.js.parser.env.Environment$MappedArgumentVarRef
            dup
            aload 0 /* this */
            aload 1 /* slot */
            iload 2 /* scopeLevel */
            iload 3 /* frameLevel */
            aload 4 /* name */
            aload 5 /* current */
            invokespecial com.oracle.truffle.js.parser.env.Environment$MappedArgumentVarRef.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;Lcom/oracle/truffle/api/frame/FrameSlot;IILjava/lang/String;Lcom/oracle/truffle/js/parser/env/Environment;)V
            areturn
         4: .line 409
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.js.parser.env.Environment$FrameSlotVarRef
            dup
            aload 0 /* this */
            aload 1 /* slot */
            iload 2 /* scopeLevel */
            iload 3 /* frameLevel */
            aload 4 /* name */
            aload 5 /* current */
            invokespecial com.oracle.truffle.js.parser.env.Environment$FrameSlotVarRef.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;Lcom/oracle/truffle/api/frame/FrameSlot;IILjava/lang/String;Lcom/oracle/truffle/js/parser/env/Environment;)V
            areturn
        end local 5 // com.oracle.truffle.js.parser.env.Environment current
        end local 4 // java.lang.String name
        end local 3 // int frameLevel
        end local 2 // int scopeLevel
        end local 1 // com.oracle.truffle.api.frame.FrameSlot slot
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    5     1        slot  Lcom/oracle/truffle/api/frame/FrameSlot;
            0    5     2  scopeLevel  I
            0    5     3  frameLevel  I
            0    5     4        name  Ljava/lang/String;
            0    5     5     current  Lcom/oracle/truffle/js/parser/env/Environment;
    MethodParameters:
            Name  Flags
      slot        
      scopeLevel  
      frameLevel  
      name        
      current     

  private com.oracle.truffle.js.nodes.JavaScriptNode findLocalVarNodeForArguments(com.oracle.truffle.js.parser.env.Environment, int, int);
    descriptor: (Lcom/oracle/truffle/js/parser/env/Environment;II)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=8, args_size=4
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.js.parser.env.Environment current
        start local 2 // int frameLevel
        start local 3 // int scopeLevel
         0: .line 414
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 1 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getArgumentsSlot:()Lcom/oracle/truffle/api/frame/FrameSlot;
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 415
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* current */
            iload 2 /* frameLevel */
            iload 3 /* scopeLevel */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.createReadArgumentObject:(Lcom/oracle/truffle/js/parser/env/Environment;II)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            astore 4 /* argumentsVarNode */
        start local 4 // com.oracle.truffle.js.nodes.JavaScriptNode argumentsVarNode
         2: .line 416
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isDirectArgumentsAccess:()Z
            ifeq 11
         3: .line 417
            aload 1 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            astore 5 /* currentFunction */
        start local 5 // com.oracle.truffle.js.parser.env.FunctionEnvironment currentFunction
         4: .line 418
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.context:Lcom/oracle/truffle/js/runtime/JSContext;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.isStrictMode:()Z
            aload 5 /* currentFunction */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getLeadingArgumentCount:()I
         5: .line 419
            aload 5 /* currentFunction */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getTrailingArgumentCount:()I
         6: .line 418
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createArgumentsObjectNode:(Lcom/oracle/truffle/js/runtime/JSContext;ZII)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            astore 6 /* createArgumentsObjectNode */
        start local 6 // com.oracle.truffle.js.nodes.JavaScriptNode createArgumentsObjectNode
         7: .line 420
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            aload 5 /* currentFunction */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getArgumentsSlot:()Lcom/oracle/truffle/api/frame/FrameSlot;
            iload 2 /* frameLevel */
            iload 3 /* scopeLevel */
            aload 5 /* currentFunction */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getFunctionFrameDescriptor:()Lcom/oracle/truffle/api/frame/FrameDescriptor;
         8: .line 421
            aload 0 /* this */
            iload 2 /* frameLevel */
            iload 3 /* scopeLevel */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getParentSlots:(II)[Lcom/oracle/truffle/api/frame/FrameSlot;
            aload 6 /* createArgumentsObjectNode */
         9: .line 420
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createWriteFrameSlot:(Lcom/oracle/truffle/api/frame/FrameSlot;IILcom/oracle/truffle/api/frame/FrameDescriptor;[Lcom/oracle/truffle/api/frame/FrameSlot;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/access/JSWriteFrameSlotNode;
            astore 7 /* writeNode */
        start local 7 // com.oracle.truffle.js.nodes.JavaScriptNode writeNode
        10: .line 422
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            aload 7 /* writeNode */
            aload 4 /* argumentsVarNode */
            aload 5 /* currentFunction */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getLeadingArgumentCount:()I
            aload 5 /* currentFunction */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getTrailingArgumentCount:()I
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createAccessArgumentsArrayDirectly:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;II)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            areturn
        end local 7 // com.oracle.truffle.js.nodes.JavaScriptNode writeNode
        end local 6 // com.oracle.truffle.js.nodes.JavaScriptNode createArgumentsObjectNode
        end local 5 // com.oracle.truffle.js.parser.env.FunctionEnvironment currentFunction
        11: .line 424
      StackMap locals: com.oracle.truffle.js.nodes.JavaScriptNode
      StackMap stack:
            aload 4 /* argumentsVarNode */
            areturn
        end local 4 // com.oracle.truffle.js.nodes.JavaScriptNode argumentsVarNode
        end local 3 // int scopeLevel
        end local 2 // int frameLevel
        end local 1 // com.oracle.truffle.js.parser.env.Environment current
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   12     0                       this  Lcom/oracle/truffle/js/parser/env/Environment;
            0   12     1                    current  Lcom/oracle/truffle/js/parser/env/Environment;
            0   12     2                 frameLevel  I
            0   12     3                 scopeLevel  I
            2   12     4           argumentsVarNode  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            4   11     5            currentFunction  Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            7   11     6  createArgumentsObjectNode  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
           10   11     7                  writeNode  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    MethodParameters:
            Name  Flags
      current     
      frameLevel  
      scopeLevel  

  private static boolean isMappedArgumentsParameter(com.oracle.truffle.api.frame.FrameSlot, com.oracle.truffle.js.parser.env.Environment);
    descriptor: (Lcom/oracle/truffle/api/frame/FrameSlot;Lcom/oracle/truffle/js/parser/env/Environment;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.frame.FrameSlot slot
        start local 1 // com.oracle.truffle.js.parser.env.Environment current
         0: .line 429
            aload 1 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            astore 2 /* function */
        start local 2 // com.oracle.truffle.js.parser.env.FunctionEnvironment function
         1: .line 430
            aload 2 /* function */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getArgumentsSlot:()Lcom/oracle/truffle/api/frame/FrameSlot;
            ifnull 2
            aload 2 /* function */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isStrictMode:()Z
            ifne 2
            aload 2 /* function */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.hasSimpleParameterList:()Z
            ifeq 2
            aload 2 /* function */
            aload 0 /* slot */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isParam:(Lcom/oracle/truffle/api/frame/FrameSlot;)Z
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: com.oracle.truffle.js.parser.env.FunctionEnvironment
      StackMap stack:
         2: iconst_0
            ireturn
        end local 2 // com.oracle.truffle.js.parser.env.FunctionEnvironment function
        end local 1 // com.oracle.truffle.js.parser.env.Environment current
        end local 0 // com.oracle.truffle.api.frame.FrameSlot slot
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      slot  Lcom/oracle/truffle/api/frame/FrameSlot;
            0    3     1   current  Lcom/oracle/truffle/js/parser/env/Environment;
            1    3     2  function  Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
    MethodParameters:
         Name  Flags
      slot     
      current  

  private com.oracle.truffle.js.nodes.JavaScriptNode createReadParameterFromMappedArguments(com.oracle.truffle.js.parser.env.Environment, int, int, com.oracle.truffle.api.frame.FrameSlot);
    descriptor: (Lcom/oracle/truffle/js/parser/env/Environment;IILcom/oracle/truffle/api/frame/FrameSlot;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.js.parser.env.Environment current
        start local 2 // int frameLevel
        start local 3 // int scopeLevel
        start local 4 // com.oracle.truffle.api.frame.FrameSlot slot
         0: .line 434
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 1 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.hasSimpleParameterList:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 435
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 2
            aload 1 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isDirectArgumentsAccess:()Z
            ifeq 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 436
      StackMap locals:
      StackMap stack:
            aload 1 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            aload 4 /* slot */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getParameterIndex:(Lcom/oracle/truffle/api/frame/FrameSlot;)I
            istore 5 /* parameterIndex */
        start local 5 // int parameterIndex
         3: .line 437
            aload 0 /* this */
            aload 1 /* current */
            iload 2 /* frameLevel */
            iload 3 /* scopeLevel */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.createReadArgumentObject:(Lcom/oracle/truffle/js/parser/env/Environment;II)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            astore 6 /* readArgumentsObject */
        start local 6 // com.oracle.truffle.js.nodes.JavaScriptNode readArgumentsObject
         4: .line 438
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.context:Lcom/oracle/truffle/js/runtime/JSContext;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            aload 6 /* readArgumentsObject */
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.copy:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            iload 5 /* parameterIndex */
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createConstantInteger:(I)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createReadElementNode:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/access/ReadElementNode;
            astore 7 /* readArgumentsObjectElement */
        start local 7 // com.oracle.truffle.js.nodes.access.ReadElementNode readArgumentsObjectElement
         5: .line 439
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            iload 5 /* parameterIndex */
            aload 7 /* readArgumentsObjectElement */
            aload 6 /* readArgumentsObject */
            aload 4 /* slot */
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createGuardDisconnectedArgumentRead:(ILcom/oracle/truffle/js/nodes/access/ReadElementNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/api/frame/FrameSlot;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            areturn
        end local 7 // com.oracle.truffle.js.nodes.access.ReadElementNode readArgumentsObjectElement
        end local 6 // com.oracle.truffle.js.nodes.JavaScriptNode readArgumentsObject
        end local 5 // int parameterIndex
        end local 4 // com.oracle.truffle.api.frame.FrameSlot slot
        end local 3 // int scopeLevel
        end local 2 // int frameLevel
        end local 1 // com.oracle.truffle.js.parser.env.Environment current
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0    6     0                        this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    6     1                     current  Lcom/oracle/truffle/js/parser/env/Environment;
            0    6     2                  frameLevel  I
            0    6     3                  scopeLevel  I
            0    6     4                        slot  Lcom/oracle/truffle/api/frame/FrameSlot;
            3    6     5              parameterIndex  I
            4    6     6         readArgumentsObject  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            5    6     7  readArgumentsObjectElement  Lcom/oracle/truffle/js/nodes/access/ReadElementNode;
    MethodParameters:
            Name  Flags
      current     
      frameLevel  
      scopeLevel  
      slot        

  private com.oracle.truffle.js.nodes.JavaScriptNode createWriteParameterFromMappedArguments(com.oracle.truffle.js.parser.env.Environment, int, int, com.oracle.truffle.api.frame.FrameSlot, com.oracle.truffle.js.nodes.JavaScriptNode);
    descriptor: (Lcom/oracle/truffle/js/parser/env/Environment;IILcom/oracle/truffle/api/frame/FrameSlot;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=6
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.js.parser.env.Environment current
        start local 2 // int frameLevel
        start local 3 // int scopeLevel
        start local 4 // com.oracle.truffle.api.frame.FrameSlot slot
        start local 5 // com.oracle.truffle.js.nodes.JavaScriptNode rhs
         0: .line 443
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 1 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.hasSimpleParameterList:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 444
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 2
            aload 1 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isDirectArgumentsAccess:()Z
            ifeq 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 445
      StackMap locals:
      StackMap stack:
            aload 1 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            aload 4 /* slot */
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getParameterIndex:(Lcom/oracle/truffle/api/frame/FrameSlot;)I
            istore 6 /* parameterIndex */
        start local 6 // int parameterIndex
         3: .line 446
            aload 0 /* this */
            aload 1 /* current */
            iload 2 /* frameLevel */
            iload 3 /* scopeLevel */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.createReadArgumentObject:(Lcom/oracle/truffle/js/parser/env/Environment;II)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            astore 7 /* readArgumentsObject */
        start local 7 // com.oracle.truffle.js.nodes.JavaScriptNode readArgumentsObject
         4: .line 447
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            aload 7 /* readArgumentsObject */
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.copy:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            iload 6 /* parameterIndex */
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createConstantInteger:(I)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            aconst_null
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.context:Lcom/oracle/truffle/js/runtime/JSContext;
            iconst_0
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createWriteElementNode:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/runtime/JSContext;Z)Lcom/oracle/truffle/js/nodes/access/WriteElementNode;
            astore 8 /* writeArgumentsObjectElement */
        start local 8 // com.oracle.truffle.js.nodes.access.WriteElementNode writeArgumentsObjectElement
         5: .line 448
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.factory:Lcom/oracle/truffle/js/nodes/NodeFactory;
            iload 6 /* parameterIndex */
            aload 8 /* writeArgumentsObjectElement */
            aload 7 /* readArgumentsObject */
            aload 5 /* rhs */
            aload 4 /* slot */
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createGuardDisconnectedArgumentWrite:(ILcom/oracle/truffle/js/nodes/access/WriteElementNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/js/nodes/JavaScriptNode;Lcom/oracle/truffle/api/frame/FrameSlot;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            areturn
        end local 8 // com.oracle.truffle.js.nodes.access.WriteElementNode writeArgumentsObjectElement
        end local 7 // com.oracle.truffle.js.nodes.JavaScriptNode readArgumentsObject
        end local 6 // int parameterIndex
        end local 5 // com.oracle.truffle.js.nodes.JavaScriptNode rhs
        end local 4 // com.oracle.truffle.api.frame.FrameSlot slot
        end local 3 // int scopeLevel
        end local 2 // int frameLevel
        end local 1 // com.oracle.truffle.js.parser.env.Environment current
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0    6     0                         this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    6     1                      current  Lcom/oracle/truffle/js/parser/env/Environment;
            0    6     2                   frameLevel  I
            0    6     3                   scopeLevel  I
            0    6     4                         slot  Lcom/oracle/truffle/api/frame/FrameSlot;
            0    6     5                          rhs  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            3    6     6               parameterIndex  I
            4    6     7          readArgumentsObject  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            5    6     8  writeArgumentsObjectElement  Lcom/oracle/truffle/js/nodes/access/WriteElementNode;
    MethodParameters:
            Name  Flags
      current     
      frameLevel  
      scopeLevel  
      slot        
      rhs         

  private com.oracle.truffle.js.nodes.JavaScriptNode createReadArgumentObject(com.oracle.truffle.js.parser.env.Environment, int, int);
    descriptor: (Lcom/oracle/truffle/js/parser/env/Environment;II)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.js.parser.env.Environment current
        start local 2 // int frameLevel
        start local 3 // int scopeLevel
         0: .line 452
            aload 0 /* this */
            aload 1 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getArgumentsSlot:()Lcom/oracle/truffle/api/frame/FrameSlot;
            iload 2 /* frameLevel */
            iload 3 /* scopeLevel */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.createLocal:(Lcom/oracle/truffle/api/frame/FrameSlot;II)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            areturn
        end local 3 // int scopeLevel
        end local 2 // int frameLevel
        end local 1 // com.oracle.truffle.js.parser.env.Environment current
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1     current  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     2  frameLevel  I
            0    1     3  scopeLevel  I
    MethodParameters:
            Name  Flags
      current     
      frameLevel  
      scopeLevel  

  public final com.oracle.truffle.js.parser.env.Environment getParent();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/Environment;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 456
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.env.Environment.parent:Lcom/oracle/truffle/js/parser/env/Environment;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public abstract com.oracle.truffle.js.parser.env.FunctionEnvironment function();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public final com.oracle.truffle.js.parser.env.Environment getParentAt(int, int);
    descriptor: (II)Lcom/oracle/truffle/js/parser/env/Environment;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=6, args_size=3
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // int frameLevel
        start local 2 // int scopeLevel
         0: .line 462
            aload 0 /* this */
            astore 3 /* current */
        start local 3 // com.oracle.truffle.js.parser.env.Environment current
         1: .line 463
            iconst_0
            istore 4 /* currentFrameLevel */
        start local 4 // int currentFrameLevel
         2: .line 464
            iconst_0
            istore 5 /* currentScopeLevel */
        start local 5 // int currentScopeLevel
         3: .line 466
      StackMap locals: com.oracle.truffle.js.parser.env.Environment int int
      StackMap stack:
            iload 4 /* currentFrameLevel */
            iload 1 /* frameLevel */
            if_icmpne 5
            iload 5 /* currentScopeLevel */
            iload 2 /* scopeLevel */
            if_icmpne 5
         4: .line 467
            aload 3 /* current */
            areturn
         5: .line 469
      StackMap locals:
      StackMap stack:
            aload 3 /* current */
            instanceof com.oracle.truffle.js.parser.env.FunctionEnvironment
            ifeq 9
         6: .line 470
            iinc 4 /* currentFrameLevel */ 1
         7: .line 471
            iconst_0
            istore 5 /* currentScopeLevel */
         8: .line 472
            goto 11
      StackMap locals:
      StackMap stack:
         9: aload 3 /* current */
            instanceof com.oracle.truffle.js.parser.env.BlockEnvironment
            ifeq 11
        10: .line 473
            iinc 5 /* currentScopeLevel */ 1
        11: .line 475
      StackMap locals:
      StackMap stack:
            aload 3 /* current */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getParent:()Lcom/oracle/truffle/js/parser/env/Environment;
            astore 3 /* current */
        12: .line 476
            aload 3 /* current */
            ifnonnull 3
        13: .line 478
            aconst_null
            areturn
        end local 5 // int currentScopeLevel
        end local 4 // int currentFrameLevel
        end local 3 // com.oracle.truffle.js.parser.env.Environment current
        end local 2 // int scopeLevel
        end local 1 // int frameLevel
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   14     0               this  Lcom/oracle/truffle/js/parser/env/Environment;
            0   14     1         frameLevel  I
            0   14     2         scopeLevel  I
            1   14     3            current  Lcom/oracle/truffle/js/parser/env/Environment;
            2   14     4  currentFrameLevel  I
            3   14     5  currentScopeLevel  I
    MethodParameters:
            Name  Flags
      frameLevel  
      scopeLevel  

  public com.oracle.truffle.js.parser.env.Environment$VarRef createTempVar();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 482
            aload 0 /* this */
            ldc "tmp"
            invokevirtual com.oracle.truffle.js.parser.env.Environment.declareTempVar:(Ljava/lang/String;)Lcom/oracle/truffle/api/frame/FrameSlot;
            astore 1 /* var */
        start local 1 // com.oracle.truffle.api.frame.FrameSlot var
         1: .line 483
            aload 0 /* this */
            aload 1 /* var */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.findTempVar:(Lcom/oracle/truffle/api/frame/FrameSlot;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
            areturn
        end local 1 // com.oracle.truffle.api.frame.FrameSlot var
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/env/Environment;
            1    2     1   var  Lcom/oracle/truffle/api/frame/FrameSlot;

  public com.oracle.truffle.js.parser.env.Environment$VarRef findTempVar(com.oracle.truffle.api.frame.FrameSlot);
    descriptor: (Lcom/oracle/truffle/api/frame/FrameSlot;)Lcom/oracle/truffle/js/parser/env/Environment$VarRef;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.truffle.api.frame.FrameSlot var
         0: .line 487
            new com.oracle.truffle.js.parser.env.Environment$4
            dup
            aload 0 /* this */
            aload 1 /* var */
            invokevirtual com.oracle.truffle.api.frame.FrameSlot.getIdentifier:()Ljava/lang/Object;
            checkcast java.lang.String
            aload 1 /* var */
            invokespecial com.oracle.truffle.js.parser.env.Environment$4.<init>:(Lcom/oracle/truffle/js/parser/env/Environment;Ljava/lang/String;Lcom/oracle/truffle/api/frame/FrameSlot;)V
            areturn
        end local 1 // com.oracle.truffle.api.frame.FrameSlot var
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1   var  Lcom/oracle/truffle/api/frame/FrameSlot;
    MethodParameters:
      Name  Flags
      var   

  private com.oracle.truffle.api.frame.FrameSlot declareTempVar(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/api/frame/FrameSlot;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // java.lang.String prefix
         0: .line 521
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "<"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* prefix */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getFunctionFrameDescriptor:()Lcom/oracle/truffle/api/frame/FrameDescriptor;
            invokevirtual com.oracle.truffle.api.frame.FrameDescriptor.getSize:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ">"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.js.parser.env.Environment.declareLocalVar:(Ljava/lang/Object;)Lcom/oracle/truffle/api/frame/FrameSlot;
            areturn
        end local 1 // java.lang.String prefix
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    1     1  prefix  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      prefix  

  public com.oracle.truffle.api.frame.FrameDescriptor getFunctionFrameDescriptor();
    descriptor: ()Lcom/oracle/truffle/api/frame/FrameDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 525
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getFunctionFrameDescriptor:()Lcom/oracle/truffle/api/frame/FrameDescriptor;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public boolean isStrictMode();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 529
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.isStrictMode:()Z
            ireturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public int getScopeLevel();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 533
            iconst_0
            ireturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public com.oracle.truffle.api.frame.FrameSlot[] getParentSlots();
    descriptor: ()[Lcom/oracle/truffle/api/frame/FrameSlot;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 537
            new java.lang.UnsupportedOperationException
            dup
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public final com.oracle.truffle.api.frame.FrameSlot[] getParentSlots(int, int);
    descriptor: (II)[Lcom/oracle/truffle/api/frame/FrameSlot;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // int frameLevel
        start local 2 // int scopeLevel
         0: .line 541
            iload 2 /* scopeLevel */
            ifne 2
         1: .line 542
            getstatic com.oracle.truffle.js.nodes.access.ScopeFrameNode.EMPTY_FRAME_SLOT_ARRAY:[Lcom/oracle/truffle/api/frame/FrameSlot;
            areturn
         2: .line 544
      StackMap locals:
      StackMap stack:
            iload 1 /* frameLevel */
            ifle 4
         3: .line 545
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getParent:()Lcom/oracle/truffle/js/parser/env/Environment;
            iload 1 /* frameLevel */
            iconst_1
            isub
            iload 2 /* scopeLevel */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getParentSlots:(II)[Lcom/oracle/truffle/api/frame/FrameSlot;
            areturn
         4: .line 547
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getParentSlots:()[Lcom/oracle/truffle/api/frame/FrameSlot;
            astore 3 /* parentSlots */
        start local 3 // com.oracle.truffle.api.frame.FrameSlot[] parentSlots
         5: .line 548
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 6
            aload 3 /* parentSlots */
            arraylength
            iload 2 /* scopeLevel */
            if_icmpge 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 549
      StackMap locals: com.oracle.truffle.api.frame.FrameSlot[]
      StackMap stack:
            aload 3 /* parentSlots */
            arraylength
            iload 2 /* scopeLevel */
            if_icmpne 8
         7: .line 550
            aload 3 /* parentSlots */
            areturn
         8: .line 552
      StackMap locals:
      StackMap stack:
            aload 3 /* parentSlots */
            iload 2 /* scopeLevel */
            invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
            checkcast com.oracle.truffle.api.frame.FrameSlot[]
            areturn
        end local 3 // com.oracle.truffle.api.frame.FrameSlot[] parentSlots
        end local 2 // int scopeLevel
        end local 1 // int frameLevel
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    9     1   frameLevel  I
            0    9     2   scopeLevel  I
            5    9     3  parentSlots  [Lcom/oracle/truffle/api/frame/FrameSlot;
    MethodParameters:
            Name  Flags
      frameLevel  
      scopeLevel  

  public void addFrameSlotsFromSymbols(java.lang.Iterable<com.oracle.js.parser.ir.Symbol>);
    descriptor: (Ljava/lang/Iterable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // java.lang.Iterable symbols
         0: .line 557
            aload 0 /* this */
            aload 1 /* symbols */
            iconst_0
            invokevirtual com.oracle.truffle.js.parser.env.Environment.addFrameSlotsFromSymbols:(Ljava/lang/Iterable;Z)V
         1: .line 558
            return
        end local 1 // java.lang.Iterable symbols
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    2     1  symbols  Ljava/lang/Iterable<Lcom/oracle/js/parser/ir/Symbol;>;
    Signature: (Ljava/lang/Iterable<Lcom/oracle/js/parser/ir/Symbol;>;)V
    MethodParameters:
         Name  Flags
      symbols  

  public void addFrameSlotsFromSymbols(java.lang.Iterable<com.oracle.js.parser.ir.Symbol>, );
    descriptor: (Ljava/lang/Iterable;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // java.lang.Iterable symbols
        start local 2 // boolean onlyBlockScoped
         0: .line 561
            aload 1 /* symbols */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: com.oracle.truffle.js.parser.env.Environment java.lang.Iterable int top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.js.parser.ir.Symbol
            astore 3 /* symbol */
        start local 3 // com.oracle.js.parser.ir.Symbol symbol
         2: .line 562
            aload 3 /* symbol */
            invokevirtual com.oracle.js.parser.ir.Symbol.isBlockScoped:()Z
            ifne 3
            iload 2 /* onlyBlockScoped */
            ifne 4
            aload 3 /* symbol */
            invokevirtual com.oracle.js.parser.ir.Symbol.isVar:()Z
            ifeq 4
            aload 3 /* symbol */
            invokevirtual com.oracle.js.parser.ir.Symbol.isParam:()Z
            ifne 4
            aload 3 /* symbol */
            invokevirtual com.oracle.js.parser.ir.Symbol.isGlobal:()Z
            ifne 4
         3: .line 563
      StackMap locals: com.oracle.truffle.js.parser.env.Environment java.lang.Iterable int com.oracle.js.parser.ir.Symbol java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            aload 3 /* symbol */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.addFrameSlotFromSymbol:(Lcom/oracle/js/parser/ir/Symbol;)V
        end local 3 // com.oracle.js.parser.ir.Symbol symbol
         4: .line 561
      StackMap locals: com.oracle.truffle.js.parser.env.Environment java.lang.Iterable int top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 566
            return
        end local 2 // boolean onlyBlockScoped
        end local 1 // java.lang.Iterable symbols
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0             this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    6     1          symbols  Ljava/lang/Iterable<Lcom/oracle/js/parser/ir/Symbol;>;
            0    6     2  onlyBlockScoped  Z
            2    4     3           symbol  Lcom/oracle/js/parser/ir/Symbol;
    Signature: (Ljava/lang/Iterable<Lcom/oracle/js/parser/ir/Symbol;>;Z)V
    MethodParameters:
                 Name  Flags
      symbols          
      onlyBlockScoped  

  public void addFrameSlotFromSymbol(com.oracle.js.parser.ir.Symbol);
    descriptor: (Lcom/oracle/js/parser/ir/Symbol;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
        start local 1 // com.oracle.js.parser.ir.Symbol symbol
         0: .line 570
            getstatic com.oracle.truffle.js.parser.env.Environment.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getBlockFrameDescriptor:()Lcom/oracle/truffle/api/frame/FrameDescriptor;
            invokevirtual com.oracle.truffle.api.frame.FrameDescriptor.getIdentifiers:()Ljava/util/Set;
            aload 1 /* symbol */
            invokevirtual com.oracle.js.parser.ir.Symbol.getName:()Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 1
            aload 0 /* this */
            instanceof com.oracle.truffle.js.parser.env.FunctionEnvironment
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 572
      StackMap locals:
      StackMap stack:
            aload 1 /* symbol */
            invokevirtual com.oracle.js.parser.ir.Symbol.getFlags:()I
            ldc 1851651
            iand
            istore 2 /* flags */
        start local 2 // int flags
         2: .line 573
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getBlockFrameDescriptor:()Lcom/oracle/truffle/api/frame/FrameDescriptor;
            aload 1 /* symbol */
            invokevirtual com.oracle.js.parser.ir.Symbol.getName:()Ljava/lang/String;
            iload 2 /* flags */
            invokestatic com.oracle.truffle.js.parser.env.Environment$FrameSlotFlags.of:(I)Ljava/lang/Integer;
            getstatic com.oracle.truffle.api.frame.FrameSlotKind.Illegal:Lcom/oracle/truffle/api/frame/FrameSlotKind;
            invokevirtual com.oracle.truffle.api.frame.FrameDescriptor.findOrAddFrameSlot:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/api/frame/FrameSlotKind;)Lcom/oracle/truffle/api/frame/FrameSlot;
            pop
         3: .line 574
            return
        end local 2 // int flags
        end local 1 // com.oracle.js.parser.ir.Symbol symbol
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/js/parser/env/Environment;
            0    4     1  symbol  Lcom/oracle/js/parser/ir/Symbol;
            2    4     2   flags  I
    MethodParameters:
        Name  Flags
      symbol  

  public boolean isDynamicallyScoped();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 577
            iconst_0
            ireturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public boolean isDynamicScopeContext();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 584
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getParent:()Lcom/oracle/truffle/js/parser/env/Environment;
            ifnonnull 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.getParent:()Lcom/oracle/truffle/js/parser/env/Environment;
            invokevirtual com.oracle.truffle.js.parser.env.Environment.isDynamicScopeContext:()Z
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/parser/env/Environment;

  public com.oracle.truffle.js.parser.env.Environment getVariableEnvironment();
    descriptor: ()Lcom/oracle/truffle/js/parser/env/Environment;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.env.Environment this
         0: .line 588
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.env.Environment.function:()Lcom/oracle/truffle/js/parser/env/FunctionEnvironment;
            invokevirtual com.oracle.truffle.js.parser.env.FunctionEnvironment.getVariableEnvironment:()Lcom/oracle/truffle/js/parser/env/Environment;
            areturn
        end local 0 // com.oracle.truffle.js.parser.env.Environment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/env/Environment;
}
SourceFile: "Environment.java"
NestMembers:
  com.oracle.truffle.js.parser.env.Environment$1  com.oracle.truffle.js.parser.env.Environment$2  com.oracle.truffle.js.parser.env.Environment$3  com.oracle.truffle.js.parser.env.Environment$4  com.oracle.truffle.js.parser.env.Environment$AbstractArgumentsVarRef  com.oracle.truffle.js.parser.env.Environment$AbstractFrameVarRef  com.oracle.truffle.js.parser.env.Environment$ArgumentsVarRef  com.oracle.truffle.js.parser.env.Environment$FrameSlotFlags  com.oracle.truffle.js.parser.env.Environment$FrameSlotVarRef  com.oracle.truffle.js.parser.env.Environment$FunctionCalleeVarRef  com.oracle.truffle.js.parser.env.Environment$GlobalLexVarRef  com.oracle.truffle.js.parser.env.Environment$GlobalVarRef  com.oracle.truffle.js.parser.env.Environment$LazyFrameSlotVarRef  com.oracle.truffle.js.parser.env.Environment$MappedArgumentVarRef  com.oracle.truffle.js.parser.env.Environment$VarRef  com.oracle.truffle.js.parser.env.Environment$WrapAccess  com.oracle.truffle.js.parser.env.Environment$WrapClosure  com.oracle.truffle.js.parser.env.Environment$WrapClosure$1  com.oracle.truffle.js.parser.env.Environment$WrappedVarRef
InnerClasses:
  com.oracle.truffle.js.parser.env.Environment$1
  com.oracle.truffle.js.parser.env.Environment$2
  com.oracle.truffle.js.parser.env.Environment$3
  com.oracle.truffle.js.parser.env.Environment$4
  private abstract AbstractArgumentsVarRef = com.oracle.truffle.js.parser.env.Environment$AbstractArgumentsVarRef of com.oracle.truffle.js.parser.env.Environment
  public abstract AbstractFrameVarRef = com.oracle.truffle.js.parser.env.Environment$AbstractFrameVarRef of com.oracle.truffle.js.parser.env.Environment
  private final ArgumentsVarRef = com.oracle.truffle.js.parser.env.Environment$ArgumentsVarRef of com.oracle.truffle.js.parser.env.Environment
  private final FrameSlotFlags = com.oracle.truffle.js.parser.env.Environment$FrameSlotFlags of com.oracle.truffle.js.parser.env.Environment
  public FrameSlotVarRef = com.oracle.truffle.js.parser.env.Environment$FrameSlotVarRef of com.oracle.truffle.js.parser.env.Environment
  private final FunctionCalleeVarRef = com.oracle.truffle.js.parser.env.Environment$FunctionCalleeVarRef of com.oracle.truffle.js.parser.env.Environment
  public GlobalLexVarRef = com.oracle.truffle.js.parser.env.Environment$GlobalLexVarRef of com.oracle.truffle.js.parser.env.Environment
  public GlobalVarRef = com.oracle.truffle.js.parser.env.Environment$GlobalVarRef of com.oracle.truffle.js.parser.env.Environment
  LazyFrameSlotVarRef = com.oracle.truffle.js.parser.env.Environment$LazyFrameSlotVarRef of com.oracle.truffle.js.parser.env.Environment
  public MappedArgumentVarRef = com.oracle.truffle.js.parser.env.Environment$MappedArgumentVarRef of com.oracle.truffle.js.parser.env.Environment
  public abstract VarRef = com.oracle.truffle.js.parser.env.Environment$VarRef of com.oracle.truffle.js.parser.env.Environment
  final WrapAccess = com.oracle.truffle.js.parser.env.Environment$WrapAccess of com.oracle.truffle.js.parser.env.Environment
  abstract WrapClosure = com.oracle.truffle.js.parser.env.Environment$WrapClosure of com.oracle.truffle.js.parser.env.Environment
  public WrappedVarRef = com.oracle.truffle.js.parser.env.Environment$WrappedVarRef of com.oracle.truffle.js.parser.env.Environment