public void DecrementToZeroInitial()
        {         //****************************************
            var MyCounter = new AsyncCounter(10);
            //****************************************

            var MyTask = MyCounter.DecrementToZero();

            //****************************************

            Assert.IsTrue(MyTask.IsCompleted, "Still waiting to decrement");
            Assert.AreEqual(10, MyTask.Result);

            Assert.AreEqual(0, MyCounter.CurrentCount, "Counter not decremented");
            Assert.AreEqual(0, MyCounter.WaitingCount, "Tasks unexpectedly waiting");
        }
        public async Task DecrementToZeroAdd()
        {         //****************************************
            var MyCounter = new AsyncCounter();
            //****************************************

            var MyTask = MyCounter.DecrementToZero();

            Assert.IsFalse(MyTask.IsCompleted, "Decremented too early");

            MyCounter.Add(10);

            //****************************************

            Assert.AreEqual(10, await MyTask);

            Assert.AreEqual(0, MyCounter.CurrentCount, "Counter not decremented");
            Assert.AreEqual(0, MyCounter.WaitingCount, "Tasks unexpectedly waiting");
        }