public int AddProduct(IProduct product, int amount = 1) { bool exist = CartProductIds.Contains(product.GetId()); if (exist) { ICartItem item = CartItems.Find(cartItem => cartItem.GetProduct().Equals(product)); if (item == null) { throw new InvalidOperationException("Item exist in HashSet but not in CartItems"); } return(item.IncreaseAmountOn(amount)); } CartProductIds.Add(product.GetId()); CartItems.Add(new CartItem(product, this, amount)); return(amount); }