public class jdk.nashorn.internal.ir.BlockLexicalContext extends jdk.nashorn.internal.ir.LexicalContext
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.nashorn.internal.ir.BlockLexicalContext
  super_class: jdk.nashorn.internal.ir.LexicalContext
{
  private final java.util.Deque<java.util.List<jdk.nashorn.internal.ir.Statement>> sstack;
    descriptor: Ljava/util/Deque;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Deque<Ljava/util/List<Ljdk/nashorn/internal/ir/Statement;>;>;

  protected jdk.nashorn.internal.ir.Statement lastStatement;
    descriptor: Ljdk/nashorn/internal/ir/Statement;
    flags: (0x0004) ACC_PROTECTED

  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 40
            ldc Ljdk/nashorn/internal/ir/BlockLexicalContext;
            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 jdk.nashorn.internal.ir.BlockLexicalContext.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
         0: .line 40
            aload 0 /* this */
            invokespecial jdk.nashorn.internal.ir.LexicalContext.<init>:()V
         1: .line 43
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield jdk.nashorn.internal.ir.BlockLexicalContext.sstack:Ljava/util/Deque;
         2: .line 40
            return
        end local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/nashorn/internal/ir/BlockLexicalContext;

  public <T extends jdk.nashorn.internal.ir.LexicalContextNode> T push();
    descriptor: (Ljdk/nashorn/internal/ir/LexicalContextNode;)Ljdk/nashorn/internal/ir/LexicalContextNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
        start local 1 // jdk.nashorn.internal.ir.LexicalContextNode node
         0: .line 50
            aload 0 /* this */
            aload 1 /* node */
            invokespecial jdk.nashorn.internal.ir.LexicalContext.push:(Ljdk/nashorn/internal/ir/LexicalContextNode;)Ljdk/nashorn/internal/ir/LexicalContextNode;
            astore 2 /* pushed */
        start local 2 // jdk.nashorn.internal.ir.LexicalContextNode pushed
         1: .line 51
            aload 1 /* node */
            instanceof jdk.nashorn.internal.ir.Block
            ifeq 3
         2: .line 52
            aload 0 /* this */
            getfield jdk.nashorn.internal.ir.BlockLexicalContext.sstack:Ljava/util/Deque;
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
         3: .line 54
      StackMap locals: jdk.nashorn.internal.ir.LexicalContextNode
      StackMap stack:
            aload 2 /* pushed */
            areturn
        end local 2 // jdk.nashorn.internal.ir.LexicalContextNode pushed
        end local 1 // jdk.nashorn.internal.ir.LexicalContextNode node
        end local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Ljdk/nashorn/internal/ir/BlockLexicalContext;
            0    4     1    node  TT;
            1    4     2  pushed  TT;
    Signature: <T::Ljdk/nashorn/internal/ir/LexicalContextNode;>(TT;)TT;
    MethodParameters:
      Name  Flags
      node  final

  protected java.util.List<jdk.nashorn.internal.ir.Statement> popStatements();
    descriptor: ()Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
         0: .line 62
            aload 0 /* this */
            getfield jdk.nashorn.internal.ir.BlockLexicalContext.sstack:Ljava/util/Deque;
            invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
            checkcast java.util.List
            areturn
        end local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/nashorn/internal/ir/BlockLexicalContext;
    Signature: ()Ljava/util/List<Ljdk/nashorn/internal/ir/Statement;>;

  protected jdk.nashorn.internal.ir.Block afterSetStatements(jdk.nashorn.internal.ir.Block);
    descriptor: (Ljdk/nashorn/internal/ir/Block;)Ljdk/nashorn/internal/ir/Block;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
        start local 1 // jdk.nashorn.internal.ir.Block block
         0: .line 72
            aload 1 /* block */
            areturn
        end local 1 // jdk.nashorn.internal.ir.Block block
        end local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Ljdk/nashorn/internal/ir/BlockLexicalContext;
            0    1     1  block  Ljdk/nashorn/internal/ir/Block;
    MethodParameters:
       Name  Flags
      block  final

  public <T extends jdk.nashorn.internal.ir.Node> T pop();
    descriptor: (Ljdk/nashorn/internal/ir/Node;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
        start local 1 // jdk.nashorn.internal.ir.Node node
         0: .line 78
            aload 1 /* node */
            astore 2 /* expected */
        start local 2 // jdk.nashorn.internal.ir.Node expected
         1: .line 79
            aload 1 /* node */
            instanceof jdk.nashorn.internal.ir.Block
            ifeq 7
         2: .line 80
            aload 0 /* this */
            invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.popStatements:()Ljava/util/List;
            astore 3 /* newStatements */
        start local 3 // java.util.List newStatements
         3: .line 81
            aload 1 /* node */
            checkcast jdk.nashorn.internal.ir.Block
            aload 0 /* this */
            aload 3 /* newStatements */
            invokevirtual jdk.nashorn.internal.ir.Block.setStatements:(Ljdk/nashorn/internal/ir/LexicalContext;Ljava/util/List;)Ljdk/nashorn/internal/ir/Block;
            astore 2 /* expected */
         4: .line 82
            aload 0 /* this */
            aload 2 /* expected */
            checkcast jdk.nashorn.internal.ir.Block
            invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.afterSetStatements:(Ljdk/nashorn/internal/ir/Block;)Ljdk/nashorn/internal/ir/Block;
            astore 2 /* expected */
         5: .line 83
            aload 0 /* this */
            getfield jdk.nashorn.internal.ir.BlockLexicalContext.sstack:Ljava/util/Deque;
            invokeinterface java.util.Deque.isEmpty:()Z
            ifne 7
         6: .line 84
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.nashorn.internal.ir.BlockLexicalContext.sstack:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast java.util.List
            invokestatic jdk.nashorn.internal.ir.BlockLexicalContext.lastStatement:(Ljava/util/List;)Ljdk/nashorn/internal/ir/Statement;
            putfield jdk.nashorn.internal.ir.BlockLexicalContext.lastStatement:Ljdk/nashorn/internal/ir/Statement;
        end local 3 // java.util.List newStatements
         7: .line 87
      StackMap locals: jdk.nashorn.internal.ir.Node
      StackMap stack:
            aload 0 /* this */
            aload 2 /* expected */
            invokespecial jdk.nashorn.internal.ir.LexicalContext.pop:(Ljdk/nashorn/internal/ir/Node;)Ljdk/nashorn/internal/ir/Node;
            areturn
        end local 2 // jdk.nashorn.internal.ir.Node expected
        end local 1 // jdk.nashorn.internal.ir.Node node
        end local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Ljdk/nashorn/internal/ir/BlockLexicalContext;
            0    8     1           node  TT;
            1    8     2       expected  TT;
            3    7     3  newStatements  Ljava/util/List<Ljdk/nashorn/internal/ir/Statement;>;
    Signature: <T:Ljdk/nashorn/internal/ir/Node;>(TT;)TT;
    MethodParameters:
      Name  Flags
      node  final

  public void appendStatement(jdk.nashorn.internal.ir.Statement);
    descriptor: (Ljdk/nashorn/internal/ir/Statement;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
        start local 1 // jdk.nashorn.internal.ir.Statement statement
         0: .line 95
            getstatic jdk.nashorn.internal.ir.BlockLexicalContext.$assertionsDisabled:Z
            ifne 1
            aload 1 /* statement */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 96
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.ir.BlockLexicalContext.sstack:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast java.util.List
            aload 1 /* statement */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 97
            aload 0 /* this */
            aload 1 /* statement */
            putfield jdk.nashorn.internal.ir.BlockLexicalContext.lastStatement:Ljdk/nashorn/internal/ir/Statement;
         3: .line 98
            return
        end local 1 // jdk.nashorn.internal.ir.Statement statement
        end local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Ljdk/nashorn/internal/ir/BlockLexicalContext;
            0    4     1  statement  Ljdk/nashorn/internal/ir/Statement;
    MethodParameters:
           Name  Flags
      statement  final

  public jdk.nashorn.internal.ir.Node prependStatement(jdk.nashorn.internal.ir.Statement);
    descriptor: (Ljdk/nashorn/internal/ir/Statement;)Ljdk/nashorn/internal/ir/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
        start local 1 // jdk.nashorn.internal.ir.Statement statement
         0: .line 106
            getstatic jdk.nashorn.internal.ir.BlockLexicalContext.$assertionsDisabled:Z
            ifne 1
            aload 1 /* statement */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.ir.BlockLexicalContext.sstack:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast java.util.List
            iconst_0
            aload 1 /* statement */
            invokeinterface java.util.List.add:(ILjava/lang/Object;)V
         2: .line 108
            aload 1 /* statement */
            areturn
        end local 1 // jdk.nashorn.internal.ir.Statement statement
        end local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Ljdk/nashorn/internal/ir/BlockLexicalContext;
            0    3     1  statement  Ljdk/nashorn/internal/ir/Statement;
    MethodParameters:
           Name  Flags
      statement  final

  public void prependStatements(java.util.List<jdk.nashorn.internal.ir.Statement>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
        start local 1 // java.util.List statements
         0: .line 116
            getstatic jdk.nashorn.internal.ir.BlockLexicalContext.$assertionsDisabled:Z
            ifne 1
            aload 1 /* statements */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.nashorn.internal.ir.BlockLexicalContext.sstack:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast java.util.List
            iconst_0
            aload 1 /* statements */
            invokeinterface java.util.List.addAll:(ILjava/util/Collection;)Z
            pop
         2: .line 118
            return
        end local 1 // java.util.List statements
        end local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Ljdk/nashorn/internal/ir/BlockLexicalContext;
            0    3     1  statements  Ljava/util/List<Ljdk/nashorn/internal/ir/Statement;>;
    Signature: (Ljava/util/List<Ljdk/nashorn/internal/ir/Statement;>;)V
    MethodParameters:
            Name  Flags
      statements  final

  public jdk.nashorn.internal.ir.Statement getLastStatement();
    descriptor: ()Ljdk/nashorn/internal/ir/Statement;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
         0: .line 126
            aload 0 /* this */
            getfield jdk.nashorn.internal.ir.BlockLexicalContext.lastStatement:Ljdk/nashorn/internal/ir/Statement;
            areturn
        end local 0 // jdk.nashorn.internal.ir.BlockLexicalContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/nashorn/internal/ir/BlockLexicalContext;

  private static jdk.nashorn.internal.ir.Statement lastStatement(java.util.List<jdk.nashorn.internal.ir.Statement>);
    descriptor: (Ljava/util/List;)Ljdk/nashorn/internal/ir/Statement;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.util.List statements
         0: .line 130
            aload 0 /* statements */
            invokeinterface java.util.List.size:()I
            istore 1 /* s */
        start local 1 // int s
         1: .line 131
            iload 1 /* s */
            ifne 2
            aconst_null
            goto 3
      StackMap locals: int
      StackMap stack:
         2: aload 0 /* statements */
            iload 1 /* s */
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.ir.Statement
      StackMap locals:
      StackMap stack: jdk.nashorn.internal.ir.Statement
         3: areturn
        end local 1 // int s
        end local 0 // java.util.List statements
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0  statements  Ljava/util/List<Ljdk/nashorn/internal/ir/Statement;>;
            1    4     1           s  I
    Signature: (Ljava/util/List<Ljdk/nashorn/internal/ir/Statement;>;)Ljdk/nashorn/internal/ir/Statement;
    MethodParameters:
            Name  Flags
      statements  final
}
SourceFile: "BlockLexicalContext.java"