public class org.apache.http.impl.execchain.ServiceUnavailableRetryExec implements org.apache.http.impl.execchain.ClientExecChain
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.http.impl.execchain.ServiceUnavailableRetryExec
  super_class: java.lang.Object
{
  private final org.apache.commons.logging.Log log;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.http.impl.execchain.ClientExecChain requestExecutor;
    descriptor: Lorg/apache/http/impl/execchain/ClientExecChain;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.http.client.ServiceUnavailableRetryStrategy retryStrategy;
    descriptor: Lorg/apache/http/client/ServiceUnavailableRetryStrategy;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(org.apache.http.impl.execchain.ClientExecChain, org.apache.http.client.ServiceUnavailableRetryStrategy);
    descriptor: (Lorg/apache/http/impl/execchain/ClientExecChain;Lorg/apache/http/client/ServiceUnavailableRetryStrategy;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.apache.http.impl.execchain.ServiceUnavailableRetryExec this
        start local 1 // org.apache.http.impl.execchain.ClientExecChain requestExecutor
        start local 2 // org.apache.http.client.ServiceUnavailableRetryStrategy retryStrategy
         0: .line 70
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 62
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putfield org.apache.http.impl.execchain.ServiceUnavailableRetryExec.log:Lorg/apache/commons/logging/Log;
         2: .line 71
            aload 1 /* requestExecutor */
            ldc "HTTP request executor"
            invokestatic org.apache.http.util.Args.notNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         3: .line 72
            aload 2 /* retryStrategy */
            ldc "Retry strategy"
            invokestatic org.apache.http.util.Args.notNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         4: .line 73
            aload 0 /* this */
            aload 1 /* requestExecutor */
            putfield org.apache.http.impl.execchain.ServiceUnavailableRetryExec.requestExecutor:Lorg/apache/http/impl/execchain/ClientExecChain;
         5: .line 74
            aload 0 /* this */
            aload 2 /* retryStrategy */
            putfield org.apache.http.impl.execchain.ServiceUnavailableRetryExec.retryStrategy:Lorg/apache/http/client/ServiceUnavailableRetryStrategy;
         6: .line 75
            return
        end local 2 // org.apache.http.client.ServiceUnavailableRetryStrategy retryStrategy
        end local 1 // org.apache.http.impl.execchain.ClientExecChain requestExecutor
        end local 0 // org.apache.http.impl.execchain.ServiceUnavailableRetryExec this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    7     0             this  Lorg/apache/http/impl/execchain/ServiceUnavailableRetryExec;
            0    7     1  requestExecutor  Lorg/apache/http/impl/execchain/ClientExecChain;
            0    7     2    retryStrategy  Lorg/apache/http/client/ServiceUnavailableRetryStrategy;
    MethodParameters:
                 Name  Flags
      requestExecutor  final
      retryStrategy    final

  public org.apache.http.client.methods.CloseableHttpResponse execute(org.apache.http.conn.routing.HttpRoute, org.apache.http.client.methods.HttpRequestWrapper, org.apache.http.client.protocol.HttpClientContext, org.apache.http.client.methods.HttpExecutionAware);
    descriptor: (Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/client/methods/HttpRequestWrapper;Lorg/apache/http/client/protocol/HttpClientContext;Lorg/apache/http/client/methods/HttpExecutionAware;)Lorg/apache/http/client/methods/CloseableHttpResponse;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=5
        start local 0 // org.apache.http.impl.execchain.ServiceUnavailableRetryExec this
        start local 1 // org.apache.http.conn.routing.HttpRoute route
        start local 2 // org.apache.http.client.methods.HttpRequestWrapper request
        start local 3 // org.apache.http.client.protocol.HttpClientContext context
        start local 4 // org.apache.http.client.methods.HttpExecutionAware execAware
         0: .line 83
            aload 2 /* request */
            invokevirtual org.apache.http.client.methods.HttpRequestWrapper.getAllHeaders:()[Lorg/apache/http/Header;
            astore 5 /* origheaders */
        start local 5 // org.apache.http.Header[] origheaders
         1: .line 84
            iconst_1
            istore 6 /* c */
        start local 6 // int c
         2: .line 85
      StackMap locals: org.apache.http.Header[] int
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.http.impl.execchain.ServiceUnavailableRetryExec.requestExecutor:Lorg/apache/http/impl/execchain/ClientExecChain;
         3: .line 86
            aload 1 /* route */
            aload 2 /* request */
            aload 3 /* context */
            aload 4 /* execAware */
         4: .line 85
            invokeinterface org.apache.http.impl.execchain.ClientExecChain.execute:(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/client/methods/HttpRequestWrapper;Lorg/apache/http/client/protocol/HttpClientContext;Lorg/apache/http/client/methods/HttpExecutionAware;)Lorg/apache/http/client/methods/CloseableHttpResponse;
            astore 7 /* response */
        start local 7 // org.apache.http.client.methods.CloseableHttpResponse response
         5: .line 88
            aload 0 /* this */
            getfield org.apache.http.impl.execchain.ServiceUnavailableRetryExec.retryStrategy:Lorg/apache/http/client/ServiceUnavailableRetryStrategy;
            aload 7 /* response */
            iload 6 /* c */
            aload 3 /* context */
            invokeinterface org.apache.http.client.ServiceUnavailableRetryStrategy.retryRequest:(Lorg/apache/http/HttpResponse;ILorg/apache/http/protocol/HttpContext;)Z
            ifeq 18
         6: .line 89
            aload 2 /* request */
            invokestatic org.apache.http.impl.execchain.RequestEntityProxy.isRepeatable:(Lorg/apache/http/HttpRequest;)Z
            ifeq 18
         7: .line 90
            aload 7 /* response */
            invokeinterface org.apache.http.client.methods.CloseableHttpResponse.close:()V
         8: .line 91
            aload 0 /* this */
            getfield org.apache.http.impl.execchain.ServiceUnavailableRetryExec.retryStrategy:Lorg/apache/http/client/ServiceUnavailableRetryStrategy;
            invokeinterface org.apache.http.client.ServiceUnavailableRetryStrategy.getRetryInterval:()J
            lstore 8 /* nextInterval */
        start local 8 // long nextInterval
         9: .line 92
            lload 8 /* nextInterval */
            lconst_0
            lcmp
            ifle 16
        10: .line 94
            aload 0 /* this */
            getfield org.apache.http.impl.execchain.ServiceUnavailableRetryExec.log:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Wait for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 8 /* nextInterval */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
        11: .line 95
            lload 8 /* nextInterval */
            invokestatic java.lang.Thread.sleep:(J)V
        12: .line 96
            goto 16
      StackMap locals: org.apache.http.impl.execchain.ServiceUnavailableRetryExec org.apache.http.conn.routing.HttpRoute org.apache.http.client.methods.HttpRequestWrapper org.apache.http.client.protocol.HttpClientContext org.apache.http.client.methods.HttpExecutionAware org.apache.http.Header[] int org.apache.http.client.methods.CloseableHttpResponse long
      StackMap stack: java.lang.InterruptedException
        13: pop
        14: .line 97
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        15: .line 98
            new java.io.InterruptedIOException
            dup
            invokespecial java.io.InterruptedIOException.<init>:()V
            athrow
        16: .line 101
      StackMap locals:
      StackMap stack:
            aload 2 /* request */
            aload 5 /* origheaders */
            invokevirtual org.apache.http.client.methods.HttpRequestWrapper.setHeaders:([Lorg/apache/http/Header;)V
        end local 8 // long nextInterval
        17: .line 102
            goto 23
        18: .line 103
      StackMap locals:
      StackMap stack:
            aload 7 /* response */
        19: areturn
        20: .line 105
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            astore 8 /* ex */
        start local 8 // java.lang.RuntimeException ex
        21: .line 106
            aload 7 /* response */
            invokeinterface org.apache.http.client.methods.CloseableHttpResponse.close:()V
        22: .line 107
            aload 8 /* ex */
            athrow
        end local 8 // java.lang.RuntimeException ex
        end local 7 // org.apache.http.client.methods.CloseableHttpResponse response
        23: .line 84
      StackMap locals:
      StackMap stack:
            iinc 6 /* c */ 1
            goto 2
        end local 6 // int c
        end local 5 // org.apache.http.Header[] origheaders
        end local 4 // org.apache.http.client.methods.HttpExecutionAware execAware
        end local 3 // org.apache.http.client.protocol.HttpClientContext context
        end local 2 // org.apache.http.client.methods.HttpRequestWrapper request
        end local 1 // org.apache.http.conn.routing.HttpRoute route
        end local 0 // org.apache.http.impl.execchain.ServiceUnavailableRetryExec this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   24     0          this  Lorg/apache/http/impl/execchain/ServiceUnavailableRetryExec;
            0   24     1         route  Lorg/apache/http/conn/routing/HttpRoute;
            0   24     2       request  Lorg/apache/http/client/methods/HttpRequestWrapper;
            0   24     3       context  Lorg/apache/http/client/protocol/HttpClientContext;
            0   24     4     execAware  Lorg/apache/http/client/methods/HttpExecutionAware;
            1   24     5   origheaders  [Lorg/apache/http/Header;
            2   24     6             c  I
            5   23     7      response  Lorg/apache/http/client/methods/CloseableHttpResponse;
            9   17     8  nextInterval  J
           21   23     8            ex  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
          10    12      13  Class java.lang.InterruptedException
           5    19      20  Class java.lang.RuntimeException
    Exceptions:
      throws java.io.IOException, org.apache.http.HttpException
    MethodParameters:
           Name  Flags
      route      final
      request    final
      context    final
      execAware  final
}
SourceFile: "ServiceUnavailableRetryExec.java"
    RuntimeInvisibleAnnotations: 
      org.apache.http.annotation.Contract(threading = org.apache.http.annotation.ThreadingBehavior.IMMUTABLE_CONDITIONAL:Lorg/apache/http/annotation/ThreadingBehavior;)