public class com.oracle.truffle.api.test.nodes.BlockNodeTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.api.test.nodes.BlockNodeTest
  super_class: java.lang.Object
{
  public com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode mode;
    descriptor: Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
    flags: (0x0001) ACC_PUBLIC
    RuntimeVisibleAnnotations: 
      org.junit.runners.Parameterized$Parameter(value = 0)

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
         0: .line 68
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;

  public static com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode[] data();
    descriptor: ()[Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 72
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.values:()[Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeVisibleAnnotations: 
      org.junit.runners.Parameterized$Parameters(name = "{0}")

  public void testErrors();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
         0: .line 79
            invokedynamic call()Ljava/util/concurrent/Callable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  com/oracle/truffle/api/test/nodes/BlockNodeTest.lambda$0()Ljava/lang/Object; (6)
                  ()Ljava/lang/Object;
            ldc Ljava/lang/NullPointerException;
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.assertFails:(Ljava/util/concurrent/Callable;Ljava/lang/Class;)V
         1: .line 80
            invokedynamic call()Ljava/util/concurrent/Callable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  com/oracle/truffle/api/test/nodes/BlockNodeTest.lambda$1()Ljava/lang/Object; (6)
                  ()Ljava/lang/Object;
            ldc Ljava/lang/NullPointerException;
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.assertFails:(Ljava/util/concurrent/Callable;Ljava/lang/Class;)V
         2: .line 82
            iconst_1
            anewarray com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement
            new com.oracle.truffle.api.test.nodes.BlockNodeTest$TestExecutor
            dup
            invokespecial com.oracle.truffle.api.test.nodes.BlockNodeTest$TestExecutor.<init>:()V
            invokestatic com.oracle.truffle.api.nodes.BlockNode.create:([Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor;)Lcom/oracle/truffle/api/nodes/BlockNode;
            astore 1 /* invalidBlock */
        start local 1 // com.oracle.truffle.api.nodes.BlockNode invalidBlock
         3: .line 83
            aload 0 /* this */
            aload 1 /* invalidBlock */
            invokedynamic call(Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/util/concurrent/Callable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  com/oracle/truffle/api/test/nodes/BlockNodeTest.lambda$2(Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/lang/Object; (7)
                  ()Ljava/lang/Object;
            ldc Ljava/lang/NullPointerException;
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.assertFails:(Ljava/util/concurrent/Callable;Ljava/lang/Class;)V
         4: .line 84
            invokedynamic call()Ljava/util/concurrent/Callable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  com/oracle/truffle/api/test/nodes/BlockNodeTest.lambda$3()Ljava/lang/Object; (6)
                  ()Ljava/lang/Object;
            ldc Ljava/lang/IllegalArgumentException;
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.assertFails:(Ljava/util/concurrent/Callable;Ljava/lang/Class;)V
         5: .line 86
            iconst_1
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.createElements:(I)[Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            new com.oracle.truffle.api.test.nodes.BlockNodeTest$StartsWithExecutor
            dup
            invokespecial com.oracle.truffle.api.test.nodes.BlockNodeTest$StartsWithExecutor.<init>:()V
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.create:([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor;)Lcom/oracle/truffle/api/nodes/BlockNode;
            astore 2 /* block1 */
        start local 2 // com.oracle.truffle.api.nodes.BlockNode block1
         6: .line 87
            aload 0 /* this */
            aload 2 /* block1 */
            invokedynamic call(Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/util/concurrent/Callable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  com/oracle/truffle/api/test/nodes/BlockNodeTest.lambda$4(Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/lang/Object; (7)
                  ()Ljava/lang/Object;
            ldc Ljava/lang/IllegalArgumentException;
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.assertFails:(Ljava/util/concurrent/Callable;Ljava/lang/Class;)V
         7: .line 88
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            aload 2 /* block1 */
            iconst_0
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.execute:(Lcom/oracle/truffle/api/nodes/BlockNode;I)Ljava/lang/Object;
            pop
         8: .line 89
            lconst_1
            aload 2 /* block1 */
            invokevirtual com.oracle.truffle.api.nodes.BlockNode.getElements:()[Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[]
            iconst_0
            aaload
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.allCounts:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         9: .line 90
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            iconst_1
            aload 2 /* block1 */
            invokevirtual com.oracle.truffle.api.nodes.BlockNode.getElements:()[Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[]
            iconst_0
            aaload
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.assertCount:(ILcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;)V
        10: .line 92
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            aload 2 /* block1 */
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.execute:(Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/lang/Object;
            pop
        11: .line 93
            ldc 2
            aload 2 /* block1 */
            invokevirtual com.oracle.truffle.api.nodes.BlockNode.getElements:()[Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[]
            iconst_0
            aaload
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.allCounts:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        12: .line 94
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            iconst_2
            aload 2 /* block1 */
            invokevirtual com.oracle.truffle.api.nodes.BlockNode.getElements:()[Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[]
            iconst_0
            aaload
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.assertCount:(ILcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;)V
        13: .line 96
            iconst_4
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.createElements:(I)[Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            new com.oracle.truffle.api.test.nodes.BlockNodeTest$StartsWithExecutor
            dup
            invokespecial com.oracle.truffle.api.test.nodes.BlockNodeTest$StartsWithExecutor.<init>:()V
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.create:([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor;)Lcom/oracle/truffle/api/nodes/BlockNode;
            astore 3 /* block4 */
        start local 3 // com.oracle.truffle.api.nodes.BlockNode block4
        14: .line 97
            aload 0 /* this */
            aload 3 /* block4 */
            invokedynamic call(Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/util/concurrent/Callable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  com/oracle/truffle/api/test/nodes/BlockNodeTest.lambda$5(Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/lang/Object; (7)
                  ()Ljava/lang/Object;
            ldc Ljava/lang/IllegalArgumentException;
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.assertFails:(Ljava/util/concurrent/Callable;Ljava/lang/Class;)V
        15: .line 99
            iconst_2
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.createElements:(I)[Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.create:([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;)Lcom/oracle/truffle/api/nodes/BlockNode;
            astore 4 /* block */
        start local 4 // com.oracle.truffle.api.nodes.BlockNode block
        16: .line 100
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            iconst_1
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.getResult:(I)Ljava/lang/Object;
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            aload 4 /* block */
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.execute:(Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        17: .line 101
            return
        end local 4 // com.oracle.truffle.api.nodes.BlockNode block
        end local 3 // com.oracle.truffle.api.nodes.BlockNode block4
        end local 2 // com.oracle.truffle.api.nodes.BlockNode block1
        end local 1 // com.oracle.truffle.api.nodes.BlockNode invalidBlock
        end local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   18     0          this  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;
            3   18     1  invalidBlock  Lcom/oracle/truffle/api/nodes/BlockNode<*>;
            6   18     2        block1  Lcom/oracle/truffle/api/nodes/BlockNode<Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;>;
           14   18     3        block4  Lcom/oracle/truffle/api/nodes/BlockNode<Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;>;
           16   18     4         block  Lcom/oracle/truffle/api/nodes/BlockNode<*>;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testStartsWithExecute();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=1
        start local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
         0: .line 105
            iconst_1
            istore 1 /* blockLength */
        start local 1 // int blockLength
         1: goto 25
         2: .line 106
      StackMap locals: int
      StackMap stack:
            iload 1 /* blockLength */
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.createElements:(I)[Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            new com.oracle.truffle.api.test.nodes.BlockNodeTest$StartsWithExecutor
            dup
            invokespecial com.oracle.truffle.api.test.nodes.BlockNodeTest$StartsWithExecutor.<init>:()V
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.create:([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor;)Lcom/oracle/truffle/api/nodes/BlockNode;
            astore 2 /* block */
        start local 2 // com.oracle.truffle.api.nodes.BlockNode block
         3: .line 107
            aload 2 /* block */
            invokevirtual com.oracle.truffle.api.nodes.BlockNode.getElements:()[Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[]
            astore 3 /* elements */
        start local 3 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
         4: .line 108
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            iload 1 /* blockLength */
            iconst_1
            isub
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.getResult:(I)Ljava/lang/Object;
            astore 4 /* result */
        start local 4 // java.lang.Object result
         5: .line 110
            iload 1 /* blockLength */
            newarray 10
            astore 5 /* expectedCounts */
        start local 5 // int[] expectedCounts
         6: .line 111
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         7: goto 23
         8: .line 112
      StackMap locals: com.oracle.truffle.api.test.nodes.BlockNodeTest int com.oracle.truffle.api.nodes.BlockNode com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] java.lang.Object int[] int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            iload 1 /* blockLength */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 6 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 4 /* result */
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            aload 2 /* block */
            iload 6 /* i */
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.execute:(Lcom/oracle/truffle/api/nodes/BlockNode;I)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         9: .line 113
            iload 6 /* i */
            istore 7 /* j */
        start local 7 // int j
        10: goto 13
        11: .line 114
      StackMap locals: int
      StackMap stack:
            aload 5 /* expectedCounts */
            iload 7 /* j */
            dup2
            iaload
            iconst_1
            iadd
            iastore
        12: .line 113
            iinc 7 /* j */ 1
      StackMap locals:
      StackMap stack:
        13: iload 7 /* j */
            iload 1 /* blockLength */
            if_icmplt 11
        end local 7 // int j
        14: .line 116
            iconst_0
            istore 7 /* j */
        start local 7 // int j
        15: goto 19
        16: .line 117
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            iload 1 /* blockLength */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 6 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 7 /* j */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* expectedCounts */
            iload 7 /* j */
            iaload
            i2l
            aload 3 /* elements */
            iload 7 /* j */
            aaload
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.counts:[I
            getstatic com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.VOID:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.ordinal:()I
            iaload
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        17: .line 118
            new java.lang.StringBuilder
            dup
            iload 1 /* blockLength */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 6 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 7 /* j */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* expectedCounts */
            iload 7 /* j */
            iaload
            i2l
            aload 3 /* elements */
            iload 7 /* j */
            aaload
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.allCounts:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        18: .line 116
            iinc 7 /* j */ 1
      StackMap locals:
      StackMap stack:
        19: iload 7 /* j */
            iload 1 /* blockLength */
            iconst_1
            isub
            if_icmplt 16
        end local 7 // int j
        20: .line 120
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            aload 5 /* expectedCounts */
            iload 1 /* blockLength */
            iconst_1
            isub
            iaload
            aload 3 /* elements */
            iload 1 /* blockLength */
            iconst_1
            isub
            aaload
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.assertCount:(ILcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;)V
        21: .line 121
            new java.lang.StringBuilder
            dup
            iload 1 /* blockLength */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 6 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* expectedCounts */
            iload 1 /* blockLength */
            iconst_1
            isub
            iaload
            i2l
            aload 3 /* elements */
            iload 1 /* blockLength */
            iconst_1
            isub
            aaload
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.allCounts:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        22: .line 111
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 6 /* i */
            iload 1 /* blockLength */
            if_icmplt 8
        end local 6 // int i
        end local 5 // int[] expectedCounts
        end local 4 // java.lang.Object result
        end local 3 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
        end local 2 // com.oracle.truffle.api.nodes.BlockNode block
        24: .line 105
            iinc 1 /* blockLength */ 1
      StackMap locals: com.oracle.truffle.api.test.nodes.BlockNodeTest int
      StackMap stack:
        25: iload 1 /* blockLength */
            bipush 50
            if_icmplt 2
        end local 1 // int blockLength
        26: .line 124
            return
        end local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   27     0            this  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;
            1   26     1     blockLength  I
            3   24     2           block  Lcom/oracle/truffle/api/nodes/BlockNode<Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;>;
            4   24     3        elements  [Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            5   24     4          result  Ljava/lang/Object;
            6   24     5  expectedCounts  [I
            7   24     6               i  I
           10   14     7               j  I
           15   20     7               j  I
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testDefaultExecute();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=1
        start local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
         0: .line 128
            iconst_1
            istore 1 /* blockLength */
        start local 1 // int blockLength
         1: goto 15
         2: .line 129
      StackMap locals: int
      StackMap stack:
            iload 1 /* blockLength */
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.createElements:(I)[Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.create:([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;)Lcom/oracle/truffle/api/nodes/BlockNode;
            astore 2 /* block */
        start local 2 // com.oracle.truffle.api.nodes.BlockNode block
         3: .line 130
            aload 2 /* block */
            invokevirtual com.oracle.truffle.api.nodes.BlockNode.getElements:()[Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[]
            astore 3 /* elements */
        start local 3 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
         4: .line 131
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            iload 1 /* blockLength */
            iconst_1
            isub
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.getResult:(I)Ljava/lang/Object;
            astore 4 /* result */
        start local 4 // java.lang.Object result
         5: .line 133
            new java.lang.StringBuilder
            dup
            iload 1 /* blockLength */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 4 /* result */
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            aload 2 /* block */
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.execute:(Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 134
            iconst_0
            istore 5 /* j */
        start local 5 // int j
         7: goto 11
         8: .line 135
      StackMap locals: com.oracle.truffle.api.test.nodes.BlockNodeTest int com.oracle.truffle.api.nodes.BlockNode com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] java.lang.Object int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            iload 1 /* blockLength */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 5 /* j */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            lconst_1
            aload 3 /* elements */
            iload 5 /* j */
            aaload
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.counts:[I
            getstatic com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.VOID:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.ordinal:()I
            iaload
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
         9: .line 136
            new java.lang.StringBuilder
            dup
            iload 1 /* blockLength */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 5 /* j */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            lconst_1
            aload 3 /* elements */
            iload 5 /* j */
            aaload
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.allCounts:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        10: .line 134
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        11: iload 5 /* j */
            iload 1 /* blockLength */
            iconst_1
            isub
            if_icmplt 8
        end local 5 // int j
        12: .line 138
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            iconst_1
            aload 3 /* elements */
            iload 1 /* blockLength */
            iconst_1
            isub
            aaload
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.assertCount:(ILcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;)V
        13: .line 139
            new java.lang.StringBuilder
            dup
            iload 1 /* blockLength */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            lconst_1
            aload 3 /* elements */
            iload 1 /* blockLength */
            iconst_1
            isub
            aaload
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.allCounts:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        end local 4 // java.lang.Object result
        end local 3 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
        end local 2 // com.oracle.truffle.api.nodes.BlockNode block
        14: .line 128
            iinc 1 /* blockLength */ 1
      StackMap locals: com.oracle.truffle.api.test.nodes.BlockNodeTest int
      StackMap stack:
        15: iload 1 /* blockLength */
            bipush 50
            if_icmplt 2
        end local 1 // int blockLength
        16: .line 141
            return
        end local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0         this  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;
            1   16     1  blockLength  I
            3   14     2        block  Lcom/oracle/truffle/api/nodes/BlockNode<Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;>;
            4   14     3     elements  [Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            5   14     4       result  Ljava/lang/Object;
            7   12     5            j  I
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testExceptionHandler();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
         0: .line 262
            iconst_1
            istore 1 /* blockLength */
        start local 1 // int blockLength
         1: goto 27
         2: .line 263
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 2 /* startsWith */
        start local 2 // int startsWith
         3: goto 25
         4: .line 265
      StackMap locals: int
      StackMap stack:
            new com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException
            dup
            invokespecial com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException.<init>:()V
            astore 3 /* expectedException */
        start local 3 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException expectedException
         5: .line 266
            new com.oracle.truffle.api.test.nodes.BlockNodeTest$TestElementExceptionHandler
            dup
            aload 3 /* expectedException */
            invokespecial com.oracle.truffle.api.test.nodes.BlockNodeTest$TestElementExceptionHandler.<init>:(Ljava/lang/Throwable;)V
            astore 4 /* e */
        start local 4 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestElementExceptionHandler e
         6: .line 267
            iload 1 /* blockLength */
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.createElements:(I)[Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            aload 4 /* e */
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.create:([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor;)Lcom/oracle/truffle/api/nodes/BlockNode;
            astore 5 /* block */
        start local 5 // com.oracle.truffle.api.nodes.BlockNode block
         7: .line 268
            aload 5 /* block */
            invokevirtual com.oracle.truffle.api.nodes.BlockNode.getElements:()[Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[]
            astore 6 /* elements */
        start local 6 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
         8: .line 270
            iconst_0
            istore 7 /* j */
        start local 7 // int j
         9: goto 12
        10: .line 271
      StackMap locals: com.oracle.truffle.api.test.nodes.BlockNodeTest int int com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException com.oracle.truffle.api.test.nodes.BlockNodeTest$TestElementExceptionHandler com.oracle.truffle.api.nodes.BlockNode com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] int
      StackMap stack:
            aload 6 /* elements */
            iload 7 /* j */
            aaload
            aload 3 /* expectedException */
            putfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.exception:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestException;
        11: .line 270
            iinc 7 /* j */ 1
      StackMap locals:
      StackMap stack:
        12: iload 7 /* j */
            iload 1 /* blockLength */
            if_icmplt 10
        end local 7 // int j
        13: .line 274
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            aload 5 /* block */
            iload 2 /* startsWith */
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.execute:(Lcom/oracle/truffle/api/nodes/BlockNode;I)Ljava/lang/Object;
            pop
        14: .line 275
            goto 17
      StackMap locals: com.oracle.truffle.api.test.nodes.BlockNodeTest int int com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException com.oracle.truffle.api.test.nodes.BlockNodeTest$TestElementExceptionHandler com.oracle.truffle.api.nodes.BlockNode com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[]
      StackMap stack: com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException
        15: astore 7 /* ex */
        start local 7 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException ex
        16: .line 276
            aload 3 /* expectedException */
            aload 7 /* ex */
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 7 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException ex
        17: .line 278
      StackMap locals:
      StackMap stack:
            iload 2 /* startsWith */
            iload 1 /* blockLength */
            iconst_1
            isub
            if_icmpge 20
        18: .line 279
            new java.lang.StringBuilder
            dup
            iload 1 /* blockLength */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            lconst_1
            aload 6 /* elements */
            iload 2 /* startsWith */
            aaload
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.counts:[I
            getstatic com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.VOID:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.ordinal:()I
            iaload
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        19: .line 280
            goto 21
        20: .line 281
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            iload 1 /* blockLength */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            lconst_1
            aload 6 /* elements */
            iload 2 /* startsWith */
            aaload
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.counts:[I
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.ordinal:()I
            iaload
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        21: .line 283
      StackMap locals:
      StackMap stack:
            lconst_1
            aload 6 /* elements */
            iload 2 /* startsWith */
            aaload
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.allCounts:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        22: .line 284
            lconst_1
            aload 4 /* e */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestElementExceptionHandler.exceptionCount:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        23: .line 285
            iload 2 /* startsWith */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 4 /* e */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$TestElementExceptionHandler.seenElementIndex:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
        end local 5 // com.oracle.truffle.api.nodes.BlockNode block
        end local 4 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestElementExceptionHandler e
        end local 3 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException expectedException
        24: .line 263
            iinc 2 /* startsWith */ 1
      StackMap locals: com.oracle.truffle.api.test.nodes.BlockNodeTest int int
      StackMap stack:
        25: iload 2 /* startsWith */
            iload 1 /* blockLength */
            if_icmplt 4
        end local 2 // int startsWith
        26: .line 262
            iinc 1 /* blockLength */ 1
      StackMap locals:
      StackMap stack:
        27: iload 1 /* blockLength */
            bipush 50
            if_icmplt 2
        end local 1 // int blockLength
        28: .line 288
            return
        end local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   29     0               this  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;
            1   28     1        blockLength  I
            3   26     2         startsWith  I
            5   24     3  expectedException  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestException;
            6   24     4                  e  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestElementExceptionHandler;
            7   24     5              block  Lcom/oracle/truffle/api/nodes/BlockNode<Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;>;
            8   24     6           elements  [Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            9   13     7                  j  I
           16   17     7                 ex  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestException;
      Exception table:
        from    to  target  type
          13    14      15  Class com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testToString();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
         0: .line 292
            iconst_4
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.createElements:(I)[Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.create:([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;)Lcom/oracle/truffle/api/nodes/BlockNode;
            invokevirtual com.oracle.truffle.api.nodes.BlockNode.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         1: .line 293
            return
        end local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  static com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] createElements(int);
    descriptor: (I)[Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // int size
         0: .line 296
            iload 0 /* size */
            anewarray com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement
            astore 1 /* elements */
        start local 1 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
         1: .line 297
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 5
         3: .line 298
      StackMap locals: com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] int
      StackMap stack:
            aload 1 /* elements */
            iload 2 /* i */
            new com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement
            dup
            iload 2 /* i */
            invokespecial com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement.<init>:(I)V
            aastore
         4: .line 297
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 1 /* elements */
            arraylength
            if_icmplt 3
        end local 2 // int i
         6: .line 300
            aload 1 /* elements */
            areturn
        end local 1 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
        end local 0 // int size
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      size  I
            1    7     1  elements  [Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            2    6     2         i  I
    MethodParameters:
      Name  Flags
      size  

  static com.oracle.truffle.api.nodes.BlockNode<com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement> create(com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[]);
    descriptor: ([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;)Lcom/oracle/truffle/api/nodes/BlockNode;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
         0: .line 305
            aload 0 /* elements */
            new com.oracle.truffle.api.test.nodes.BlockNodeTest$TestExecutor
            dup
            invokespecial com.oracle.truffle.api.test.nodes.BlockNodeTest$TestExecutor.<init>:()V
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.create:([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor;)Lcom/oracle/truffle/api/nodes/BlockNode;
            areturn
        end local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  elements  [Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
    Signature: ([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;)Lcom/oracle/truffle/api/nodes/BlockNode<Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;>;
    MethodParameters:
          Name  Flags
      elements  

  static com.oracle.truffle.api.nodes.BlockNode<com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement> create(com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[], com.oracle.truffle.api.nodes.BlockNode$ElementExecutor<com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement>);
    descriptor: ([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor;)Lcom/oracle/truffle/api/nodes/BlockNode;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
        start local 1 // com.oracle.truffle.api.nodes.BlockNode$ElementExecutor executor
         0: .line 309
            new com.oracle.truffle.api.test.nodes.BlockNodeTest$DummyRootNode
            dup
            invokespecial com.oracle.truffle.api.test.nodes.BlockNodeTest$DummyRootNode.<init>:()V
            astore 2 /* root */
        start local 2 // com.oracle.truffle.api.test.nodes.BlockNodeTest$DummyRootNode root
         1: .line 310
            aload 0 /* elements */
            aload 1 /* executor */
            invokestatic com.oracle.truffle.api.nodes.BlockNode.create:([Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor;)Lcom/oracle/truffle/api/nodes/BlockNode;
            astore 3 /* block */
        start local 3 // com.oracle.truffle.api.nodes.BlockNode block
         2: .line 311
            aload 2 /* root */
            aload 3 /* block */
            putfield com.oracle.truffle.api.test.nodes.BlockNodeTest$DummyRootNode.block:Lcom/oracle/truffle/api/nodes/BlockNode;
         3: .line 312
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            aload 2 /* root */
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            pop
         4: .line 313
            aload 2 /* root */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest$DummyRootNode.block:Lcom/oracle/truffle/api/nodes/BlockNode;
            invokevirtual com.oracle.truffle.api.nodes.BlockNode.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         5: .line 314
            aload 3 /* block */
            areturn
        end local 3 // com.oracle.truffle.api.nodes.BlockNode block
        end local 2 // com.oracle.truffle.api.test.nodes.BlockNodeTest$DummyRootNode root
        end local 1 // com.oracle.truffle.api.nodes.BlockNode$ElementExecutor executor
        end local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement[] elements
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0  elements  [Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            0    6     1  executor  Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor<Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;>;
            1    6     2      root  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$DummyRootNode;
            2    6     3     block  Lcom/oracle/truffle/api/nodes/BlockNode<Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;>;
    Signature: ([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor<Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;>;)Lcom/oracle/truffle/api/nodes/BlockNode<Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;>;
    MethodParameters:
          Name  Flags
      elements  
      executor  

  protected static void assertFails(java.util.concurrent.Callable<?>, java.lang.Class<? extends java.lang.Throwable>);
    descriptor: (Ljava/util/concurrent/Callable;Ljava/lang/Class;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // java.util.concurrent.Callable callable
        start local 1 // java.lang.Class exceptionType
         0: .line 319
            aload 0 /* callable */
            invokeinterface java.util.concurrent.Callable.call:()Ljava/lang/Object;
            pop
         1: .line 320
            goto 6
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 2 /* t */
        start local 2 // java.lang.Throwable t
         3: .line 321
            aload 1 /* exceptionType */
            aload 2 /* t */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 322
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "expected instanceof "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* exceptionType */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " was "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* t */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* t */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
         5: .line 324
      StackMap locals: java.lang.Throwable
      StackMap stack:
            return
        end local 2 // java.lang.Throwable t
         6: .line 326
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "expected "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* exceptionType */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " but no exception was thrown"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         7: .line 327
            return
        end local 1 // java.lang.Class exceptionType
        end local 0 // java.util.concurrent.Callable callable
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0       callable  Ljava/util/concurrent/Callable<*>;
            0    8     1  exceptionType  Ljava/lang/Class<+Ljava/lang/Throwable;>;
            3    6     2              t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable
    Signature: (Ljava/util/concurrent/Callable<*>;Ljava/lang/Class<+Ljava/lang/Throwable;>;)V
    MethodParameters:
               Name  Flags
      callable       
      exceptionType  

  private static java.lang.Object lambda$0();
    descriptor: ()Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 79
            aconst_null
            new com.oracle.truffle.api.test.nodes.BlockNodeTest$TestExecutor
            dup
            invokespecial com.oracle.truffle.api.test.nodes.BlockNodeTest$TestExecutor.<init>:()V
            invokestatic com.oracle.truffle.api.nodes.BlockNode.create:([Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor;)Lcom/oracle/truffle/api/nodes/BlockNode;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception

  private static java.lang.Object lambda$1();
    descriptor: ()Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 80
            iconst_1
            anewarray com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement
            aconst_null
            invokestatic com.oracle.truffle.api.nodes.BlockNode.create:([Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor;)Lcom/oracle/truffle/api/nodes/BlockNode;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception

  private java.lang.Object lambda$2(com.oracle.truffle.api.nodes.BlockNode);
    descriptor: (Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/lang/Object;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
         0: .line 83
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            aload 1
            iconst_0
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.execute:(Lcom/oracle/truffle/api/nodes/BlockNode;I)Ljava/lang/Object;
            areturn
        end local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;
    Exceptions:
      throws java.lang.Exception

  private static java.lang.Object lambda$3();
    descriptor: ()Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 84
            iconst_0
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.createElements:(I)[Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;
            invokestatic com.oracle.truffle.api.test.nodes.BlockNodeTest.create:([Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$TestBlockElement;)Lcom/oracle/truffle/api/nodes/BlockNode;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception

  private java.lang.Object lambda$4(com.oracle.truffle.api.nodes.BlockNode);
    descriptor: (Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/lang/Object;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
         0: .line 87
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            aload 1
            iconst_1
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.execute:(Lcom/oracle/truffle/api/nodes/BlockNode;I)Ljava/lang/Object;
            areturn
        end local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;
    Exceptions:
      throws java.lang.Exception

  private java.lang.Object lambda$5(com.oracle.truffle.api.nodes.BlockNode);
    descriptor: (Lcom/oracle/truffle/api/nodes/BlockNode;)Ljava/lang/Object;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
         0: .line 97
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.nodes.BlockNodeTest.mode:Lcom/oracle/truffle/api/test/nodes/BlockNodeTest$Mode;
            aload 1
            iconst_4
            invokevirtual com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode.execute:(Lcom/oracle/truffle/api/nodes/BlockNode;I)Ljava/lang/Object;
            areturn
        end local 0 // com.oracle.truffle.api.test.nodes.BlockNodeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/test/nodes/BlockNodeTest;
    Exceptions:
      throws java.lang.Exception
}
SourceFile: "BlockNodeTest.java"
NestMembers:
  com.oracle.truffle.api.test.nodes.BlockNodeTest$DummyRootNode  com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode  com.oracle.truffle.api.test.nodes.BlockNodeTest$StartsWithExecutor  com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement  com.oracle.truffle.api.test.nodes.BlockNodeTest$TestElementExceptionHandler  com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException  com.oracle.truffle.api.test.nodes.BlockNodeTest$TestExecutor
InnerClasses:
  public abstract ElementExecutor = com.oracle.truffle.api.nodes.BlockNode$ElementExecutor of com.oracle.truffle.api.nodes.BlockNode
  DummyRootNode = com.oracle.truffle.api.test.nodes.BlockNodeTest$DummyRootNode of com.oracle.truffle.api.test.nodes.BlockNodeTest
  final Mode = com.oracle.truffle.api.test.nodes.BlockNodeTest$Mode of com.oracle.truffle.api.test.nodes.BlockNodeTest
  StartsWithExecutor = com.oracle.truffle.api.test.nodes.BlockNodeTest$StartsWithExecutor of com.oracle.truffle.api.test.nodes.BlockNodeTest
  TestBlockElement = com.oracle.truffle.api.test.nodes.BlockNodeTest$TestBlockElement of com.oracle.truffle.api.test.nodes.BlockNodeTest
  TestElementExceptionHandler = com.oracle.truffle.api.test.nodes.BlockNodeTest$TestElementExceptionHandler of com.oracle.truffle.api.test.nodes.BlockNodeTest
  TestException = com.oracle.truffle.api.test.nodes.BlockNodeTest$TestException of com.oracle.truffle.api.test.nodes.BlockNodeTest
  TestExecutor = com.oracle.truffle.api.test.nodes.BlockNodeTest$TestExecutor of com.oracle.truffle.api.test.nodes.BlockNodeTest
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract Parameter = org.junit.runners.Parameterized$Parameter of org.junit.runners.Parameterized
  public abstract Parameters = org.junit.runners.Parameterized$Parameters of org.junit.runners.Parameterized
    RuntimeVisibleAnnotations: 
      org.junit.runner.RunWith(value = Lorg/junit/runners/Parameterized;)