private static async Task ProcessMonarchs()
        {
            var streamTask = client.GetStreamAsync("https://gist.githubusercontent.com/christianpanton/10d65ccef9f29de3acd49d97ed423736/raw/b09563bc0c4b318132c7a738e679d4f984ef0048/kings");
            var monarchs   = await JsonSerializer.DeserializeAsync <List <Monarch> >(await streamTask);

            foreach (var monarch in monarchs)
            {
                monarch.period = await CalculateNumberOfYears(monarch);
            }

            MonarchCollection collection     = new  MonarchCollection(monarchs);
            Monarch           longestMonarch = collection.GetLongestRuledMonarch();

            Console.WriteLine($"How many monarchs are there in the list?: {collection.CountItems()}");
            Console.WriteLine($"Which monarch ruled the longest (and for how long)?: {longestMonarch.name}, {(longestMonarch.period)} years");
            Console.WriteLine($"Which house ruled the longest (and for how long)?: {longestMonarch.house}, {(longestMonarch.period)} years");
            Console.WriteLine($"What was the most common first name?: {collection.GetMostCommonName()}");
        }
        private static async Task <int> CalculateNumberOfYears(Monarch monarch)
        {
            bool hasDash = monarch.years.Contains('-');

            if (hasDash)
            {
                var year = monarch.years.Split('-');
                if (String.IsNullOrEmpty(year[1]))
                {
                    return(DateTime.Now.Year - Int32.Parse(year[0]));
                }
                else
                {
                    return(Int32.Parse(year[1]) - Int32.Parse(year[0]));
                }
            }
            else
            {
                return(1);
            }
        }