// TODO: Rewrite logic to return ACCEPTABLE_COINS array
        /// <summary>Returns all inserted coins back to user.</summary>
        public Money ReturnMoney()
        {
            var res = new Money();

            if (this.Amount == new Money())
            {
                if (MessageChanged != null)
                {
                    MessageChanged(this, MessageEnum.NoMoneyToReturn);
                }
            }
            else
            {
                if (MessageChanged != null)
                {
                    MessageChanged(this, MessageEnum.TakeReturnedMoney);
                }

                res = this.Amount;
                this.Amount -= this.Amount;
            }

            return res;
        }
        /// <summary>Inserts the coin into vending machine.</summary>
        /// <param name="amount">Coin amount.</param>
        public Money InsertCoin(Money amount)
        {
            var res = new Money();

            if (!ACCEPTABLE_COINS.Any(a=>a.Cents == amount.Cents && a.Euros == amount.Euros))
            {
                if (MessageChanged != null)
                {
                    MessageChanged(this, MessageEnum.WrongCoinInserted);
                    res = amount;
                }
            }
            else
            {
                this.Amount += amount;

                if (MessageChanged != null)
                {
                    MessageChanged(this, MessageEnum.InsertCoinsOrSelectProduct);
                }
            }

            return res;
        }