class java.util.zip.ZipFile$CleanableResource implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: java.util.zip.ZipFile$CleanableResource
  super_class: java.lang.Object
{
  final java.util.Set<java.io.InputStream> istreams;
    descriptor: Ljava/util/Set;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/Set<Ljava/io/InputStream;>;

  java.util.Deque<java.util.zip.Inflater> inflaterCache;
    descriptor: Ljava/util/Deque;
    flags: (0x0000) 
    Signature: Ljava/util/Deque<Ljava/util/zip/Inflater;>;

  final java.lang.ref.Cleaner$Cleanable cleanable;
    descriptor: Ljava/lang/ref/Cleaner$Cleanable;
    flags: (0x0010) ACC_FINAL

  java.util.zip.ZipFile$Source zsrc;
    descriptor: Ljava/util/zip/ZipFile$Source;
    flags: (0x0000) 

  void <init>(java.util.zip.ZipFile, java.io.File, int);
    descriptor: (Ljava/util/zip/ZipFile;Ljava/io/File;I)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // java.util.zip.ZipFile$CleanableResource this
        start local 1 // java.util.zip.ZipFile zf
        start local 2 // java.io.File file
        start local 3 // int mode
         0: .line 723
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 724
            aload 0 /* this */
            invokestatic jdk.internal.ref.CleanerFactory.cleaner:()Ljava/lang/ref/Cleaner;
            aload 1 /* zf */
            aload 0 /* this */
            invokevirtual java.lang.ref.Cleaner.register:(Ljava/lang/Object;Ljava/lang/Runnable;)Ljava/lang/ref/Cleaner$Cleanable;
            putfield java.util.zip.ZipFile$CleanableResource.cleanable:Ljava/lang/ref/Cleaner$Cleanable;
         2: .line 725
            aload 0 /* this */
            new java.util.WeakHashMap
            dup
            invokespecial java.util.WeakHashMap.<init>:()V
            invokestatic java.util.Collections.newSetFromMap:(Ljava/util/Map;)Ljava/util/Set;
            putfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
         3: .line 726
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
         4: .line 727
            aload 0 /* this */
            aload 2 /* file */
            iload 3 /* mode */
            iconst_4
            iand
            ifeq 5
            iconst_1
            goto 6
      StackMap locals: java.util.zip.ZipFile$CleanableResource java.util.zip.ZipFile java.io.File int
      StackMap stack: java.util.zip.ZipFile$CleanableResource java.io.File
         5: iconst_0
      StackMap locals: java.util.zip.ZipFile$CleanableResource java.util.zip.ZipFile java.io.File int
      StackMap stack: java.util.zip.ZipFile$CleanableResource java.io.File int
         6: aload 1 /* zf */
            getfield java.util.zip.ZipFile.zc:Ljava/util/zip/ZipCoder;
            invokestatic java.util.zip.ZipFile$Source.get:(Ljava/io/File;ZLjava/util/zip/ZipCoder;)Ljava/util/zip/ZipFile$Source;
            putfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
         7: .line 728
            return
        end local 3 // int mode
        end local 2 // java.io.File file
        end local 1 // java.util.zip.ZipFile zf
        end local 0 // java.util.zip.ZipFile$CleanableResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Ljava/util/zip/ZipFile$CleanableResource;
            0    8     1    zf  Ljava/util/zip/ZipFile;
            0    8     2  file  Ljava/io/File;
            0    8     3  mode  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      zf    
      file  
      mode  

  void clean();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.zip.ZipFile$CleanableResource this
         0: .line 731
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.cleanable:Ljava/lang/ref/Cleaner$Cleanable;
            invokeinterface java.lang.ref.Cleaner$Cleanable.clean:()V
         1: .line 732
            return
        end local 0 // java.util.zip.ZipFile$CleanableResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/util/zip/ZipFile$CleanableResource;

  java.util.zip.Inflater getInflater();
    descriptor: ()Ljava/util/zip/Inflater;
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.util.zip.ZipFile$CleanableResource this
         0: .line 740
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
            dup
            astore 2
            monitorenter
         1: .line 741
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
            invokeinterface java.util.Deque.poll:()Ljava/lang/Object;
            checkcast java.util.zip.Inflater
            dup
            astore 1 /* inf */
        start local 1 // java.util.zip.Inflater inf
         2: ifnull 5
         3: .line 742
            aload 1 /* inf */
            aload 2
            monitorexit
         4: areturn
         5: .line 740
      StackMap locals: java.util.zip.Inflater java.util.Deque
      StackMap stack:
            aload 2
            monitorexit
         6: goto 9
        end local 1 // java.util.zip.Inflater inf
      StackMap locals: java.util.zip.ZipFile$CleanableResource top java.util.Deque
      StackMap stack: java.lang.Throwable
         7: aload 2
            monitorexit
         8: athrow
        start local 1 // java.util.zip.Inflater inf
         9: .line 745
      StackMap locals: java.util.zip.ZipFile$CleanableResource java.util.zip.Inflater
      StackMap stack:
            new java.util.zip.Inflater
            dup
            iconst_1
            invokespecial java.util.zip.Inflater.<init>:(Z)V
            areturn
        end local 1 // java.util.zip.Inflater inf
        end local 0 // java.util.zip.ZipFile$CleanableResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Ljava/util/zip/ZipFile$CleanableResource;
            2    7     1   inf  Ljava/util/zip/Inflater;
            9   10     1   inf  Ljava/util/zip/Inflater;
      Exception table:
        from    to  target  type
           1     4       7  any
           5     6       7  any
           7     8       7  any

  void releaseInflater(java.util.zip.Inflater);
    descriptor: (Ljava/util/zip/Inflater;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.util.zip.ZipFile$CleanableResource this
        start local 1 // java.util.zip.Inflater inf
         0: .line 752
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
            astore 2 /* inflaters */
        start local 2 // java.util.Deque inflaters
         1: .line 753
            aload 2 /* inflaters */
            ifnull 12
         2: .line 754
            aload 2 /* inflaters */
            dup
            astore 3
            monitorenter
         3: .line 756
            aload 2 /* inflaters */
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
            if_acmpne 8
         4: .line 757
            aload 1 /* inf */
            invokevirtual java.util.zip.Inflater.reset:()V
         5: .line 758
            aload 2 /* inflaters */
            aload 1 /* inf */
            invokeinterface java.util.Deque.add:(Ljava/lang/Object;)Z
            pop
         6: .line 759
            aload 3
            monitorexit
         7: return
         8: .line 754
      StackMap locals: java.util.Deque java.util.Deque
      StackMap stack:
            aload 3
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 3
            monitorexit
        11: athrow
        12: .line 764
      StackMap locals:
      StackMap stack:
            aload 1 /* inf */
            invokevirtual java.util.zip.Inflater.end:()V
        13: .line 765
            return
        end local 2 // java.util.Deque inflaters
        end local 1 // java.util.zip.Inflater inf
        end local 0 // java.util.zip.ZipFile$CleanableResource this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Ljava/util/zip/ZipFile$CleanableResource;
            0   14     1        inf  Ljava/util/zip/Inflater;
            1   14     2  inflaters  Ljava/util/Deque<Ljava/util/zip/Inflater;>;
      Exception table:
        from    to  target  type
           3     7      10  any
           8     9      10  any
          10    11      10  any
    MethodParameters:
      Name  Flags
      inf   

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=10, args_size=1
        start local 0 // java.util.zip.ZipFile$CleanableResource this
         0: .line 768
            aconst_null
            astore 1 /* ioe */
        start local 1 // java.io.IOException ioe
         1: .line 771
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
            astore 2 /* inflaters */
        start local 2 // java.util.Deque inflaters
         2: .line 772
            aload 2 /* inflaters */
            ifnull 13
         3: .line 773
            aload 2 /* inflaters */
            dup
            astore 3
            monitorenter
         4: .line 777
            goto 6
        start local 4 // java.util.zip.Inflater inf
         5: .line 778
      StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.Deque java.util.zip.Inflater
      StackMap stack:
            aload 4 /* inf */
            invokevirtual java.util.zip.Inflater.end:()V
        end local 4 // java.util.zip.Inflater inf
         6: .line 777
      StackMap locals:
      StackMap stack:
            aload 2 /* inflaters */
            invokeinterface java.util.Deque.poll:()Ljava/lang/Object;
            checkcast java.util.zip.Inflater
            dup
            astore 4 /* inf */
        start local 4 // java.util.zip.Inflater inf
         7: ifnonnull 5
         8: .line 781
            aload 0 /* this */
            aconst_null
            putfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
        end local 4 // java.util.zip.Inflater inf
         9: .line 773
            aload 3
            monitorexit
        10: goto 13
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: aload 3
            monitorexit
        12: athrow
        13: .line 786
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
            ifnull 31
        14: .line 787
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
            dup
            astore 3
            monitorenter
        15: .line 788
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 27
        16: .line 789
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
            iconst_0
            anewarray java.io.InputStream
            invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.io.InputStream[]
            astore 4 /* copy */
        start local 4 // java.io.InputStream[] copy
        17: .line 790
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
            invokeinterface java.util.Set.clear:()V
        18: .line 791
            aload 4 /* copy */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 26
      StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.Set java.io.InputStream[] top int int java.io.InputStream[]
      StackMap stack:
        19: aload 8
            iload 6
            aaload
            astore 5 /* is */
        start local 5 // java.io.InputStream is
        20: .line 793
            aload 5 /* is */
            invokevirtual java.io.InputStream.close:()V
        21: .line 794
            goto 25
      StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.Set java.io.InputStream[] java.io.InputStream int int java.io.InputStream[]
      StackMap stack: java.io.IOException
        22: astore 9 /* e */
        start local 9 // java.io.IOException e
        23: .line 795
            aload 1 /* ioe */
            ifnonnull 24
            aload 9 /* e */
            astore 1 /* ioe */
            goto 25
        24: .line 796
      StackMap locals: java.io.IOException
      StackMap stack:
            aload 1 /* ioe */
            aload 9 /* e */
            invokevirtual java.io.IOException.addSuppressed:(Ljava/lang/Throwable;)V
        end local 9 // java.io.IOException e
        end local 5 // java.io.InputStream is
        25: .line 791
      StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.Set java.io.InputStream[] top int int java.io.InputStream[]
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        26: iload 6
            iload 7
            if_icmplt 19
        end local 4 // java.io.InputStream[] copy
        27: .line 787
      StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.Set
      StackMap stack:
            aload 3
            monitorexit
        28: goto 31
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: aload 3
            monitorexit
        30: athrow
        31: .line 804
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
            ifnull 43
        32: .line 805
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
            dup
            astore 3
            monitorenter
        33: .line 807
            aload 0 /* this */
            getfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
            invokestatic java.util.zip.ZipFile$Source.release:(Ljava/util/zip/ZipFile$Source;)V
        34: .line 808
            aload 0 /* this */
            aconst_null
            putfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
        35: .line 809
            goto 39
      StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.IOException java.util.Deque java.util.zip.ZipFile$Source
      StackMap stack: java.io.IOException
        36: astore 4 /* e */
        start local 4 // java.io.IOException e
        37: .line 810
            aload 1 /* ioe */
            ifnonnull 38
            aload 4 /* e */
            astore 1 /* ioe */
            goto 39
        38: .line 811
      StackMap locals: java.io.IOException
      StackMap stack:
            aload 1 /* ioe */
            aload 4 /* e */
            invokevirtual java.io.IOException.addSuppressed:(Ljava/lang/Throwable;)V
        end local 4 // java.io.IOException e
        39: .line 805
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        40: goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        41: aload 3
            monitorexit
        42: athrow
        43: .line 815
      StackMap locals:
      StackMap stack:
            aload 1 /* ioe */
            ifnull 45
        44: .line 816
            new java.io.UncheckedIOException
            dup
            aload 1 /* ioe */
            invokespecial java.io.UncheckedIOException.<init>:(Ljava/io/IOException;)V
            athrow
        45: .line 818
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.util.Deque inflaters
        end local 1 // java.io.IOException ioe
        end local 0 // java.util.zip.ZipFile$CleanableResource this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   46     0       this  Ljava/util/zip/ZipFile$CleanableResource;
            1   46     1        ioe  Ljava/io/IOException;
            2   46     2  inflaters  Ljava/util/Deque<Ljava/util/zip/Inflater;>;
            5    6     4        inf  Ljava/util/zip/Inflater;
            7    9     4        inf  Ljava/util/zip/Inflater;
           17   27     4       copy  [Ljava/io/InputStream;
           20   25     5         is  Ljava/io/InputStream;
           23   25     9          e  Ljava/io/IOException;
           37   39     4          e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4    10      11  any
          11    12      11  any
          20    21      22  Class java.io.IOException
          15    28      29  any
          29    30      29  any
          33    35      36  Class java.io.IOException
          33    40      41  any
          41    42      41  any

  void <init>(java.io.File, int, java.util.zip.ZipCoder);
    descriptor: (Ljava/io/File;ILjava/util/zip/ZipCoder;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // java.util.zip.ZipFile$CleanableResource this
        start local 1 // java.io.File file
        start local 2 // int mode
        start local 3 // java.util.zip.ZipCoder zc
         0: .line 820
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 822
            aload 0 /* this */
            aconst_null
            putfield java.util.zip.ZipFile$CleanableResource.cleanable:Ljava/lang/ref/Cleaner$Cleanable;
         2: .line 823
            aload 0 /* this */
            new java.util.WeakHashMap
            dup
            invokespecial java.util.WeakHashMap.<init>:()V
            invokestatic java.util.Collections.newSetFromMap:(Ljava/util/Map;)Ljava/util/Set;
            putfield java.util.zip.ZipFile$CleanableResource.istreams:Ljava/util/Set;
         3: .line 824
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield java.util.zip.ZipFile$CleanableResource.inflaterCache:Ljava/util/Deque;
         4: .line 825
            aload 0 /* this */
            aload 1 /* file */
            iload 2 /* mode */
            iconst_4
            iand
            ifeq 5
            iconst_1
            goto 6
      StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.File int java.util.zip.ZipCoder
      StackMap stack: java.util.zip.ZipFile$CleanableResource java.io.File
         5: iconst_0
      StackMap locals: java.util.zip.ZipFile$CleanableResource java.io.File int java.util.zip.ZipCoder
      StackMap stack: java.util.zip.ZipFile$CleanableResource java.io.File int
         6: aload 3 /* zc */
            invokestatic java.util.zip.ZipFile$Source.get:(Ljava/io/File;ZLjava/util/zip/ZipCoder;)Ljava/util/zip/ZipFile$Source;
            putfield java.util.zip.ZipFile$CleanableResource.zsrc:Ljava/util/zip/ZipFile$Source;
         7: .line 826
            return
        end local 3 // java.util.zip.ZipCoder zc
        end local 2 // int mode
        end local 1 // java.io.File file
        end local 0 // java.util.zip.ZipFile$CleanableResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Ljava/util/zip/ZipFile$CleanableResource;
            0    8     1  file  Ljava/io/File;
            0    8     2  mode  I
            0    8     3    zc  Ljava/util/zip/ZipCoder;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      file  
      mode  
      zc    

  static java.util.zip.ZipFile$CleanableResource get(java.util.zip.ZipFile, java.io.File, int);
    descriptor: (Ljava/util/zip/ZipFile;Ljava/io/File;I)Ljava/util/zip/ZipFile$CleanableResource;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // java.util.zip.ZipFile zf
        start local 1 // java.io.File file
        start local 2 // int mode
         0: .line 837
            aload 0 /* zf */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 3 /* clz */
        start local 3 // java.lang.Class clz
         1: .line 838
            goto 5
         2: .line 839
      StackMap locals: java.lang.Class
      StackMap stack:
            getstatic java.util.zip.ZipFile.JLA:Ljdk/internal/misc/JavaLangAccess;
            aload 3 /* clz */
            ldc "close"
            iconst_0
            anewarray java.lang.Class
            invokeinterface jdk.internal.misc.JavaLangAccess.getDeclaredPublicMethods:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/util/List;
            invokeinterface java.util.List.size:()I
            ifeq 4
         3: .line 840
            new java.util.zip.ZipFile$CleanableResource$FinalizableResource
            dup
            aload 0 /* zf */
            aload 1 /* file */
            iload 2 /* mode */
            invokespecial java.util.zip.ZipFile$CleanableResource$FinalizableResource.<init>:(Ljava/util/zip/ZipFile;Ljava/io/File;I)V
            areturn
         4: .line 842
      StackMap locals:
      StackMap stack:
            aload 3 /* clz */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 3 /* clz */
         5: .line 838
      StackMap locals:
      StackMap stack:
            aload 3 /* clz */
            ldc Ljava/util/zip/ZipFile;
            if_acmpeq 6
            aload 3 /* clz */
            ldc Ljava/util/jar/JarFile;
            if_acmpne 2
         6: .line 844
      StackMap locals:
      StackMap stack:
            new java.util.zip.ZipFile$CleanableResource
            dup
            aload 0 /* zf */
            aload 1 /* file */
            iload 2 /* mode */
            invokespecial java.util.zip.ZipFile$CleanableResource.<init>:(Ljava/util/zip/ZipFile;Ljava/io/File;I)V
            areturn
        end local 3 // java.lang.Class clz
        end local 2 // int mode
        end local 1 // java.io.File file
        end local 0 // java.util.zip.ZipFile zf
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0    zf  Ljava/util/zip/ZipFile;
            0    7     1  file  Ljava/io/File;
            0    7     2  mode  I
            1    7     3   clz  Ljava/lang/Class<*>;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      zf    
      file  
      mode  
}
SourceFile: "ZipFile.java"
NestHost: java.util.zip.ZipFile
InnerClasses:
  public abstract Cleanable = java.lang.ref.Cleaner$Cleanable of java.lang.ref.Cleaner
  private CleanableResource = java.util.zip.ZipFile$CleanableResource of java.util.zip.ZipFile
  FinalizableResource = java.util.zip.ZipFile$CleanableResource$FinalizableResource of java.util.zip.ZipFile$CleanableResource
  private Source = java.util.zip.ZipFile$Source of java.util.zip.ZipFile