protected override async Task <bool> SaveAsync()
        {
            var licenseExists = _licenseService.LicenseExists(LicenseMode);

            var oppositeLicenseMode = LicenseMode.ToOpposite();

            var oppositeLicenseExists = _licenseService.LicenseExists(oppositeLicenseMode);

            if (licenseExists && !oppositeLicenseExists)
            {
                return(true);
            }

            if (string.IsNullOrWhiteSpace(LicenseInfo.Key))
            {
                return(false);
            }

            var validationContext = _licenseValidationService.ValidateLicense(LicenseInfo.Key);

            if (validationContext.HasErrors)
            {
                return(false);
            }

            try
            {
                _licenseService.SaveLicense(LicenseInfo.Key, LicenseMode);
            }
            catch (Exception ex)
            {
                Log.Error(ex, $"Failed to save license using '{LicenseMode}'");

                await _messageService.ShowErrorAsync(_languageService.GetString("FailedToSaveLicense"));

                return(false);
            }

            if (oppositeLicenseExists)
            {
                var messageResult = await _messageService.ShowAsync(string.Format("The license for {0} has been successfully created, would you like to remove license for {1}?",
                                                                                  LicenseMode.ToDescriptionText(), oppositeLicenseMode.ToDescriptionText()), "Remove license confirmation", MessageButton.YesNo);

                if (messageResult == MessageResult.Yes)
                {
                    _licenseService.RemoveLicense(oppositeLicenseMode);
                }
            }

            return(true);
        }