object Retry {
  class Builder<B : Any?> {
    private val action: SuspendFunction0<B>
      field = action
      private get

    constructor(action: SuspendFunction0<B>) /* primary */ {
      super/*Any*/()
      /* <init>() */

    }

  }

  private constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  fun <W : Any?> withExponentialBackoff(action: Function0<W>): Builder<W> {
    return Builder<W>(action = { // BLOCK
      local suspend fun Function0<W>.suspendConversion(): B {
        return callee.invoke()
      }

      action::suspendConversion
    })
  }

}

