final class jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner
  super_class: java.lang.Object
{
  private final com.sun.tools.classfile.ClassFile cf;
    descriptor: Lcom/sun/tools/classfile/ClassFile;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private void <init>(com.sun.tools.classfile.ClassFile);
    descriptor: (Lcom/sun/tools/classfile/ClassFile;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
        start local 1 // com.sun.tools.classfile.ClassFile cf
         0: .line 85
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 86
            aload 0 /* this */
            aload 1 /* cf */
            putfield jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.cf:Lcom/sun/tools/classfile/ClassFile;
         2: .line 87
            return
        end local 1 // com.sun.tools.classfile.ClassFile cf
        end local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/tools/jlink/internal/plugins/StringSharingPlugin$CompactCPHelper$DescriptorsScanner;
            0    3     1    cf  Lcom/sun/tools/classfile/ClassFile;
    MethodParameters:
      Name  Flags
      cf    

  private java.util.Set<java.lang.Integer> scan();
    descriptor: ()Ljava/util/Set;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
         0: .line 90
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 1 /* utf8Descriptors */
        start local 1 // java.util.Set utf8Descriptors
         1: .line 91
            aload 0 /* this */
            aload 1 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanConstantPool:(Ljava/util/Set;)V
         2: .line 93
            aload 0 /* this */
            aload 1 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanFields:(Ljava/util/Set;)V
         3: .line 95
            aload 0 /* this */
            aload 1 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanMethods:(Ljava/util/Set;)V
         4: .line 97
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.cf:Lcom/sun/tools/classfile/ClassFile;
            getfield com.sun.tools.classfile.ClassFile.attributes:Lcom/sun/tools/classfile/Attributes;
            aload 1 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanAttributes:(Lcom/sun/tools/classfile/Attributes;Ljava/util/Set;)V
         5: .line 99
            aload 1 /* utf8Descriptors */
            areturn
        end local 1 // java.util.Set utf8Descriptors
        end local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0             this  Ljdk/tools/jlink/internal/plugins/StringSharingPlugin$CompactCPHelper$DescriptorsScanner;
            1    6     1  utf8Descriptors  Ljava/util/Set<Ljava/lang/Integer;>;
    Exceptions:
      throws java.lang.Exception
    Signature: ()Ljava/util/Set<Ljava/lang/Integer;>;

  private void scanAttributes(com.sun.tools.classfile.Attributes, java.util.Set<java.lang.Integer>);
    descriptor: (Lcom/sun/tools/classfile/Attributes;Ljava/util/Set;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=14, args_size=3
        start local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
        start local 1 // com.sun.tools.classfile.Attributes attributes
        start local 2 // java.util.Set utf8Descriptors
         0: .line 104
            aload 1 /* attributes */
            invokevirtual com.sun.tools.classfile.Attributes.iterator:()Ljava/util/Iterator;
            astore 4
            goto 54
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.tools.classfile.Attribute
            astore 3 /* a */
        start local 3 // com.sun.tools.classfile.Attribute a
         2: .line 105
            aload 3 /* a */
            instanceof com.sun.tools.classfile.Signature_attribute
            ifeq 6
         3: .line 106
            aload 3 /* a */
            checkcast com.sun.tools.classfile.Signature_attribute
            astore 5 /* sig */
        start local 5 // com.sun.tools.classfile.Signature_attribute sig
         4: .line 107
            aload 2 /* utf8Descriptors */
            aload 5 /* sig */
            getfield com.sun.tools.classfile.Signature_attribute.signature_index:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // com.sun.tools.classfile.Signature_attribute sig
         5: .line 108
            goto 54
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator
      StackMap stack:
         6: aload 3 /* a */
            instanceof com.sun.tools.classfile.RuntimeVisibleAnnotations_attribute
            ifeq 15
         7: .line 110
            aload 3 /* a */
            checkcast com.sun.tools.classfile.RuntimeVisibleAnnotations_attribute
         8: .line 109
            astore 5 /* an */
        start local 5 // com.sun.tools.classfile.RuntimeVisibleAnnotations_attribute an
         9: .line 111
            aload 5 /* an */
            getfield com.sun.tools.classfile.RuntimeVisibleAnnotations_attribute.annotations:[Lcom/sun/tools/classfile/Annotation;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 13
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator com.sun.tools.classfile.RuntimeVisibleAnnotations_attribute top int int com.sun.tools.classfile.Annotation[]
      StackMap stack:
        10: aload 9
            iload 7
            aaload
            astore 6 /* annotation */
        start local 6 // com.sun.tools.classfile.Annotation annotation
        11: .line 112
            aload 0 /* this */
            aload 6 /* annotation */
            aload 2 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanAnnotation:(Lcom/sun/tools/classfile/Annotation;Ljava/util/Set;)V
        end local 6 // com.sun.tools.classfile.Annotation annotation
        12: .line 111
            iinc 7 1
      StackMap locals:
      StackMap stack:
        13: iload 7
            iload 8
            if_icmplt 10
        end local 5 // com.sun.tools.classfile.RuntimeVisibleAnnotations_attribute an
        14: .line 114
            goto 54
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator
      StackMap stack:
        15: aload 3 /* a */
            instanceof com.sun.tools.classfile.RuntimeInvisibleAnnotations_attribute
            ifeq 24
        16: .line 116
            aload 3 /* a */
            checkcast com.sun.tools.classfile.RuntimeInvisibleAnnotations_attribute
        17: .line 115
            astore 5 /* an */
        start local 5 // com.sun.tools.classfile.RuntimeInvisibleAnnotations_attribute an
        18: .line 117
            aload 5 /* an */
            getfield com.sun.tools.classfile.RuntimeInvisibleAnnotations_attribute.annotations:[Lcom/sun/tools/classfile/Annotation;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 22
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator com.sun.tools.classfile.RuntimeInvisibleAnnotations_attribute top int int com.sun.tools.classfile.Annotation[]
      StackMap stack:
        19: aload 9
            iload 7
            aaload
            astore 6 /* annotation */
        start local 6 // com.sun.tools.classfile.Annotation annotation
        20: .line 118
            aload 0 /* this */
            aload 6 /* annotation */
            aload 2 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanAnnotation:(Lcom/sun/tools/classfile/Annotation;Ljava/util/Set;)V
        end local 6 // com.sun.tools.classfile.Annotation annotation
        21: .line 117
            iinc 7 1
      StackMap locals:
      StackMap stack:
        22: iload 7
            iload 8
            if_icmplt 19
        end local 5 // com.sun.tools.classfile.RuntimeInvisibleAnnotations_attribute an
        23: .line 120
            goto 54
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator
      StackMap stack:
        24: aload 3 /* a */
            instanceof com.sun.tools.classfile.RuntimeParameterAnnotations_attribute
            ifeq 37
        25: .line 122
            aload 3 /* a */
            checkcast com.sun.tools.classfile.RuntimeParameterAnnotations_attribute
        26: .line 121
            astore 5 /* rap */
        start local 5 // com.sun.tools.classfile.RuntimeParameterAnnotations_attribute rap
        27: .line 123
            aload 5 /* rap */
            getfield com.sun.tools.classfile.RuntimeParameterAnnotations_attribute.parameter_annotations:[[Lcom/sun/tools/classfile/Annotation;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 35
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator com.sun.tools.classfile.RuntimeParameterAnnotations_attribute top int int com.sun.tools.classfile.Annotation[][]
      StackMap stack:
        28: aload 9
            iload 7
            aaload
            astore 6 /* arr */
        start local 6 // com.sun.tools.classfile.Annotation[] arr
        29: .line 124
            aload 6 /* arr */
            dup
            astore 13
            arraylength
            istore 12
            iconst_0
            istore 11
            goto 33
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator com.sun.tools.classfile.RuntimeParameterAnnotations_attribute com.sun.tools.classfile.Annotation[] int int com.sun.tools.classfile.Annotation[][] top int int com.sun.tools.classfile.Annotation[]
      StackMap stack:
        30: aload 13
            iload 11
            aaload
            astore 10 /* an */
        start local 10 // com.sun.tools.classfile.Annotation an
        31: .line 125
            aload 0 /* this */
            aload 10 /* an */
            aload 2 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanAnnotation:(Lcom/sun/tools/classfile/Annotation;Ljava/util/Set;)V
        end local 10 // com.sun.tools.classfile.Annotation an
        32: .line 124
            iinc 11 1
      StackMap locals:
      StackMap stack:
        33: iload 11
            iload 12
            if_icmplt 30
        end local 6 // com.sun.tools.classfile.Annotation[] arr
        34: .line 123
            iinc 7 1
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator com.sun.tools.classfile.RuntimeParameterAnnotations_attribute top int int com.sun.tools.classfile.Annotation[][]
      StackMap stack:
        35: iload 7
            iload 8
            if_icmplt 28
        end local 5 // com.sun.tools.classfile.RuntimeParameterAnnotations_attribute rap
        36: .line 128
            goto 54
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator
      StackMap stack:
        37: aload 3 /* a */
            instanceof com.sun.tools.classfile.LocalVariableTable_attribute
            ifeq 46
        38: .line 130
            aload 3 /* a */
            checkcast com.sun.tools.classfile.LocalVariableTable_attribute
        39: .line 129
            astore 5 /* lvt */
        start local 5 // com.sun.tools.classfile.LocalVariableTable_attribute lvt
        40: .line 132
            aload 5 /* lvt */
            getfield com.sun.tools.classfile.LocalVariableTable_attribute.local_variable_table:[Lcom/sun/tools/classfile/LocalVariableTable_attribute$Entry;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 44
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator com.sun.tools.classfile.LocalVariableTable_attribute top int int com.sun.tools.classfile.LocalVariableTable_attribute$Entry[]
      StackMap stack:
        41: aload 9
            iload 7
            aaload
            astore 6 /* entry */
        start local 6 // com.sun.tools.classfile.LocalVariableTable_attribute$Entry entry
        42: .line 133
            aload 2 /* utf8Descriptors */
            aload 6 /* entry */
            getfield com.sun.tools.classfile.LocalVariableTable_attribute$Entry.descriptor_index:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // com.sun.tools.classfile.LocalVariableTable_attribute$Entry entry
        43: .line 131
            iinc 7 1
      StackMap locals:
      StackMap stack:
        44: iload 7
            iload 8
            if_icmplt 41
        end local 5 // com.sun.tools.classfile.LocalVariableTable_attribute lvt
        45: .line 135
            goto 54
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator
      StackMap stack:
        46: aload 3 /* a */
            instanceof com.sun.tools.classfile.LocalVariableTypeTable_attribute
            ifeq 54
        47: .line 137
            aload 3 /* a */
            checkcast com.sun.tools.classfile.LocalVariableTypeTable_attribute
        48: .line 136
            astore 5 /* lvt */
        start local 5 // com.sun.tools.classfile.LocalVariableTypeTable_attribute lvt
        49: .line 139
            aload 5 /* lvt */
            getfield com.sun.tools.classfile.LocalVariableTypeTable_attribute.local_variable_table:[Lcom/sun/tools/classfile/LocalVariableTypeTable_attribute$Entry;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 53
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set com.sun.tools.classfile.Attribute java.util.Iterator com.sun.tools.classfile.LocalVariableTypeTable_attribute top int int com.sun.tools.classfile.LocalVariableTypeTable_attribute$Entry[]
      StackMap stack:
        50: aload 9
            iload 7
            aaload
            astore 6 /* entry */
        start local 6 // com.sun.tools.classfile.LocalVariableTypeTable_attribute$Entry entry
        51: .line 140
            aload 2 /* utf8Descriptors */
            aload 6 /* entry */
            getfield com.sun.tools.classfile.LocalVariableTypeTable_attribute$Entry.signature_index:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // com.sun.tools.classfile.LocalVariableTypeTable_attribute$Entry entry
        52: .line 138
            iinc 7 1
      StackMap locals:
      StackMap stack:
        53: iload 7
            iload 8
            if_icmplt 50
        end local 5 // com.sun.tools.classfile.LocalVariableTypeTable_attribute lvt
        end local 3 // com.sun.tools.classfile.Attribute a
        54: .line 104
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Attributes java.util.Set top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        55: .line 144
            return
        end local 2 // java.util.Set utf8Descriptors
        end local 1 // com.sun.tools.classfile.Attributes attributes
        end local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   56     0             this  Ljdk/tools/jlink/internal/plugins/StringSharingPlugin$CompactCPHelper$DescriptorsScanner;
            0   56     1       attributes  Lcom/sun/tools/classfile/Attributes;
            0   56     2  utf8Descriptors  Ljava/util/Set<Ljava/lang/Integer;>;
            2   54     3                a  Lcom/sun/tools/classfile/Attribute;
            4    5     5              sig  Lcom/sun/tools/classfile/Signature_attribute;
            9   14     5               an  Lcom/sun/tools/classfile/RuntimeVisibleAnnotations_attribute;
           11   12     6       annotation  Lcom/sun/tools/classfile/Annotation;
           18   23     5               an  Lcom/sun/tools/classfile/RuntimeInvisibleAnnotations_attribute;
           20   21     6       annotation  Lcom/sun/tools/classfile/Annotation;
           27   36     5              rap  Lcom/sun/tools/classfile/RuntimeParameterAnnotations_attribute;
           29   34     6              arr  [Lcom/sun/tools/classfile/Annotation;
           31   32    10               an  Lcom/sun/tools/classfile/Annotation;
           40   45     5              lvt  Lcom/sun/tools/classfile/LocalVariableTable_attribute;
           42   43     6            entry  Lcom/sun/tools/classfile/LocalVariableTable_attribute$Entry;
           49   54     5              lvt  Lcom/sun/tools/classfile/LocalVariableTypeTable_attribute;
           51   52     6            entry  Lcom/sun/tools/classfile/LocalVariableTypeTable_attribute$Entry;
    Exceptions:
      throws java.lang.Exception
    Signature: (Lcom/sun/tools/classfile/Attributes;Ljava/util/Set<Ljava/lang/Integer;>;)V
    MethodParameters:
                 Name  Flags
      attributes       
      utf8Descriptors  

  private void scanAnnotation(com.sun.tools.classfile.Annotation, java.util.Set<java.lang.Integer>);
    descriptor: (Lcom/sun/tools/classfile/Annotation;Ljava/util/Set;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
        start local 1 // com.sun.tools.classfile.Annotation annotation
        start local 2 // java.util.Set utf8Descriptors
         0: .line 148
            aload 2 /* utf8Descriptors */
            aload 1 /* annotation */
            getfield com.sun.tools.classfile.Annotation.type_index:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         1: .line 149
            aload 1 /* annotation */
            getfield com.sun.tools.classfile.Annotation.element_value_pairs:[Lcom/sun/tools/classfile/Annotation$element_value_pair;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 6
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Annotation java.util.Set top int int com.sun.tools.classfile.Annotation$element_value_pair[]
      StackMap stack:
         2: aload 6
            iload 4
            aaload
            astore 3 /* evp */
        start local 3 // com.sun.tools.classfile.Annotation$element_value_pair evp
         3: .line 150
            aload 2 /* utf8Descriptors */
            aload 3 /* evp */
            getfield com.sun.tools.classfile.Annotation$element_value_pair.element_name_index:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 151
            aload 0 /* this */
            aload 3 /* evp */
            getfield com.sun.tools.classfile.Annotation$element_value_pair.value:Lcom/sun/tools/classfile/Annotation$element_value;
            aload 2 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanElementValue:(Lcom/sun/tools/classfile/Annotation$element_value;Ljava/util/Set;)V
        end local 3 // com.sun.tools.classfile.Annotation$element_value_pair evp
         5: .line 149
            iinc 4 1
      StackMap locals:
      StackMap stack:
         6: iload 4
            iload 5
            if_icmplt 2
         7: .line 153
            return
        end local 2 // java.util.Set utf8Descriptors
        end local 1 // com.sun.tools.classfile.Annotation annotation
        end local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Ljdk/tools/jlink/internal/plugins/StringSharingPlugin$CompactCPHelper$DescriptorsScanner;
            0    8     1       annotation  Lcom/sun/tools/classfile/Annotation;
            0    8     2  utf8Descriptors  Ljava/util/Set<Ljava/lang/Integer;>;
            3    5     3              evp  Lcom/sun/tools/classfile/Annotation$element_value_pair;
    Exceptions:
      throws java.lang.Exception
    Signature: (Lcom/sun/tools/classfile/Annotation;Ljava/util/Set<Ljava/lang/Integer;>;)V
    MethodParameters:
                 Name  Flags
      annotation       
      utf8Descriptors  

  private void scanElementValue(com.sun.tools.classfile.Annotation$element_value, java.util.Set<java.lang.Integer>);
    descriptor: (Lcom/sun/tools/classfile/Annotation$element_value;Ljava/util/Set;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
        start local 1 // com.sun.tools.classfile.Annotation$element_value value
        start local 2 // java.util.Set utf8Descriptors
         0: .line 157
            aload 1 /* value */
            instanceof com.sun.tools.classfile.Annotation$Enum_element_value
            ifeq 4
         1: .line 159
            aload 1 /* value */
            checkcast com.sun.tools.classfile.Annotation$Enum_element_value
         2: .line 158
            astore 3 /* eev */
        start local 3 // com.sun.tools.classfile.Annotation$Enum_element_value eev
         3: .line 160
            aload 2 /* utf8Descriptors */
            aload 3 /* eev */
            getfield com.sun.tools.classfile.Annotation$Enum_element_value.type_name_index:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // com.sun.tools.classfile.Annotation$Enum_element_value eev
         4: .line 162
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            instanceof com.sun.tools.classfile.Annotation$Class_element_value
            ifeq 8
         5: .line 164
            aload 1 /* value */
            checkcast com.sun.tools.classfile.Annotation$Class_element_value
         6: .line 163
            astore 3 /* eev */
        start local 3 // com.sun.tools.classfile.Annotation$Class_element_value eev
         7: .line 165
            aload 2 /* utf8Descriptors */
            aload 3 /* eev */
            getfield com.sun.tools.classfile.Annotation$Class_element_value.class_info_index:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // com.sun.tools.classfile.Annotation$Class_element_value eev
         8: .line 167
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            instanceof com.sun.tools.classfile.Annotation$Annotation_element_value
            ifeq 12
         9: .line 169
            aload 1 /* value */
            checkcast com.sun.tools.classfile.Annotation$Annotation_element_value
        10: .line 168
            astore 3 /* aev */
        start local 3 // com.sun.tools.classfile.Annotation$Annotation_element_value aev
        11: .line 170
            aload 0 /* this */
            aload 3 /* aev */
            getfield com.sun.tools.classfile.Annotation$Annotation_element_value.annotation_value:Lcom/sun/tools/classfile/Annotation;
            aload 2 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanAnnotation:(Lcom/sun/tools/classfile/Annotation;Ljava/util/Set;)V
        end local 3 // com.sun.tools.classfile.Annotation$Annotation_element_value aev
        12: .line 172
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            instanceof com.sun.tools.classfile.Annotation$Array_element_value
            ifeq 20
        13: .line 174
            aload 1 /* value */
            checkcast com.sun.tools.classfile.Annotation$Array_element_value
        14: .line 173
            astore 3 /* aev */
        start local 3 // com.sun.tools.classfile.Annotation$Array_element_value aev
        15: .line 175
            aload 3 /* aev */
            getfield com.sun.tools.classfile.Annotation$Array_element_value.values:[Lcom/sun/tools/classfile/Annotation$element_value;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 19
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Annotation$element_value java.util.Set com.sun.tools.classfile.Annotation$Array_element_value top int int com.sun.tools.classfile.Annotation$element_value[]
      StackMap stack:
        16: aload 7
            iload 5
            aaload
            astore 4 /* v */
        start local 4 // com.sun.tools.classfile.Annotation$element_value v
        17: .line 176
            aload 0 /* this */
            aload 4 /* v */
            aload 2 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanElementValue:(Lcom/sun/tools/classfile/Annotation$element_value;Ljava/util/Set;)V
        end local 4 // com.sun.tools.classfile.Annotation$element_value v
        18: .line 175
            iinc 5 1
      StackMap locals:
      StackMap stack:
        19: iload 5
            iload 6
            if_icmplt 16
        end local 3 // com.sun.tools.classfile.Annotation$Array_element_value aev
        20: .line 179
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner com.sun.tools.classfile.Annotation$element_value java.util.Set
      StackMap stack:
            return
        end local 2 // java.util.Set utf8Descriptors
        end local 1 // com.sun.tools.classfile.Annotation$element_value value
        end local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   21     0             this  Ljdk/tools/jlink/internal/plugins/StringSharingPlugin$CompactCPHelper$DescriptorsScanner;
            0   21     1            value  Lcom/sun/tools/classfile/Annotation$element_value;
            0   21     2  utf8Descriptors  Ljava/util/Set<Ljava/lang/Integer;>;
            3    4     3              eev  Lcom/sun/tools/classfile/Annotation$Enum_element_value;
            7    8     3              eev  Lcom/sun/tools/classfile/Annotation$Class_element_value;
           11   12     3              aev  Lcom/sun/tools/classfile/Annotation$Annotation_element_value;
           15   20     3              aev  Lcom/sun/tools/classfile/Annotation$Array_element_value;
           17   18     4                v  Lcom/sun/tools/classfile/Annotation$element_value;
    Exceptions:
      throws java.lang.Exception
    Signature: (Lcom/sun/tools/classfile/Annotation$element_value;Ljava/util/Set<Ljava/lang/Integer;>;)V
    MethodParameters:
                 Name  Flags
      value            
      utf8Descriptors  

  private void scanFields(java.util.Set<java.lang.Integer>);
    descriptor: (Ljava/util/Set;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
        start local 1 // java.util.Set utf8Descriptors
         0: .line 183
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.cf:Lcom/sun/tools/classfile/ClassFile;
            getfield com.sun.tools.classfile.ClassFile.fields:[Lcom/sun/tools/classfile/Field;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 6
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner java.util.Set top int int com.sun.tools.classfile.Field[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* field */
        start local 2 // com.sun.tools.classfile.Field field
         2: .line 184
            aload 2 /* field */
            getfield com.sun.tools.classfile.Field.descriptor:Lcom/sun/tools/classfile/Descriptor;
            getfield com.sun.tools.classfile.Descriptor.index:I
            istore 6 /* descriptorIndex */
        start local 6 // int descriptorIndex
         3: .line 185
            aload 1 /* utf8Descriptors */
            iload 6 /* descriptorIndex */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 186
            aload 0 /* this */
            aload 2 /* field */
            getfield com.sun.tools.classfile.Field.attributes:Lcom/sun/tools/classfile/Attributes;
            aload 1 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanAttributes:(Lcom/sun/tools/classfile/Attributes;Ljava/util/Set;)V
        end local 6 // int descriptorIndex
        end local 2 // com.sun.tools.classfile.Field field
         5: .line 183
            iinc 3 1
      StackMap locals:
      StackMap stack:
         6: iload 3
            iload 4
            if_icmplt 1
         7: .line 189
            return
        end local 1 // java.util.Set utf8Descriptors
        end local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Ljdk/tools/jlink/internal/plugins/StringSharingPlugin$CompactCPHelper$DescriptorsScanner;
            0    8     1  utf8Descriptors  Ljava/util/Set<Ljava/lang/Integer;>;
            2    5     2            field  Lcom/sun/tools/classfile/Field;
            3    5     6  descriptorIndex  I
    Exceptions:
      throws java.lang.Exception
    Signature: (Ljava/util/Set<Ljava/lang/Integer;>;)V
    MethodParameters:
                 Name  Flags
      utf8Descriptors  

  private void scanMethods(java.util.Set<java.lang.Integer>);
    descriptor: (Ljava/util/Set;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
        start local 1 // java.util.Set utf8Descriptors
         0: .line 193
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.cf:Lcom/sun/tools/classfile/ClassFile;
            getfield com.sun.tools.classfile.ClassFile.methods:[Lcom/sun/tools/classfile/Method;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 6
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner java.util.Set top int int com.sun.tools.classfile.Method[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* m */
        start local 2 // com.sun.tools.classfile.Method m
         2: .line 194
            aload 2 /* m */
            getfield com.sun.tools.classfile.Method.descriptor:Lcom/sun/tools/classfile/Descriptor;
            getfield com.sun.tools.classfile.Descriptor.index:I
            istore 6 /* descriptorIndex */
        start local 6 // int descriptorIndex
         3: .line 195
            aload 1 /* utf8Descriptors */
            iload 6 /* descriptorIndex */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 196
            aload 0 /* this */
            aload 2 /* m */
            getfield com.sun.tools.classfile.Method.attributes:Lcom/sun/tools/classfile/Attributes;
            aload 1 /* utf8Descriptors */
            invokevirtual jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.scanAttributes:(Lcom/sun/tools/classfile/Attributes;Ljava/util/Set;)V
        end local 6 // int descriptorIndex
        end local 2 // com.sun.tools.classfile.Method m
         5: .line 193
            iinc 3 1
      StackMap locals:
      StackMap stack:
         6: iload 3
            iload 4
            if_icmplt 1
         7: .line 198
            return
        end local 1 // java.util.Set utf8Descriptors
        end local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Ljdk/tools/jlink/internal/plugins/StringSharingPlugin$CompactCPHelper$DescriptorsScanner;
            0    8     1  utf8Descriptors  Ljava/util/Set<Ljava/lang/Integer;>;
            2    5     2                m  Lcom/sun/tools/classfile/Method;
            3    5     6  descriptorIndex  I
    Exceptions:
      throws java.lang.Exception
    Signature: (Ljava/util/Set<Ljava/lang/Integer;>;)V
    MethodParameters:
                 Name  Flags
      utf8Descriptors  

  private void scanConstantPool(java.util.Set<java.lang.Integer>);
    descriptor: (Ljava/util/Set;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
        start local 1 // java.util.Set utf8Descriptors
         0: .line 202
            iconst_1
            istore 2 /* i */
        start local 2 // int i
         1: goto 18
         2: .line 204
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.cf:Lcom/sun/tools/classfile/ClassFile;
            getfield com.sun.tools.classfile.ClassFile.constant_pool:Lcom/sun/tools/classfile/ConstantPool;
            iload 2 /* i */
            invokevirtual com.sun.tools.classfile.ConstantPool.get:(I)Lcom/sun/tools/classfile/ConstantPool$CPInfo;
            astore 3 /* info */
        start local 3 // com.sun.tools.classfile.ConstantPool$CPInfo info
         3: .line 205
            aload 3 /* info */
            instanceof com.sun.tools.classfile.ConstantPool$CONSTANT_NameAndType_info
            ifeq 7
         4: .line 207
            aload 3 /* info */
            checkcast com.sun.tools.classfile.ConstantPool$CONSTANT_NameAndType_info
         5: .line 206
            astore 4 /* nameAndType */
        start local 4 // com.sun.tools.classfile.ConstantPool$CONSTANT_NameAndType_info nameAndType
         6: .line 208
            aload 1 /* utf8Descriptors */
            aload 4 /* nameAndType */
            getfield com.sun.tools.classfile.ConstantPool$CONSTANT_NameAndType_info.type_index:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // com.sun.tools.classfile.ConstantPool$CONSTANT_NameAndType_info nameAndType
         7: .line 210
      StackMap locals: com.sun.tools.classfile.ConstantPool$CPInfo
      StackMap stack:
            aload 3 /* info */
            instanceof com.sun.tools.classfile.ConstantPool$CONSTANT_MethodType_info
            ifeq 11
         8: .line 212
            aload 3 /* info */
            checkcast com.sun.tools.classfile.ConstantPool$CONSTANT_MethodType_info
         9: .line 211
            astore 4 /* mt */
        start local 4 // com.sun.tools.classfile.ConstantPool$CONSTANT_MethodType_info mt
        10: .line 213
            aload 1 /* utf8Descriptors */
            aload 4 /* mt */
            getfield com.sun.tools.classfile.ConstantPool$CONSTANT_MethodType_info.descriptor_index:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // com.sun.tools.classfile.ConstantPool$CONSTANT_MethodType_info mt
        11: .line 216
      StackMap locals:
      StackMap stack:
            aload 3 /* info */
            instanceof com.sun.tools.classfile.ConstantPool$CONSTANT_Double_info
            ifne 13
        12: .line 217
            aload 3 /* info */
            instanceof com.sun.tools.classfile.ConstantPool$CONSTANT_Long_info
            ifeq 17
        13: .line 218
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
        end local 3 // com.sun.tools.classfile.ConstantPool$CPInfo info
        14: .line 220
            goto 17
      StackMap locals: jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner java.util.Set int
      StackMap stack: com.sun.tools.classfile.ConstantPool$InvalidIndex
        15: astore 3 /* ex */
        start local 3 // com.sun.tools.classfile.ConstantPool$InvalidIndex ex
        16: .line 221
            new java.io.IOException
            dup
            aload 3 /* ex */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // com.sun.tools.classfile.ConstantPool$InvalidIndex ex
        17: .line 202
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 2 /* i */
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner.cf:Lcom/sun/tools/classfile/ClassFile;
            getfield com.sun.tools.classfile.ClassFile.constant_pool:Lcom/sun/tools/classfile/ConstantPool;
            invokevirtual com.sun.tools.classfile.ConstantPool.size:()I
            if_icmplt 2
        end local 2 // int i
        19: .line 224
            return
        end local 1 // java.util.Set utf8Descriptors
        end local 0 // jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   20     0             this  Ljdk/tools/jlink/internal/plugins/StringSharingPlugin$CompactCPHelper$DescriptorsScanner;
            0   20     1  utf8Descriptors  Ljava/util/Set<Ljava/lang/Integer;>;
            1   19     2                i  I
            3   14     3             info  Lcom/sun/tools/classfile/ConstantPool$CPInfo;
            6    7     4      nameAndType  Lcom/sun/tools/classfile/ConstantPool$CONSTANT_NameAndType_info;
           10   11     4               mt  Lcom/sun/tools/classfile/ConstantPool$CONSTANT_MethodType_info;
           16   17     3               ex  Lcom/sun/tools/classfile/ConstantPool$InvalidIndex;
      Exception table:
        from    to  target  type
           2    14      15  Class com.sun.tools.classfile.ConstantPool$InvalidIndex
    Exceptions:
      throws java.lang.Exception
    Signature: (Ljava/util/Set<Ljava/lang/Integer;>;)V
    MethodParameters:
                 Name  Flags
      utf8Descriptors  
}
SourceFile: "StringSharingPlugin.java"
NestHost: jdk.tools.jlink.internal.plugins.StringSharingPlugin
InnerClasses:
  public Annotation_element_value = com.sun.tools.classfile.Annotation$Annotation_element_value of com.sun.tools.classfile.Annotation
  public Array_element_value = com.sun.tools.classfile.Annotation$Array_element_value of com.sun.tools.classfile.Annotation
  public Class_element_value = com.sun.tools.classfile.Annotation$Class_element_value of com.sun.tools.classfile.Annotation
  public Enum_element_value = com.sun.tools.classfile.Annotation$Enum_element_value of com.sun.tools.classfile.Annotation
  public abstract element_value = com.sun.tools.classfile.Annotation$element_value of com.sun.tools.classfile.Annotation
  public element_value_pair = com.sun.tools.classfile.Annotation$element_value_pair of com.sun.tools.classfile.Annotation
  public CONSTANT_Double_info = com.sun.tools.classfile.ConstantPool$CONSTANT_Double_info of com.sun.tools.classfile.ConstantPool
  public CONSTANT_Long_info = com.sun.tools.classfile.ConstantPool$CONSTANT_Long_info of com.sun.tools.classfile.ConstantPool
  public CONSTANT_MethodType_info = com.sun.tools.classfile.ConstantPool$CONSTANT_MethodType_info of com.sun.tools.classfile.ConstantPool
  public CONSTANT_NameAndType_info = com.sun.tools.classfile.ConstantPool$CONSTANT_NameAndType_info of com.sun.tools.classfile.ConstantPool
  public abstract CPInfo = com.sun.tools.classfile.ConstantPool$CPInfo of com.sun.tools.classfile.ConstantPool
  public InvalidIndex = com.sun.tools.classfile.ConstantPool$InvalidIndex of com.sun.tools.classfile.ConstantPool
  public Entry = com.sun.tools.classfile.LocalVariableTable_attribute$Entry of com.sun.tools.classfile.LocalVariableTable_attribute
  public Entry = com.sun.tools.classfile.LocalVariableTypeTable_attribute$Entry of com.sun.tools.classfile.LocalVariableTypeTable_attribute
  private final CompactCPHelper = jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper of jdk.tools.jlink.internal.plugins.StringSharingPlugin
  private final DescriptorsScanner = jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper$DescriptorsScanner of jdk.tools.jlink.internal.plugins.StringSharingPlugin$CompactCPHelper