private static async Task MaybeCreateDatabaseOnEmulatorAsync(DatabaseName databaseName)
        {
            // Try to create a database on the emulator and ignore any AlreadyExists error.
            var adminClientBuilder = new DatabaseAdminClientBuilder
            {
                EmulatorDetection = EmulatorDetection.EmulatorOnly
            };
            var databaseAdminClient = await adminClientBuilder.BuildAsync();

            var instanceName = InstanceName.FromProjectInstance(databaseName.ProjectId, databaseName.InstanceId);

            try
            {
                await databaseAdminClient.CreateDatabase(new CreateDatabaseRequest
                {
                    ParentAsInstanceName = instanceName,
                    CreateStatement      = $"CREATE DATABASE `{databaseName.DatabaseId}`",
                }).PollUntilCompletedAsync();

                var connectionStringBuilder = new SpannerConnectionStringBuilder($"Data Source={databaseName}")
                {
                    EmulatorDetection = EmulatorDetection.EmulatorOnly,
                };
                await CreateSampleDataModel(connectionStringBuilder.ConnectionString);
            }
            catch (RpcException e) when(e.StatusCode == StatusCode.AlreadyExists)
            {
                // Ignore
            }
        }
        /// <inheritdoc />
        public override async Task <bool> ExistsAsync(CancellationToken cancellationToken = default)
        {
            try
            {
                var adminClientBuilder = new DatabaseAdminClientBuilder
                {
                    EmulatorDetection = EmulatorDetection.EmulatorOrProduction
                };
                var databaseAdminClient = await adminClientBuilder.BuildAsync(cancellationToken);

                await databaseAdminClient.GetDatabaseAsync(_connection.DbConnection.DataSource, cancellationToken);
            }
            catch (RpcException e) when(e.StatusCode == StatusCode.NotFound)
            {
                return(false);
            }
            return(true);
        }