class org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer
  super_class: java.lang.Object
{
  private org.graalvm.compiler.bytecode.Bytecode expected;
    descriptor: Lorg/graalvm/compiler/bytecode/Bytecode;
    flags: (0x0002) ACC_PRIVATE

  private org.graalvm.compiler.bytecode.Bytecode actual;
    descriptor: Lorg/graalvm/compiler/bytecode/Bytecode;
    flags: (0x0002) ACC_PRIVATE

  private jdk.vm.ci.meta.ConstantPool eCp;
    descriptor: Ljdk/vm/ci/meta/ConstantPool;
    flags: (0x0002) ACC_PRIVATE

  private jdk.vm.ci.meta.ConstantPool aCp;
    descriptor: Ljdk/vm/ci/meta/ConstantPool;
    flags: (0x0002) ACC_PRIVATE

  org.graalvm.compiler.bytecode.BytecodeStream eStream;
    descriptor: Lorg/graalvm/compiler/bytecode/BytecodeStream;
    flags: (0x0000) 

  org.graalvm.compiler.bytecode.BytecodeStream aStream;
    descriptor: Lorg/graalvm/compiler/bytecode/BytecodeStream;
    flags: (0x0000) 

  int bci;
    descriptor: I
    flags: (0x0000) 

  void <init>(org.graalvm.compiler.bytecode.Bytecode, org.graalvm.compiler.bytecode.Bytecode);
    descriptor: (Lorg/graalvm/compiler/bytecode/Bytecode;Lorg/graalvm/compiler/bytecode/Bytecode;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer this
         0: .line 109
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tThe import org.junit cannot be resolved\n\tThe import org.junit cannot be resolved\n\tThe import org.junit cannot be resolved\n\tThe import org.junit cannot be resolved\n\tBefore cannot be resolved to a type\n\tAssume cannot be resolved\n\tTest cannot be resolved to a type\n\tAssume cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/test/classfile/ClassfileBytecodeProviderTest$BytecodeComparer;
    MethodParameters:
          Name  Flags
      expected  
      actual    

  public void compare();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=4, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer this
         0: .line 302
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.compare0:()V
         1: .line 303
            goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 1 /* e */
        start local 1 // java.lang.Throwable e
         3: .line 304
            new org.graalvm.compiler.bytecode.BytecodeDisassembler
            dup
            iconst_1
            iconst_0
            invokespecial org.graalvm.compiler.bytecode.BytecodeDisassembler.<init>:(ZZ)V
            astore 2 /* dis */
        start local 2 // org.graalvm.compiler.bytecode.BytecodeDisassembler dis
         4: .line 305
            new java.util.Formatter
            dup
            invokespecial java.util.Formatter.<init>:()V
            astore 3 /* msg */
        start local 3 // java.util.Formatter msg
         5: .line 306
            aload 3 /* msg */
            ldc "Error comparing bytecode for %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.expected:Lorg/graalvm/compiler/bytecode/Bytecode;
            invokeinterface org.graalvm.compiler.bytecode.Bytecode.getMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            ldc "%H.%n(%p)"
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokevirtual java.util.Formatter.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
            pop
         6: .line 307
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.bci:I
            iflt 9
         7: .line 308
            aload 3 /* msg */
            ldc "%nexpected: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* dis */
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.expected:Lorg/graalvm/compiler/bytecode/Bytecode;
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.bci:I
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.eStream:Lorg/graalvm/compiler/bytecode/BytecodeStream;
            invokevirtual org.graalvm.compiler.bytecode.BytecodeStream.nextBCI:()I
            iconst_1
            isub
            invokevirtual org.graalvm.compiler.bytecode.BytecodeDisassembler.disassemble:(Lorg/graalvm/compiler/bytecode/Bytecode;II)Ljava/lang/String;
            aastore
            invokevirtual java.util.Formatter.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
            pop
         8: .line 309
            aload 3 /* msg */
            ldc "%nactual:   %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* dis */
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.actual:Lorg/graalvm/compiler/bytecode/Bytecode;
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.bci:I
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.aStream:Lorg/graalvm/compiler/bytecode/BytecodeStream;
            invokevirtual org.graalvm.compiler.bytecode.BytecodeStream.nextBCI:()I
            iconst_1
            isub
            invokevirtual org.graalvm.compiler.bytecode.BytecodeDisassembler.disassemble:(Lorg/graalvm/compiler/bytecode/Bytecode;II)Ljava/lang/String;
            aastore
            invokevirtual java.util.Formatter.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
            pop
         9: .line 311
      StackMap locals: java.lang.Throwable org.graalvm.compiler.bytecode.BytecodeDisassembler java.util.Formatter
      StackMap stack:
            new java.lang.AssertionError
            dup
            aload 3 /* msg */
            invokevirtual java.util.Formatter.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.util.Formatter msg
        end local 2 // org.graalvm.compiler.bytecode.BytecodeDisassembler dis
        end local 1 // java.lang.Throwable e
        10: .line 313
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/graalvm/compiler/replacements/test/classfile/ClassfileBytecodeProviderTest$BytecodeComparer;
            3   10     1     e  Ljava/lang/Throwable;
            4   10     2   dis  Lorg/graalvm/compiler/bytecode/BytecodeDisassembler;
            5   10     3   msg  Ljava/util/Formatter;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable

  public void compare0();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer this
         0: .line 322
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/test/classfile/ClassfileBytecodeProviderTest$BytecodeComparer;

  static java.lang.Object lookupConstant(jdk.vm.ci.meta.ConstantPool, int, int);
    descriptor: (Ljdk/vm/ci/meta/ConstantPool;II)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // jdk.vm.ci.meta.ConstantPool cp
        start local 1 // int cpi
        start local 2 // int opcode
         0: .line 445
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 446
            aload 0 /* cp */
            iload 1 /* cpi */
            invokeinterface jdk.vm.ci.meta.ConstantPool.lookupConstant:(I)Ljava/lang/Object;
            areturn
        end local 2 // int opcode
        end local 1 // int cpi
        end local 0 // jdk.vm.ci.meta.ConstantPool cp
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0      cp  Ljdk/vm/ci/meta/ConstantPool;
            0    2     1     cpi  I
            0    2     2  opcode  I
    MethodParameters:
        Name  Flags
      cp      
      cpi     
      opcode  

  static jdk.vm.ci.meta.ResolvedJavaField lookupField(jdk.vm.ci.meta.ConstantPool, int, jdk.vm.ci.meta.ResolvedJavaMethod, int);
    descriptor: (Ljdk/vm/ci/meta/ConstantPool;ILjdk/vm/ci/meta/ResolvedJavaMethod;I)Ljdk/vm/ci/meta/ResolvedJavaField;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // jdk.vm.ci.meta.ConstantPool cp
        start local 1 // int cpi
        start local 2 // jdk.vm.ci.meta.ResolvedJavaMethod method
        start local 3 // int opcode
         0: .line 450
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 3 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 451
            aload 0 /* cp */
            iload 1 /* cpi */
            aload 2 /* method */
            iload 3 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.lookupField:(ILjdk/vm/ci/meta/ResolvedJavaMethod;I)Ljdk/vm/ci/meta/JavaField;
            checkcast jdk.vm.ci.meta.ResolvedJavaField
            areturn
        end local 3 // int opcode
        end local 2 // jdk.vm.ci.meta.ResolvedJavaMethod method
        end local 1 // int cpi
        end local 0 // jdk.vm.ci.meta.ConstantPool cp
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0      cp  Ljdk/vm/ci/meta/ConstantPool;
            0    2     1     cpi  I
            0    2     2  method  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            0    2     3  opcode  I
    MethodParameters:
        Name  Flags
      cp      
      cpi     
      method  
      opcode  

  static jdk.vm.ci.meta.ResolvedJavaMethod lookupMethod(jdk.vm.ci.meta.ConstantPool, int, int);
    descriptor: (Ljdk/vm/ci/meta/ConstantPool;II)Ljdk/vm/ci/meta/ResolvedJavaMethod;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // jdk.vm.ci.meta.ConstantPool cp
        start local 1 // int cpi
        start local 2 // int opcode
         0: .line 455
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 456
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.lookupMethod:(II)Ljdk/vm/ci/meta/JavaMethod;
            checkcast jdk.vm.ci.meta.ResolvedJavaMethod
            areturn
        end local 2 // int opcode
        end local 1 // int cpi
        end local 0 // jdk.vm.ci.meta.ConstantPool cp
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0      cp  Ljdk/vm/ci/meta/ConstantPool;
            0    2     1     cpi  I
            0    2     2  opcode  I
    MethodParameters:
        Name  Flags
      cp      
      cpi     
      opcode  

  static jdk.vm.ci.meta.ResolvedJavaMethod lookupMethodOrNull(jdk.vm.ci.meta.ConstantPool, int, int);
    descriptor: (Ljdk/vm/ci/meta/ConstantPool;II)Ljdk/vm/ci/meta/ResolvedJavaMethod;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // jdk.vm.ci.meta.ConstantPool cp
        start local 1 // int cpi
        start local 2 // int opcode
         0: .line 461
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokestatic org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.lookupMethod:(Ljdk/vm/ci/meta/ConstantPool;II)Ljdk/vm/ci/meta/ResolvedJavaMethod;
         1: areturn
         2: .line 462
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodError
            pop
         3: .line 464
            aconst_null
            areturn
        end local 2 // int opcode
        end local 1 // int cpi
        end local 0 // jdk.vm.ci.meta.ConstantPool cp
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0      cp  Ljdk/vm/ci/meta/ConstantPool;
            0    4     1     cpi  I
            0    4     2  opcode  I
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NoSuchMethodError
    MethodParameters:
        Name  Flags
      cp      
      cpi     
      opcode  

  static jdk.vm.ci.meta.ResolvedJavaType lookupType(jdk.vm.ci.meta.ConstantPool, int, int);
    descriptor: (Ljdk/vm/ci/meta/ConstantPool;II)Ljdk/vm/ci/meta/ResolvedJavaType;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // jdk.vm.ci.meta.ConstantPool cp
        start local 1 // int cpi
        start local 2 // int opcode
         0: .line 469
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 470
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.lookupType:(II)Ljdk/vm/ci/meta/JavaType;
            checkcast jdk.vm.ci.meta.ResolvedJavaType
            areturn
        end local 2 // int opcode
        end local 1 // int cpi
        end local 0 // jdk.vm.ci.meta.ConstantPool cp
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0      cp  Ljdk/vm/ci/meta/ConstantPool;
            0    2     1     cpi  I
            0    2     2  opcode  I
    MethodParameters:
        Name  Flags
      cp      
      cpi     
      opcode  

  static void assertEqualsConstants(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
         0: .line 475
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tAssert cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
      Name  Flags
      e     
      a     

  static void assertEqualFields(jdk.vm.ci.meta.JavaField, jdk.vm.ci.meta.JavaField);
    descriptor: (Ljdk/vm/ci/meta/JavaField;Ljdk/vm/ci/meta/JavaField;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
         0: .line 481
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tAssert cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
      Name  Flags
      e     
      a     

  static void assertEqualTypes(jdk.vm.ci.meta.JavaType, jdk.vm.ci.meta.JavaType);
    descriptor: (Ljdk/vm/ci/meta/JavaType;Ljdk/vm/ci/meta/JavaType;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
         0: .line 487
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tAssert cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
      Name  Flags
      e     
      a     

  static void assertEqualMethods(jdk.vm.ci.meta.ResolvedJavaMethod, jdk.vm.ci.meta.ResolvedJavaMethod);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaMethod;Ljdk/vm/ci/meta/ResolvedJavaMethod;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
         0: .line 501
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tAssert cannot be resolved\n\tAssert cannot be resolved\n\tAssert cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
      Name  Flags
      e     
      a     

  protected static boolean typesAreRelated(jdk.vm.ci.meta.ResolvedJavaMethod, jdk.vm.ci.meta.ResolvedJavaMethod);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaMethod;Ljdk/vm/ci/meta/ResolvedJavaMethod;)Z
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.vm.ci.meta.ResolvedJavaMethod e
        start local 1 // jdk.vm.ci.meta.ResolvedJavaMethod a
         0: .line 537
            aload 1 /* a */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
            aload 0 /* e */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isAssignableFrom:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifne 1
            aload 0 /* e */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
            aload 1 /* a */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isAssignableFrom:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 1 // jdk.vm.ci.meta.ResolvedJavaMethod a
        end local 0 // jdk.vm.ci.meta.ResolvedJavaMethod e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     e  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            0    2     1     a  Ljdk/vm/ci/meta/ResolvedJavaMethod;
    MethodParameters:
      Name  Flags
      e     
      a     
}
SourceFile: "ClassfileBytecodeProviderTest.java"
NestHost: org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest
InnerClasses:
  BytecodeComparer = org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer of org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest