code: @Override
      @InterfaceAudience.Private
      protected void maybeCreateRemoteDB() {
          if (!createTarget) {
              return;
          }
          creatingTarget = true;
          Log.v(TAG, "Remote db might not exist; creating it...");
  
          Future future = sendAsyncRequest("PUT", "", null, new RemoteRequestCompletion() {
  
              @Override
              public void onCompletion(RemoteRequest remoteRequest, Response httpResponse, Object result, Throwable e) {
                  creatingTarget = false;
                  if (e != null && e instanceof RemoteRequestResponseException &&
                          ((RemoteRequestResponseException) e).getCode() != 412) {
                      Log.e(TAG, this + ": Failed to create remote db", e);
                      setError(e);
                      triggerStopGraceful();  // this is fatal: no db to push to!
                  } else {
                      Log.v(TAG, "%s: Created remote db", this);
                      createTarget = false;
                      beginReplicating();
                  }
              }
  
          });
          pendingFutures.add(future);
      }
docs: - (void) maybeCreateRemoteDB in CBL_Replicator.m