public final class com.sun.tools.classfile.ReferenceFinder
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.sun.tools.classfile.ReferenceFinder
  super_class: java.lang.Object
{
  private final com.sun.tools.classfile.ReferenceFinder$Filter filter;
    descriptor: Lcom/sun/tools/classfile/ReferenceFinder$Filter;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.sun.tools.classfile.ReferenceFinder$Visitor visitor;
    descriptor: Lcom/sun/tools/classfile/ReferenceFinder$Visitor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private com.sun.tools.classfile.ConstantPool$Visitor<java.lang.Boolean, com.sun.tools.classfile.ConstantPool> cpVisitor;
    descriptor: Lcom/sun/tools/classfile/ConstantPool$Visitor;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lcom/sun/tools/classfile/ConstantPool$Visitor<Ljava/lang/Boolean;Lcom/sun/tools/classfile/ConstantPool;>;

  private com.sun.tools.classfile.Instruction$KindVisitor<java.lang.Integer, java.util.List<java.lang.Integer>> codeVisitor;
    descriptor: Lcom/sun/tools/classfile/Instruction$KindVisitor;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lcom/sun/tools/classfile/Instruction$KindVisitor<Ljava/lang/Integer;Ljava/util/List<Ljava/lang/Integer;>;>;

  public void <init>(com.sun.tools.classfile.ReferenceFinder$Filter, com.sun.tools.classfile.ReferenceFinder$Visitor);
    descriptor: (Lcom/sun/tools/classfile/ReferenceFinder$Filter;Lcom/sun/tools/classfile/ReferenceFinder$Visitor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.sun.tools.classfile.ReferenceFinder this
        start local 1 // com.sun.tools.classfile.ReferenceFinder$Filter filter
        start local 2 // com.sun.tools.classfile.ReferenceFinder$Visitor visitor
         0: .line 79
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 132
            aload 0 /* this */
         2: .line 133
            new com.sun.tools.classfile.ReferenceFinder$1
            dup
            aload 0 /* this */
            invokespecial com.sun.tools.classfile.ReferenceFinder$1.<init>:(Lcom/sun/tools/classfile/ReferenceFinder;)V
            putfield com.sun.tools.classfile.ReferenceFinder.cpVisitor:Lcom/sun/tools/classfile/ConstantPool$Visitor;
         3: .line 205
            aload 0 /* this */
         4: .line 206
            new com.sun.tools.classfile.ReferenceFinder$2
            dup
            aload 0 /* this */
            invokespecial com.sun.tools.classfile.ReferenceFinder$2.<init>:(Lcom/sun/tools/classfile/ReferenceFinder;)V
            putfield com.sun.tools.classfile.ReferenceFinder.codeVisitor:Lcom/sun/tools/classfile/Instruction$KindVisitor;
         5: .line 80
            aload 0 /* this */
            aload 1 /* filter */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.sun.tools.classfile.ReferenceFinder$Filter
            putfield com.sun.tools.classfile.ReferenceFinder.filter:Lcom/sun/tools/classfile/ReferenceFinder$Filter;
         6: .line 81
            aload 0 /* this */
            aload 2 /* visitor */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.sun.tools.classfile.ReferenceFinder$Visitor
            putfield com.sun.tools.classfile.ReferenceFinder.visitor:Lcom/sun/tools/classfile/ReferenceFinder$Visitor;
         7: .line 82
            return
        end local 2 // com.sun.tools.classfile.ReferenceFinder$Visitor visitor
        end local 1 // com.sun.tools.classfile.ReferenceFinder$Filter filter
        end local 0 // com.sun.tools.classfile.ReferenceFinder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lcom/sun/tools/classfile/ReferenceFinder;
            0    8     1   filter  Lcom/sun/tools/classfile/ReferenceFinder$Filter;
            0    8     2  visitor  Lcom/sun/tools/classfile/ReferenceFinder$Visitor;
    MethodParameters:
         Name  Flags
      filter   
      visitor  

  public boolean parse(com.sun.tools.classfile.ClassFile);
    descriptor: (Lcom/sun/tools/classfile/ClassFile;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=13, args_size=2
        start local 0 // com.sun.tools.classfile.ReferenceFinder this
        start local 1 // com.sun.tools.classfile.ClassFile cf
         0: .line 97
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* cprefs */
        start local 2 // java.util.List cprefs
         1: .line 98
            iconst_1
            istore 3 /* index */
        start local 3 // int index
         2: .line 99
            aload 1 /* cf */
            getfield com.sun.tools.classfile.ClassFile.constant_pool:Lcom/sun/tools/classfile/ConstantPool;
            invokevirtual com.sun.tools.classfile.ConstantPool.entries:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 7
      StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.tools.classfile.ConstantPool$CPInfo
            astore 4 /* cpInfo */
        start local 4 // com.sun.tools.classfile.ConstantPool$CPInfo cpInfo
         4: .line 100
            aload 4 /* cpInfo */
            aload 0 /* this */
            getfield com.sun.tools.classfile.ReferenceFinder.cpVisitor:Lcom/sun/tools/classfile/ConstantPool$Visitor;
            aload 1 /* cf */
            getfield com.sun.tools.classfile.ClassFile.constant_pool:Lcom/sun/tools/classfile/ConstantPool;
            invokevirtual com.sun.tools.classfile.ConstantPool$CPInfo.accept:(Lcom/sun/tools/classfile/ConstantPool$Visitor;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 6
         5: .line 101
            aload 2 /* cprefs */
            iload 3 /* index */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 103
      StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int com.sun.tools.classfile.ConstantPool$CPInfo java.util.Iterator
      StackMap stack:
            iload 3 /* index */
            aload 4 /* cpInfo */
            invokevirtual com.sun.tools.classfile.ConstantPool$CPInfo.size:()I
            iadd
            istore 3 /* index */
        end local 4 // com.sun.tools.classfile.ConstantPool$CPInfo cpInfo
         7: .line 99
      StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         8: .line 106
            aload 2 /* cprefs */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 10
         9: .line 107
            iconst_0
            ireturn
        10: .line 110
      StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int
      StackMap stack:
            aload 1 /* cf */
            getfield com.sun.tools.classfile.ClassFile.methods:[Lcom/sun/tools/classfile/Method;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 29
      StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int top int int com.sun.tools.classfile.Method[]
      StackMap stack:
        11: aload 7
            iload 5
            aaload
            astore 4 /* m */
        start local 4 // com.sun.tools.classfile.Method m
        12: .line 111
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 8 /* ids */
        start local 8 // java.util.Set ids
        13: .line 112
            aload 4 /* m */
            getfield com.sun.tools.classfile.Method.attributes:Lcom/sun/tools/classfile/Attributes;
            ldc "Code"
            invokevirtual com.sun.tools.classfile.Attributes.get:(Ljava/lang/String;)Lcom/sun/tools/classfile/Attribute;
            checkcast com.sun.tools.classfile.Code_attribute
            astore 9 /* c_attr */
        start local 9 // com.sun.tools.classfile.Code_attribute c_attr
        14: .line 113
            aload 9 /* c_attr */
            ifnull 21
        15: .line 114
            aload 9 /* c_attr */
            invokevirtual com.sun.tools.classfile.Code_attribute.getInstructions:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 11
            goto 20
      StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int com.sun.tools.classfile.Method int int com.sun.tools.classfile.Method[] java.util.Set com.sun.tools.classfile.Code_attribute top java.util.Iterator
      StackMap stack:
        16: aload 11
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.tools.classfile.Instruction
            astore 10 /* instr */
        start local 10 // com.sun.tools.classfile.Instruction instr
        17: .line 115
            aload 10 /* instr */
            aload 0 /* this */
            getfield com.sun.tools.classfile.ReferenceFinder.codeVisitor:Lcom/sun/tools/classfile/Instruction$KindVisitor;
            aload 2 /* cprefs */
            invokevirtual com.sun.tools.classfile.Instruction.accept:(Lcom/sun/tools/classfile/Instruction$KindVisitor;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 12 /* idx */
        start local 12 // int idx
        18: .line 116
            iload 12 /* idx */
            ifle 20
        19: .line 117
            aload 8 /* ids */
            iload 12 /* idx */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // int idx
        end local 10 // com.sun.tools.classfile.Instruction instr
        20: .line 114
      StackMap locals:
      StackMap stack:
            aload 11
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 16
        21: .line 121
      StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int com.sun.tools.classfile.Method int int com.sun.tools.classfile.Method[] java.util.Set com.sun.tools.classfile.Code_attribute
      StackMap stack:
            aload 8 /* ids */
            invokeinterface java.util.Set.size:()I
            ifle 28
        22: .line 122
            new java.util.ArrayList
            dup
            aload 8 /* ids */
            invokeinterface java.util.Set.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 10 /* refInfos */
        start local 10 // java.util.List refInfos
        23: .line 123
            aload 8 /* ids */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 12
            goto 26
      StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int com.sun.tools.classfile.Method int int com.sun.tools.classfile.Method[] java.util.Set com.sun.tools.classfile.Code_attribute java.util.List top java.util.Iterator
      StackMap stack:
        24: aload 12
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 11 /* id */
        start local 11 // int id
        25: .line 124
            aload 10 /* refInfos */
            ldc Lcom/sun/tools/classfile/ConstantPool$CPRefInfo;
            aload 1 /* cf */
            getfield com.sun.tools.classfile.ClassFile.constant_pool:Lcom/sun/tools/classfile/ConstantPool;
            iload 11 /* id */
            invokevirtual com.sun.tools.classfile.ConstantPool.get:(I)Lcom/sun/tools/classfile/ConstantPool$CPInfo;
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.sun.tools.classfile.ConstantPool$CPRefInfo
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 11 // int id
        26: .line 123
      StackMap locals:
      StackMap stack:
            aload 12
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 24
        27: .line 126
            aload 0 /* this */
            getfield com.sun.tools.classfile.ReferenceFinder.visitor:Lcom/sun/tools/classfile/ReferenceFinder$Visitor;
            aload 1 /* cf */
            aload 4 /* m */
            aload 10 /* refInfos */
            invokeinterface com.sun.tools.classfile.ReferenceFinder$Visitor.visit:(Lcom/sun/tools/classfile/ClassFile;Lcom/sun/tools/classfile/Method;Ljava/util/List;)V
        end local 10 // java.util.List refInfos
        end local 9 // com.sun.tools.classfile.Code_attribute c_attr
        end local 8 // java.util.Set ids
        end local 4 // com.sun.tools.classfile.Method m
        28: .line 110
      StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int top int int com.sun.tools.classfile.Method[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        29: iload 5
            iload 6
            if_icmplt 11
        30: .line 129
            iconst_1
            ireturn
        end local 3 // int index
        end local 2 // java.util.List cprefs
        end local 1 // com.sun.tools.classfile.ClassFile cf
        end local 0 // com.sun.tools.classfile.ReferenceFinder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   31     0      this  Lcom/sun/tools/classfile/ReferenceFinder;
            0   31     1        cf  Lcom/sun/tools/classfile/ClassFile;
            1   31     2    cprefs  Ljava/util/List<Ljava/lang/Integer;>;
            2   31     3     index  I
            4    7     4    cpInfo  Lcom/sun/tools/classfile/ConstantPool$CPInfo;
           12   28     4         m  Lcom/sun/tools/classfile/Method;
           13   28     8       ids  Ljava/util/Set<Ljava/lang/Integer;>;
           14   28     9    c_attr  Lcom/sun/tools/classfile/Code_attribute;
           17   20    10     instr  Lcom/sun/tools/classfile/Instruction;
           18   20    12       idx  I
           23   28    10  refInfos  Ljava/util/List<Lcom/sun/tools/classfile/ConstantPool$CPRefInfo;>;
           25   26    11        id  I
    Exceptions:
      throws com.sun.tools.classfile.ConstantPoolException
    MethodParameters:
      Name  Flags
      cf    
}
SourceFile: "ReferenceFinder.java"
NestMembers:
  com.sun.tools.classfile.ReferenceFinder$1  com.sun.tools.classfile.ReferenceFinder$2  com.sun.tools.classfile.ReferenceFinder$Filter  com.sun.tools.classfile.ReferenceFinder$Visitor
InnerClasses:
  public abstract CPInfo = com.sun.tools.classfile.ConstantPool$CPInfo of com.sun.tools.classfile.ConstantPool
  public abstract CPRefInfo = com.sun.tools.classfile.ConstantPool$CPRefInfo of com.sun.tools.classfile.ConstantPool
  public abstract Visitor = com.sun.tools.classfile.ConstantPool$Visitor of com.sun.tools.classfile.ConstantPool
  public abstract KindVisitor = com.sun.tools.classfile.Instruction$KindVisitor of com.sun.tools.classfile.Instruction
  com.sun.tools.classfile.ReferenceFinder$1
  com.sun.tools.classfile.ReferenceFinder$2
  public abstract Filter = com.sun.tools.classfile.ReferenceFinder$Filter of com.sun.tools.classfile.ReferenceFinder
  public abstract Visitor = com.sun.tools.classfile.ReferenceFinder$Visitor of com.sun.tools.classfile.ReferenceFinder