public class org.graalvm.compiler.core.test.TypeSystemTest extends org.graalvm.compiler.core.test.GraalCompilerTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.core.test.TypeSystemTest
  super_class: org.graalvm.compiler.core.test.GraalCompilerTest
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
         0: .line 54
            aload 0 /* this */
            invokespecial org.graalvm.compiler.core.test.GraalCompilerTest.<init>:()V
            return
        end local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/core/test/TypeSystemTest;

  public void test3();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
         0: .line 58
            aload 0 /* this */
            ldc "test3Snippet"
            ldc "referenceSnippet3"
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.test:(Ljava/lang/String;Ljava/lang/String;)V
         1: .line 59
            return
        end local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/test/TypeSystemTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public static int referenceSnippet3(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object o
         0: .line 62
            aload 0 /* o */
            ifnonnull 2
         1: .line 63
            iconst_1
            ireturn
         2: .line 65
      StackMap locals:
      StackMap stack:
            iconst_2
            ireturn
        end local 0 // java.lang.Object o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     o  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      o     

  public static int test3Snippet(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object o
         0: .line 71
            aload 0 /* o */
            ifnonnull 4
         1: .line 72
            aload 0 /* o */
            ifnull 3
         2: .line 73
            iconst_3
            ireturn
         3: .line 75
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         4: .line 78
      StackMap locals:
      StackMap stack:
            iconst_2
            ireturn
        end local 0 // java.lang.Object o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     o  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      o     

  public void test4();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
         0: .line 84
            aload 0 /* this */
            ldc "test4Snippet"
            ldc "referenceSnippet3"
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.test:(Ljava/lang/String;Ljava/lang/String;)V
         1: .line 85
            return
        end local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/test/TypeSystemTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public static int test4Snippet(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Object o
         0: .line 89
            aload 0 /* o */
            ifnonnull 5
         1: .line 90
            ldc Ljava/lang/Integer;
            astore 1 /* o2 */
        start local 1 // java.lang.Object o2
         2: .line 91
            aload 0 /* o */
            aload 1 /* o2 */
            if_acmpne 4
         3: .line 92
            iconst_3
            ireturn
         4: .line 94
      StackMap locals: java.lang.Object
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // java.lang.Object o2
         5: .line 97
      StackMap locals:
      StackMap stack:
            iconst_2
            ireturn
        end local 0 // java.lang.Object o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0     o  Ljava/lang/Object;
            2    5     1    o2  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      o     

  public void test5();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
         0: .line 104
            aload 0 /* this */
            ldc "test5Snippet"
            ldc "referenceSnippet5"
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.test:(Ljava/lang/String;Ljava/lang/String;)V
         1: .line 105
            return
        end local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/test/TypeSystemTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()
      org.junit.Ignore()

  public static int referenceSnippet5(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Object o
        start local 1 // java.lang.Object a
         0: .line 108
            aload 0 /* o */
            ifnonnull 3
         1: .line 109
            aload 1 /* a */
            ldc Ljava/lang/Integer;
            if_acmpne 5
         2: .line 110
            iconst_1
            ireturn
         3: .line 113
      StackMap locals:
      StackMap stack:
            aload 1 /* a */
            ldc Ljava/lang/Double;
            if_acmpne 5
         4: .line 114
            bipush 11
            ireturn
         5: .line 117
      StackMap locals:
      StackMap stack:
            aload 1 /* a */
            ldc Ljava/lang/Integer;
            if_acmpne 7
         6: .line 118
            iconst_3
            ireturn
         7: .line 120
      StackMap locals:
      StackMap stack:
            iconst_5
            ireturn
        end local 1 // java.lang.Object a
        end local 0 // java.lang.Object o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0     o  Ljava/lang/Object;
            0    8     1     a  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      o     
      a     

  public static int test5Snippet(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Object o
        start local 1 // java.lang.Object a
         0: .line 125
            aload 0 /* o */
            ifnonnull 5
         1: .line 126
            aload 1 /* a */
            ldc Ljava/lang/Integer;
            if_acmpne 9
         2: .line 127
            aload 1 /* a */
            ifnonnull 4
         3: .line 128
            bipush 10
            ireturn
         4: .line 130
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         5: .line 133
      StackMap locals:
      StackMap stack:
            aload 1 /* a */
            ldc Ljava/lang/Double;
            if_acmpne 9
         6: .line 134
            aload 1 /* a */
            ifnull 8
         7: .line 135
            bipush 11
            ireturn
         8: .line 137
      StackMap locals:
      StackMap stack:
            iconst_2
            ireturn
         9: .line 140
      StackMap locals:
      StackMap stack:
            aload 1 /* a */
            ldc Ljava/lang/Integer;
            if_acmpne 11
        10: .line 141
            iconst_3
            ireturn
        11: .line 143
      StackMap locals:
      StackMap stack:
            iconst_5
            ireturn
        end local 1 // java.lang.Object a
        end local 0 // java.lang.Object o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0     o  Ljava/lang/Object;
            0   12     1     a  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      o     
      a     

  public void test6();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
         0: .line 148
            aload 0 /* this */
            ldc "test6Snippet"
            ldc Lorg/graalvm/compiler/nodes/java/InstanceOfNode;
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.testHelper:(Ljava/lang/String;Ljava/lang/Class;)V
         1: .line 149
            return
        end local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/test/TypeSystemTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public static int test6Snippet(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // int i
         0: .line 152
            aconst_null
            astore 1 /* o */
        start local 1 // java.lang.Object o
         1: .line 154
            iload 0 /* i */
            iconst_5
            if_icmpne 3
         2: .line 155
            new java.io.FileInputStream
            dup
            ldc "asdf"
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            astore 1 /* o */
         3: .line 157
      StackMap locals: java.lang.Object
      StackMap stack:
            iload 0 /* i */
            bipush 10
            if_icmpge 5
         4: .line 158
            new java.io.ByteArrayInputStream
            dup
            iconst_3
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            dup
            iconst_1
            iconst_2
            bastore
            dup
            iconst_2
            iconst_3
            bastore
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            astore 1 /* o */
         5: .line 160
      StackMap locals:
      StackMap stack:
            iload 0 /* i */
            ifle 7
         6: .line 161
            new java.io.BufferedInputStream
            dup
            aconst_null
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            astore 1 /* o */
         7: .line 164
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            checkcast java.io.InputStream
            invokevirtual java.io.InputStream.available:()I
            ireturn
        end local 1 // java.lang.Object o
        end local 0 // int i
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0     i  I
            1    8     1     o  Ljava/lang/Object;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      i     

  public void test7();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
         0: .line 169
            aload 0 /* this */
            ldc "test7Snippet"
            ldc "referenceSnippet7"
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.test:(Ljava/lang/String;Ljava/lang/String;)V
         1: .line 170
            return
        end local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/test/TypeSystemTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public static int test7Snippet(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int x
         0: .line 173
            iload 0 /* x */
            sipush 255
            iand
            bipush 10
            ishl
            iload 0 /* x */
            bipush 31
            iand
            iconst_1
            iadd
            if_icmpne 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iload 0 /* x */
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     x  I
    MethodParameters:
      Name  Flags
      x     

  public static int referenceSnippet7(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // int x
         0: .line 177
            iload 0 /* x */
            ireturn
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  I
    MethodParameters:
      Name  Flags
      x     

  private void test(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
        start local 1 // java.lang.String snippet
        start local 2 // java.lang.String referenceSnippet
         0: .line 181
            aload 0 /* this */
            aload 1 /* snippet */
            getstatic org.graalvm.compiler.nodes.StructuredGraph$AllowAssumptions.NO:Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.parseEager:(Ljava/lang/String;Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;)Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 3 /* graph */
        start local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
         1: .line 182
            aload 3 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
            astore 4 /* debug */
        start local 4 // org.graalvm.compiler.debug.DebugContext debug
         2: .line 183
            aload 4 /* debug */
            iconst_1
            aload 3 /* graph */
            ldc "Graph"
            invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
         3: .line 189
            new org.graalvm.compiler.phases.common.ConditionalEliminationPhase
            dup
            iconst_0
            invokespecial org.graalvm.compiler.phases.common.ConditionalEliminationPhase.<init>:(Z)V
            aload 3 /* graph */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.common.ConditionalEliminationPhase.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
         4: .line 190
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.createCanonicalizerPhase:()Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
            aload 3 /* graph */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
         5: .line 192
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.createCanonicalizerPhase:()Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
            aload 3 /* graph */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
         6: .line 193
            aload 0 /* this */
            aload 2 /* referenceSnippet */
            getstatic org.graalvm.compiler.nodes.StructuredGraph$AllowAssumptions.NO:Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.parseEager:(Ljava/lang/String;Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;)Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 5 /* referenceGraph */
        start local 5 // org.graalvm.compiler.nodes.StructuredGraph referenceGraph
         7: .line 194
            new org.graalvm.compiler.phases.common.ConditionalEliminationPhase
            dup
            iconst_0
            invokespecial org.graalvm.compiler.phases.common.ConditionalEliminationPhase.<init>:(Z)V
            aload 5 /* referenceGraph */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.common.ConditionalEliminationPhase.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
         8: .line 195
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.createCanonicalizerPhase:()Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
            aload 5 /* referenceGraph */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
         9: .line 196
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.createCanonicalizerPhase:()Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
            aload 5 /* referenceGraph */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
        10: .line 197
            aload 0 /* this */
            aload 5 /* referenceGraph */
            aload 3 /* graph */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.assertEquals:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/StructuredGraph;)V
        11: .line 198
            return
        end local 5 // org.graalvm.compiler.nodes.StructuredGraph referenceGraph
        end local 4 // org.graalvm.compiler.debug.DebugContext debug
        end local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 2 // java.lang.String referenceSnippet
        end local 1 // java.lang.String snippet
        end local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0              this  Lorg/graalvm/compiler/core/test/TypeSystemTest;
            0   12     1           snippet  Ljava/lang/String;
            0   12     2  referenceSnippet  Ljava/lang/String;
            1   12     3             graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            2   12     4             debug  Lorg/graalvm/compiler/debug/DebugContext;
            7   12     5    referenceGraph  Lorg/graalvm/compiler/nodes/StructuredGraph;
    MethodParameters:
                  Name  Flags
      snippet           
      referenceSnippet  

  protected void assertEquals(org.graalvm.compiler.nodes.StructuredGraph, org.graalvm.compiler.nodes.StructuredGraph);
    descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/StructuredGraph;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
        start local 1 // org.graalvm.compiler.nodes.StructuredGraph expected
        start local 2 // org.graalvm.compiler.nodes.StructuredGraph graph
         0: .line 202
            aload 2 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
            astore 3 /* debug */
        start local 3 // org.graalvm.compiler.debug.DebugContext debug
         1: .line 203
            aload 0 /* this */
            aload 1 /* expected */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.getNodeCountExcludingUnusedConstants:(Lorg/graalvm/compiler/nodes/StructuredGraph;)I
            aload 0 /* this */
            aload 2 /* graph */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.getNodeCountExcludingUnusedConstants:(Lorg/graalvm/compiler/nodes/StructuredGraph;)I
            if_icmpeq 5
         2: .line 204
            aload 3 /* debug */
            iconst_1
            aload 1 /* expected */
            ldc "expected (node count)"
            invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
         3: .line 205
            aload 3 /* debug */
            iconst_1
            aload 2 /* graph */
            ldc "graph (node count)"
            invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
         4: .line 206
            new java.lang.StringBuilder
            dup
            ldc "Graphs do not have the same number of nodes: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* expected */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodeCount:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " vs. "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodeCount:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         5: .line 208
      StackMap locals: org.graalvm.compiler.debug.DebugContext
      StackMap stack:
            return
        end local 3 // org.graalvm.compiler.debug.DebugContext debug
        end local 2 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 1 // org.graalvm.compiler.nodes.StructuredGraph expected
        end local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/graalvm/compiler/core/test/TypeSystemTest;
            0    6     1  expected  Lorg/graalvm/compiler/nodes/StructuredGraph;
            0    6     2     graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            1    6     3     debug  Lorg/graalvm/compiler/debug/DebugContext;
    MethodParameters:
          Name  Flags
      expected  
      graph     

  public static void outputGraph(org.graalvm.compiler.nodes.StructuredGraph, java.lang.String);
    descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=12, args_size=2
        start local 0 // org.graalvm.compiler.nodes.StructuredGraph graph
        start local 1 // java.lang.String message
         0: .line 211
            new java.lang.StringBuilder
            dup
            ldc "========================= "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* message */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.compiler.debug.TTY.println:(Ljava/lang/String;)V
         1: .line 212
            new org.graalvm.compiler.phases.schedule.SchedulePhase
            dup
            aload 0 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
            invokespecial org.graalvm.compiler.phases.schedule.SchedulePhase.<init>:(Lorg/graalvm/compiler/options/OptionValues;)V
            astore 2 /* schedulePhase */
        start local 2 // org.graalvm.compiler.phases.schedule.SchedulePhase schedulePhase
         2: .line 213
            aload 2 /* schedulePhase */
            aload 0 /* graph */
            invokevirtual org.graalvm.compiler.phases.schedule.SchedulePhase.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;)V
         3: .line 214
            aload 0 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getLastSchedule:()Lorg/graalvm/compiler/nodes/StructuredGraph$ScheduleResult;
            astore 3 /* schedule */
        start local 3 // org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult schedule
         4: .line 215
            aload 3 /* schedule */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult.getCFG:()Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
            invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getBlocks:()[Lorg/graalvm/compiler/nodes/cfg/Block;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 21
      StackMap locals: org.graalvm.compiler.nodes.StructuredGraph java.lang.String org.graalvm.compiler.phases.schedule.SchedulePhase org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult top int int org.graalvm.compiler.nodes.cfg.Block[]
      StackMap stack:
         5: aload 7
            iload 5
            aaload
            astore 4 /* block */
        start local 4 // org.graalvm.compiler.nodes.cfg.Block block
         6: .line 216
            new java.lang.StringBuilder
            dup
            ldc "Block "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* block */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.compiler.debug.TTY.print:(Ljava/lang/String;)V
         7: .line 217
            aload 4 /* block */
            aload 3 /* schedule */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult.getCFG:()Lorg/graalvm/compiler/nodes/cfg/ControlFlowGraph;
            invokevirtual org.graalvm.compiler.nodes.cfg.ControlFlowGraph.getStartBlock:()Lorg/graalvm/compiler/nodes/cfg/Block;
            if_acmpne 9
         8: .line 218
            ldc "* "
            invokestatic org.graalvm.compiler.debug.TTY.print:(Ljava/lang/String;)V
         9: .line 220
      StackMap locals: org.graalvm.compiler.nodes.StructuredGraph java.lang.String org.graalvm.compiler.phases.schedule.SchedulePhase org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[]
      StackMap stack:
            ldc "-> "
            invokestatic org.graalvm.compiler.debug.TTY.print:(Ljava/lang/String;)V
        10: .line 221
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            checkcast org.graalvm.compiler.nodes.cfg.Block[]
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 14
      StackMap locals: org.graalvm.compiler.nodes.StructuredGraph java.lang.String org.graalvm.compiler.phases.schedule.SchedulePhase org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] top int int org.graalvm.compiler.nodes.cfg.Block[]
      StackMap stack:
        11: aload 11
            iload 9
            aaload
            astore 8 /* succ */
        start local 8 // org.graalvm.compiler.nodes.cfg.Block succ
        12: .line 222
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 8 /* succ */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.compiler.debug.TTY.print:(Ljava/lang/String;)V
        end local 8 // org.graalvm.compiler.nodes.cfg.Block succ
        13: .line 221
            iinc 9 1
      StackMap locals:
      StackMap stack:
        14: iload 9
            iload 10
            if_icmplt 11
        15: .line 224
            invokestatic org.graalvm.compiler.debug.TTY.println:()V
        16: .line 225
            aload 3 /* schedule */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult.getBlockToNodesMap:()Lorg/graalvm/compiler/core/common/cfg/BlockMap;
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.BlockMap.get:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/lang/Object;
            checkcast java.util.List
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 19
      StackMap locals: org.graalvm.compiler.nodes.StructuredGraph java.lang.String org.graalvm.compiler.phases.schedule.SchedulePhase org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[] top java.util.Iterator
      StackMap stack:
        17: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.graph.Node
            astore 8 /* node */
        start local 8 // org.graalvm.compiler.graph.Node node
        18: .line 226
            aload 8 /* node */
            invokestatic org.graalvm.compiler.core.test.TypeSystemTest.outputNode:(Lorg/graalvm/compiler/graph/Node;)V
        end local 8 // org.graalvm.compiler.graph.Node node
        19: .line 225
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 17
        end local 4 // org.graalvm.compiler.nodes.cfg.Block block
        20: .line 215
            iinc 5 1
      StackMap locals: org.graalvm.compiler.nodes.StructuredGraph java.lang.String org.graalvm.compiler.phases.schedule.SchedulePhase org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult top int int org.graalvm.compiler.nodes.cfg.Block[]
      StackMap stack:
        21: iload 5
            iload 6
            if_icmplt 5
        22: .line 229
            return
        end local 3 // org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult schedule
        end local 2 // org.graalvm.compiler.phases.schedule.SchedulePhase schedulePhase
        end local 1 // java.lang.String message
        end local 0 // org.graalvm.compiler.nodes.StructuredGraph graph
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   23     0          graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            0   23     1        message  Ljava/lang/String;
            2   23     2  schedulePhase  Lorg/graalvm/compiler/phases/schedule/SchedulePhase;
            4   23     3       schedule  Lorg/graalvm/compiler/nodes/StructuredGraph$ScheduleResult;
            6   20     4          block  Lorg/graalvm/compiler/nodes/cfg/Block;
           12   13     8           succ  Lorg/graalvm/compiler/nodes/cfg/Block;
           18   19     8           node  Lorg/graalvm/compiler/graph/Node;
    MethodParameters:
         Name  Flags
      graph    
      message  

  private static void outputNode(org.graalvm.compiler.graph.Node);
    descriptor: (Lorg/graalvm/compiler/graph/Node;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.graalvm.compiler.graph.Node node
         0: .line 232
            new java.lang.StringBuilder
            dup
            ldc "  "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* node */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "    (usage count: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* node */
            invokevirtual org.graalvm.compiler.graph.Node.getUsageCount:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ") (inputs:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.compiler.debug.TTY.print:(Ljava/lang/String;)V
         1: .line 233
            aload 0 /* node */
            invokevirtual org.graalvm.compiler.graph.Node.inputs:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
            astore 2
            goto 4
      StackMap locals: org.graalvm.compiler.graph.Node top java.util.Iterator
      StackMap stack:
         2: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.graph.Node
            astore 1 /* input */
        start local 1 // org.graalvm.compiler.graph.Node input
         3: .line 234
            new java.lang.StringBuilder
            dup
            ldc " "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* input */
            getstatic org.graalvm.compiler.nodeinfo.Verbosity.Id:Lorg/graalvm/compiler/nodeinfo/Verbosity;
            invokevirtual org.graalvm.compiler.graph.Node.toString:(Lorg/graalvm/compiler/nodeinfo/Verbosity;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.compiler.debug.TTY.print:(Ljava/lang/String;)V
        end local 1 // org.graalvm.compiler.graph.Node input
         4: .line 233
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 236
            ldc ")"
            invokestatic org.graalvm.compiler.debug.TTY.println:(Ljava/lang/String;)V
         6: .line 237
            aload 0 /* node */
            instanceof org.graalvm.compiler.nodes.AbstractMergeNode
            ifeq 11
         7: .line 238
            aload 0 /* node */
            checkcast org.graalvm.compiler.nodes.AbstractMergeNode
            invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.phis:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
            astore 2
            goto 10
      StackMap locals:
      StackMap stack:
         8: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.PhiNode
            astore 1 /* phi */
        start local 1 // org.graalvm.compiler.nodes.PhiNode phi
         9: .line 239
            aload 1 /* phi */
            invokestatic org.graalvm.compiler.core.test.TypeSystemTest.outputNode:(Lorg/graalvm/compiler/graph/Node;)V
        end local 1 // org.graalvm.compiler.nodes.PhiNode phi
        10: .line 238
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        11: .line 242
      StackMap locals: org.graalvm.compiler.graph.Node
      StackMap stack:
            return
        end local 0 // org.graalvm.compiler.graph.Node node
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   12     0   node  Lorg/graalvm/compiler/graph/Node;
            3    4     1  input  Lorg/graalvm/compiler/graph/Node;
            9   10     1    phi  Lorg/graalvm/compiler/nodes/PhiNode;
    MethodParameters:
      Name  Flags
      node  

  private <T extends org.graalvm.compiler.graph.Node> void testHelper(java.lang.String, java.lang.Class<T>);
    descriptor: (Ljava/lang/String;Ljava/lang/Class;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
        start local 1 // java.lang.String snippet
        start local 2 // java.lang.Class clazz
         0: .line 245
            aload 0 /* this */
            aload 1 /* snippet */
            getstatic org.graalvm.compiler.nodes.StructuredGraph$AllowAssumptions.NO:Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.parseEager:(Ljava/lang/String;Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;)Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 3 /* graph */
        start local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
         1: .line 246
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.createCanonicalizerPhase:()Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
            aload 3 /* graph */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
         2: .line 247
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.createCanonicalizerPhase:()Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
            aload 3 /* graph */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.core.test.TypeSystemTest.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.common.CanonicalizerPhase.apply:(Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
         3: .line 248
            aload 3 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
            astore 4 /* debug */
        start local 4 // org.graalvm.compiler.debug.DebugContext debug
         4: .line 249
            aload 4 /* debug */
            iconst_1
            aload 3 /* graph */
            new java.lang.StringBuilder
            dup
            ldc "Graph "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* snippet */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
         5: .line 250
            new java.lang.StringBuilder
            dup
            ldc "shouldn't have nodes of type "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* clazz */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodes:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            aload 2 /* clazz */
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.filter:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.hasNext:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         6: .line 251
            return
        end local 4 // org.graalvm.compiler.debug.DebugContext debug
        end local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 2 // java.lang.Class clazz
        end local 1 // java.lang.String snippet
        end local 0 // org.graalvm.compiler.core.test.TypeSystemTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/graalvm/compiler/core/test/TypeSystemTest;
            0    7     1  snippet  Ljava/lang/String;
            0    7     2    clazz  Ljava/lang/Class<TT;>;
            1    7     3    graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            4    7     4    debug  Lorg/graalvm/compiler/debug/DebugContext;
    Signature: <T:Lorg/graalvm/compiler/graph/Node;>(Ljava/lang/String;Ljava/lang/Class<TT;>;)V
    MethodParameters:
         Name  Flags
      snippet  
      clazz    
}
SourceFile: "TypeSystemTest.java"
InnerClasses:
  public final AllowAssumptions = org.graalvm.compiler.nodes.StructuredGraph$AllowAssumptions of org.graalvm.compiler.nodes.StructuredGraph
  public ScheduleResult = org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult of org.graalvm.compiler.nodes.StructuredGraph