public final class com.google.common.util.concurrent.SimpleTimeLimiter implements com.google.common.util.concurrent.TimeLimiter
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.google.common.util.concurrent.SimpleTimeLimiter
  super_class: java.lang.Object
{
  private final java.util.concurrent.ExecutorService executor;
    descriptor: Ljava/util/concurrent/ExecutorService;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private void <init>(java.util.concurrent.ExecutorService);
    descriptor: (Ljava/util/concurrent/ExecutorService;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
        start local 1 // java.util.concurrent.ExecutorService executor
         0: .line 52
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 53
            aload 0 /* this */
            aload 1 /* executor */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.concurrent.ExecutorService
            putfield com.google.common.util.concurrent.SimpleTimeLimiter.executor:Ljava/util/concurrent/ExecutorService;
         2: .line 54
            return
        end local 1 // java.util.concurrent.ExecutorService executor
        end local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/google/common/util/concurrent/SimpleTimeLimiter;
            0    3     1  executor  Ljava/util/concurrent/ExecutorService;
    MethodParameters:
          Name  Flags
      executor  

  public static com.google.common.util.concurrent.SimpleTimeLimiter create(java.util.concurrent.ExecutorService);
    descriptor: (Ljava/util/concurrent/ExecutorService;)Lcom/google/common/util/concurrent/SimpleTimeLimiter;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.concurrent.ExecutorService executor
         0: .line 68
            new com.google.common.util.concurrent.SimpleTimeLimiter
            dup
            aload 0 /* executor */
            invokespecial com.google.common.util.concurrent.SimpleTimeLimiter.<init>:(Ljava/util/concurrent/ExecutorService;)V
            areturn
        end local 0 // java.util.concurrent.ExecutorService executor
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  executor  Ljava/util/concurrent/ExecutorService;
    MethodParameters:
          Name  Flags
      executor  

  public <T> T newProxy(T, java.lang.Class<T>, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/lang/Object;Ljava/lang/Class;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=8, args_size=5
        start local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
        start local 1 // java.lang.Object target
        start local 2 // java.lang.Class interfaceType
        start local 3 // long timeoutDuration
        start local 5 // java.util.concurrent.TimeUnit timeoutUnit
         0: .line 77
            aload 1 /* target */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 78
            aload 2 /* interfaceType */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 79
            aload 5 /* timeoutUnit */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 80
            lload 3 /* timeoutDuration */
            invokestatic com.google.common.util.concurrent.SimpleTimeLimiter.checkPositiveTimeout:(J)V
         4: .line 81
            aload 2 /* interfaceType */
            invokevirtual java.lang.Class.isInterface:()Z
            ldc "interfaceType must be an interface type"
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/Object;)V
         5: .line 83
            aload 2 /* interfaceType */
            invokestatic com.google.common.util.concurrent.SimpleTimeLimiter.findInterruptibleMethods:(Ljava/lang/Class;)Ljava/util/Set;
            astore 6 /* interruptibleMethods */
        start local 6 // java.util.Set interruptibleMethods
         6: .line 86
            new com.google.common.util.concurrent.SimpleTimeLimiter$1
            dup
            aload 0 /* this */
            lload 3 /* timeoutDuration */
            aload 5 /* timeoutUnit */
            aload 6 /* interruptibleMethods */
            aload 1 /* target */
            invokespecial com.google.common.util.concurrent.SimpleTimeLimiter$1.<init>:(Lcom/google/common/util/concurrent/SimpleTimeLimiter;JLjava/util/concurrent/TimeUnit;Ljava/util/Set;Ljava/lang/Object;)V
         7: .line 85
            astore 7 /* handler */
        start local 7 // java.lang.reflect.InvocationHandler handler
         8: .line 105
            aload 2 /* interfaceType */
            aload 7 /* handler */
            invokestatic com.google.common.util.concurrent.SimpleTimeLimiter.newProxy:(Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
            areturn
        end local 7 // java.lang.reflect.InvocationHandler handler
        end local 6 // java.util.Set interruptibleMethods
        end local 5 // java.util.concurrent.TimeUnit timeoutUnit
        end local 3 // long timeoutDuration
        end local 2 // java.lang.Class interfaceType
        end local 1 // java.lang.Object target
        end local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    9     0                  this  Lcom/google/common/util/concurrent/SimpleTimeLimiter;
            0    9     1                target  TT;
            0    9     2         interfaceType  Ljava/lang/Class<TT;>;
            0    9     3       timeoutDuration  J
            0    9     5           timeoutUnit  Ljava/util/concurrent/TimeUnit;
            6    9     6  interruptibleMethods  Ljava/util/Set<Ljava/lang/reflect/Method;>;
            8    9     7               handler  Ljava/lang/reflect/InvocationHandler;
    Signature: <T:Ljava/lang/Object;>(TT;Ljava/lang/Class<TT;>;JLjava/util/concurrent/TimeUnit;)TT;
    MethodParameters:
                 Name  Flags
      target           final
      interfaceType    
      timeoutDuration  final
      timeoutUnit      final

  private static <T> T newProxy(java.lang.Class<T>, java.lang.reflect.InvocationHandler);
    descriptor: (Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // java.lang.Class interfaceType
        start local 1 // java.lang.reflect.InvocationHandler handler
         0: .line 112
            aload 0 /* interfaceType */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 0 /* interfaceType */
            aastore
            aload 1 /* handler */
         1: .line 111
            invokestatic java.lang.reflect.Proxy.newProxyInstance:(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
         2: .line 110
            astore 2 /* object */
        start local 2 // java.lang.Object object
         3: .line 113
            aload 0 /* interfaceType */
            aload 2 /* object */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Object object
        end local 1 // java.lang.reflect.InvocationHandler handler
        end local 0 // java.lang.Class interfaceType
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0  interfaceType  Ljava/lang/Class<TT;>;
            0    4     1        handler  Ljava/lang/reflect/InvocationHandler;
            3    4     2         object  Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/reflect/InvocationHandler;)TT;
    MethodParameters:
               Name  Flags
      interfaceType  
      handler        

  private <T> T callWithTimeout(java.util.concurrent.Callable<T>, long, java.util.concurrent.TimeUnit, );
    descriptor: (Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;Z)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=5
        start local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
        start local 1 // java.util.concurrent.Callable callable
        start local 2 // long timeoutDuration
        start local 4 // java.util.concurrent.TimeUnit timeoutUnit
        start local 5 // boolean amInterruptible
         0: .line 120
            aload 1 /* callable */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 121
            aload 4 /* timeoutUnit */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 122
            lload 2 /* timeoutDuration */
            invokestatic com.google.common.util.concurrent.SimpleTimeLimiter.checkPositiveTimeout:(J)V
         3: .line 124
            aload 0 /* this */
            getfield com.google.common.util.concurrent.SimpleTimeLimiter.executor:Ljava/util/concurrent/ExecutorService;
            aload 1 /* callable */
            invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
            astore 6 /* future */
        start local 6 // java.util.concurrent.Future future
         4: .line 127
            iload 5 /* amInterruptible */
            ifeq 10
         5: .line 129
            aload 6 /* future */
            lload 2 /* timeoutDuration */
            aload 4 /* timeoutUnit */
            invokeinterface java.util.concurrent.Future.get:(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
         6: areturn
         7: .line 130
      StackMap locals: com.google.common.util.concurrent.SimpleTimeLimiter java.util.concurrent.Callable long java.util.concurrent.TimeUnit int java.util.concurrent.Future
      StackMap stack: java.lang.InterruptedException
            astore 7 /* e */
        start local 7 // java.lang.InterruptedException e
         8: .line 131
            aload 6 /* future */
            iconst_1
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
         9: .line 132
            aload 7 /* e */
            athrow
        end local 7 // java.lang.InterruptedException e
        10: .line 135
      StackMap locals:
      StackMap stack:
            aload 6 /* future */
            lload 2 /* timeoutDuration */
            aload 4 /* timeoutUnit */
            invokestatic com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly:(Ljava/util/concurrent/Future;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
        11: areturn
        12: .line 137
      StackMap locals:
      StackMap stack: java.util.concurrent.ExecutionException
            astore 7 /* e */
        start local 7 // java.util.concurrent.ExecutionException e
        13: .line 138
            aload 7 /* e */
            iconst_1
            invokestatic com.google.common.util.concurrent.SimpleTimeLimiter.throwCause:(Ljava/lang/Exception;Z)Ljava/lang/Exception;
            athrow
        end local 7 // java.util.concurrent.ExecutionException e
        14: .line 139
      StackMap locals:
      StackMap stack: java.util.concurrent.TimeoutException
            astore 7 /* e */
        start local 7 // java.util.concurrent.TimeoutException e
        15: .line 140
            aload 6 /* future */
            iconst_1
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
        16: .line 141
            new com.google.common.util.concurrent.UncheckedTimeoutException
            dup
            aload 7 /* e */
            invokespecial com.google.common.util.concurrent.UncheckedTimeoutException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.util.concurrent.TimeoutException e
        end local 6 // java.util.concurrent.Future future
        end local 5 // boolean amInterruptible
        end local 4 // java.util.concurrent.TimeUnit timeoutUnit
        end local 2 // long timeoutDuration
        end local 1 // java.util.concurrent.Callable callable
        end local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   17     0             this  Lcom/google/common/util/concurrent/SimpleTimeLimiter;
            0   17     1         callable  Ljava/util/concurrent/Callable<TT;>;
            0   17     2  timeoutDuration  J
            0   17     4      timeoutUnit  Ljava/util/concurrent/TimeUnit;
            0   17     5  amInterruptible  Z
            4   17     6           future  Ljava/util/concurrent/Future<TT;>;
            8   10     7                e  Ljava/lang/InterruptedException;
           13   14     7                e  Ljava/util/concurrent/ExecutionException;
           15   17     7                e  Ljava/util/concurrent/TimeoutException;
      Exception table:
        from    to  target  type
           5     6       7  Class java.lang.InterruptedException
           4     6      12  Class java.util.concurrent.ExecutionException
           7    11      12  Class java.util.concurrent.ExecutionException
           4     6      14  Class java.util.concurrent.TimeoutException
           7    11      14  Class java.util.concurrent.TimeoutException
    Exceptions:
      throws java.lang.Exception
    Signature: <T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;JLjava/util/concurrent/TimeUnit;Z)TT;
    MethodParameters:
                 Name  Flags
      callable         
      timeoutDuration  
      timeoutUnit      
      amInterruptible  

  public <T> T callWithTimeout(java.util.concurrent.Callable<T>, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
        start local 1 // java.util.concurrent.Callable callable
        start local 2 // long timeoutDuration
        start local 4 // java.util.concurrent.TimeUnit timeoutUnit
         0: .line 149
            aload 1 /* callable */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 150
            aload 4 /* timeoutUnit */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 151
            lload 2 /* timeoutDuration */
            invokestatic com.google.common.util.concurrent.SimpleTimeLimiter.checkPositiveTimeout:(J)V
         3: .line 153
            aload 0 /* this */
            getfield com.google.common.util.concurrent.SimpleTimeLimiter.executor:Ljava/util/concurrent/ExecutorService;
            aload 1 /* callable */
            invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
            astore 5 /* future */
        start local 5 // java.util.concurrent.Future future
         4: .line 156
            aload 5 /* future */
            lload 2 /* timeoutDuration */
            aload 4 /* timeoutUnit */
            invokeinterface java.util.concurrent.Future.get:(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
         5: areturn
         6: .line 157
      StackMap locals: com.google.common.util.concurrent.SimpleTimeLimiter java.util.concurrent.Callable long java.util.concurrent.TimeUnit java.util.concurrent.Future
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
         7: .line 158
            aload 5 /* future */
            iconst_1
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
         8: .line 159
            aload 6 /* e */
            athrow
        end local 6 // java.lang.Exception e
         9: .line 160
      StackMap locals:
      StackMap stack: java.util.concurrent.ExecutionException
            astore 6 /* e */
        start local 6 // java.util.concurrent.ExecutionException e
        10: .line 161
            aload 0 /* this */
            aload 6 /* e */
            invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
            invokevirtual com.google.common.util.concurrent.SimpleTimeLimiter.wrapAndThrowExecutionExceptionOrError:(Ljava/lang/Throwable;)V
        11: .line 162
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 6 // java.util.concurrent.ExecutionException e
        end local 5 // java.util.concurrent.Future future
        end local 4 // java.util.concurrent.TimeUnit timeoutUnit
        end local 2 // long timeoutDuration
        end local 1 // java.util.concurrent.Callable callable
        end local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   12     0             this  Lcom/google/common/util/concurrent/SimpleTimeLimiter;
            0   12     1         callable  Ljava/util/concurrent/Callable<TT;>;
            0   12     2  timeoutDuration  J
            0   12     4      timeoutUnit  Ljava/util/concurrent/TimeUnit;
            4   12     5           future  Ljava/util/concurrent/Future<TT;>;
            7    9     6                e  Ljava/lang/Exception;
           10   12     6                e  Ljava/util/concurrent/ExecutionException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.InterruptedException
           4     5       6  Class java.util.concurrent.TimeoutException
           4     5       9  Class java.util.concurrent.ExecutionException
    Exceptions:
      throws java.util.concurrent.TimeoutException, java.lang.InterruptedException, java.util.concurrent.ExecutionException
    Signature: <T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;JLjava/util/concurrent/TimeUnit;)TT;
    RuntimeInvisibleAnnotations: 
      com.google.errorprone.annotations.CanIgnoreReturnValue()
    MethodParameters:
                 Name  Flags
      callable         
      timeoutDuration  
      timeoutUnit      

  public <T> T callUninterruptiblyWithTimeout(java.util.concurrent.Callable<T>, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
        start local 1 // java.util.concurrent.Callable callable
        start local 2 // long timeoutDuration
        start local 4 // java.util.concurrent.TimeUnit timeoutUnit
         0: .line 171
            aload 1 /* callable */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 172
            aload 4 /* timeoutUnit */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 173
            lload 2 /* timeoutDuration */
            invokestatic com.google.common.util.concurrent.SimpleTimeLimiter.checkPositiveTimeout:(J)V
         3: .line 175
            aload 0 /* this */
            getfield com.google.common.util.concurrent.SimpleTimeLimiter.executor:Ljava/util/concurrent/ExecutorService;
            aload 1 /* callable */
            invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
            astore 5 /* future */
        start local 5 // java.util.concurrent.Future future
         4: .line 178
            aload 5 /* future */
            lload 2 /* timeoutDuration */
            aload 4 /* timeoutUnit */
            invokestatic com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly:(Ljava/util/concurrent/Future;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
         5: areturn
         6: .line 179
      StackMap locals: com.google.common.util.concurrent.SimpleTimeLimiter java.util.concurrent.Callable long java.util.concurrent.TimeUnit java.util.concurrent.Future
      StackMap stack: java.util.concurrent.TimeoutException
            astore 6 /* e */
        start local 6 // java.util.concurrent.TimeoutException e
         7: .line 180
            aload 5 /* future */
            iconst_1
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
         8: .line 181
            aload 6 /* e */
            athrow
        end local 6 // java.util.concurrent.TimeoutException e
         9: .line 182
      StackMap locals:
      StackMap stack: java.util.concurrent.ExecutionException
            astore 6 /* e */
        start local 6 // java.util.concurrent.ExecutionException e
        10: .line 183
            aload 0 /* this */
            aload 6 /* e */
            invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
            invokevirtual com.google.common.util.concurrent.SimpleTimeLimiter.wrapAndThrowExecutionExceptionOrError:(Ljava/lang/Throwable;)V
        11: .line 184
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 6 // java.util.concurrent.ExecutionException e
        end local 5 // java.util.concurrent.Future future
        end local 4 // java.util.concurrent.TimeUnit timeoutUnit
        end local 2 // long timeoutDuration
        end local 1 // java.util.concurrent.Callable callable
        end local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   12     0             this  Lcom/google/common/util/concurrent/SimpleTimeLimiter;
            0   12     1         callable  Ljava/util/concurrent/Callable<TT;>;
            0   12     2  timeoutDuration  J
            0   12     4      timeoutUnit  Ljava/util/concurrent/TimeUnit;
            4   12     5           future  Ljava/util/concurrent/Future<TT;>;
            7    9     6                e  Ljava/util/concurrent/TimeoutException;
           10   12     6                e  Ljava/util/concurrent/ExecutionException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.util.concurrent.TimeoutException
           4     5       9  Class java.util.concurrent.ExecutionException
    Exceptions:
      throws java.util.concurrent.TimeoutException, java.util.concurrent.ExecutionException
    Signature: <T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;JLjava/util/concurrent/TimeUnit;)TT;
    RuntimeInvisibleAnnotations: 
      com.google.errorprone.annotations.CanIgnoreReturnValue()
    MethodParameters:
                 Name  Flags
      callable         
      timeoutDuration  
      timeoutUnit      

  public void runWithTimeout(java.lang.Runnable, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
        start local 1 // java.lang.Runnable runnable
        start local 2 // long timeoutDuration
        start local 4 // java.util.concurrent.TimeUnit timeoutUnit
         0: .line 191
            aload 1 /* runnable */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 192
            aload 4 /* timeoutUnit */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 193
            lload 2 /* timeoutDuration */
            invokestatic com.google.common.util.concurrent.SimpleTimeLimiter.checkPositiveTimeout:(J)V
         3: .line 195
            aload 0 /* this */
            getfield com.google.common.util.concurrent.SimpleTimeLimiter.executor:Ljava/util/concurrent/ExecutorService;
            aload 1 /* runnable */
            invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
            astore 5 /* future */
        start local 5 // java.util.concurrent.Future future
         4: .line 198
            aload 5 /* future */
            lload 2 /* timeoutDuration */
            aload 4 /* timeoutUnit */
            invokeinterface java.util.concurrent.Future.get:(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
            pop
         5: .line 199
            goto 12
      StackMap locals: com.google.common.util.concurrent.SimpleTimeLimiter java.lang.Runnable long java.util.concurrent.TimeUnit java.util.concurrent.Future
      StackMap stack: java.lang.Exception
         6: astore 6 /* e */
        start local 6 // java.lang.Exception e
         7: .line 200
            aload 5 /* future */
            iconst_1
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
         8: .line 201
            aload 6 /* e */
            athrow
        end local 6 // java.lang.Exception e
         9: .line 202
      StackMap locals:
      StackMap stack: java.util.concurrent.ExecutionException
            astore 6 /* e */
        start local 6 // java.util.concurrent.ExecutionException e
        10: .line 203
            aload 0 /* this */
            aload 6 /* e */
            invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
            invokevirtual com.google.common.util.concurrent.SimpleTimeLimiter.wrapAndThrowRuntimeExecutionExceptionOrError:(Ljava/lang/Throwable;)V
        11: .line 204
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 6 // java.util.concurrent.ExecutionException e
        12: .line 206
      StackMap locals:
      StackMap stack:
            return
        end local 5 // java.util.concurrent.Future future
        end local 4 // java.util.concurrent.TimeUnit timeoutUnit
        end local 2 // long timeoutDuration
        end local 1 // java.lang.Runnable runnable
        end local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0             this  Lcom/google/common/util/concurrent/SimpleTimeLimiter;
            0   13     1         runnable  Ljava/lang/Runnable;
            0   13     2  timeoutDuration  J
            0   13     4      timeoutUnit  Ljava/util/concurrent/TimeUnit;
            4   13     5           future  Ljava/util/concurrent/Future<*>;
            7    9     6                e  Ljava/lang/Exception;
           10   12     6                e  Ljava/util/concurrent/ExecutionException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.InterruptedException
           4     5       6  Class java.util.concurrent.TimeoutException
           4     5       9  Class java.util.concurrent.ExecutionException
    Exceptions:
      throws java.util.concurrent.TimeoutException, java.lang.InterruptedException
    MethodParameters:
                 Name  Flags
      runnable         
      timeoutDuration  
      timeoutUnit      

  public void runUninterruptiblyWithTimeout(java.lang.Runnable, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
        start local 1 // java.lang.Runnable runnable
        start local 2 // long timeoutDuration
        start local 4 // java.util.concurrent.TimeUnit timeoutUnit
         0: .line 211
            aload 1 /* runnable */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 212
            aload 4 /* timeoutUnit */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 213
            lload 2 /* timeoutDuration */
            invokestatic com.google.common.util.concurrent.SimpleTimeLimiter.checkPositiveTimeout:(J)V
         3: .line 215
            aload 0 /* this */
            getfield com.google.common.util.concurrent.SimpleTimeLimiter.executor:Ljava/util/concurrent/ExecutorService;
            aload 1 /* runnable */
            invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
            astore 5 /* future */
        start local 5 // java.util.concurrent.Future future
         4: .line 218
            aload 5 /* future */
            lload 2 /* timeoutDuration */
            aload 4 /* timeoutUnit */
            invokestatic com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly:(Ljava/util/concurrent/Future;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
            pop
         5: .line 219
            goto 12
      StackMap locals: com.google.common.util.concurrent.SimpleTimeLimiter java.lang.Runnable long java.util.concurrent.TimeUnit java.util.concurrent.Future
      StackMap stack: java.util.concurrent.TimeoutException
         6: astore 6 /* e */
        start local 6 // java.util.concurrent.TimeoutException e
         7: .line 220
            aload 5 /* future */
            iconst_1
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
         8: .line 221
            aload 6 /* e */
            athrow
        end local 6 // java.util.concurrent.TimeoutException e
         9: .line 222
      StackMap locals:
      StackMap stack: java.util.concurrent.ExecutionException
            astore 6 /* e */
        start local 6 // java.util.concurrent.ExecutionException e
        10: .line 223
            aload 0 /* this */
            aload 6 /* e */
            invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
            invokevirtual com.google.common.util.concurrent.SimpleTimeLimiter.wrapAndThrowRuntimeExecutionExceptionOrError:(Ljava/lang/Throwable;)V
        11: .line 224
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 6 // java.util.concurrent.ExecutionException e
        12: .line 226
      StackMap locals:
      StackMap stack:
            return
        end local 5 // java.util.concurrent.Future future
        end local 4 // java.util.concurrent.TimeUnit timeoutUnit
        end local 2 // long timeoutDuration
        end local 1 // java.lang.Runnable runnable
        end local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0             this  Lcom/google/common/util/concurrent/SimpleTimeLimiter;
            0   13     1         runnable  Ljava/lang/Runnable;
            0   13     2  timeoutDuration  J
            0   13     4      timeoutUnit  Ljava/util/concurrent/TimeUnit;
            4   13     5           future  Ljava/util/concurrent/Future<*>;
            7    9     6                e  Ljava/util/concurrent/TimeoutException;
           10   12     6                e  Ljava/util/concurrent/ExecutionException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.util.concurrent.TimeoutException
           4     5       9  Class java.util.concurrent.ExecutionException
    Exceptions:
      throws java.util.concurrent.TimeoutException
    MethodParameters:
                 Name  Flags
      runnable         
      timeoutDuration  
      timeoutUnit      

  private static java.lang.Exception throwCause(java.lang.Exception, boolean);
    descriptor: (Ljava/lang/Exception;Z)Ljava/lang/Exception;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.lang.Exception e
        start local 1 // boolean combineStackTraces
         0: .line 229
            aload 0 /* e */
            invokevirtual java.lang.Exception.getCause:()Ljava/lang/Throwable;
            astore 2 /* cause */
        start local 2 // java.lang.Throwable cause
         1: .line 230
            aload 2 /* cause */
            ifnonnull 3
         2: .line 231
            aload 0 /* e */
            athrow
         3: .line 233
      StackMap locals: java.lang.Throwable
      StackMap stack:
            iload 1 /* combineStackTraces */
            ifeq 7
         4: .line 235
            aload 2 /* cause */
            invokevirtual java.lang.Throwable.getStackTrace:()[Ljava/lang/StackTraceElement;
            aload 0 /* e */
            invokevirtual java.lang.Exception.getStackTrace:()[Ljava/lang/StackTraceElement;
            ldc Ljava/lang/StackTraceElement;
            invokestatic com.google.common.collect.ObjectArrays.concat:([Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Class;)[Ljava/lang/Object;
            checkcast java.lang.StackTraceElement[]
         5: .line 234
            astore 3 /* combined */
        start local 3 // java.lang.StackTraceElement[] combined
         6: .line 236
            aload 2 /* cause */
            aload 3 /* combined */
            invokevirtual java.lang.Throwable.setStackTrace:([Ljava/lang/StackTraceElement;)V
        end local 3 // java.lang.StackTraceElement[] combined
         7: .line 238
      StackMap locals:
      StackMap stack:
            aload 2 /* cause */
            instanceof java.lang.Exception
            ifeq 9
         8: .line 239
            aload 2 /* cause */
            checkcast java.lang.Exception
            athrow
         9: .line 241
      StackMap locals:
      StackMap stack:
            aload 2 /* cause */
            instanceof java.lang.Error
            ifeq 11
        10: .line 242
            aload 2 /* cause */
            checkcast java.lang.Error
            athrow
        11: .line 245
      StackMap locals:
      StackMap stack:
            aload 0 /* e */
            athrow
        end local 2 // java.lang.Throwable cause
        end local 1 // boolean combineStackTraces
        end local 0 // java.lang.Exception e
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   12     0                   e  Ljava/lang/Exception;
            0   12     1  combineStackTraces  Z
            1   12     2               cause  Ljava/lang/Throwable;
            6    7     3            combined  [Ljava/lang/StackTraceElement;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
                    Name  Flags
      e                   
      combineStackTraces  

  private static java.util.Set<java.lang.reflect.Method> findInterruptibleMethods(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/util/Set;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // java.lang.Class interfaceType
         0: .line 249
            invokestatic com.google.common.collect.Sets.newHashSet:()Ljava/util/HashSet;
            astore 1 /* set */
        start local 1 // java.util.Set set
         1: .line 250
            aload 0 /* interfaceType */
            invokevirtual java.lang.Class.getMethods:()[Ljava/lang/reflect/Method;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 6
      StackMap locals: java.lang.Class java.util.Set top int int java.lang.reflect.Method[]
      StackMap stack:
         2: aload 5
            iload 3
            aaload
            astore 2 /* m */
        start local 2 // java.lang.reflect.Method m
         3: .line 251
            aload 2 /* m */
            invokestatic com.google.common.util.concurrent.SimpleTimeLimiter.declaresInterruptedEx:(Ljava/lang/reflect/Method;)Z
            ifeq 5
         4: .line 252
            aload 1 /* set */
            aload 2 /* m */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // java.lang.reflect.Method m
         5: .line 250
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         6: iload 3
            iload 4
            if_icmplt 2
         7: .line 255
            aload 1 /* set */
            areturn
        end local 1 // java.util.Set set
        end local 0 // java.lang.Class interfaceType
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0  interfaceType  Ljava/lang/Class<*>;
            1    8     1            set  Ljava/util/Set<Ljava/lang/reflect/Method;>;
            3    5     2              m  Ljava/lang/reflect/Method;
    Signature: (Ljava/lang/Class<*>;)Ljava/util/Set<Ljava/lang/reflect/Method;>;
    MethodParameters:
               Name  Flags
      interfaceType  

  private static boolean declaresInterruptedEx(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // java.lang.reflect.Method method
         0: .line 259
            aload 0 /* method */
            invokevirtual java.lang.reflect.Method.getExceptionTypes:()[Ljava/lang/Class;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 5
      StackMap locals: java.lang.reflect.Method top int int java.lang.Class[]
      StackMap stack:
         1: aload 4
            iload 2
            aaload
            astore 1 /* exType */
        start local 1 // java.lang.Class exType
         2: .line 261
            aload 1 /* exType */
            ldc Ljava/lang/InterruptedException;
            if_acmpne 4
         3: .line 262
            iconst_1
            ireturn
        end local 1 // java.lang.Class exType
         4: .line 259
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         5: iload 2
            iload 3
            if_icmplt 1
         6: .line 265
            iconst_0
            ireturn
        end local 0 // java.lang.reflect.Method method
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  method  Ljava/lang/reflect/Method;
            2    4     1  exType  Ljava/lang/Class<*>;
    MethodParameters:
        Name  Flags
      method  

  private void wrapAndThrowExecutionExceptionOrError(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
        start local 1 // java.lang.Throwable cause
         0: .line 269
            aload 1 /* cause */
            instanceof java.lang.Error
            ifeq 2
         1: .line 270
            new com.google.common.util.concurrent.ExecutionError
            dup
            aload 1 /* cause */
            checkcast java.lang.Error
            invokespecial com.google.common.util.concurrent.ExecutionError.<init>:(Ljava/lang/Error;)V
            athrow
         2: .line 271
      StackMap locals:
      StackMap stack:
            aload 1 /* cause */
            instanceof java.lang.RuntimeException
            ifeq 4
         3: .line 272
            new com.google.common.util.concurrent.UncheckedExecutionException
            dup
            aload 1 /* cause */
            invokespecial com.google.common.util.concurrent.UncheckedExecutionException.<init>:(Ljava/lang/Throwable;)V
            athrow
         4: .line 274
      StackMap locals:
      StackMap stack:
            new java.util.concurrent.ExecutionException
            dup
            aload 1 /* cause */
            invokespecial java.util.concurrent.ExecutionException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Throwable cause
        end local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/google/common/util/concurrent/SimpleTimeLimiter;
            0    5     1  cause  Ljava/lang/Throwable;
    Exceptions:
      throws java.util.concurrent.ExecutionException
    MethodParameters:
       Name  Flags
      cause  

  private void wrapAndThrowRuntimeExecutionExceptionOrError(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
        start local 1 // java.lang.Throwable cause
         0: .line 279
            aload 1 /* cause */
            instanceof java.lang.Error
            ifeq 2
         1: .line 280
            new com.google.common.util.concurrent.ExecutionError
            dup
            aload 1 /* cause */
            checkcast java.lang.Error
            invokespecial com.google.common.util.concurrent.ExecutionError.<init>:(Ljava/lang/Error;)V
            athrow
         2: .line 282
      StackMap locals:
      StackMap stack:
            new com.google.common.util.concurrent.UncheckedExecutionException
            dup
            aload 1 /* cause */
            invokespecial com.google.common.util.concurrent.UncheckedExecutionException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Throwable cause
        end local 0 // com.google.common.util.concurrent.SimpleTimeLimiter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/google/common/util/concurrent/SimpleTimeLimiter;
            0    3     1  cause  Ljava/lang/Throwable;
    MethodParameters:
       Name  Flags
      cause  

  private static void checkPositiveTimeout(long);
    descriptor: (J)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // long timeoutDuration
         0: .line 287
            lload 0 /* timeoutDuration */
            lconst_0
            lcmp
            ifle 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "timeout must be positive: %s"
            lload 0 /* timeoutDuration */
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;J)V
         3: .line 288
            return
        end local 0 // long timeoutDuration
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0  timeoutDuration  J
    MethodParameters:
                 Name  Flags
      timeoutDuration  
}
SourceFile: "SimpleTimeLimiter.java"
NestMembers:
  com.google.common.util.concurrent.SimpleTimeLimiter$1  com.google.common.util.concurrent.SimpleTimeLimiter$1$1
InnerClasses:
  com.google.common.util.concurrent.SimpleTimeLimiter$1
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
      com.google.common.annotations.GwtIncompatible()