public virtual async Task <TTenant> FindByNameAsync(string tenantName)
        {
            ThrowIfDisposed();

            if (tenantName == null)
            {
                throw new ArgumentNullException(nameof(tenantName));
            }

            tenantName = KeyNormalizer.MaybeNormalizeName(tenantName);

            var tenant = await _tenantStore.FindByNameAsync(tenantName, CancellationToken);

            if (tenant != null || !Options.Stores.ProtectPersonalData)
            {
                return(tenant);
            }

            var protector = _serviceProvider.GetService(typeof(ILookupProtector)) as ILookupProtector;

            if (!(_serviceProvider.GetService(typeof(ILookupProtectorKeyRing)) is ILookupProtectorKeyRing service) ||
                protector == null)
            {
                return(null);
            }

            foreach (var allKeyId in service.GetAllKeyIds())
            {
                tenant = await _tenantStore.FindByNameAsync(protector.Protect(allKeyId, tenantName), CancellationToken);

                if (tenant != null)
                {
                    return(tenant);
                }
            }

            return(null);
        }