final class com.google.common.util.concurrent.ClosingFuture$CloseableList extends java.util.IdentityHashMap<java.lang.AutoCloseable, java.util.concurrent.Executor> implements java.io.Closeable
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.google.common.util.concurrent.ClosingFuture$CloseableList
  super_class: java.util.IdentityHashMap
{
  private final com.google.common.util.concurrent.ClosingFuture$DeferredCloser closer;
    descriptor: Lcom/google/common/util/concurrent/ClosingFuture$DeferredCloser;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile boolean closed;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile java.util.concurrent.CountDownLatch whenClosed;
    descriptor: Ljava/util/concurrent/CountDownLatch;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
         0: .line 2074
            aload 0 /* this */
            invokespecial java.util.IdentityHashMap.<init>:()V
         1: .line 2076
            aload 0 /* this */
            new com.google.common.util.concurrent.ClosingFuture$DeferredCloser
            dup
            aload 0 /* this */
            invokespecial com.google.common.util.concurrent.ClosingFuture$DeferredCloser.<init>:(Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;)V
            putfield com.google.common.util.concurrent.ClosingFuture$CloseableList.closer:Lcom/google/common/util/concurrent/ClosingFuture$DeferredCloser;
         2: .line 2074
            return
        end local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;

  <V, U> com.google.common.util.concurrent.ListenableFuture<U> applyClosingFunction(com.google.common.util.concurrent.ClosingFuture$ClosingFunction<? super V, U>, V);
    descriptor: (Lcom/google/common/util/concurrent/ClosingFuture$ClosingFunction;Ljava/lang/Object;)Lcom/google/common/util/concurrent/ListenableFuture;
    flags: (0x0000) 
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
        start local 1 // com.google.common.util.concurrent.ClosingFuture$ClosingFunction transformation
        start local 2 // java.lang.Object input
         0: .line 2083
            new com.google.common.util.concurrent.ClosingFuture$CloseableList
            dup
            invokespecial com.google.common.util.concurrent.ClosingFuture$CloseableList.<init>:()V
            astore 3 /* newCloseables */
        start local 3 // com.google.common.util.concurrent.ClosingFuture$CloseableList newCloseables
         1: .line 2085
            aload 1 /* transformation */
            aload 3 /* newCloseables */
            getfield com.google.common.util.concurrent.ClosingFuture$CloseableList.closer:Lcom/google/common/util/concurrent/ClosingFuture$DeferredCloser;
            aload 2 /* input */
            invokeinterface com.google.common.util.concurrent.ClosingFuture$ClosingFunction.apply:(Lcom/google/common/util/concurrent/ClosingFuture$DeferredCloser;Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic com.google.common.util.concurrent.Futures.immediateFuture:(Ljava/lang/Object;)Lcom/google/common/util/concurrent/ListenableFuture;
            astore 5
         2: .line 2087
            aload 0 /* this */
            aload 3 /* newCloseables */
            invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
            invokevirtual com.google.common.util.concurrent.ClosingFuture$CloseableList.add:(Ljava/lang/AutoCloseable;Ljava/util/concurrent/Executor;)V
         3: .line 2085
            aload 5
            areturn
         4: .line 2086
      StackMap locals: com.google.common.util.concurrent.ClosingFuture$CloseableList com.google.common.util.concurrent.ClosingFuture$ClosingFunction java.lang.Object com.google.common.util.concurrent.ClosingFuture$CloseableList
      StackMap stack: java.lang.Throwable
            astore 4
         5: .line 2087
            aload 0 /* this */
            aload 3 /* newCloseables */
            invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
            invokevirtual com.google.common.util.concurrent.ClosingFuture$CloseableList.add:(Ljava/lang/AutoCloseable;Ljava/util/concurrent/Executor;)V
         6: .line 2088
            aload 4
            athrow
        end local 3 // com.google.common.util.concurrent.ClosingFuture$CloseableList newCloseables
        end local 2 // java.lang.Object input
        end local 1 // com.google.common.util.concurrent.ClosingFuture$ClosingFunction transformation
        end local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
            0    7     1  transformation  Lcom/google/common/util/concurrent/ClosingFuture$ClosingFunction<-TV;TU;>;
            0    7     2           input  TV;
            1    7     3   newCloseables  Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
      Exception table:
        from    to  target  type
           1     2       4  any
    Exceptions:
      throws java.lang.Exception
    Signature: <V:Ljava/lang/Object;U:Ljava/lang/Object;>(Lcom/google/common/util/concurrent/ClosingFuture$ClosingFunction<-TV;TU;>;TV;)Lcom/google/common/util/concurrent/ListenableFuture<TU;>;
    MethodParameters:
                Name  Flags
      transformation  
      input           

  <V, U> com.google.common.util.concurrent.FluentFuture<U> applyAsyncClosingFunction(com.google.common.util.concurrent.ClosingFuture$AsyncClosingFunction<V, U>, V);
    descriptor: (Lcom/google/common/util/concurrent/ClosingFuture$AsyncClosingFunction;Ljava/lang/Object;)Lcom/google/common/util/concurrent/FluentFuture;
    flags: (0x0000) 
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
        start local 1 // com.google.common.util.concurrent.ClosingFuture$AsyncClosingFunction transformation
        start local 2 // java.lang.Object input
         0: .line 2094
            new com.google.common.util.concurrent.ClosingFuture$CloseableList
            dup
            invokespecial com.google.common.util.concurrent.ClosingFuture$CloseableList.<init>:()V
            astore 3 /* newCloseables */
        start local 3 // com.google.common.util.concurrent.ClosingFuture$CloseableList newCloseables
         1: .line 2096
            aload 1 /* transformation */
            aload 3 /* newCloseables */
            getfield com.google.common.util.concurrent.ClosingFuture$CloseableList.closer:Lcom/google/common/util/concurrent/ClosingFuture$DeferredCloser;
            aload 2 /* input */
            invokeinterface com.google.common.util.concurrent.ClosingFuture$AsyncClosingFunction.apply:(Lcom/google/common/util/concurrent/ClosingFuture$DeferredCloser;Ljava/lang/Object;)Lcom/google/common/util/concurrent/ClosingFuture;
            astore 4 /* closingFuture */
        start local 4 // com.google.common.util.concurrent.ClosingFuture closingFuture
         2: .line 2097
            aload 4 /* closingFuture */
            aload 3 /* newCloseables */
            invokevirtual com.google.common.util.concurrent.ClosingFuture.becomeSubsumedInto:(Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;)V
         3: .line 2098
            aload 4 /* closingFuture */
            getfield com.google.common.util.concurrent.ClosingFuture.future:Lcom/google/common/util/concurrent/FluentFuture;
            astore 6
         4: .line 2100
            aload 0 /* this */
            aload 3 /* newCloseables */
            invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
            invokevirtual com.google.common.util.concurrent.ClosingFuture$CloseableList.add:(Ljava/lang/AutoCloseable;Ljava/util/concurrent/Executor;)V
         5: .line 2098
            aload 6
            areturn
        end local 4 // com.google.common.util.concurrent.ClosingFuture closingFuture
         6: .line 2099
      StackMap locals: com.google.common.util.concurrent.ClosingFuture$CloseableList com.google.common.util.concurrent.ClosingFuture$AsyncClosingFunction java.lang.Object com.google.common.util.concurrent.ClosingFuture$CloseableList
      StackMap stack: java.lang.Throwable
            astore 5
         7: .line 2100
            aload 0 /* this */
            aload 3 /* newCloseables */
            invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
            invokevirtual com.google.common.util.concurrent.ClosingFuture$CloseableList.add:(Ljava/lang/AutoCloseable;Ljava/util/concurrent/Executor;)V
         8: .line 2101
            aload 5
            athrow
        end local 3 // com.google.common.util.concurrent.ClosingFuture$CloseableList newCloseables
        end local 2 // java.lang.Object input
        end local 1 // com.google.common.util.concurrent.ClosingFuture$AsyncClosingFunction transformation
        end local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
            0    9     1  transformation  Lcom/google/common/util/concurrent/ClosingFuture$AsyncClosingFunction<TV;TU;>;
            0    9     2           input  TV;
            1    9     3   newCloseables  Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
            2    6     4   closingFuture  Lcom/google/common/util/concurrent/ClosingFuture<TU;>;
      Exception table:
        from    to  target  type
           1     4       6  any
    Exceptions:
      throws java.lang.Exception
    Signature: <V:Ljava/lang/Object;U:Ljava/lang/Object;>(Lcom/google/common/util/concurrent/ClosingFuture$AsyncClosingFunction<TV;TU;>;TV;)Lcom/google/common/util/concurrent/FluentFuture<TU;>;
    MethodParameters:
                Name  Flags
      transformation  
      input           

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
         0: .line 2106
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$CloseableList.closed:Z
            ifeq 2
         1: .line 2107
            return
         2: .line 2109
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         3: .line 2110
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$CloseableList.closed:Z
            ifeq 6
         4: .line 2111
            aload 1
            monitorexit
         5: return
         6: .line 2113
      StackMap locals: com.google.common.util.concurrent.ClosingFuture$CloseableList
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.google.common.util.concurrent.ClosingFuture$CloseableList.closed:Z
         7: .line 2109
            aload 1
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 2115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.ClosingFuture$CloseableList.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 2
            goto 14
      StackMap locals: com.google.common.util.concurrent.ClosingFuture$CloseableList top java.util.Iterator
      StackMap stack:
        12: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 1 /* entry */
        start local 1 // java.util.Map$Entry entry
        13: .line 2116
            aload 1 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.AutoCloseable
            aload 1 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.util.concurrent.Executor
            invokestatic com.google.common.util.concurrent.ClosingFuture.closeQuietly:(Ljava/lang/AutoCloseable;Ljava/util/concurrent/Executor;)V
        end local 1 // java.util.Map$Entry entry
        14: .line 2115
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        15: .line 2118
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.ClosingFuture$CloseableList.clear:()V
        16: .line 2119
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$CloseableList.whenClosed:Ljava/util/concurrent/CountDownLatch;
            ifnull 18
        17: .line 2120
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$CloseableList.whenClosed:Ljava/util/concurrent/CountDownLatch;
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
        18: .line 2122
      StackMap locals: com.google.common.util.concurrent.ClosingFuture$CloseableList
      StackMap stack:
            return
        end local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   19     0   this  Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
           13   14     1  entry  Ljava/util/Map$Entry<Ljava/lang/AutoCloseable;Ljava/util/concurrent/Executor;>;
      Exception table:
        from    to  target  type
           3     5       9  any
           6     8       9  any
           9    10       9  any

  void add(java.lang.AutoCloseable, java.util.concurrent.Executor);
    descriptor: (Ljava/lang/AutoCloseable;Ljava/util/concurrent/Executor;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
        start local 1 // java.lang.AutoCloseable closeable
        start local 2 // java.util.concurrent.Executor executor
         0: .line 2125
            aload 2 /* executor */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 2126
            aload 1 /* closeable */
            ifnonnull 3
         2: .line 2127
            return
         3: .line 2129
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         4: .line 2130
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$CloseableList.closed:Z
            ifne 8
         5: .line 2131
            aload 0 /* this */
            aload 1 /* closeable */
            aload 2 /* executor */
            invokevirtual com.google.common.util.concurrent.ClosingFuture$CloseableList.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 2132
            aload 3
            monitorexit
         7: return
         8: .line 2129
      StackMap locals: com.google.common.util.concurrent.ClosingFuture$CloseableList
      StackMap stack:
            aload 3
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 3
            monitorexit
        11: athrow
        12: .line 2135
      StackMap locals:
      StackMap stack:
            aload 1 /* closeable */
            aload 2 /* executor */
            invokestatic com.google.common.util.concurrent.ClosingFuture.closeQuietly:(Ljava/lang/AutoCloseable;Ljava/util/concurrent/Executor;)V
        13: .line 2136
            return
        end local 2 // java.util.concurrent.Executor executor
        end local 1 // java.lang.AutoCloseable closeable
        end local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
            0   14     1  closeable  Ljava/lang/AutoCloseable;
            0   14     2   executor  Ljava/util/concurrent/Executor;
      Exception table:
        from    to  target  type
           4     7      10  any
           8     9      10  any
          10    11      10  any
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
           Name  Flags
      closeable  
      executor   

  java.util.concurrent.CountDownLatch whenClosedCountDown();
    descriptor: ()Ljava/util/concurrent/CountDownLatch;
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
         0: .line 2142
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$CloseableList.closed:Z
            ifeq 2
         1: .line 2143
            new java.util.concurrent.CountDownLatch
            dup
            iconst_0
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            areturn
         2: .line 2145
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         3: .line 2146
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$CloseableList.closed:Z
            ifeq 6
         4: .line 2147
            new java.util.concurrent.CountDownLatch
            dup
            iconst_0
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            aload 1
            monitorexit
         5: areturn
         6: .line 2149
      StackMap locals: com.google.common.util.concurrent.ClosingFuture$CloseableList
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$CloseableList.whenClosed:Ljava/util/concurrent/CountDownLatch;
            ifnonnull 7
            iconst_1
            goto 8
      StackMap locals:
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: invokestatic com.google.common.base.Preconditions.checkState:(Z)V
         9: .line 2150
            aload 0 /* this */
            new java.util.concurrent.CountDownLatch
            dup
            iconst_1
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            dup_x1
            putfield com.google.common.util.concurrent.ClosingFuture$CloseableList.whenClosed:Ljava/util/concurrent/CountDownLatch;
            aload 1
            monitorexit
        10: areturn
        11: .line 2145
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        12: athrow
        end local 0 // com.google.common.util.concurrent.ClosingFuture$CloseableList this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
      Exception table:
        from    to  target  type
           3     5      11  any
           6    10      11  any
          11    12      11  any
}
Signature: Ljava/util/IdentityHashMap<Ljava/lang/AutoCloseable;Ljava/util/concurrent/Executor;>;Ljava/io/Closeable;
SourceFile: "ClosingFuture.java"
NestHost: com.google.common.util.concurrent.ClosingFuture
InnerClasses:
  public abstract AsyncClosingFunction = com.google.common.util.concurrent.ClosingFuture$AsyncClosingFunction of com.google.common.util.concurrent.ClosingFuture
  private final CloseableList = com.google.common.util.concurrent.ClosingFuture$CloseableList of com.google.common.util.concurrent.ClosingFuture
  public abstract ClosingFunction = com.google.common.util.concurrent.ClosingFuture$ClosingFunction of com.google.common.util.concurrent.ClosingFuture
  public final DeferredCloser = com.google.common.util.concurrent.ClosingFuture$DeferredCloser of com.google.common.util.concurrent.ClosingFuture
  public abstract Entry = java.util.Map$Entry of java.util.Map