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 90
            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\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 228
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.compare0:()V
         1: .line 229
            goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 1 /* e */
        start local 1 // java.lang.Throwable e
         3: .line 230
            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 231
            new java.util.Formatter
            dup
            invokespecial java.util.Formatter.<init>:()V
            astore 3 /* msg */
        start local 3 // java.util.Formatter msg
         5: .line 232
            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 233
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.bci:I
            iflt 9
         7: .line 234
            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 235
            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 237
      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 239
      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 248
            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 371
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 372
            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 376
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 3 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 377
            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 381
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 382
            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 387
            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 388
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodError
            pop
         3: .line 390
            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 395
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 396
            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 401
            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 407
            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 413
            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 427
            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 463
            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