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 91
            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 244
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.compare0:()V
         1: .line 245
            goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 1 /* e */
        start local 1 // java.lang.Throwable e
         3: .line 246
            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 247
            new java.util.Formatter
            dup
            invokespecial java.util.Formatter.<init>:()V
            astore 3 /* msg */
        start local 3 // java.util.Formatter msg
         5: .line 248
            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 249
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest$BytecodeComparer.bci:I
            iflt 9
         7: .line 250
            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 251
            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 253
      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 255
      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 264
            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 387
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 388
            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 392
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 3 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 393
            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 397
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 398
            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 403
            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 404
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodError
            pop
         3: .line 406
            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 411
            aload 0 /* cp */
            iload 1 /* cpi */
            iload 2 /* opcode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 412
            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 417
            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 423
            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 429
            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 443
            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 479
            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