public abstract class com.microsoft.azure.storage.RetryPolicy implements com.microsoft.azure.storage.RetryPolicyFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.microsoft.azure.storage.RetryPolicy
  super_class: java.lang.Object
{
  public static final int DEFAULT_CLIENT_BACKOFF;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 30000

  public static final int DEFAULT_CLIENT_RETRY_COUNT;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  public static final int DEFAULT_MAX_BACKOFF;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 90000

  public static final int DEFAULT_MIN_BACKOFF;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3000

  protected int deltaBackoffIntervalInMs;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  protected int maximumAttempts;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  protected java.util.Date lastPrimaryAttempt;
    descriptor: Ljava/util/Date;
    flags: (0x0004) ACC_PROTECTED

  protected java.util.Date lastSecondaryAttempt;
    descriptor: Ljava/util/Date;
    flags: (0x0004) ACC_PROTECTED

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.microsoft.azure.storage.RetryPolicy this
         0: .line 73
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 63
            aload 0 /* this */
            aconst_null
            putfield com.microsoft.azure.storage.RetryPolicy.lastPrimaryAttempt:Ljava/util/Date;
         2: .line 68
            aload 0 /* this */
            aconst_null
            putfield com.microsoft.azure.storage.RetryPolicy.lastSecondaryAttempt:Ljava/util/Date;
         3: .line 75
            return
        end local 0 // com.microsoft.azure.storage.RetryPolicy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/microsoft/azure/storage/RetryPolicy;

  public void <init>(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.microsoft.azure.storage.RetryPolicy this
        start local 1 // int deltaBackoff
        start local 2 // int maxAttempts
         0: .line 86
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 63
            aload 0 /* this */
            aconst_null
            putfield com.microsoft.azure.storage.RetryPolicy.lastPrimaryAttempt:Ljava/util/Date;
         2: .line 68
            aload 0 /* this */
            aconst_null
            putfield com.microsoft.azure.storage.RetryPolicy.lastSecondaryAttempt:Ljava/util/Date;
         3: .line 87
            aload 0 /* this */
            iload 1 /* deltaBackoff */
            putfield com.microsoft.azure.storage.RetryPolicy.deltaBackoffIntervalInMs:I
         4: .line 88
            aload 0 /* this */
            iload 2 /* maxAttempts */
            putfield com.microsoft.azure.storage.RetryPolicy.maximumAttempts:I
         5: .line 89
            return
        end local 2 // int maxAttempts
        end local 1 // int deltaBackoff
        end local 0 // com.microsoft.azure.storage.RetryPolicy this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lcom/microsoft/azure/storage/RetryPolicy;
            0    6     1  deltaBackoff  I
            0    6     2   maxAttempts  I
    MethodParameters:
              Name  Flags
      deltaBackoff  final
      maxAttempts   final

  public abstract com.microsoft.azure.storage.RetryInfo evaluate(com.microsoft.azure.storage.RetryContext, com.microsoft.azure.storage.OperationContext);
    descriptor: (Lcom/microsoft/azure/storage/RetryContext;Lcom/microsoft/azure/storage/OperationContext;)Lcom/microsoft/azure/storage/RetryInfo;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                  Name  Flags
      retryContext      
      operationContext  

  protected boolean evaluateLastAttemptAndSecondaryNotFound(com.microsoft.azure.storage.RetryContext);
    descriptor: (Lcom/microsoft/azure/storage/RetryContext;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.microsoft.azure.storage.RetryPolicy this
        start local 1 // com.microsoft.azure.storage.RetryContext retryContext
         0: .line 117
            ldc "retryContext"
            aload 1 /* retryContext */
            invokestatic com.microsoft.azure.storage.core.Utility.assertNotNull:(Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 127
            aload 1 /* retryContext */
            invokevirtual com.microsoft.azure.storage.RetryContext.getLastRequestResult:()Lcom/microsoft/azure/storage/RequestResult;
            invokevirtual com.microsoft.azure.storage.RequestResult.getTargetLocation:()Lcom/microsoft/azure/storage/StorageLocation;
            getstatic com.microsoft.azure.storage.StorageLocation.PRIMARY:Lcom/microsoft/azure/storage/StorageLocation;
            if_acmpne 4
         2: .line 128
            aload 0 /* this */
            aload 1 /* retryContext */
            invokevirtual com.microsoft.azure.storage.RetryContext.getLastRequestResult:()Lcom/microsoft/azure/storage/RequestResult;
            invokevirtual com.microsoft.azure.storage.RequestResult.getStopDate:()Ljava/util/Date;
            putfield com.microsoft.azure.storage.RetryPolicy.lastPrimaryAttempt:Ljava/util/Date;
         3: .line 129
            goto 5
         4: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* retryContext */
            invokevirtual com.microsoft.azure.storage.RetryContext.getLastRequestResult:()Lcom/microsoft/azure/storage/RequestResult;
            invokevirtual com.microsoft.azure.storage.RequestResult.getStopDate:()Ljava/util/Date;
            putfield com.microsoft.azure.storage.RetryPolicy.lastSecondaryAttempt:Ljava/util/Date;
         5: .line 137
      StackMap locals:
      StackMap stack:
            aload 1 /* retryContext */
            invokevirtual com.microsoft.azure.storage.RetryContext.getLastRequestResult:()Lcom/microsoft/azure/storage/RequestResult;
            invokevirtual com.microsoft.azure.storage.RequestResult.getTargetLocation:()Lcom/microsoft/azure/storage/StorageLocation;
            getstatic com.microsoft.azure.storage.StorageLocation.SECONDARY:Lcom/microsoft/azure/storage/StorageLocation;
            if_acmpne 8
         6: .line 138
            aload 1 /* retryContext */
            invokevirtual com.microsoft.azure.storage.RetryContext.getLastRequestResult:()Lcom/microsoft/azure/storage/RequestResult;
            invokevirtual com.microsoft.azure.storage.RequestResult.getStatusCode:()I
            sipush 404
            if_icmpne 8
         7: .line 137
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         8: iconst_0
            ireturn
        end local 1 // com.microsoft.azure.storage.RetryContext retryContext
        end local 0 // com.microsoft.azure.storage.RetryPolicy this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lcom/microsoft/azure/storage/RetryPolicy;
            0    9     1  retryContext  Lcom/microsoft/azure/storage/RetryContext;
    MethodParameters:
              Name  Flags
      retryContext  

  protected com.microsoft.azure.storage.RetryInfo evaluateRetryInfo(com.microsoft.azure.storage.RetryContext, boolean, long);
    descriptor: (Lcom/microsoft/azure/storage/RetryContext;ZJ)Lcom/microsoft/azure/storage/RetryInfo;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=9, args_size=4
        start local 0 // com.microsoft.azure.storage.RetryPolicy this
        start local 1 // com.microsoft.azure.storage.RetryContext retryContext
        start local 2 // boolean secondaryNotFound
        start local 3 // long retryInterval
         0: .line 160
            new com.microsoft.azure.storage.RetryInfo
            dup
            aload 1 /* retryContext */
            invokespecial com.microsoft.azure.storage.RetryInfo.<init>:(Lcom/microsoft/azure/storage/RetryContext;)V
            astore 5 /* retryInfo */
        start local 5 // com.microsoft.azure.storage.RetryInfo retryInfo
         1: .line 165
            iload 2 /* secondaryNotFound */
            ifeq 4
            aload 1 /* retryContext */
            invokevirtual com.microsoft.azure.storage.RetryContext.getLocationMode:()Lcom/microsoft/azure/storage/LocationMode;
            getstatic com.microsoft.azure.storage.LocationMode.SECONDARY_ONLY:Lcom/microsoft/azure/storage/LocationMode;
            if_acmpeq 4
         2: .line 166
            aload 5 /* retryInfo */
            getstatic com.microsoft.azure.storage.LocationMode.PRIMARY_ONLY:Lcom/microsoft/azure/storage/LocationMode;
            invokevirtual com.microsoft.azure.storage.RetryInfo.setUpdatedLocationMode:(Lcom/microsoft/azure/storage/LocationMode;)V
         3: .line 167
            aload 5 /* retryInfo */
            getstatic com.microsoft.azure.storage.StorageLocation.PRIMARY:Lcom/microsoft/azure/storage/StorageLocation;
            invokevirtual com.microsoft.azure.storage.RetryInfo.setTargetLocation:(Lcom/microsoft/azure/storage/StorageLocation;)V
         4: .line 175
      StackMap locals: com.microsoft.azure.storage.RetryInfo
      StackMap stack:
            aload 5 /* retryInfo */
            invokevirtual com.microsoft.azure.storage.RetryInfo.getTargetLocation:()Lcom/microsoft/azure/storage/StorageLocation;
            getstatic com.microsoft.azure.storage.StorageLocation.PRIMARY:Lcom/microsoft/azure/storage/StorageLocation;
            if_acmpne 5
            aload 0 /* this */
            getfield com.microsoft.azure.storage.RetryPolicy.lastPrimaryAttempt:Ljava/util/Date;
            goto 6
         5: .line 176
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.microsoft.azure.storage.RetryPolicy.lastSecondaryAttempt:Ljava/util/Date;
         6: .line 175
      StackMap locals:
      StackMap stack: java.util.Date
            astore 6 /* lastAttemptTime */
        start local 6 // java.util.Date lastAttemptTime
         7: .line 177
            aload 6 /* lastAttemptTime */
            ifnull 14
         8: .line 178
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            invokevirtual java.util.Date.getTime:()J
            aload 6 /* lastAttemptTime */
            invokevirtual java.util.Date.getTime:()J
            lsub
            lconst_0
            lcmp
            ifle 10
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            invokevirtual java.util.Date.getTime:()J
         9: .line 179
            aload 6 /* lastAttemptTime */
            invokevirtual java.util.Date.getTime:()J
            lsub
            goto 11
      StackMap locals: java.util.Date
      StackMap stack:
        10: lconst_0
        11: .line 178
      StackMap locals:
      StackMap stack: long
            lstore 7 /* sinceLastAttempt */
        start local 7 // long sinceLastAttempt
        12: .line 180
            aload 5 /* retryInfo */
            lload 3 /* retryInterval */
            lload 7 /* sinceLastAttempt */
            lsub
            l2i
            invokevirtual com.microsoft.azure.storage.RetryInfo.setRetryInterval:(I)V
        end local 7 // long sinceLastAttempt
        13: .line 181
            goto 15
        14: .line 183
      StackMap locals:
      StackMap stack:
            aload 5 /* retryInfo */
            iconst_0
            invokevirtual com.microsoft.azure.storage.RetryInfo.setRetryInterval:(I)V
        15: .line 186
      StackMap locals:
      StackMap stack:
            aload 5 /* retryInfo */
            areturn
        end local 6 // java.util.Date lastAttemptTime
        end local 5 // com.microsoft.azure.storage.RetryInfo retryInfo
        end local 3 // long retryInterval
        end local 2 // boolean secondaryNotFound
        end local 1 // com.microsoft.azure.storage.RetryContext retryContext
        end local 0 // com.microsoft.azure.storage.RetryPolicy this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   16     0               this  Lcom/microsoft/azure/storage/RetryPolicy;
            0   16     1       retryContext  Lcom/microsoft/azure/storage/RetryContext;
            0   16     2  secondaryNotFound  Z
            0   16     3      retryInterval  J
            1   16     5          retryInfo  Lcom/microsoft/azure/storage/RetryInfo;
            7   16     6    lastAttemptTime  Ljava/util/Date;
           12   13     7   sinceLastAttempt  J
    MethodParameters:
                   Name  Flags
      retryContext       final
      secondaryNotFound  final
      retryInterval      final
}
SourceFile: "RetryPolicy.java"