private string GetRandomNonCraftableItemName(RandomizableStore availableItems, string itemType)
        {
            int    availableItemCount = availableItems.AvailableNonCraftableItemCountByType(itemType);
            int    randomIndex        = _randomizerService.GetRandomItemIndex(availableItemCount);
            string randomItemName     = availableItems.TakeAllNonCraftableItem(itemType, randomIndex);

            return(randomItemName);
        }
        private Dictionary <string, ICollection <string> > FindAllItemsToReplace(RandomizableStore availableItems)
        {
            var itemsToReplaceDict = new Dictionary <string, ICollection <string> >();

            foreach (string itemType in availableItems.AvailableItemTypes().Where(IsItemTypeRandomizableForCraftOutput))
            {
                List <string> alreadyAssignedCraftItems = availableItems.GetAllUnavailableCraftableItemNames(itemType);
                int           numberOfItemsLeftToAssign = availableItems.AvailableNonCraftableItemCountByType(itemType);
                itemsToReplaceDict[itemType] = _randomizerService.GetRandomEntriesFromList(alreadyAssignedCraftItems, numberOfItemsLeftToAssign);
            }

            return(itemsToReplaceDict);
        }