public static void FIFOAnimalShelter() { Cat cat1 = new Cat("Fluffy"); Cat cat2 = new Cat("Kitty"); Dog dog1 = new Dog("Taco"); Dog dog2 = new Dog("Zuzu"); Dog dog3 = new Dog("Pepe"); AnimalShelter animalShelter = new AnimalShelter(cat1); animalShelter.Enqueue(cat2); animalShelter.Enqueue(dog1); animalShelter.Enqueue(dog2); animalShelter.Enqueue(dog3); Animal someAnimal = animalShelter.DequeueWithType(typeof(Dog)); Console.WriteLine($"The first available {someAnimal.GetType().Name} is called {someAnimal.Name}"); someAnimal = animalShelter.DequeueWithType(typeof(Cat)); Console.WriteLine($"The first available {someAnimal.GetType().Name} is called {someAnimal.Name}"); someAnimal = animalShelter.DequeueWithType(typeof(Snake)); Console.WriteLine($"The first available Snake is {(someAnimal != null ? someAnimal.Name : "N/A")}"); someAnimal = animalShelter.DequeueWithType(); Console.WriteLine($"The first available animal is a {someAnimal.GetType().Name} with a name {someAnimal.Name}"); }