public IProduct SelectProduct(string productName) { IProduct result = null; if (AvailableProducts.Contains(productName)) { int itemPrice = inventoryManager.GetPrice(productName); if (itemPrice > currentBalance) { HandleInsufficientFunds(itemPrice); } else { result = inventoryManager.Dispense(productName); if (result == null) { HandleSoldOut(); } else { HandleValidSelection(result); } } } PromptForCoins(); return(result); }