public void TryGetOrCreatePointAsync()
        {
            int            factoryCallsCount = 0;
            DateTimeOffset baseTS            = DateTimeOffset.Now;

            var cube = new MultidimensionalCube <string, int>(
                (vector) =>
            {
                Interlocked.Increment(ref factoryCallsCount);
                long delayMillis = Int32.Parse(vector[1]);
                long passed      = (long)(DateTimeOffset.Now - baseTS).TotalMilliseconds;
                //Trace.WriteLine(passed);
                if (passed < delayMillis)
                {
                    throw new ApplicationException($"delayMillis was {delayMillis}, but only {passed} millis passed.");
                }
                //else
                //{
                //    throw new InvalidOperationException($"Test issue: Bad timing. delayMillis was {delayMillis}, but {passed} millis passed.");
                //}
                return(Int32.Parse(vector[0]));
            },
                10000, 10000, 10000);

            MultidimensionalPointResult <int> result;

            // Warmup:
            try
            {
                baseTS = DateTimeOffset.Now;
                result = cube.TryGetOrCreatePointAsync(
                    TimeSpan.FromMilliseconds(2),
                    TimeSpan.FromMilliseconds(7),
                    CancellationToken.None,
                    "7", "50000", "foo")
                         .GetAwaiter().GetResult();

                Assert.Fail("An ApplicationException was expected to escape.");
            }
            catch (ApplicationException)
            {
            }

            // Now we expect the timing to appox work:

            try
            {
                //Trace.WriteLine("--------");

                factoryCallsCount = 0;
                baseTS            = DateTimeOffset.Now;
                result            = cube.TryGetOrCreatePointAsync(
                    TimeSpan.FromMilliseconds(2),
                    TimeSpan.FromMilliseconds(7),
                    CancellationToken.None,
                    "7", "500", "foo")
                                    .GetAwaiter().GetResult();

                Assert.Fail("An ApplicationException was expected to escape.");
            }
            catch (ApplicationException)
            {
            }

            Assert.AreEqual(3, factoryCallsCount, "Timing dependent. Might sometimes fail.");

            //Trace.WriteLine("--------");

            factoryCallsCount = 0;
            baseTS            = DateTimeOffset.Now;

            result = cube.TryGetOrCreatePointAsync(
                TimeSpan.FromMilliseconds(100),
                TimeSpan.FromMilliseconds(1000),
                CancellationToken.None,
                "7", "500", "foo")
                     .GetAwaiter().GetResult();

            Assert.AreEqual(7, factoryCallsCount, "Timing dependent. Might sometimes fail.");
        }