public async Task <AccessToken?> RequestTokenAsync(
            IConsoleOutput output,
            CancellationToken cancellationToken)
        {
            if (Token.HasValue())
            {
                string?scheme = null;

                if (!NoScheme.HasValue())
                {
                    scheme = Scheme.HasValue() ? Scheme.Value() !.Trim() : _defaultScheme;
                }

                return(new AccessToken(
                           Token.Value() !.Trim(),
                           scheme));
            }

            if (TokenEndpoint.HasValue() || ClientId.HasValue() || ClientSecret.HasValue())
            {
                using IActivity activity = output.WriteActivity("Request token");
                ValidateOAuthArguments(activity);
                IEnumerable <string> scopes = Scopes.HasValue()
                    ? Enumerable.Empty <string>()
                    : Scopes.Values.Where(t => t is { }).OfType <string>();