class SingleRetry extends CompletionSingle<T> {

    @Override
    public void subscribe(Flow.Subscriber<? super T> subscriber) {
        RetrySubscriber<T, U> parent = new RetrySubscriber<>(subscriber, whenFunction, source);
        subscriber.onSubscribe(parent);
        parent.retry();
    }

      SingleRetry(Single<T> source,
                BiFunction<? super Throwable, ? super Long, ? extends Flow.Publisher<U>> whenFunction);
      SingleRetry(Single<T> source, long count);
      SingleRetry(Single<T> source, BiPredicate<? super Throwable, ? super Long> predicate);

}