public final class com.google.common.io.Closer implements java.io.Closeable
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.google.common.io.Closer
super_class: java.lang.Object
{
private static final com.google.common.io.Closer$Suppressor SUPPRESSOR;
descriptor: Lcom/google/common/io/Closer$Suppressor;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
final com.google.common.io.Closer$Suppressor suppressor;
descriptor: Lcom/google/common/io/Closer$Suppressor;
flags: (0x0010) ACC_FINAL
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
private final java.util.Deque<java.io.Closeable> stack;
descriptor: Ljava/util/Deque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Deque<Ljava/io/Closeable;>;
private java.lang.Throwable thrown;
descriptor: Ljava/lang/Throwable;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleTypeAnnotations:
FIELD
org.checkerframework.checker.nullness.qual.MonotonicNonNull()
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: invokestatic com.google.common.io.Closer$SuppressingSuppressor.isAvailable:()Z
ifeq 2
1: getstatic com.google.common.io.Closer$SuppressingSuppressor.INSTANCE:Lcom/google/common/io/Closer$SuppressingSuppressor;
goto 3
2: StackMap locals:
StackMap stack:
getstatic com.google.common.io.Closer$LoggingSuppressor.INSTANCE:Lcom/google/common/io/Closer$LoggingSuppressor;
3: StackMap locals:
StackMap stack: com.google.common.io.Closer$Suppressor
putstatic com.google.common.io.Closer.SUPPRESSOR:Lcom/google/common/io/Closer$Suppressor;
4: return
LocalVariableTable:
Start End Slot Name Signature
public static com.google.common.io.Closer create();
descriptor: ()Lcom/google/common/io/Closer;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: new com.google.common.io.Closer
dup
getstatic com.google.common.io.Closer.SUPPRESSOR:Lcom/google/common/io/Closer$Suppressor;
invokespecial com.google.common.io.Closer.<init>:(Lcom/google/common/io/Closer$Suppressor;)V
areturn
LocalVariableTable:
Start End Slot Name Signature
void <init>(com.google.common.io.Closer$Suppressor);
descriptor: (Lcom/google/common/io/Closer$Suppressor;)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.ArrayDeque
dup
iconst_4
invokespecial java.util.ArrayDeque.<init>:(I)V
putfield com.google.common.io.Closer.stack:Ljava/util/Deque;
2: aload 0
aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.google.common.io.Closer$Suppressor
putfield com.google.common.io.Closer.suppressor:Lcom/google/common/io/Closer$Suppressor;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/google/common/io/Closer;
0 4 1 suppressor Lcom/google/common/io/Closer$Suppressor;
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
RuntimeInvisibleTypeAnnotations:
METHOD_RETURN
com.google.common.annotations.VisibleForTesting()
MethodParameters:
Name Flags
suppressor
public <C extends java.io.Closeable> C register();
descriptor: (Ljava/io/Closeable;)Ljava/io/Closeable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnull 2
1: aload 0
getfield com.google.common.io.Closer.stack:Ljava/util/Deque;
aload 1
invokeinterface java.util.Deque.addFirst:(Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/google/common/io/Closer;
0 3 1 closeable TC;
Signature: <C::Ljava/io/Closeable;>(TC;)TC;
RuntimeInvisibleAnnotations:
com.google.errorprone.annotations.CanIgnoreReturnValue()
RuntimeVisibleTypeAnnotations:
METHOD_FORMAL_PARAMETER
org.checkerframework.checker.nullness.qual.Nullable()
MethodParameters:
Name Flags
closeable
public java.lang.RuntimeException rethrow(java.lang.Throwable);
descriptor: (Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 0
aload 1
putfield com.google.common.io.Closer.thrown:Ljava/lang/Throwable;
2: aload 1
ldc Ljava/io/IOException;
invokestatic com.google.common.base.Throwables.propagateIfPossible:(Ljava/lang/Throwable;Ljava/lang/Class;)V
3: new java.lang.RuntimeException
dup
aload 1
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/google/common/io/Closer;
0 4 1 e Ljava/lang/Throwable;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
e
public <X extends java.lang.Exception> java.lang.RuntimeException rethrow(java.lang.Throwable, java.lang.Class<X>) throws java.io.IOException, X;
descriptor: (Ljava/lang/Throwable;Ljava/lang/Class;)Ljava/lang/RuntimeException;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 0
aload 1
putfield com.google.common.io.Closer.thrown:Ljava/lang/Throwable;
2: aload 1
ldc Ljava/io/IOException;
invokestatic com.google.common.base.Throwables.propagateIfPossible:(Ljava/lang/Throwable;Ljava/lang/Class;)V
3: aload 1
aload 2
invokestatic com.google.common.base.Throwables.propagateIfPossible:(Ljava/lang/Throwable;Ljava/lang/Class;)V
4: new java.lang.RuntimeException
dup
aload 1
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/google/common/io/Closer;
0 5 1 e Ljava/lang/Throwable;
0 5 2 declaredType Ljava/lang/Class<TX;>;
Exceptions:
throws java.io.IOException, java.lang.Exception
Signature: <X:Ljava/lang/Exception;>(Ljava/lang/Throwable;Ljava/lang/Class<TX;>;)Ljava/lang/RuntimeException;^Ljava/io/IOException;^TX;
MethodParameters:
Name Flags
e
declaredType
public <X1 extends java.lang.Exception, X2 extends java.lang.Exception> java.lang.RuntimeException rethrow(java.lang.Throwable, java.lang.Class<X1>, java.lang.Class<X2>) throws java.io.IOException, X1, X2;
descriptor: (Ljava/lang/Throwable;Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/RuntimeException;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 0
aload 1
putfield com.google.common.io.Closer.thrown:Ljava/lang/Throwable;
2: aload 1
ldc Ljava/io/IOException;
invokestatic com.google.common.base.Throwables.propagateIfPossible:(Ljava/lang/Throwable;Ljava/lang/Class;)V
3: aload 1
aload 2
aload 3
invokestatic com.google.common.base.Throwables.propagateIfPossible:(Ljava/lang/Throwable;Ljava/lang/Class;Ljava/lang/Class;)V
4: new java.lang.RuntimeException
dup
aload 1
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/google/common/io/Closer;
0 5 1 e Ljava/lang/Throwable;
0 5 2 declaredType1 Ljava/lang/Class<TX1;>;
0 5 3 declaredType2 Ljava/lang/Class<TX2;>;
Exceptions:
throws java.io.IOException, java.lang.Exception, java.lang.Exception
Signature: <X1:Ljava/lang/Exception;X2:Ljava/lang/Exception;>(Ljava/lang/Throwable;Ljava/lang/Class<TX1;>;Ljava/lang/Class<TX2;>;)Ljava/lang/RuntimeException;^Ljava/io/IOException;^TX1;^TX2;
MethodParameters:
Name Flags
e
declaredType1
declaredType2
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: aload 0
getfield com.google.common.io.Closer.thrown:Ljava/lang/Throwable;
astore 1
start local 1 1: goto 10
2: StackMap locals: java.lang.Throwable
StackMap stack:
aload 0
getfield com.google.common.io.Closer.stack:Ljava/util/Deque;
invokeinterface java.util.Deque.removeFirst:()Ljava/lang/Object;
checkcast java.io.Closeable
astore 2
start local 2 3: aload 2
invokeinterface java.io.Closeable.close:()V
4: goto 10
StackMap locals: com.google.common.io.Closer java.lang.Throwable java.io.Closeable
StackMap stack: java.lang.Throwable
5: astore 3
start local 3 6: aload 1
ifnonnull 9
7: aload 3
astore 1
8: goto 10
9: StackMap locals: java.lang.Throwable
StackMap stack:
aload 0
getfield com.google.common.io.Closer.suppressor:Lcom/google/common/io/Closer$Suppressor;
aload 2
aload 1
aload 3
invokeinterface com.google.common.io.Closer$Suppressor.suppress:(Ljava/io/Closeable;Ljava/lang/Throwable;Ljava/lang/Throwable;)V
end local 3 end local 2 10: StackMap locals:
StackMap stack:
aload 0
getfield com.google.common.io.Closer.stack:Ljava/util/Deque;
invokeinterface java.util.Deque.isEmpty:()Z
ifeq 2
11: aload 0
getfield com.google.common.io.Closer.thrown:Ljava/lang/Throwable;
ifnonnull 14
aload 1
ifnull 14
12: aload 1
ldc Ljava/io/IOException;
invokestatic com.google.common.base.Throwables.propagateIfPossible:(Ljava/lang/Throwable;Ljava/lang/Class;)V
13: new java.lang.AssertionError
dup
aload 1
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
14: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lcom/google/common/io/Closer;
1 15 1 throwable Ljava/lang/Throwable;
3 10 2 closeable Ljava/io/Closeable;
6 10 3 e Ljava/lang/Throwable;
Exception table:
from to target type
3 4 5 Class java.lang.Throwable
Exceptions:
throws java.io.IOException
}
SourceFile: "Closer.java"
NestMembers:
com.google.common.io.Closer$LoggingSuppressor com.google.common.io.Closer$SuppressingSuppressor com.google.common.io.Closer$Suppressor
InnerClasses:
final LoggingSuppressor = com.google.common.io.Closer$LoggingSuppressor of com.google.common.io.Closer
final SuppressingSuppressor = com.google.common.io.Closer$SuppressingSuppressor of com.google.common.io.Closer
abstract Suppressor = com.google.common.io.Closer$Suppressor of com.google.common.io.Closer
RuntimeInvisibleAnnotations:
com.google.common.annotations.Beta()
com.google.common.annotations.GwtIncompatible()