static void Main(string[] args)
        {
            Dog dog1 = new Dog("dog 1!");
            Dog dog2 = new Dog("dog 2!");
            Dog dog3 = new Dog("dog 3!");
            Cat cat1 = new Cat("cat 1!");
            Cat cat2 = new Cat("cat 2!");

            AnimalShelter shelter = new AnimalShelter(dog1);

            shelter.Enqueue(cat1);
            shelter.Enqueue(dog2);
            shelter.Enqueue(dog3);
            shelter.Enqueue(cat2);

            Console.WriteLine($"First animal in queue is: {shelter.Peek().Value}");
            Console.WriteLine($"Grabbing first cat in queue: {shelter.Dequeue("cat").Value}");
            Console.WriteLine($"Checking that order is back to normal, first animal in queue now is still: {shelter.Peek().Value}");
            Console.WriteLine($"Grabbing first dog in queue: {shelter.Dequeue("dog").Value}");
            Console.WriteLine($"Now first animal in queue is: {shelter.Peek().Value}");
            Console.WriteLine($"Typing anything other than 'dog' or 'cat' will give us first animal: {shelter.Dequeue("horse").Value}");
        }
        /// <summary>
        /// Testing out Animal Shelter Method
        /// </summary>
        static void FIFOAnimalShelter()
        {
            Animal DogSpotty  = new Animal("Spotty", "Dog");
            Animal CatMittens = new Animal("Mittens", "Cat");
            Animal DogWoofy   = new Animal("Woofy", "Dog");
            Animal DogSpike   = new Animal("Spike", "Dog");
            Animal DogMrBeans = new Animal("MrBeans", "Dog");
            Animal CatFluffy  = new Animal("Fluffy", "Cat");
            Animal CatMrEvil  = new Animal("MrEvil", "Cat");
            Animal CatMisty   = new Animal("Misty", "Cat");

            List <Animal> AllMyAnimals = new List <Animal>()
            {
                DogSpotty, CatMittens, DogWoofy, DogSpike, DogMrBeans, CatFluffy, CatMrEvil, CatMisty
            };

            AnimalShelter MyAnimalShelter = new AnimalShelter();

            Console.WriteLine("The Shelter has the following animals in the order it was received:");
            foreach (var items in AllMyAnimals)
            {
                MyAnimalShelter.Enqueue(new Node(items));
                Console.WriteLine($"{items.Name} who is a {items.Type}");
            }

            Animal MyAnimal = (Animal)MyAnimalShelter.Peek().Data;

            Console.WriteLine($"{MyAnimal.Name} is at the Front of the Shelter");

            Animal ReturnAnimal = (Animal)MyAnimalShelter.Dequeue("Whatever").Data;

            MyAnimal = (Animal)MyAnimalShelter.Peek().Data;
            Console.WriteLine($"Any animal is removed so {ReturnAnimal.Name} has been released and {MyAnimal.Name} is now at the front");

            ReturnAnimal = (Animal)MyAnimalShelter.Dequeue("Dog").Data;
            MyAnimal     = (Animal)MyAnimalShelter.Peek().Data;
            Console.WriteLine($"A Dog is removed so {ReturnAnimal.Name} has been released and {MyAnimal.Name} is now at the front");

            ReturnAnimal = (Animal)MyAnimalShelter.Dequeue("Cat").Data;
            MyAnimal     = (Animal)MyAnimalShelter.Peek().Data;
            Console.WriteLine($"A Cat is removed so {ReturnAnimal.Name} has been released and {MyAnimal.Name} is now at the front");


            ReturnAnimal = (Animal)MyAnimalShelter.Dequeue("Cat").Data;
            MyAnimal     = (Animal)MyAnimalShelter.Peek().Data;
            Console.WriteLine($"A Cat is removed so {ReturnAnimal.Name} has been released and {MyAnimal.Name} is now at the front");


            ReturnAnimal = (Animal)MyAnimalShelter.Dequeue("Cat").Data;
            MyAnimal     = (Animal)MyAnimalShelter.Peek().Data;
            Console.WriteLine($"A Cat is removed so {ReturnAnimal.Name} has been released and {MyAnimal.Name} is now at the front");


            ReturnAnimal = (Animal)MyAnimalShelter.Dequeue("Dog").Data;
            MyAnimal     = (Animal)MyAnimalShelter.Peek().Data;
            Console.WriteLine($"A Dog is removed so {ReturnAnimal.Name} has been released and {MyAnimal.Name} is now at the front");


            ReturnAnimal = (Animal)MyAnimalShelter.Dequeue("Lion").Data;
            MyAnimal     = (Animal)MyAnimalShelter.Peek().Data;
            Console.WriteLine($"A Lion is removed so {ReturnAnimal.Name} has been released and {MyAnimal.Name} is now at the front");

            ReturnAnimal = (Animal)MyAnimalShelter.Dequeue("Dog").Data;
            MyAnimal     = (Animal)MyAnimalShelter.Peek().Data;
            Console.WriteLine($"A Dog is removed so {ReturnAnimal.Name} has been released and {MyAnimal.Name} is now at the front");

            ReturnAnimal = (Animal)MyAnimalShelter.Dequeue("W").Data;
            MyAnimal     = (Animal)MyAnimalShelter.Peek().Data;
            Console.WriteLine($"Any animal is removed so {ReturnAnimal.Name} has been released and {MyAnimal.Name} is now at the front");

            ReturnAnimal = (Animal)MyAnimalShelter.Dequeue("Dog").Data;
            MyAnimal     = (Animal)MyAnimalShelter.Peek().Data;
            Console.WriteLine($"A Dog is removed so {ReturnAnimal.Name} has been released and {MyAnimal.Name} is now at the front");

            Animal NewCat = new Animal("Bubbles", "Cat");
            Animal NewDog = new Animal("Labby", "Dog");

            MyAnimalShelter.Enqueue(new Node(NewCat));
            MyAnimalShelter.Enqueue(new Node(NewCat));
            MyAnimal = (Animal)MyAnimalShelter.Peek().Data;

            Console.WriteLine($"{NewCat.Name} who is a {NewCat.Type} has been added and {NewDog.Name} who is a {NewDog.Type} has been added so {MyAnimal.Name} is at the front.");
        }