void CalculatePotions()
        {
            SaveInventory();

            //Calculate potions
            List <Ingredient> checkedIngredients = new List <Ingredient>(ingredientBox.CheckedItems.Cast <Ingredient>());
            List <Potion>     potions            = Potion.GetAllPotions(checkedIngredients);

            //Populate search results with unique effect combinations
            searchResultBox.Items.Clear();
            potions.ForEach(p => searchResultBox.Items.Add(p.ToString()));

            //Get unique effect strings and sort by number of effects
            List <Potion> uniqueEffectPotions = new List <Potion>(potions.Distinct(new PotionEffectComparer()));
            bool          madeChange;

            do
            {
                madeChange = false;
                for (int i = 0; i < uniqueEffectPotions.Count; i++)
                {
                    for (int j = i + 1; j < uniqueEffectPotions.Count; j++)
                    {
                        if (uniqueEffectPotions[i].effects.Count() < uniqueEffectPotions[j].effects.Count())
                        {
                            Potion temp = uniqueEffectPotions[i];
                            uniqueEffectPotions[i] = uniqueEffectPotions[j];
                            uniqueEffectPotions[j] = temp;
                            madeChange             = true;
                        }
                    }
                }
            } while (madeChange == true);
            searchResultBox.Items.Clear();
            uniqueEffectPotions.ForEach(p => searchResultBox.Items.Add(Effect.GetEffectString(p.effects)));
        }