public final class reactor.util.retry.RetryBackoffSpec extends reactor.util.retry.Retry
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: reactor.util.retry.RetryBackoffSpec
  super_class: reactor.util.retry.Retry
{
  static final java.util.function.BiFunction<reactor.util.retry.RetryBackoffSpec, reactor.util.retry.Retry$RetrySignal, java.lang.Throwable> BACKOFF_EXCEPTION_GENERATOR;
    descriptor: Ljava/util/function/BiFunction;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/BiFunction<Lreactor/util/retry/RetryBackoffSpec;Lreactor/util/retry/Retry$RetrySignal;Ljava/lang/Throwable;>;

  public final java.time.Duration minBackoff;
    descriptor: Ljava/time/Duration;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  public final java.time.Duration maxBackoff;
    descriptor: Ljava/time/Duration;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  public final double jitterFactor;
    descriptor: D
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  public final java.util.function.Supplier<reactor.core.scheduler.Scheduler> backoffSchedulerSupplier;
    descriptor: Ljava/util/function/Supplier;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Signature: Ljava/util/function/Supplier<Lreactor/core/scheduler/Scheduler;>;

  public final long maxAttempts;
    descriptor: J
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  public final java.util.function.Predicate<java.lang.Throwable> errorFilter;
    descriptor: Ljava/util/function/Predicate;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Signature: Ljava/util/function/Predicate<Ljava/lang/Throwable;>;

  public final boolean isTransientErrors;
    descriptor: Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  final java.util.function.Consumer<reactor.util.retry.Retry$RetrySignal> syncPreRetry;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/function/Consumer<Lreactor/util/retry/Retry$RetrySignal;>;

  final java.util.function.Consumer<reactor.util.retry.Retry$RetrySignal> syncPostRetry;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/function/Consumer<Lreactor/util/retry/Retry$RetrySignal;>;

  final java.util.function.BiFunction<reactor.util.retry.Retry$RetrySignal, reactor.core.publisher.Mono<java.lang.Void>, reactor.core.publisher.Mono<java.lang.Void>> asyncPreRetry;
    descriptor: Ljava/util/function/BiFunction;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/function/BiFunction<Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;>;

  final java.util.function.BiFunction<reactor.util.retry.Retry$RetrySignal, reactor.core.publisher.Mono<java.lang.Void>, reactor.core.publisher.Mono<java.lang.Void>> asyncPostRetry;
    descriptor: Ljava/util/function/BiFunction;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/function/BiFunction<Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;>;

  final java.util.function.BiFunction<reactor.util.retry.RetryBackoffSpec, reactor.util.retry.Retry$RetrySignal, java.lang.Throwable> retryExhaustedGenerator;
    descriptor: Ljava/util/function/BiFunction;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/function/BiFunction<Lreactor/util/retry/RetryBackoffSpec;Lreactor/util/retry/Retry$RetrySignal;Ljava/lang/Throwable;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 66
            invokedynamic apply()Ljava/util/function/BiFunction;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
                  reactor/util/retry/RetryBackoffSpec.lambda$0(Lreactor/util/retry/RetryBackoffSpec;Lreactor/util/retry/Retry$RetrySignal;)Ljava/lang/Throwable; (6)
                  (Lreactor/util/retry/RetryBackoffSpec;Lreactor/util/retry/Retry$RetrySignal;)Ljava/lang/Throwable;
            putstatic reactor.util.retry.RetryBackoffSpec.BACKOFF_EXCEPTION_GENERATOR:Ljava/util/function/BiFunction;
         1: .line 71
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(reactor.util.context.ContextView, long, java.util.function.Predicate<? super java.lang.Throwable>, boolean, java.time.Duration, java.time.Duration, double, java.util.function.Supplier<reactor.core.scheduler.Scheduler>, java.util.function.Consumer<reactor.util.retry.Retry$RetrySignal>, java.util.function.Consumer<reactor.util.retry.Retry$RetrySignal>, java.util.function.BiFunction<reactor.util.retry.Retry$RetrySignal, reactor.core.publisher.Mono<java.lang.Void>, reactor.core.publisher.Mono<java.lang.Void>>, java.util.function.BiFunction<reactor.util.retry.Retry$RetrySignal, reactor.core.publisher.Mono<java.lang.Void>, reactor.core.publisher.Mono<java.lang.Void>>, java.util.function.BiFunction<reactor.util.retry.RetryBackoffSpec, reactor.util.retry.Retry$RetrySignal, java.lang.Throwable>);
    descriptor: (Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=16, args_size=14
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // reactor.util.context.ContextView retryContext
        start local 2 // long max
        start local 4 // java.util.function.Predicate aThrowablePredicate
        start local 5 // boolean isTransientErrors
        start local 6 // java.time.Duration minBackoff
        start local 7 // java.time.Duration maxBackoff
        start local 8 // double jitterFactor
        start local 10 // java.util.function.Supplier backoffSchedulerSupplier
        start local 11 // java.util.function.Consumer doPreRetry
        start local 12 // java.util.function.Consumer doPostRetry
        start local 13 // java.util.function.BiFunction asyncPreRetry
        start local 14 // java.util.function.BiFunction asyncPostRetry
        start local 15 // java.util.function.BiFunction retryExhaustedGenerator
         0: .line 139
            aload 0 /* this */
            aload 1 /* retryContext */
            invokespecial reactor.util.retry.Retry.<init>:(Lreactor/util/context/ContextView;)V
         1: .line 140
            aload 0 /* this */
            lload 2 /* max */
            putfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         2: .line 141
            aload 0 /* this */
            aload 4 /* aThrowablePredicate */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic test(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/util/function/Predicate.test(Ljava/lang/Object;)Z (9 itf)
                  (Ljava/lang/Throwable;)Z
            putfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         3: .line 142
            aload 0 /* this */
            iload 5 /* isTransientErrors */
            putfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         4: .line 143
            aload 0 /* this */
            aload 6 /* minBackoff */
            putfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         5: .line 144
            aload 0 /* this */
            aload 7 /* maxBackoff */
            putfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         6: .line 145
            aload 0 /* this */
            dload 8 /* jitterFactor */
            putfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         7: .line 146
            aload 0 /* this */
            aload 10 /* backoffSchedulerSupplier */
            putfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         8: .line 147
            aload 0 /* this */
            aload 11 /* doPreRetry */
            putfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
         9: .line 148
            aload 0 /* this */
            aload 12 /* doPostRetry */
            putfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        10: .line 149
            aload 0 /* this */
            aload 13 /* asyncPreRetry */
            putfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        11: .line 150
            aload 0 /* this */
            aload 14 /* asyncPostRetry */
            putfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        12: .line 151
            aload 0 /* this */
            aload 15 /* retryExhaustedGenerator */
            putfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        13: .line 152
            return
        end local 15 // java.util.function.BiFunction retryExhaustedGenerator
        end local 14 // java.util.function.BiFunction asyncPostRetry
        end local 13 // java.util.function.BiFunction asyncPreRetry
        end local 12 // java.util.function.Consumer doPostRetry
        end local 11 // java.util.function.Consumer doPreRetry
        end local 10 // java.util.function.Supplier backoffSchedulerSupplier
        end local 8 // double jitterFactor
        end local 7 // java.time.Duration maxBackoff
        end local 6 // java.time.Duration minBackoff
        end local 5 // boolean isTransientErrors
        end local 4 // java.util.function.Predicate aThrowablePredicate
        end local 2 // long max
        end local 1 // reactor.util.context.ContextView retryContext
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   14     0                      this  Lreactor/util/retry/RetryBackoffSpec;
            0   14     1              retryContext  Lreactor/util/context/ContextView;
            0   14     2                       max  J
            0   14     4       aThrowablePredicate  Ljava/util/function/Predicate<-Ljava/lang/Throwable;>;
            0   14     5         isTransientErrors  Z
            0   14     6                minBackoff  Ljava/time/Duration;
            0   14     7                maxBackoff  Ljava/time/Duration;
            0   14     8              jitterFactor  D
            0   14    10  backoffSchedulerSupplier  Ljava/util/function/Supplier<Lreactor/core/scheduler/Scheduler;>;
            0   14    11                doPreRetry  Ljava/util/function/Consumer<Lreactor/util/retry/Retry$RetrySignal;>;
            0   14    12               doPostRetry  Ljava/util/function/Consumer<Lreactor/util/retry/Retry$RetrySignal;>;
            0   14    13             asyncPreRetry  Ljava/util/function/BiFunction<Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;>;
            0   14    14            asyncPostRetry  Ljava/util/function/BiFunction<Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;>;
            0   14    15   retryExhaustedGenerator  Ljava/util/function/BiFunction<Lreactor/util/retry/RetryBackoffSpec;Lreactor/util/retry/Retry$RetrySignal;Ljava/lang/Throwable;>;
    Signature: (Lreactor/util/context/ContextView;JLjava/util/function/Predicate<-Ljava/lang/Throwable;>;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier<Lreactor/core/scheduler/Scheduler;>;Ljava/util/function/Consumer<Lreactor/util/retry/Retry$RetrySignal;>;Ljava/util/function/Consumer<Lreactor/util/retry/Retry$RetrySignal;>;Ljava/util/function/BiFunction<Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;>;Ljava/util/function/BiFunction<Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;>;Ljava/util/function/BiFunction<Lreactor/util/retry/RetryBackoffSpec;Lreactor/util/retry/Retry$RetrySignal;Ljava/lang/Throwable;>;)V
    MethodParameters:
                          Name  Flags
      retryContext              
      max                       
      aThrowablePredicate       
      isTransientErrors         
      minBackoff                
      maxBackoff                
      jitterFactor              
      backoffSchedulerSupplier  
      doPreRetry                
      doPostRetry               
      asyncPreRetry             
      asyncPostRetry            
      retryExhaustedGenerator   

  public reactor.util.retry.RetryBackoffSpec withRetryContext(reactor.util.context.ContextView);
    descriptor: (Lreactor/util/context/ContextView;)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // reactor.util.context.ContextView retryContext
         0: .line 161
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 162
            aload 1 /* retryContext */
         2: .line 163
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 164
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 165
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 166
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 167
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 168
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 169
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 170
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        10: .line 171
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        11: .line 172
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        12: .line 173
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        13: .line 174
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        14: .line 161
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // reactor.util.context.ContextView retryContext
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  retryContext  Lreactor/util/context/ContextView;
    MethodParameters:
              Name  Flags
      retryContext  

  public reactor.util.retry.RetryBackoffSpec maxAttempts(long);
    descriptor: (J)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=3, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // long maxAttempts
         0: .line 186
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 187
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 188
            lload 1 /* maxAttempts */
         3: .line 189
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 190
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 191
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 192
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 193
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 194
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 195
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        10: .line 196
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        11: .line 197
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        12: .line 198
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        13: .line 199
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        14: .line 186
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // long maxAttempts
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   15     0         this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  maxAttempts  J
    MethodParameters:
             Name  Flags
      maxAttempts  

  public reactor.util.retry.RetryBackoffSpec filter(java.util.function.Predicate<? super java.lang.Throwable>);
    descriptor: (Ljava/util/function/Predicate;)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // java.util.function.Predicate errorFilter
         0: .line 211
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 212
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 213
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 214
            aload 1 /* errorFilter */
            ldc "errorFilter"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.util.function.Predicate
         4: .line 215
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 216
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 217
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 218
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 219
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 220
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        10: .line 221
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        11: .line 222
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        12: .line 223
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        13: .line 224
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        14: .line 211
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // java.util.function.Predicate errorFilter
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   15     0         this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  errorFilter  Ljava/util/function/Predicate<-Ljava/lang/Throwable;>;
    Signature: (Ljava/util/function/Predicate<-Ljava/lang/Throwable;>;)Lreactor/util/retry/RetryBackoffSpec;
    MethodParameters:
             Name  Flags
      errorFilter  

  public reactor.util.retry.RetryBackoffSpec modifyErrorFilter(java.util.function.Function<java.util.function.Predicate<java.lang.Throwable>, java.util.function.Predicate<? super java.lang.Throwable>>);
    descriptor: (Ljava/util/function/Function;)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=3, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // java.util.function.Function predicateAdjuster
         0: .line 248
            aload 1 /* predicateAdjuster */
            ldc "predicateAdjuster"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 249
            aload 1 /* predicateAdjuster */
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.function.Predicate
         2: .line 250
            ldc "predicateAdjuster must return a new predicate"
         3: .line 249
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.util.function.Predicate
            astore 2 /* newPredicate */
        start local 2 // java.util.function.Predicate newPredicate
         4: .line 251
            new reactor.util.retry.RetryBackoffSpec
            dup
         5: .line 252
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         6: .line 253
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         7: .line 254
            aload 2 /* newPredicate */
         8: .line 255
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         9: .line 256
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
        10: .line 257
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
        11: .line 258
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
        12: .line 259
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
        13: .line 260
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        14: .line 261
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        15: .line 262
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        16: .line 263
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        17: .line 264
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        18: .line 251
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 2 // java.util.function.Predicate newPredicate
        end local 1 // java.util.function.Function predicateAdjuster
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   19     0               this  Lreactor/util/retry/RetryBackoffSpec;
            0   19     1  predicateAdjuster  Ljava/util/function/Function<Ljava/util/function/Predicate<Ljava/lang/Throwable;>;Ljava/util/function/Predicate<-Ljava/lang/Throwable;>;>;
            4   19     2       newPredicate  Ljava/util/function/Predicate<-Ljava/lang/Throwable;>;
    Signature: (Ljava/util/function/Function<Ljava/util/function/Predicate<Ljava/lang/Throwable;>;Ljava/util/function/Predicate<-Ljava/lang/Throwable;>;>;)Lreactor/util/retry/RetryBackoffSpec;
    MethodParameters:
                   Name  Flags
      predicateAdjuster  

  public reactor.util.retry.RetryBackoffSpec doBeforeRetry(java.util.function.Consumer<reactor.util.retry.Retry$RetrySignal>);
    descriptor: (Ljava/util/function/Consumer;)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // java.util.function.Consumer doBeforeRetry
         0: .line 278
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 279
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 280
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 281
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 282
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 283
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 284
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 285
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 286
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 287
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
            aload 1 /* doBeforeRetry */
            invokeinterface java.util.function.Consumer.andThen:(Ljava/util/function/Consumer;)Ljava/util/function/Consumer;
        10: .line 288
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        11: .line 289
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        12: .line 290
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        13: .line 291
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        14: .line 278
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // java.util.function.Consumer doBeforeRetry
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   15     0           this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  doBeforeRetry  Ljava/util/function/Consumer<Lreactor/util/retry/Retry$RetrySignal;>;
    Signature: (Ljava/util/function/Consumer<Lreactor/util/retry/Retry$RetrySignal;>;)Lreactor/util/retry/RetryBackoffSpec;
    MethodParameters:
               Name  Flags
      doBeforeRetry  

  public reactor.util.retry.RetryBackoffSpec doAfterRetry(java.util.function.Consumer<reactor.util.retry.Retry$RetrySignal>);
    descriptor: (Ljava/util/function/Consumer;)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // java.util.function.Consumer doAfterRetry
         0: .line 304
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 305
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 306
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 307
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 308
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 309
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 310
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 311
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 312
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 313
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        10: .line 314
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
            aload 1 /* doAfterRetry */
            invokeinterface java.util.function.Consumer.andThen:(Ljava/util/function/Consumer;)Ljava/util/function/Consumer;
        11: .line 315
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        12: .line 316
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        13: .line 317
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        14: .line 304
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // java.util.function.Consumer doAfterRetry
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  doAfterRetry  Ljava/util/function/Consumer<Lreactor/util/retry/Retry$RetrySignal;>;
    Signature: (Ljava/util/function/Consumer<Lreactor/util/retry/Retry$RetrySignal;>;)Lreactor/util/retry/RetryBackoffSpec;
    MethodParameters:
              Name  Flags
      doAfterRetry  

  public reactor.util.retry.RetryBackoffSpec doBeforeRetryAsync(java.util.function.Function<reactor.util.retry.Retry$RetrySignal, reactor.core.publisher.Mono<java.lang.Void>>);
    descriptor: (Ljava/util/function/Function;)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // java.util.function.Function doAsyncBeforeRetry
         0: .line 329
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 330
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 331
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 332
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 333
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 334
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 335
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 336
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 337
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 338
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        10: .line 339
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        11: .line 340
            aload 0 /* this */
            aload 1 /* doAsyncBeforeRetry */
            invokedynamic apply(Lreactor/util/retry/RetryBackoffSpec;Ljava/util/function/Function;)Ljava/util/function/BiFunction;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
                  reactor/util/retry/RetryBackoffSpec.lambda$2(Ljava/util/function/Function;Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono;)Lreactor/core/publisher/Mono; (7)
                  (Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono;)Lreactor/core/publisher/Mono;
        12: .line 341
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        13: .line 342
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        14: .line 329
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // java.util.function.Function doAsyncBeforeRetry
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   15     0                this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  doAsyncBeforeRetry  Ljava/util/function/Function<Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;>;
    Signature: (Ljava/util/function/Function<Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;>;)Lreactor/util/retry/RetryBackoffSpec;
    MethodParameters:
                    Name  Flags
      doAsyncBeforeRetry  

  public reactor.util.retry.RetryBackoffSpec doAfterRetryAsync(java.util.function.Function<reactor.util.retry.Retry$RetrySignal, reactor.core.publisher.Mono<java.lang.Void>>);
    descriptor: (Ljava/util/function/Function;)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // java.util.function.Function doAsyncAfterRetry
         0: .line 354
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 355
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 356
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 357
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 358
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 359
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 360
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 361
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 362
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 363
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        10: .line 364
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        11: .line 365
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        12: .line 366
            aload 0 /* this */
            aload 1 /* doAsyncAfterRetry */
            invokedynamic apply(Lreactor/util/retry/RetryBackoffSpec;Ljava/util/function/Function;)Ljava/util/function/BiFunction;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
                  reactor/util/retry/RetryBackoffSpec.lambda$3(Ljava/util/function/Function;Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono;)Lreactor/core/publisher/Mono; (7)
                  (Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono;)Lreactor/core/publisher/Mono;
        13: .line 367
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        14: .line 354
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // java.util.function.Function doAsyncAfterRetry
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   15     0               this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  doAsyncAfterRetry  Ljava/util/function/Function<Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;>;
    Signature: (Ljava/util/function/Function<Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono<Ljava/lang/Void;>;>;)Lreactor/util/retry/RetryBackoffSpec;
    MethodParameters:
                   Name  Flags
      doAsyncAfterRetry  

  public reactor.util.retry.RetryBackoffSpec onRetryExhaustedThrow(java.util.function.BiFunction<reactor.util.retry.RetryBackoffSpec, reactor.util.retry.Retry$RetrySignal, java.lang.Throwable>);
    descriptor: (Ljava/util/function/BiFunction;)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=18, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // java.util.function.BiFunction retryExhaustedGenerator
         0: .line 384
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 385
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 386
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 387
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 388
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 389
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 390
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 391
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 392
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 393
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        10: .line 394
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        11: .line 395
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        12: .line 396
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        13: .line 397
            aload 1 /* retryExhaustedGenerator */
            ldc "retryExhaustedGenerator"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.util.function.BiFunction
        14: .line 384
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // java.util.function.BiFunction retryExhaustedGenerator
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   15     0                     this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  retryExhaustedGenerator  Ljava/util/function/BiFunction<Lreactor/util/retry/RetryBackoffSpec;Lreactor/util/retry/Retry$RetrySignal;Ljava/lang/Throwable;>;
    Signature: (Ljava/util/function/BiFunction<Lreactor/util/retry/RetryBackoffSpec;Lreactor/util/retry/Retry$RetrySignal;Ljava/lang/Throwable;>;)Lreactor/util/retry/RetryBackoffSpec;
    MethodParameters:
                         Name  Flags
      retryExhaustedGenerator  

  public reactor.util.retry.RetryBackoffSpec transientErrors(boolean);
    descriptor: (Z)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // boolean isTransientErrors
         0: .line 414
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 415
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 416
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 417
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 418
            iload 1 /* isTransientErrors */
         5: .line 419
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 420
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 421
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 422
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 423
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        10: .line 424
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        11: .line 425
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        12: .line 426
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        13: .line 427
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        14: .line 414
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // boolean isTransientErrors
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   15     0               this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  isTransientErrors  Z
    MethodParameters:
                   Name  Flags
      isTransientErrors  

  public reactor.util.retry.RetryBackoffSpec minBackoff(java.time.Duration);
    descriptor: (Ljava/time/Duration;)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // java.time.Duration minBackoff
         0: .line 439
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 440
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 441
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 442
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 443
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 444
            aload 1 /* minBackoff */
         6: .line 445
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 446
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 447
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 448
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        10: .line 449
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        11: .line 450
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        12: .line 451
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        13: .line 452
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        14: .line 439
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // java.time.Duration minBackoff
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  minBackoff  Ljava/time/Duration;
    MethodParameters:
            Name  Flags
      minBackoff  

  public reactor.util.retry.RetryBackoffSpec maxBackoff(java.time.Duration);
    descriptor: (Ljava/time/Duration;)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // java.time.Duration maxBackoff
         0: .line 464
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 465
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 466
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 467
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 468
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 469
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 470
            aload 1 /* maxBackoff */
         7: .line 471
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 472
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 473
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        10: .line 474
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        11: .line 475
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        12: .line 476
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        13: .line 477
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        14: .line 464
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // java.time.Duration maxBackoff
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  maxBackoff  Ljava/time/Duration;
    MethodParameters:
            Name  Flags
      maxBackoff  

  public reactor.util.retry.RetryBackoffSpec jitter(double);
    descriptor: (D)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=3, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // double jitterFactor
         0: .line 490
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 491
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 492
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 493
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 494
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 495
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 496
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 497
            dload 1 /* jitterFactor */
         8: .line 498
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
         9: .line 499
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        10: .line 500
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        11: .line 501
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        12: .line 502
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        13: .line 503
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        14: .line 490
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // double jitterFactor
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          this  Lreactor/util/retry/RetryBackoffSpec;
            0   15     1  jitterFactor  D
    MethodParameters:
              Name  Flags
      jitterFactor  

  public reactor.util.retry.RetryBackoffSpec scheduler(reactor.core.scheduler.Scheduler);
    descriptor: (Lreactor/core/scheduler/Scheduler;)Lreactor/util/retry/RetryBackoffSpec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // reactor.core.scheduler.Scheduler backoffScheduler
         0: .line 515
            new reactor.util.retry.RetryBackoffSpec
            dup
         1: .line 516
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryContext:Lreactor/util/context/ContextView;
         2: .line 517
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
         3: .line 518
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
         4: .line 519
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
         5: .line 520
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
         6: .line 521
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
         7: .line 522
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
         8: .line 523
            aload 1 /* backoffScheduler */
            ifnonnull 9
            invokedynamic get()Ljava/util/function/Supplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  reactor/core/scheduler/Schedulers.parallel()Lreactor/core/scheduler/Scheduler; (6)
                  ()Lreactor/core/scheduler/Scheduler;
            goto 10
      StackMap locals: reactor.util.retry.RetryBackoffSpec reactor.core.scheduler.Scheduler
      StackMap stack: new 0 new 0 reactor.util.context.ContextView long java.util.function.Predicate int java.time.Duration java.time.Duration double
         9: aload 1 /* backoffScheduler */
            invokedynamic get(Lreactor/core/scheduler/Scheduler;)Ljava/util/function/Supplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  reactor/util/retry/RetryBackoffSpec.lambda$5(Lreactor/core/scheduler/Scheduler;)Lreactor/core/scheduler/Scheduler; (6)
                  ()Lreactor/core/scheduler/Scheduler;
        10: .line 524
      StackMap locals: reactor.util.retry.RetryBackoffSpec reactor.core.scheduler.Scheduler
      StackMap stack: new 0 new 0 reactor.util.context.ContextView long java.util.function.Predicate int java.time.Duration java.time.Duration double java.util.function.Supplier
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
        11: .line 525
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
        12: .line 526
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
        13: .line 527
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        14: .line 528
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
        15: .line 515
            invokespecial reactor.util.retry.RetryBackoffSpec.<init>:(Lreactor/util/context/ContextView;JLjava/util/function/Predicate;ZLjava/time/Duration;Ljava/time/Duration;DLjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            areturn
        end local 1 // reactor.core.scheduler.Scheduler backoffScheduler
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   16     0              this  Lreactor/util/retry/RetryBackoffSpec;
            0   16     1  backoffScheduler  Lreactor/core/scheduler/Scheduler;
    RuntimeVisibleParameterAnnotations: 
      0:
        reactor.util.annotation.Nullable()
    MethodParameters:
                  Name  Flags
      backoffScheduler  

  protected void validateArguments();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // reactor.util.retry.RetryBackoffSpec this
         0: .line 536
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
            dconst_0
            dcmpg
            iflt 1
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
            dconst_1
            dcmpl
            ifle 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.IllegalArgumentException
            dup
            ldc "jitterFactor must be between 0 and 1 (default 0.5)"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 537
      StackMap locals:
      StackMap stack:
            return
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lreactor/util/retry/RetryBackoffSpec;

  public reactor.core.publisher.Flux<java.lang.Long> generateCompanion(reactor.core.publisher.Flux<reactor.util.retry.Retry$RetrySignal>);
    descriptor: (Lreactor/core/publisher/Flux;)Lreactor/core/publisher/Flux;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // reactor.core.publisher.Flux t
         0: .line 541
            aload 0 /* this */
            invokevirtual reactor.util.retry.RetryBackoffSpec.validateArguments:()V
         1: .line 542
            aload 1 /* t */
            aload 0 /* this */
            invokedynamic apply(Lreactor/util/retry/RetryBackoffSpec;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  reactor/util/retry/RetryBackoffSpec.lambda$6(Lreactor/util/retry/Retry$RetrySignal;)Lorg/reactivestreams/Publisher; (7)
                  (Lreactor/util/retry/Retry$RetrySignal;)Lorg/reactivestreams/Publisher;
            invokevirtual reactor.core.publisher.Flux.concatMap:(Ljava/util/function/Function;)Lreactor/core/publisher/Flux;
            areturn
        end local 1 // reactor.core.publisher.Flux t
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lreactor/util/retry/RetryBackoffSpec;
            0    2     1     t  Lreactor/core/publisher/Flux<Lreactor/util/retry/Retry$RetrySignal;>;
    Signature: (Lreactor/core/publisher/Flux<Lreactor/util/retry/Retry$RetrySignal;>;)Lreactor/core/publisher/Flux<Ljava/lang/Long;>;
    MethodParameters:
      Name  Flags
      t     

  public org.reactivestreams.Publisher generateCompanion(reactor.core.publisher.Flux);
    descriptor: (Lreactor/core/publisher/Flux;)Lorg/reactivestreams/Publisher;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual reactor.util.retry.RetryBackoffSpec.generateCompanion:(Lreactor/core/publisher/Flux;)Lreactor/core/publisher/Flux;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.Throwable lambda$0(reactor.util.retry.RetryBackoffSpec, reactor.util.retry.Retry$RetrySignal);
    descriptor: (Lreactor/util/retry/RetryBackoffSpec;Lreactor/util/retry/Retry$RetrySignal;)Ljava/lang/Throwable;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec builder
        start local 1 // reactor.util.retry.Retry$RetrySignal rs
         0: .line 67
            new java.lang.StringBuilder
            dup
            ldc "Retries exhausted: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         1: .line 68
            aload 0 /* builder */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
            ifeq 3
         2: .line 69
            new java.lang.StringBuilder
            dup
            aload 1 /* rs */
            invokeinterface reactor.util.retry.Retry$RetrySignal.totalRetriesInARow:()J
            invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* builder */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " in a row ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* rs */
            invokeinterface reactor.util.retry.Retry$RetrySignal.totalRetries:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " total)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            goto 4
         3: .line 70
      StackMap locals:
      StackMap stack: java.lang.StringBuilder
            new java.lang.StringBuilder
            dup
            aload 1 /* rs */
            invokeinterface reactor.util.retry.Retry$RetrySignal.totalRetries:()J
            invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* builder */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 67
      StackMap locals: reactor.util.retry.RetryBackoffSpec reactor.util.retry.Retry$RetrySignal
      StackMap stack: java.lang.StringBuilder java.lang.String
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 71
            aload 1 /* rs */
            invokeinterface reactor.util.retry.Retry$RetrySignal.failure:()Ljava/lang/Throwable;
         6: .line 67
            invokestatic reactor.core.Exceptions.retryExhausted:(Ljava/lang/String;Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
         7: .line 71
            areturn
        end local 1 // reactor.util.retry.Retry$RetrySignal rs
        end local 0 // reactor.util.retry.RetryBackoffSpec builder
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0  builder  Lreactor/util/retry/RetryBackoffSpec;
            0    8     1       rs  Lreactor/util/retry/Retry$RetrySignal;

  private reactor.core.publisher.Mono lambda$2(java.util.function.Function, reactor.util.retry.Retry$RetrySignal, reactor.core.publisher.Mono);
    descriptor: (Ljava/util/function/Function;Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono;)Lreactor/core/publisher/Mono;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 2 // reactor.util.retry.Retry$RetrySignal rs
        start local 3 // reactor.core.publisher.Mono m
         0: .line 340
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
            aload 2 /* rs */
            aload 3 /* m */
            invokeinterface java.util.function.BiFunction.apply:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast reactor.core.publisher.Mono
            aload 1
            aload 2 /* rs */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast reactor.core.publisher.Mono
            invokevirtual reactor.core.publisher.Mono.then:(Lreactor/core/publisher/Mono;)Lreactor/core/publisher/Mono;
            areturn
        end local 3 // reactor.core.publisher.Mono m
        end local 2 // reactor.util.retry.Retry$RetrySignal rs
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lreactor/util/retry/RetryBackoffSpec;
            0    1     2    rs  Lreactor/util/retry/Retry$RetrySignal;
            0    1     3     m  Lreactor/core/publisher/Mono<Ljava/lang/Void;>;

  private reactor.core.publisher.Mono lambda$3(java.util.function.Function, reactor.util.retry.Retry$RetrySignal, reactor.core.publisher.Mono);
    descriptor: (Ljava/util/function/Function;Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono;)Lreactor/core/publisher/Mono;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 2 // reactor.util.retry.Retry$RetrySignal rs
        start local 3 // reactor.core.publisher.Mono m
         0: .line 366
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
            aload 2 /* rs */
            aload 3 /* m */
            invokeinterface java.util.function.BiFunction.apply:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast reactor.core.publisher.Mono
            aload 1
            aload 2 /* rs */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast reactor.core.publisher.Mono
            invokevirtual reactor.core.publisher.Mono.then:(Lreactor/core/publisher/Mono;)Lreactor/core/publisher/Mono;
            areturn
        end local 3 // reactor.core.publisher.Mono m
        end local 2 // reactor.util.retry.Retry$RetrySignal rs
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lreactor/util/retry/RetryBackoffSpec;
            0    1     2    rs  Lreactor/util/retry/Retry$RetrySignal;
            0    1     3     m  Lreactor/core/publisher/Mono<Ljava/lang/Void;>;

  private static reactor.core.scheduler.Scheduler lambda$5(reactor.core.scheduler.Scheduler);
    descriptor: (Lreactor/core/scheduler/Scheduler;)Lreactor/core/scheduler/Scheduler;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 523
            aload 0
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private org.reactivestreams.Publisher lambda$6(reactor.util.retry.Retry$RetrySignal);
    descriptor: (Lreactor/util/retry/Retry$RetrySignal;)Lorg/reactivestreams/Publisher;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=6, locals=17, args_size=2
        start local 0 // reactor.util.retry.RetryBackoffSpec this
        start local 1 // reactor.util.retry.Retry$RetrySignal retryWhenState
         0: .line 544
            aload 1 /* retryWhenState */
            invokeinterface reactor.util.retry.Retry$RetrySignal.copy:()Lreactor/util/retry/Retry$RetrySignal;
            astore 2 /* copy */
        start local 2 // reactor.util.retry.Retry$RetrySignal copy
         1: .line 545
            aload 2 /* copy */
            invokeinterface reactor.util.retry.Retry$RetrySignal.failure:()Ljava/lang/Throwable;
            astore 3 /* currentFailure */
        start local 3 // java.lang.Throwable currentFailure
         2: .line 546
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.isTransientErrors:Z
            ifeq 3
            aload 2 /* copy */
            invokeinterface reactor.util.retry.Retry$RetrySignal.totalRetriesInARow:()J
            goto 4
      StackMap locals: reactor.util.retry.Retry$RetrySignal java.lang.Throwable
      StackMap stack:
         3: aload 2 /* copy */
            invokeinterface reactor.util.retry.Retry$RetrySignal.totalRetries:()J
      StackMap locals:
      StackMap stack: long
         4: lstore 4 /* iteration */
        start local 4 // long iteration
         5: .line 548
            aload 3 /* currentFailure */
            ifnonnull 7
         6: .line 549
            new java.lang.IllegalStateException
            dup
            ldc "Retry.RetrySignal#failure() not expected to be null"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            invokestatic reactor.core.publisher.Mono.error:(Ljava/lang/Throwable;)Lreactor/core/publisher/Mono;
            areturn
         7: .line 552
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.errorFilter:Ljava/util/function/Predicate;
            aload 3 /* currentFailure */
            invokeinterface java.util.function.Predicate.test:(Ljava/lang/Object;)Z
            ifne 9
         8: .line 553
            aload 3 /* currentFailure */
            invokestatic reactor.core.publisher.Mono.error:(Ljava/lang/Throwable;)Lreactor/core/publisher/Mono;
            areturn
         9: .line 556
      StackMap locals:
      StackMap stack:
            lload 4 /* iteration */
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxAttempts:J
            lcmp
            iflt 11
        10: .line 557
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.retryExhaustedGenerator:Ljava/util/function/BiFunction;
            aload 0 /* this */
            aload 2 /* copy */
            invokeinterface java.util.function.BiFunction.apply:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Throwable
            invokestatic reactor.core.publisher.Mono.error:(Ljava/lang/Throwable;)Lreactor/core/publisher/Mono;
            areturn
        11: .line 562
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
            ldc 2.0
            lload 4 /* iteration */
            l2d
            invokestatic java.lang.Math.pow:(DD)D
            d2l
            invokevirtual java.time.Duration.multipliedBy:(J)Ljava/time/Duration;
            astore 6 /* nextBackoff */
        start local 6 // java.time.Duration nextBackoff
        12: .line 563
            aload 6 /* nextBackoff */
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
            invokevirtual java.time.Duration.compareTo:(Ljava/time/Duration;)I
            ifle 17
        13: .line 564
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
            astore 6 /* nextBackoff */
        14: .line 566
            goto 17
        end local 6 // java.time.Duration nextBackoff
        15: .line 567
      StackMap locals:
      StackMap stack: java.lang.ArithmeticException
            pop
        16: .line 568
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
            astore 6 /* nextBackoff */
        start local 6 // java.time.Duration nextBackoff
        17: .line 572
      StackMap locals: java.time.Duration
      StackMap stack:
            aload 6 /* nextBackoff */
            invokevirtual java.time.Duration.isZero:()Z
            ifeq 21
        18: .line 573
            aload 2 /* copy */
            lload 4 /* iteration */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokestatic reactor.core.publisher.Mono.just:(Ljava/lang/Object;)Lreactor/core/publisher/Mono;
        19: .line 574
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        20: .line 573
            invokestatic reactor.util.retry.RetrySpec.applyHooks:(Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)Lreactor/core/publisher/Mono;
            areturn
        21: .line 577
      StackMap locals:
      StackMap stack:
            invokestatic java.util.concurrent.ThreadLocalRandom.current:()Ljava/util/concurrent/ThreadLocalRandom;
            astore 7 /* random */
        start local 7 // java.util.concurrent.ThreadLocalRandom random
        22: .line 581
            aload 6 /* nextBackoff */
            ldc 100.0
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
            dmul
            d2l
            invokevirtual java.time.Duration.multipliedBy:(J)Ljava/time/Duration;
        23: .line 582
            ldc 100
            invokevirtual java.time.Duration.dividedBy:(J)Ljava/time/Duration;
        24: .line 583
            invokevirtual java.time.Duration.toMillis:()J
        25: .line 581
            lstore 8 /* jitterOffset */
        start local 8 // long jitterOffset
        26: .line 584
            goto 29
        end local 8 // long jitterOffset
        27: .line 585
      StackMap locals: reactor.util.retry.RetryBackoffSpec reactor.util.retry.Retry$RetrySignal reactor.util.retry.Retry$RetrySignal java.lang.Throwable long java.time.Duration java.util.concurrent.ThreadLocalRandom
      StackMap stack: java.lang.ArithmeticException
            pop
        28: .line 586
            ldc 9.223372036854776E18
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.jitterFactor:D
            dmul
            invokestatic java.lang.Math.round:(D)J
            lstore 8 /* jitterOffset */
        start local 8 // long jitterOffset
        29: .line 588
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.minBackoff:Ljava/time/Duration;
            aload 6 /* nextBackoff */
            invokevirtual java.time.Duration.minus:(Ljava/time/Duration;)Ljava/time/Duration;
        30: .line 589
            invokevirtual java.time.Duration.toMillis:()J
            lload 8 /* jitterOffset */
            lneg
        31: .line 588
            invokestatic java.lang.Math.max:(JJ)J
            lstore 10 /* lowBound */
        start local 10 // long lowBound
        32: .line 590
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.maxBackoff:Ljava/time/Duration;
            aload 6 /* nextBackoff */
            invokevirtual java.time.Duration.minus:(Ljava/time/Duration;)Ljava/time/Duration;
        33: .line 591
            invokevirtual java.time.Duration.toMillis:()J
            lload 8 /* jitterOffset */
        34: .line 590
            invokestatic java.lang.Math.min:(JJ)J
            lstore 12 /* highBound */
        start local 12 // long highBound
        35: .line 594
            lload 12 /* highBound */
            lload 10 /* lowBound */
            lcmp
            ifne 40
        36: .line 595
            lload 12 /* highBound */
            lconst_0
            lcmp
            ifne 38
            lconst_0
            lstore 14 /* jitter */
        start local 14 // long jitter
        37: goto 41
        end local 14 // long jitter
        38: .line 596
      StackMap locals: long long
      StackMap stack:
            aload 7 /* random */
            lload 12 /* highBound */
            invokevirtual java.util.concurrent.ThreadLocalRandom.nextLong:(J)J
            lstore 14 /* jitter */
        start local 14 // long jitter
        39: .line 597
            goto 41
        end local 14 // long jitter
        40: .line 599
      StackMap locals:
      StackMap stack:
            aload 7 /* random */
            lload 10 /* lowBound */
            lload 12 /* highBound */
            invokevirtual java.util.concurrent.ThreadLocalRandom.nextLong:(JJ)J
            lstore 14 /* jitter */
        start local 14 // long jitter
        41: .line 601
      StackMap locals: long
      StackMap stack:
            aload 6 /* nextBackoff */
            lload 14 /* jitter */
            invokevirtual java.time.Duration.plusMillis:(J)Ljava/time/Duration;
            astore 16 /* effectiveBackoff */
        start local 16 // java.time.Duration effectiveBackoff
        42: .line 602
            aload 2 /* copy */
            aload 16 /* effectiveBackoff */
        43: .line 603
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.backoffSchedulerSupplier:Ljava/util/function/Supplier;
            invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
            checkcast reactor.core.scheduler.Scheduler
        44: .line 602
            invokestatic reactor.core.publisher.Mono.delay:(Ljava/time/Duration;Lreactor/core/scheduler/Scheduler;)Lreactor/core/publisher/Mono;
        45: .line 604
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPreRetry:Ljava/util/function/Consumer;
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.syncPostRetry:Ljava/util/function/Consumer;
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPreRetry:Ljava/util/function/BiFunction;
            aload 0 /* this */
            getfield reactor.util.retry.RetryBackoffSpec.asyncPostRetry:Ljava/util/function/BiFunction;
        46: .line 602
            invokestatic reactor.util.retry.RetrySpec.applyHooks:(Lreactor/util/retry/Retry$RetrySignal;Lreactor/core/publisher/Mono;Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)Lreactor/core/publisher/Mono;
            areturn
        end local 16 // java.time.Duration effectiveBackoff
        end local 14 // long jitter
        end local 12 // long highBound
        end local 10 // long lowBound
        end local 8 // long jitterOffset
        end local 7 // java.util.concurrent.ThreadLocalRandom random
        end local 6 // java.time.Duration nextBackoff
        end local 4 // long iteration
        end local 3 // java.lang.Throwable currentFailure
        end local 2 // reactor.util.retry.Retry$RetrySignal copy
        end local 1 // reactor.util.retry.Retry$RetrySignal retryWhenState
        end local 0 // reactor.util.retry.RetryBackoffSpec this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   47     0              this  Lreactor/util/retry/RetryBackoffSpec;
            0   47     1    retryWhenState  Lreactor/util/retry/Retry$RetrySignal;
            1   47     2              copy  Lreactor/util/retry/Retry$RetrySignal;
            2   47     3    currentFailure  Ljava/lang/Throwable;
            5   47     4         iteration  J
           12   15     6       nextBackoff  Ljava/time/Duration;
           17   47     6       nextBackoff  Ljava/time/Duration;
           22   47     7            random  Ljava/util/concurrent/ThreadLocalRandom;
           26   27     8      jitterOffset  J
           29   47     8      jitterOffset  J
           32   47    10          lowBound  J
           35   47    12         highBound  J
           37   38    14            jitter  J
           39   40    14            jitter  J
           41   47    14            jitter  J
           42   47    16  effectiveBackoff  Ljava/time/Duration;
      Exception table:
        from    to  target  type
          11    14      15  Class java.lang.ArithmeticException
          22    26      27  Class java.lang.ArithmeticException
}
SourceFile: "RetryBackoffSpec.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract RetrySignal = reactor.util.retry.Retry$RetrySignal of reactor.util.retry.Retry