class org.objectweb.asm.optimizer.Shrinker$ConstantComparator implements java.util.Comparator<org.objectweb.asm.optimizer.Constant>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.objectweb.asm.optimizer.Shrinker$ConstantComparator
  super_class: java.lang.Object
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.objectweb.asm.optimizer.Shrinker$ConstantComparator this
         0: .line 147
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.objectweb.asm.optimizer.Shrinker$ConstantComparator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/objectweb/asm/optimizer/Shrinker$ConstantComparator;

  public int compare(org.objectweb.asm.optimizer.Constant, org.objectweb.asm.optimizer.Constant);
    descriptor: (Lorg/objectweb/asm/optimizer/Constant;Lorg/objectweb/asm/optimizer/Constant;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.objectweb.asm.optimizer.Shrinker$ConstantComparator this
        start local 1 // org.objectweb.asm.optimizer.Constant c1
        start local 2 // org.objectweb.asm.optimizer.Constant c2
         0: .line 150
            aload 1 /* c1 */
            invokestatic org.objectweb.asm.optimizer.Shrinker$ConstantComparator.getSort:(Lorg/objectweb/asm/optimizer/Constant;)I
            aload 2 /* c2 */
            invokestatic org.objectweb.asm.optimizer.Shrinker$ConstantComparator.getSort:(Lorg/objectweb/asm/optimizer/Constant;)I
            isub
            istore 3 /* d */
        start local 3 // int d
         1: .line 151
            iload 3 /* d */
            ifne 35
         2: .line 152
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.type:C
            lookupswitch { // 10
                   67: 13
                   68: 10
                   70: 7
                   73: 3
                   74: 6
                   83: 13
                   84: 14
                  115: 13
                  116: 13
                  121: 18
              default: 28
          }
         3: .line 154
      StackMap locals: int
      StackMap stack:
            new java.lang.Integer
            dup
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.intVal:I
            invokespecial java.lang.Integer.<init>:(I)V
            new java.lang.Integer
            dup
         4: .line 155
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.intVal:I
            invokespecial java.lang.Integer.<init>:(I)V
         5: .line 154
            invokevirtual java.lang.Integer.compareTo:(Ljava/lang/Integer;)I
            ireturn
         6: .line 157
      StackMap locals:
      StackMap stack:
            new java.lang.Long
            dup
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.longVal:J
            invokespecial java.lang.Long.<init>:(J)V
            new java.lang.Long
            dup
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.longVal:J
            invokespecial java.lang.Long.<init>:(J)V
            invokevirtual java.lang.Long.compareTo:(Ljava/lang/Long;)I
            ireturn
         7: .line 159
      StackMap locals:
      StackMap stack:
            new java.lang.Float
            dup
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.floatVal:F
            invokespecial java.lang.Float.<init>:(F)V
            new java.lang.Float
            dup
         8: .line 160
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.floatVal:F
            invokespecial java.lang.Float.<init>:(F)V
         9: .line 159
            invokevirtual java.lang.Float.compareTo:(Ljava/lang/Float;)I
            ireturn
        10: .line 162
      StackMap locals:
      StackMap stack:
            new java.lang.Double
            dup
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.doubleVal:D
            invokespecial java.lang.Double.<init>:(D)V
            new java.lang.Double
            dup
        11: .line 163
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.doubleVal:D
            invokespecial java.lang.Double.<init>:(D)V
        12: .line 162
            invokevirtual java.lang.Double.compareTo:(Ljava/lang/Double;)I
            ireturn
        13: .line 168
      StackMap locals:
      StackMap stack:
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.strVal1:Ljava/lang/String;
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.strVal1:Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            ireturn
        14: .line 170
      StackMap locals:
      StackMap stack:
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.strVal1:Ljava/lang/String;
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.strVal1:Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            istore 3 /* d */
        15: .line 171
            iload 3 /* d */
            ifne 35
        16: .line 172
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.strVal2:Ljava/lang/String;
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.strVal2:Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            istore 3 /* d */
        17: .line 174
            goto 35
        18: .line 176
      StackMap locals:
      StackMap stack:
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.strVal1:Ljava/lang/String;
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.strVal1:Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            istore 3 /* d */
        19: .line 177
            iload 3 /* d */
            ifne 35
        20: .line 178
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.strVal2:Ljava/lang/String;
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.strVal2:Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            istore 3 /* d */
        21: .line 179
            iload 3 /* d */
            ifne 35
        22: .line 180
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.objVal3:Ljava/lang/Object;
            checkcast org.objectweb.asm.Handle
            astore 4 /* bsm1 */
        start local 4 // org.objectweb.asm.Handle bsm1
        23: .line 181
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.objVal3:Ljava/lang/Object;
            checkcast org.objectweb.asm.Handle
            astore 5 /* bsm2 */
        start local 5 // org.objectweb.asm.Handle bsm2
        24: .line 182
            aload 4 /* bsm1 */
            aload 5 /* bsm2 */
            invokestatic org.objectweb.asm.optimizer.Shrinker$ConstantComparator.compareHandle:(Lorg/objectweb/asm/Handle;Lorg/objectweb/asm/Handle;)I
            istore 3 /* d */
        25: .line 183
            iload 3 /* d */
            ifne 35
        26: .line 184
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.objVals:[Ljava/lang/Object;
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.objVals:[Ljava/lang/Object;
            invokestatic org.objectweb.asm.optimizer.Shrinker$ConstantComparator.compareObjects:([Ljava/lang/Object;[Ljava/lang/Object;)I
            istore 3 /* d */
        end local 5 // org.objectweb.asm.Handle bsm2
        end local 4 // org.objectweb.asm.Handle bsm1
        27: .line 188
            goto 35
        28: .line 191
      StackMap locals:
      StackMap stack:
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.strVal1:Ljava/lang/String;
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.strVal1:Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            istore 3 /* d */
        29: .line 192
            iload 3 /* d */
            ifne 35
        30: .line 193
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.strVal2:Ljava/lang/String;
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.strVal2:Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            istore 3 /* d */
        31: .line 194
            iload 3 /* d */
            ifne 35
        32: .line 195
            aload 1 /* c1 */
            getfield org.objectweb.asm.optimizer.Constant.objVal3:Ljava/lang/Object;
            checkcast java.lang.String
        33: .line 196
            aload 2 /* c2 */
            getfield org.objectweb.asm.optimizer.Constant.objVal3:Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
        34: .line 195
            istore 3 /* d */
        35: .line 201
      StackMap locals:
      StackMap stack:
            iload 3 /* d */
            ireturn
        end local 3 // int d
        end local 2 // org.objectweb.asm.optimizer.Constant c2
        end local 1 // org.objectweb.asm.optimizer.Constant c1
        end local 0 // org.objectweb.asm.optimizer.Shrinker$ConstantComparator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   36     0  this  Lorg/objectweb/asm/optimizer/Shrinker$ConstantComparator;
            0   36     1    c1  Lorg/objectweb/asm/optimizer/Constant;
            0   36     2    c2  Lorg/objectweb/asm/optimizer/Constant;
            1   36     3     d  I
           23   27     4  bsm1  Lorg/objectweb/asm/Handle;
           24   27     5  bsm2  Lorg/objectweb/asm/Handle;
    MethodParameters:
      Name  Flags
      c1    final
      c2    final

  private static int compareHandle(org.objectweb.asm.Handle, org.objectweb.asm.Handle);
    descriptor: (Lorg/objectweb/asm/Handle;Lorg/objectweb/asm/Handle;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.objectweb.asm.Handle h1
        start local 1 // org.objectweb.asm.Handle h2
         0: .line 205
            aload 0 /* h1 */
            invokevirtual org.objectweb.asm.Handle.getTag:()I
            aload 1 /* h2 */
            invokevirtual org.objectweb.asm.Handle.getTag:()I
            isub
            istore 2 /* d */
        start local 2 // int d
         1: .line 206
            iload 2 /* d */
            ifne 7
         2: .line 207
            aload 0 /* h1 */
            invokevirtual org.objectweb.asm.Handle.getOwner:()Ljava/lang/String;
            aload 1 /* h2 */
            invokevirtual org.objectweb.asm.Handle.getOwner:()Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            istore 2 /* d */
         3: .line 208
            iload 2 /* d */
            ifne 7
         4: .line 209
            aload 0 /* h1 */
            invokevirtual org.objectweb.asm.Handle.getName:()Ljava/lang/String;
            aload 1 /* h2 */
            invokevirtual org.objectweb.asm.Handle.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            istore 2 /* d */
         5: .line 210
            iload 2 /* d */
            ifne 7
         6: .line 211
            aload 0 /* h1 */
            invokevirtual org.objectweb.asm.Handle.getDesc:()Ljava/lang/String;
            aload 1 /* h2 */
            invokevirtual org.objectweb.asm.Handle.getDesc:()Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            istore 2 /* d */
         7: .line 215
      StackMap locals: int
      StackMap stack:
            iload 2 /* d */
            ireturn
        end local 2 // int d
        end local 1 // org.objectweb.asm.Handle h2
        end local 0 // org.objectweb.asm.Handle h1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0    h1  Lorg/objectweb/asm/Handle;
            0    8     1    h2  Lorg/objectweb/asm/Handle;
            1    8     2     d  I
    MethodParameters:
      Name  Flags
      h1    
      h2    

  private static int compareType(org.objectweb.asm.Type, org.objectweb.asm.Type);
    descriptor: (Lorg/objectweb/asm/Type;Lorg/objectweb/asm/Type;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.objectweb.asm.Type mtype1
        start local 1 // org.objectweb.asm.Type mtype2
         0: .line 219
            aload 0 /* mtype1 */
            invokevirtual org.objectweb.asm.Type.getDescriptor:()Ljava/lang/String;
            aload 1 /* mtype2 */
            invokevirtual org.objectweb.asm.Type.getDescriptor:()Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            ireturn
        end local 1 // org.objectweb.asm.Type mtype2
        end local 0 // org.objectweb.asm.Type mtype1
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  mtype1  Lorg/objectweb/asm/Type;
            0    1     1  mtype2  Lorg/objectweb/asm/Type;
    MethodParameters:
        Name  Flags
      mtype1  
      mtype2  

  private static int compareObjects(java.lang.Object[], java.lang.Object[]);
    descriptor: ([Ljava/lang/Object;[Ljava/lang/Object;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // java.lang.Object[] objVals1
        start local 1 // java.lang.Object[] objVals2
         0: .line 223
            aload 0 /* objVals1 */
            arraylength
            istore 2 /* length */
        start local 2 // int length
         1: .line 224
            iload 2 /* length */
            aload 1 /* objVals2 */
            arraylength
            isub
            istore 3 /* d */
        start local 3 // int d
         2: .line 225
            iload 3 /* d */
            ifne 24
         3: .line 226
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         4: goto 23
         5: .line 227
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* objVals1 */
            iload 4 /* i */
            aaload
            astore 5 /* objVal1 */
        start local 5 // java.lang.Object objVal1
         6: .line 228
            aload 1 /* objVals2 */
            iload 4 /* i */
            aaload
            astore 6 /* objVal2 */
        start local 6 // java.lang.Object objVal2
         7: .line 229
            aload 5 /* objVal1 */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
         8: .line 230
            aload 6 /* objVal2 */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
         9: .line 229
            istore 3 /* d */
        10: .line 231
            iload 3 /* d */
            ifne 20
        11: .line 232
            aload 5 /* objVal1 */
            instanceof org.objectweb.asm.Type
            ifeq 14
        12: .line 233
            aload 5 /* objVal1 */
            checkcast org.objectweb.asm.Type
            aload 6 /* objVal2 */
            checkcast org.objectweb.asm.Type
            invokestatic org.objectweb.asm.optimizer.Shrinker$ConstantComparator.compareType:(Lorg/objectweb/asm/Type;Lorg/objectweb/asm/Type;)I
            istore 3 /* d */
        13: .line 234
            goto 20
      StackMap locals: java.lang.Object java.lang.Object
      StackMap stack:
        14: aload 5 /* objVal1 */
            instanceof org.objectweb.asm.Handle
            ifeq 19
        15: .line 235
            aload 5 /* objVal1 */
            checkcast org.objectweb.asm.Handle
        16: .line 236
            aload 6 /* objVal2 */
            checkcast org.objectweb.asm.Handle
        17: .line 235
            invokestatic org.objectweb.asm.optimizer.Shrinker$ConstantComparator.compareHandle:(Lorg/objectweb/asm/Handle;Lorg/objectweb/asm/Handle;)I
            istore 3 /* d */
        18: .line 237
            goto 20
        19: .line 238
      StackMap locals:
      StackMap stack:
            aload 5 /* objVal1 */
            checkcast java.lang.Comparable
            aload 6 /* objVal2 */
            invokeinterface java.lang.Comparable.compareTo:(Ljava/lang/Object;)I
            istore 3 /* d */
        20: .line 242
      StackMap locals:
      StackMap stack:
            iload 3 /* d */
            ifeq 22
        21: .line 243
            iload 3 /* d */
            ireturn
        end local 6 // java.lang.Object objVal2
        end local 5 // java.lang.Object objVal1
        22: .line 226
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 4 /* i */
            iload 2 /* length */
            if_icmplt 5
        end local 4 // int i
        24: .line 247
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // int d
        end local 2 // int length
        end local 1 // java.lang.Object[] objVals2
        end local 0 // java.lang.Object[] objVals1
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   25     0  objVals1  [Ljava/lang/Object;
            0   25     1  objVals2  [Ljava/lang/Object;
            1   25     2    length  I
            2   25     3         d  I
            4   24     4         i  I
            6   22     5   objVal1  Ljava/lang/Object;
            7   22     6   objVal2  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      objVals1  
      objVals2  

  private static int getSort(org.objectweb.asm.optimizer.Constant);
    descriptor: (Lorg/objectweb/asm/optimizer/Constant;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.objectweb.asm.optimizer.Constant c
         0: .line 251
            aload 0 /* c */
            getfield org.objectweb.asm.optimizer.Constant.type:C
            lookupswitch { // 13
                   67: 7
                   68: 4
                   70: 3
                   71: 9
                   73: 1
                   74: 2
                   77: 10
                   78: 11
                   83: 6
                   84: 8
                  115: 5
                  116: 13
                  121: 12
              default: 14
          }
         1: .line 253
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         2: .line 255
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         3: .line 257
      StackMap locals:
      StackMap stack:
            iconst_2
            ireturn
         4: .line 259
      StackMap locals:
      StackMap stack:
            iconst_3
            ireturn
         5: .line 261
      StackMap locals:
      StackMap stack:
            iconst_4
            ireturn
         6: .line 263
      StackMap locals:
      StackMap stack:
            iconst_5
            ireturn
         7: .line 265
      StackMap locals:
      StackMap stack:
            bipush 6
            ireturn
         8: .line 267
      StackMap locals:
      StackMap stack:
            bipush 7
            ireturn
         9: .line 269
      StackMap locals:
      StackMap stack:
            bipush 8
            ireturn
        10: .line 271
      StackMap locals:
      StackMap stack:
            bipush 9
            ireturn
        11: .line 273
      StackMap locals:
      StackMap stack:
            bipush 10
            ireturn
        12: .line 275
      StackMap locals:
      StackMap stack:
            bipush 11
            ireturn
        13: .line 277
      StackMap locals:
      StackMap stack:
            bipush 12
            ireturn
        14: .line 279
      StackMap locals:
      StackMap stack:
            bipush 100
            aload 0 /* c */
            getfield org.objectweb.asm.optimizer.Constant.type:C
            iadd
            bipush 104
            isub
            ireturn
        end local 0 // org.objectweb.asm.optimizer.Constant c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0     c  Lorg/objectweb/asm/optimizer/Constant;
    MethodParameters:
      Name  Flags
      c     final

  public int compare(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            checkcast org.objectweb.asm.optimizer.Constant
            aload 2
            checkcast org.objectweb.asm.optimizer.Constant
            invokevirtual org.objectweb.asm.optimizer.Shrinker$ConstantComparator.compare:(Lorg/objectweb/asm/optimizer/Constant;Lorg/objectweb/asm/optimizer/Constant;)I
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Ljava/lang/Object;Ljava/util/Comparator<Lorg/objectweb/asm/optimizer/Constant;>;
SourceFile: "Shrinker.java"
NestHost: org.objectweb.asm.optimizer.Shrinker
InnerClasses:
  ConstantComparator = org.objectweb.asm.optimizer.Shrinker$ConstantComparator of org.objectweb.asm.optimizer.Shrinker