code: private static RetrySettings buildIdempotentRetrySettings(RetrySettings retrySettings,
        BigtableOptions options) {
      RetryOptions retryOptions = options.getRetryOptions();
      CallOptionsConfig callOptions = options.getCallOptionsConfig();
      RetrySettings.Builder retryBuilder = retrySettings.toBuilder();
  
      if (retryOptions.allowRetriesWithoutTimestamp()) {
        throw new UnsupportedOperationException("Retries without Timestamp does not support yet.");
      }
  
      // if useTimeout is false, then RPC's are defaults to 6 minutes.
      Duration rpcTimeout = ofMillis(callOptions.isUseTimeout()
          ? callOptions.getShortRpcTimeoutMs()
          : RPC_DEADLINE_MS);
  
      retryBuilder
          .setInitialRetryDelay(ofMillis(retryOptions.getInitialBackoffMillis()))
          .setRetryDelayMultiplier(retryOptions.getBackoffMultiplier())
          .setMaxRetryDelay(ofMillis(MAX_RETRY_TIMEOUT_MS))
          .setInitialRpcTimeout(rpcTimeout)
          .setMaxRpcTimeout(rpcTimeout)
          .setMaxAttempts(0)
          .setTotalTimeout(ofMillis(retryOptions.getMaxElapsedBackoffMillis()));
  
      return retryBuilder.build();
    }
docs: Creates {@link RetrySettings} for non-streaming idempotent method.