private static void HandleHatchling(
            ref Decorators.AnimalHouse moddedAnimalHouse,
            string name,
            Farmer moddedPlayer)
        {
            if (moddedAnimalHouse.IsFull())
            {
                return;
            }
            var withEggReadyToHatch = moddedAnimalHouse.GetIncubatorWithEggReadyToHatch();

            if (withEggReadyToHatch == null)
            {
                return;
            }
            string type;

            type = new Incubator(withEggReadyToHatch)
                   .GetRandomType(FarmAnimals.GroupTypesByCategory()
                                  .ToDictionary
                                      (kvp => kvp.Key,
                                      kvp => moddedPlayer.SanitizeBlueChickens(kvp.Value)));

            var building   = moddedAnimalHouse.GetBuilding();
            var farmAnimal = new Decorators.FarmAnimal(moddedPlayer.CreateFarmAnimal(type, name, building));

            farmAnimal.AddToBuilding(building);
            moddedAnimalHouse.ResetIncubator(withEggReadyToHatch);
            farmAnimal.SetCurrentProduce(-1);
        }
        public static void Postfix(ref StardewValley.AnimalHouse __instance)
        {
            var animalHouse = new Decorators.AnimalHouse(__instance);

            if (animalHouse.IsFull() || animalHouse.GetIncubatorWithEggReadyToHatch() == null)
            {
                return;
            }
            animalHouse.SetIncubatorHatchEvent();
        }
        private static void HandleNewborn(
            ref Decorators.AnimalHouse moddedAnimalHouse,
            string name,
            ref QuestionEvent questionEvent,
            Farmer moddedPlayer)
        {
            var withEggReadyToHatch = moddedAnimalHouse.GetIncubatorWithEggReadyToHatch();
            var moddedParent        = new Decorators.FarmAnimal(questionEvent.animal);
            var dictionary          = FarmAnimals.GroupTypesByCategory().Where(kvp => kvp.Value.Contains(moddedParent.GetTypeString()))
                                      .ToDictionary(kvp => kvp.Key, kvp => moddedPlayer.SanitizeBlueChickens(kvp.Value));
            var randomTypeFromProduce = moddedParent.GetRandomTypeFromProduce(dictionary);
            var building   = moddedAnimalHouse.GetBuilding();
            var farmAnimal = new Decorators.FarmAnimal(moddedPlayer.CreateFarmAnimal(randomTypeFromProduce, name, building));

            farmAnimal.AssociateParent(questionEvent.animal);
            farmAnimal.AddToBuilding(building);
            farmAnimal.SetCurrentProduce(-1);
            Event.ForceQuestionEventToProceed(questionEvent);
        }