public class org.objectweb.asm.optimizer.Shrinker
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.objectweb.asm.optimizer.Shrinker
  super_class: java.lang.Object
{
  static final java.util.HashMap<java.lang.String, java.lang.String> MAPPING;
    descriptor: Ljava/util/HashMap;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 61
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.objectweb.asm.optimizer.Shrinker.MAPPING:Ljava/util/HashMap;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.objectweb.asm.optimizer.Shrinker this
         0: .line 59
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.objectweb.asm.optimizer.Shrinker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/objectweb/asm/optimizer/Shrinker;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 64
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 1 /* properties */
        start local 1 // java.util.Properties properties
         1: .line 65
            aload 0 /* args */
            arraylength
            iconst_1
            isub
            istore 2 /* n */
        start local 2 // int n
         2: .line 66
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 6
         4: .line 67
      StackMap locals: java.util.Properties int int
      StackMap stack:
            aload 1 /* properties */
            new java.io.FileInputStream
            dup
            aload 0 /* args */
            iload 3 /* i */
            aaload
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         5: .line 66
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 3 /* i */
            iload 2 /* n */
            iconst_1
            isub
            if_icmplt 4
        end local 3 // int i
         7: .line 70
            aload 1 /* properties */
            invokevirtual java.util.Properties.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 10
      StackMap locals: java.lang.String[] java.util.Properties int top java.util.Iterator
      StackMap stack:
         8: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* entry */
        start local 3 // java.util.Map$Entry entry
         9: .line 71
            getstatic org.objectweb.asm.optimizer.Shrinker.MAPPING:Ljava/util/HashMap;
            aload 3 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aload 3 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // java.util.Map$Entry entry
        10: .line 70
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        11: .line 74
            new java.util.HashSet
            dup
            getstatic org.objectweb.asm.optimizer.Shrinker.MAPPING:Ljava/util/HashMap;
            invokevirtual java.util.HashMap.keySet:()Ljava/util/Set;
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            astore 3 /* unused */
        start local 3 // java.util.Set unused
        12: .line 76
            new java.io.File
            dup
            aload 0 /* args */
            iload 2 /* n */
            iconst_1
            isub
            aaload
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 4 /* f */
        start local 4 // java.io.File f
        13: .line 77
            new java.io.File
            dup
            aload 0 /* args */
            iload 2 /* n */
            aaload
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 5 /* d */
        start local 5 // java.io.File d
        14: .line 79
            aload 4 /* f */
            aload 5 /* d */
            new org.objectweb.asm.optimizer.Shrinker$1
            dup
            getstatic org.objectweb.asm.optimizer.Shrinker.MAPPING:Ljava/util/HashMap;
            aload 3 /* unused */
            invokespecial org.objectweb.asm.optimizer.Shrinker$1.<init>:(Ljava/util/Map;Ljava/util/Set;)V
            invokestatic org.objectweb.asm.optimizer.Shrinker.optimize:(Ljava/io/File;Ljava/io/File;Lorg/objectweb/asm/commons/Remapper;)V
        15: .line 90
            aload 3 /* unused */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6 /* i */
        start local 6 // java.util.Iterator i
        16: .line 91
            goto 20
        17: .line 92
      StackMap locals: java.lang.String[] java.util.Properties int java.util.Set java.io.File java.io.File java.util.Iterator
      StackMap stack:
            aload 6 /* i */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* s */
        start local 7 // java.lang.String s
        18: .line 93
            aload 7 /* s */
            ldc "/remove"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 20
        19: .line 94
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "INFO: unused mapping "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 7 /* s */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 7 // java.lang.String s
        20: .line 91
      StackMap locals:
      StackMap stack:
            aload 6 /* i */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 17
        21: .line 97
            return
        end local 6 // java.util.Iterator i
        end local 5 // java.io.File d
        end local 4 // java.io.File f
        end local 3 // java.util.Set unused
        end local 2 // int n
        end local 1 // java.util.Properties properties
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   22     0        args  [Ljava/lang/String;
            1   22     1  properties  Ljava/util/Properties;
            2   22     2           n  I
            3    7     3           i  I
            9   10     3       entry  Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;
           12   22     3      unused  Ljava/util/Set<Ljava/lang/String;>;
           13   22     4           f  Ljava/io/File;
           14   22     5           d  Ljava/io/File;
           16   22     6           i  Ljava/util/Iterator<Ljava/lang/String;>;
           18   20     7           s  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      args  final

  static void optimize(java.io.File, java.io.File, org.objectweb.asm.commons.Remapper);
    descriptor: (Ljava/io/File;Ljava/io/File;Lorg/objectweb/asm/commons/Remapper;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=14, args_size=3
        start local 0 // java.io.File f
        start local 1 // java.io.File d
        start local 2 // org.objectweb.asm.commons.Remapper remapper
         0: .line 101
            aload 0 /* f */
            invokevirtual java.io.File.isDirectory:()Z
            ifeq 8
         1: .line 102
            aload 0 /* f */
            invokevirtual java.io.File.listFiles:()[Ljava/io/File;
            astore 3 /* files */
        start local 3 // java.io.File[] files
         2: .line 103
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 6
         4: .line 104
      StackMap locals: java.io.File[] int
      StackMap stack:
            aload 3 /* files */
            iload 4 /* i */
            aaload
            aload 1 /* d */
            aload 2 /* remapper */
            invokestatic org.objectweb.asm.optimizer.Shrinker.optimize:(Ljava/io/File;Ljava/io/File;Lorg/objectweb/asm/commons/Remapper;)V
         5: .line 103
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 4 /* i */
            aload 3 /* files */
            arraylength
            if_icmplt 4
        end local 4 // int i
        end local 3 // java.io.File[] files
         7: .line 106
            goto 43
      StackMap locals:
      StackMap stack:
         8: aload 0 /* f */
            invokevirtual java.io.File.getName:()Ljava/lang/String;
            ldc ".class"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 43
         9: .line 107
            new org.objectweb.asm.optimizer.ConstantPool
            dup
            invokespecial org.objectweb.asm.optimizer.ConstantPool.<init>:()V
            astore 3 /* cp */
        start local 3 // org.objectweb.asm.optimizer.ConstantPool cp
        10: .line 108
            new org.objectweb.asm.ClassReader
            dup
            new java.io.FileInputStream
            dup
            aload 0 /* f */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            invokespecial org.objectweb.asm.ClassReader.<init>:(Ljava/io/InputStream;)V
            astore 4 /* cr */
        start local 4 // org.objectweb.asm.ClassReader cr
        11: .line 109
            new org.objectweb.asm.ClassWriter
            dup
            iconst_0
            invokespecial org.objectweb.asm.ClassWriter.<init>:(I)V
            astore 5 /* cw */
        start local 5 // org.objectweb.asm.ClassWriter cw
        12: .line 110
            new org.objectweb.asm.optimizer.ClassConstantsCollector
            dup
            aload 5 /* cw */
            aload 3 /* cp */
            invokespecial org.objectweb.asm.optimizer.ClassConstantsCollector.<init>:(Lorg/objectweb/asm/ClassVisitor;Lorg/objectweb/asm/optimizer/ConstantPool;)V
            astore 6 /* ccc */
        start local 6 // org.objectweb.asm.optimizer.ClassConstantsCollector ccc
        13: .line 111
            new org.objectweb.asm.optimizer.ClassOptimizer
            dup
            aload 6 /* ccc */
            aload 2 /* remapper */
            invokespecial org.objectweb.asm.optimizer.ClassOptimizer.<init>:(Lorg/objectweb/asm/ClassVisitor;Lorg/objectweb/asm/commons/Remapper;)V
            astore 7 /* co */
        start local 7 // org.objectweb.asm.optimizer.ClassOptimizer co
        14: .line 112
            aload 4 /* cr */
            aload 7 /* co */
            iconst_2
            invokevirtual org.objectweb.asm.ClassReader.accept:(Lorg/objectweb/asm/ClassVisitor;I)V
        15: .line 114
            new java.util.TreeSet
            dup
        16: .line 115
            new org.objectweb.asm.optimizer.Shrinker$ConstantComparator
            dup
            invokespecial org.objectweb.asm.optimizer.Shrinker$ConstantComparator.<init>:()V
        17: .line 114
            invokespecial java.util.TreeSet.<init>:(Ljava/util/Comparator;)V
            astore 8 /* constants */
        start local 8 // java.util.Set constants
        18: .line 116
            aload 8 /* constants */
            aload 3 /* cp */
            invokevirtual org.objectweb.asm.optimizer.ConstantPool.values:()Ljava/util/Collection;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        19: .line 118
            new org.objectweb.asm.ClassReader
            dup
            aload 5 /* cw */
            invokevirtual org.objectweb.asm.ClassWriter.toByteArray:()[B
            invokespecial org.objectweb.asm.ClassReader.<init>:([B)V
            astore 4 /* cr */
        20: .line 119
            new org.objectweb.asm.ClassWriter
            dup
            iconst_0
            invokespecial org.objectweb.asm.ClassWriter.<init>:(I)V
            astore 5 /* cw */
        21: .line 120
            aload 8 /* constants */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 9 /* i */
        start local 9 // java.util.Iterator i
        22: .line 121
            goto 25
        23: .line 122
      StackMap locals: java.io.File java.io.File org.objectweb.asm.commons.Remapper org.objectweb.asm.optimizer.ConstantPool org.objectweb.asm.ClassReader org.objectweb.asm.ClassWriter org.objectweb.asm.optimizer.ClassConstantsCollector org.objectweb.asm.optimizer.ClassOptimizer java.util.Set java.util.Iterator
      StackMap stack:
            aload 9 /* i */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.objectweb.asm.optimizer.Constant
            astore 10 /* c */
        start local 10 // org.objectweb.asm.optimizer.Constant c
        24: .line 123
            aload 10 /* c */
            aload 5 /* cw */
            invokevirtual org.objectweb.asm.optimizer.Constant.write:(Lorg/objectweb/asm/ClassWriter;)V
        end local 10 // org.objectweb.asm.optimizer.Constant c
        25: .line 121
      StackMap locals:
      StackMap stack:
            aload 9 /* i */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 23
        26: .line 125
            aload 4 /* cr */
            aload 5 /* cw */
            iconst_2
            invokevirtual org.objectweb.asm.ClassReader.accept:(Lorg/objectweb/asm/ClassVisitor;I)V
        27: .line 127
            getstatic org.objectweb.asm.optimizer.Shrinker.MAPPING:Ljava/util/HashMap;
            new java.lang.StringBuilder
            dup
            aload 4 /* cr */
            invokevirtual org.objectweb.asm.ClassReader.getClassName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/remove"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            ifnull 29
        28: .line 128
            return
        29: .line 130
      StackMap locals:
      StackMap stack:
            aload 2 /* remapper */
            aload 4 /* cr */
            invokevirtual org.objectweb.asm.ClassReader.getClassName:()Ljava/lang/String;
            invokevirtual org.objectweb.asm.commons.Remapper.mapType:(Ljava/lang/String;)Ljava/lang/String;
            astore 10 /* n */
        start local 10 // java.lang.String n
        30: .line 131
            new java.io.File
            dup
            aload 1 /* d */
            new java.lang.StringBuilder
            dup
            aload 10 /* n */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".class"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 11 /* g */
        start local 11 // java.io.File g
        31: .line 132
            aload 11 /* g */
            invokevirtual java.io.File.exists:()Z
            ifeq 32
            aload 11 /* g */
            invokevirtual java.io.File.lastModified:()J
            aload 0 /* f */
            invokevirtual java.io.File.lastModified:()J
            lcmp
            ifge 43
        32: .line 133
      StackMap locals: java.lang.String java.io.File
      StackMap stack:
            aload 11 /* g */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            invokevirtual java.io.File.exists:()Z
            ifne 36
            aload 11 /* g */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            invokevirtual java.io.File.mkdirs:()Z
            ifne 36
        33: .line 134
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot create directory "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        34: .line 135
            aload 11 /* g */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        35: .line 134
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        36: .line 137
      StackMap locals:
      StackMap stack:
            new java.io.FileOutputStream
            dup
            aload 11 /* g */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
            astore 12 /* os */
        start local 12 // java.io.OutputStream os
        37: .line 139
            aload 12 /* os */
            aload 5 /* cw */
            invokevirtual org.objectweb.asm.ClassWriter.toByteArray:()[B
            invokevirtual java.io.OutputStream.write:([B)V
        38: .line 140
            goto 42
      StackMap locals: java.io.File java.io.File org.objectweb.asm.commons.Remapper org.objectweb.asm.optimizer.ConstantPool org.objectweb.asm.ClassReader org.objectweb.asm.ClassWriter org.objectweb.asm.optimizer.ClassConstantsCollector org.objectweb.asm.optimizer.ClassOptimizer java.util.Set java.util.Iterator java.lang.String java.io.File java.io.OutputStream
      StackMap stack: java.lang.Throwable
        39: astore 13
        40: .line 141
            aload 12 /* os */
            invokevirtual java.io.OutputStream.close:()V
        41: .line 142
            aload 13
            athrow
        42: .line 141
      StackMap locals:
      StackMap stack:
            aload 12 /* os */
            invokevirtual java.io.OutputStream.close:()V
        end local 12 // java.io.OutputStream os
        end local 11 // java.io.File g
        end local 10 // java.lang.String n
        end local 9 // java.util.Iterator i
        end local 8 // java.util.Set constants
        end local 7 // org.objectweb.asm.optimizer.ClassOptimizer co
        end local 6 // org.objectweb.asm.optimizer.ClassConstantsCollector ccc
        end local 5 // org.objectweb.asm.ClassWriter cw
        end local 4 // org.objectweb.asm.ClassReader cr
        end local 3 // org.objectweb.asm.optimizer.ConstantPool cp
        43: .line 145
      StackMap locals: java.io.File java.io.File org.objectweb.asm.commons.Remapper
      StackMap stack:
            return
        end local 2 // org.objectweb.asm.commons.Remapper remapper
        end local 1 // java.io.File d
        end local 0 // java.io.File f
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   44     0          f  Ljava/io/File;
            0   44     1          d  Ljava/io/File;
            0   44     2   remapper  Lorg/objectweb/asm/commons/Remapper;
            2    7     3      files  [Ljava/io/File;
            3    7     4          i  I
           10   43     3         cp  Lorg/objectweb/asm/optimizer/ConstantPool;
           11   43     4         cr  Lorg/objectweb/asm/ClassReader;
           12   43     5         cw  Lorg/objectweb/asm/ClassWriter;
           13   43     6        ccc  Lorg/objectweb/asm/optimizer/ClassConstantsCollector;
           14   43     7         co  Lorg/objectweb/asm/optimizer/ClassOptimizer;
           18   43     8  constants  Ljava/util/Set<Lorg/objectweb/asm/optimizer/Constant;>;
           22   43     9          i  Ljava/util/Iterator<Lorg/objectweb/asm/optimizer/Constant;>;
           24   25    10          c  Lorg/objectweb/asm/optimizer/Constant;
           30   43    10          n  Ljava/lang/String;
           31   43    11          g  Ljava/io/File;
           37   43    12         os  Ljava/io/OutputStream;
      Exception table:
        from    to  target  type
          37    39      39  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      f         final
      d         final
      remapper  final
}
SourceFile: "Shrinker.java"
NestMembers:
  org.objectweb.asm.optimizer.Shrinker$1  org.objectweb.asm.optimizer.Shrinker$ConstantComparator
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  org.objectweb.asm.optimizer.Shrinker$1
  ConstantComparator = org.objectweb.asm.optimizer.Shrinker$ConstantComparator of org.objectweb.asm.optimizer.Shrinker